From 4e79c69891ffb0ebc4a091d932c7d01b31e4f215 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 25 Apr 2016 19:25:15 -0400 Subject: [PATCH 001/462] Added files via upload --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index c144343c..8379a68d 100644 --- a/build.gradle +++ b/build.gradle @@ -18,12 +18,12 @@ buildscript { apply plugin: 'forge' -version = "1.7.10-0.8d" +version = "1.7.10-0.8ebeta10" group = "com.darkona.adventurebackpack" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "adventurebackpack" minecraft { - version = "1.7.10-10.13.4.1558-1.7.10" + version = "1.7.10-10.13.4.1614-1.7.10" runDir = "eclipse" } From a4fb70c71fe237ce3b83d812353e6510dbfee38f Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 25 Apr 2016 19:27:22 -0400 Subject: [PATCH 002/462] Added files via upload --- .../textures/backpack/Italy.png | Bin 0 -> 3466 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/adventurebackpack/textures/backpack/Italy.png diff --git a/src/main/resources/assets/adventurebackpack/textures/backpack/Italy.png b/src/main/resources/assets/adventurebackpack/textures/backpack/Italy.png new file mode 100644 index 0000000000000000000000000000000000000000..68a6805549eeb933f946210ad2293a403d25a3b3 GIT binary patch literal 3466 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 Date: Mon, 25 Apr 2016 19:29:10 -0400 Subject: [PATCH 003/462] Added files via upload --- .../lib/config/ConfigTagParent.java | 3 ++- .../codechicken/lib/render/BlockRenderer.java | 6 +++-- .../java/codechicken/lib/render/CCModel.java | 6 +++-- .../lib/render/CCRenderPipeline.java | 15 ++++++++----- .../codechicken/lib/render/CCRenderState.java | 3 ++- .../codechicken/lib/render/QBImporter.java | 3 ++- .../codechicken/lib/vec/ITransformation.java | 1 + .../IrreversibleTransformationException.java | 5 +++-- .../betterstorage/utils/ReflectionUtils.java | 22 ++++++++++++------- 9 files changed, 42 insertions(+), 22 deletions(-) diff --git a/src/main/java/codechicken/lib/config/ConfigTagParent.java b/src/main/java/codechicken/lib/config/ConfigTagParent.java index 824778e7..2e1bbfcc 100644 --- a/src/main/java/codechicken/lib/config/ConfigTagParent.java +++ b/src/main/java/codechicken/lib/config/ConfigTagParent.java @@ -135,7 +135,8 @@ public void addChild(ConfigTag tag) childtags.put(tag.name, tag); } - public ArrayList getSortedTagList() + @SuppressWarnings("unchecked") + public ArrayList getSortedTagList() { ArrayList taglist = new ArrayList(childtags.size()); for (Entry tag : childtags.entrySet()) diff --git a/src/main/java/codechicken/lib/render/BlockRenderer.java b/src/main/java/codechicken/lib/render/BlockRenderer.java index 10830925..7012b3b2 100644 --- a/src/main/java/codechicken/lib/render/BlockRenderer.java +++ b/src/main/java/codechicken/lib/render/BlockRenderer.java @@ -63,7 +63,8 @@ public Vertex5[] getVertices() return verts; } - @Override + @SuppressWarnings("unchecked") + @Override public T getAttributes(CCRenderState.VertexAttribute attr) { return attr == CCRenderState.lightCoordAttrib && lcComputed ? (T) lightCoords : null; @@ -190,7 +191,8 @@ public Vertex5[] getVertices() return verts; } - @Override + @SuppressWarnings("unchecked") + @Override public T getAttributes(VertexAttribute attr) { return attr == CCRenderState.lightCoordAttrib ? (T) lightCoords : null; diff --git a/src/main/java/codechicken/lib/render/CCModel.java b/src/main/java/codechicken/lib/render/CCModel.java index 267419e4..cc7970a4 100644 --- a/src/main/java/codechicken/lib/render/CCModel.java +++ b/src/main/java/codechicken/lib/render/CCModel.java @@ -69,7 +69,8 @@ public Vertex5[] getVertices() return verts; } - @Override + @SuppressWarnings("unchecked") + @Override public T getAttributes(CCRenderState.VertexAttribute attr) { if (attr.attributeIndex < attributes.size()) @@ -450,7 +451,8 @@ public CCModel apply(UVTransformation uvt) return this; } - public CCModel expand(int extraVerts) + @SuppressWarnings({ "unchecked", "rawtypes" }) + public CCModel expand(int extraVerts) { int newLen = verts.length + extraVerts; verts = Arrays.copyOf(verts, newLen); diff --git a/src/main/java/codechicken/lib/render/CCRenderPipeline.java b/src/main/java/codechicken/lib/render/CCRenderPipeline.java index d4a1fc37..ab5206d1 100644 --- a/src/main/java/codechicken/lib/render/CCRenderPipeline.java +++ b/src/main/java/codechicken/lib/render/CCRenderPipeline.java @@ -7,7 +7,8 @@ public class CCRenderPipeline { - private ArrayList attribs = new ArrayList(); + @SuppressWarnings("rawtypes") + private ArrayList attribs = new ArrayList(); private ArrayList ops = new ArrayList(); private ArrayList nodes = new ArrayList(); private ArrayList sorted = new ArrayList(); @@ -28,7 +29,8 @@ public void reset() unbuild(); } - private void unbuild() + @SuppressWarnings("unchecked") + private void unbuild() { for (int i = 0; i < attribs.size(); i++) attribs.get(i).active = false; @@ -36,7 +38,8 @@ private void unbuild() sorted.clear(); } - public void rebuild() + @SuppressWarnings({ "unchecked", "rawtypes" }) + public void rebuild() { if (ops.isEmpty() || CCRenderState.model == null) { @@ -92,13 +95,15 @@ public void addRequirement(int opRef) loading.deps.add(nodes.get(opRef)); } - public void addDependency(VertexAttribute attrib) + @SuppressWarnings("rawtypes") + public void addDependency(VertexAttribute attrib) { loading.deps.add(nodes.get(attrib.operationID())); addAttribute(attrib); } - public void addAttribute(VertexAttribute attrib) + @SuppressWarnings({ "unchecked", "rawtypes" }) + public void addAttribute(VertexAttribute attrib) { if (!attrib.active) { diff --git a/src/main/java/codechicken/lib/render/CCRenderState.java b/src/main/java/codechicken/lib/render/CCRenderState.java index 3af2c784..6c84bf79 100644 --- a/src/main/java/codechicken/lib/render/CCRenderState.java +++ b/src/main/java/codechicken/lib/render/CCRenderState.java @@ -102,7 +102,8 @@ public static void arrayCopy(Object src, int srcPos, Object dst, int destPos, in if (dst instanceof Copyable[]) { Object[] oa = (Object[]) dst; - Copyable[] c = (Copyable[]) dst; + @SuppressWarnings("unchecked") + Copyable[] c = (Copyable[]) dst; for (int i = destPos; i < destPos + length; i++) if (c[i] != null) { diff --git a/src/main/java/codechicken/lib/render/QBImporter.java b/src/main/java/codechicken/lib/render/QBImporter.java index 3cf2cc91..e8fc666e 100644 --- a/src/main/java/codechicken/lib/render/QBImporter.java +++ b/src/main/java/codechicken/lib/render/QBImporter.java @@ -46,7 +46,8 @@ public static QBModel loadQB(InputStream input) throws IOException DataInputStream din = new DataInputStream(input); QBModel m = new QBModel(); - int version = din.readInt(); + @SuppressWarnings("unused") + int version = din.readInt(); int colorFormat = din.readInt(); m.rightHanded = din.readInt() != 0; boolean compressed = din.readInt() != 0; diff --git a/src/main/java/codechicken/lib/vec/ITransformation.java b/src/main/java/codechicken/lib/vec/ITransformation.java index 68bc99ec..668686c6 100644 --- a/src/main/java/codechicken/lib/vec/ITransformation.java +++ b/src/main/java/codechicken/lib/vec/ITransformation.java @@ -6,6 +6,7 @@ * @param The vector type * @param The transformation type */ +@SuppressWarnings({ "hiding", "rawtypes" }) public abstract class ITransformation { /** diff --git a/src/main/java/codechicken/lib/vec/IrreversibleTransformationException.java b/src/main/java/codechicken/lib/vec/IrreversibleTransformationException.java index dfe49013..f40109fe 100644 --- a/src/main/java/codechicken/lib/vec/IrreversibleTransformationException.java +++ b/src/main/java/codechicken/lib/vec/IrreversibleTransformationException.java @@ -3,9 +3,10 @@ @SuppressWarnings("serial") public class IrreversibleTransformationException extends RuntimeException { - public ITransformation t; + @SuppressWarnings("rawtypes") + public ITransformation t; - public IrreversibleTransformationException(ITransformation t) + public IrreversibleTransformationException(@SuppressWarnings("rawtypes") ITransformation t) { this.t = t; } diff --git a/src/main/java/copy/betterstorage/utils/ReflectionUtils.java b/src/main/java/copy/betterstorage/utils/ReflectionUtils.java index 56b76473..852ebd90 100644 --- a/src/main/java/copy/betterstorage/utils/ReflectionUtils.java +++ b/src/main/java/copy/betterstorage/utils/ReflectionUtils.java @@ -25,7 +25,7 @@ private ReflectionUtils() } - public static Field findField(Class clazz, String srgName, String mcpName) + public static Field findField(@SuppressWarnings("rawtypes") Class clazz, String srgName, String mcpName) { try { @@ -69,7 +69,8 @@ public static void set(Class clazz, U instance, String sr } } - public static V get(Class clazz, U instance, String srgName, String mcpName) + @SuppressWarnings("unchecked") + public static V get(Class clazz, U instance, String srgName, String mcpName) { try { @@ -84,7 +85,8 @@ public static V get(Class clazz, U instance, String srgNa } - public static Method findMethod(Class clazz, String srgName, String mcpName, Class... parameterTypes) + @SuppressWarnings({ "rawtypes", "unchecked" }) + public static Method findMethod(Class clazz, String srgName, String mcpName, Class... parameterTypes) { try { @@ -114,7 +116,8 @@ public static Method findMethod(Class clazz, String srgName, String mcpName, Cla throw new RuntimeException(String.format("Could not find method '%s' for class %s", mcpName, clazz.getName())); } - public static V invoke(Class clazz, U instance, String srgName, String mcpName, Object... args) + @SuppressWarnings({ "unchecked", "rawtypes" }) + public static V invoke(Class clazz, U instance, String srgName, String mcpName, Object... args) { Class[] parameterTypes = new Class[args.length / 2]; Object[] parameters = new Object[args.length / 2]; @@ -141,10 +144,11 @@ public static V invoke(Class clazz, U instance, String sr private static class Cache { - public final Class clazz; + @SuppressWarnings("rawtypes") + public final Class clazz; public final String name; - public Cache(Class clazz, String name) + public Cache(@SuppressWarnings("rawtypes") Class clazz, String name) { this.clazz = clazz; this.name = name; @@ -167,9 +171,11 @@ public int hashCode() private static class MethodCache extends Cache { - public final Class[] types; + @SuppressWarnings("rawtypes") + public final Class[] types; - public MethodCache(Class clazz, String name, Class... parameterTypes) + @SuppressWarnings("rawtypes") + public MethodCache(Class clazz, String name, Class... parameterTypes) { super(clazz, name); this.types = parameterTypes; From 312286eb1bff3034ef69664925be031452bca40f Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 25 Apr 2016 19:29:42 -0400 Subject: [PATCH 004/462] Added files via upload --- src/main/java/baubles/api/BaublesApi.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/baubles/api/BaublesApi.java b/src/main/java/baubles/api/BaublesApi.java index 3348974c..229cfdf4 100644 --- a/src/main/java/baubles/api/BaublesApi.java +++ b/src/main/java/baubles/api/BaublesApi.java @@ -18,14 +18,16 @@ public class BaublesApi /** * Retrieves the baubles inventory for the supplied player */ - public static IInventory getBaubles(EntityPlayer player) + @SuppressWarnings("unchecked") + public static IInventory getBaubles(EntityPlayer player) { IInventory ot = null; try { if (getBaubles == null) { - Class fake = Class.forName("baubles.common.lib.PlayerHandler"); + @SuppressWarnings("rawtypes") + Class fake = Class.forName("baubles.common.lib.PlayerHandler"); getBaubles = fake.getMethod("getPlayerBaubles", EntityPlayer.class); } ot = (IInventory) getBaubles.invoke(null, player); From 0fa5f61f938edf453045b39e3581969dfb00bd32 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 25 Apr 2016 19:30:08 -0400 Subject: [PATCH 005/462] Added files via upload --- .../java/com/darkona/adventurebackpack/AdventureBackpack.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java index bfe15c11..c6c5a0d7 100644 --- a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java @@ -32,6 +32,7 @@ * * @author Javier Darkona */ +@SuppressWarnings("unused") @Mod(modid = ModInfo.MOD_ID, name = ModInfo.MOD_NAME, version = ModInfo.MOD_VERSION, From 59b1b91efcabc7cd9d7e12367314ee0746bf6d3d Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 25 Apr 2016 19:30:43 -0400 Subject: [PATCH 006/462] Added files via upload --- .../java/com/darkona/adventurebackpack/util/BackpackUtils.java | 2 ++ src/main/java/com/darkona/adventurebackpack/util/Utils.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java index 4ac04ab7..1326f30b 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java @@ -19,6 +19,8 @@ public class BackpackUtils public enum reasons{ SUCCESFUL,ALREADY_EQUIPPED } + + public static Object packetHandler; public static reasons equipWearable(ItemStack backpack, EntityPlayer player) { BackpackProperty prop = BackpackProperty.get(player); diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index 7c2a1834..62c3604e 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -439,7 +439,7 @@ private static boolean areCoordinatesTheSame2D(int X1, int Z1, int X2, int Z2) * Seriously why doesn't Java's instanceof check for null? * @return true if the object is not null and is an instance of the supplied class. */ - public static boolean notNullAndInstanceOf(Object object, Class clazz) + public static boolean notNullAndInstanceOf(Object object, @SuppressWarnings("rawtypes") Class clazz) { return object != null && clazz.isInstance(object); } From a3a6938bffec8217b8dd6e308ba78537525dd84a Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 25 Apr 2016 19:31:58 -0400 Subject: [PATCH 007/462] Added files via upload --- .../java/com/darkona/adventurebackpack/reference/ModInfo.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/reference/ModInfo.java b/src/main/java/com/darkona/adventurebackpack/reference/ModInfo.java index 0ed9e354..70eaa76d 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/ModInfo.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/ModInfo.java @@ -6,7 +6,7 @@ public class ModInfo { public static final String MOD_NAME = "Adventure Backpack"; - public static final String MOD_VERSION = "1.7.10-0.8d"; + public static final String MOD_VERSION = "1.7.10-0.8ebeta6"; public static final String MOD_ID = "adventurebackpack"; public static final String MOD_CHANNEL = "advBackpackChan"; public static final String MOD_CLIENT_PROXY = "com.darkona.adventurebackpack.proxy.ClientProxy"; From fb2698559e45ac88e525b12e522236427aeb3ad5 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 25 Apr 2016 19:32:23 -0400 Subject: [PATCH 008/462] Added files via upload From 07a1daf97f20f2c4ca07240323112d20cb2ef787 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 25 Apr 2016 19:33:10 -0400 Subject: [PATCH 009/462] Added files via upload --- .../adventurebackpack/proxy/ClientProxy.java | 6 ++++ .../adventurebackpack/proxy/CommonProxy.java | 32 +++++++++++++++++++ .../adventurebackpack/proxy/IProxy.java | 2 ++ .../adventurebackpack/proxy/ServerProxy.java | 15 +++++++-- 4 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java index 2e20a8a1..79729724 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java @@ -118,4 +118,10 @@ public void registerKeybindings() FMLCommonHandler.instance().bus().register(new KeybindHandler()); } + @Override + public void registerHandlers() { + // TODO Auto-generated method stub + + } + } diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java new file mode 100644 index 00000000..44149ddf --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java @@ -0,0 +1,32 @@ +package com.darkona.adventurebackpack.proxy; + +import net.minecraftforge.common.MinecraftForge; + +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.common.gameevent.TickEvent.PlayerTickEvent; +import net.minecraft.entity.player.EntityPlayerMP; +import cpw.mods.fml.relauncher.Side; +public abstract class CommonProxy implements IProxy { + private EntityPlayerMP player; + @Override + public void registerHandlers() { + + Object eventHandler = null; + FMLCommonHandler.instance().bus().register(eventHandler); + MinecraftForge.EVENT_BUS.register(eventHandler); + } + public void serverTick(PlayerTickEvent event) { + { + if(event.side == Side.SERVER) { + setPlayer((EntityPlayerMP) event.player); + } + } + + } + public EntityPlayerMP getPlayer() { + return player; + } + public void setPlayer(EntityPlayerMP player) { + this.player = player; + } +} \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java index ecff3d0b..7834c533 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java @@ -21,4 +21,6 @@ public interface IProxy public void synchronizePlayer(int id, NBTTagCompound compound); + void registerHandlers(); + } diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java index 388118df..e26dbd8d 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java @@ -5,16 +5,21 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; - +import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandlerContext; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.network.Packet; import java.util.HashMap; import java.util.Map; import java.util.UUID; - +import net.minecraftforge.common.MinecraftForge; +import cpw.mods.fml.common.FMLCommonHandler; /** * Created on 22/12/2014 * * @author Darkona */ +@SuppressWarnings("unused") public class ServerProxy implements IProxy { private static final Map extendedEntityData = new HashMap(); @@ -82,4 +87,10 @@ public static NBTTagCompound extractPlayerProps(UUID playerID) { return extendedEntityData.remove(playerID); } + + @Override + public void registerHandlers() { + // TODO Auto-generated method stub + + } } From 31101d173204f8d0e0c28fd1a1a078b8a33f898b Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 25 Apr 2016 19:38:14 -0400 Subject: [PATCH 010/462] Added files via upload From 75d38d90a94446ac7c6bb7aa870d8ca2be53b520 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 25 Apr 2016 19:39:19 -0400 Subject: [PATCH 011/462] Added files via upload --- .../block/BlockAdventureBackpack.java | 1 + .../block/BlockCampFire.java | 3 +- .../block/BlockSleepingBag.java | 6 ++- .../block/TileAdventureBackpack.java | 2 +- .../adventurebackpack/block/TileCampfire.java | 6 ++- .../entity/EntityFriendlySpider.java | 12 ++++-- .../entity/EntityInflatableBoat.java | 6 ++- .../ai/EntityAIAvoidPlayerWithBackpack.java | 5 ++- .../entity/ai/EntityAIHorseFollowOwner.java | 3 +- .../fluids/effects/MushroomStewEffect.java | 1 + .../handlers/ClientEventHandler.java | 12 +++++- .../handlers/GeneralEventHandler.java | 37 ++++++++++--------- .../handlers/PlayerEventHandler.java | 6 ++- .../handlers/RenderHandler.java | 2 +- .../adventurebackpack/init/ModNetwork.java | 4 +- .../adventurebackpack/init/ModRecipes.java | 3 +- .../adventurebackpack/init/ModWorldGen.java | 3 +- .../init/recipes/AbstractBackpackRecipe.java | 3 +- .../init/recipes/BackpackRecipes.java | 3 +- .../inventory/InventoryCopterPack.java | 3 +- .../inventory/InventorySteamJetpack.java | 3 +- .../adventurebackpack/inventory/SlotTool.java | 6 ++- .../adventurebackpack/item/ItemComponent.java | 5 ++- .../adventurebackpack/item/ItemMachete.java | 6 ++- .../adventurebackpack/item/ToolAB.java | 2 +- .../EquipUnequipBackWearablePacket.java | 2 +- .../playerProperties/BackpackProperty.java | 11 +++++- 27 files changed, 100 insertions(+), 56 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java index fef755c0..d77fc87d 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java @@ -37,6 +37,7 @@ * Created on 12/10/2014. * @author Javier Darkona */ +@SuppressWarnings("unused") public class BlockAdventureBackpack extends BlockContainer { diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java b/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java index 75987ede..1c0eee39 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java @@ -41,7 +41,8 @@ private void func_149978_e() this.setBlockBounds(0.2F, 0.0F, 0.2F, 0.8F, 0.15F, 0.8F); } - private void blockBoundsForRender() + @SuppressWarnings("unused") + private void blockBoundsForRender() { this.func_149978_e(); } diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java b/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java index 64545a26..62c1ede3 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java @@ -134,7 +134,8 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p if (isBedOccupied(meta)) { EntityPlayer entityplayer1 = null; - Iterator iterator = world.playerEntities.iterator(); + @SuppressWarnings("rawtypes") + Iterator iterator = world.playerEntities.iterator(); while (iterator.hasNext()) { @@ -328,7 +329,8 @@ public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explos public void onBlockDestroyedByPlayer(World world, int x, int y, int z, int meta) { //LogHelper.info("onBlockDestroyedByPlayer() : BlockSleepingBag"); - int direction = getDirection(meta); + @SuppressWarnings("unused") + int direction = getDirection(meta); int tileZ = z; int tileX = x; switch (meta) diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index a8b4e319..0ef77b14 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -549,7 +549,7 @@ public boolean equip(World world, EntityPlayer player, int x, int y, int z) removeSleepingBag(world); if (BackpackUtils.equipWearable(stacky, player) != BackpackUtils.reasons.SUCCESFUL) { - player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:already.equipped")); + player.addChatComponentMessage(new ChatComponentTranslation("You already have a adventurebackpack on your back please take it off if you want to equip this one")); if (!player.inventory.addItemStackToInventory(stacky)) { return drop(world, player, x, y, z); diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileCampfire.java b/src/main/java/com/darkona/adventurebackpack/block/TileCampfire.java index 3d49ed9f..8ac595b7 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileCampfire.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileCampfire.java @@ -14,6 +14,8 @@ public TileCampfire() { } - private int burnTicks; - private ItemStack[] foodCooking = new ItemStack[4]; + @SuppressWarnings("unused") + private int burnTicks; + @SuppressWarnings("unused") + private ItemStack[] foodCooking = new ItemStack[4]; } diff --git a/src/main/java/com/darkona/adventurebackpack/entity/EntityFriendlySpider.java b/src/main/java/com/darkona/adventurebackpack/entity/EntityFriendlySpider.java index ca460a52..80c73fa0 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/EntityFriendlySpider.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/EntityFriendlySpider.java @@ -26,9 +26,12 @@ public class EntityFriendlySpider extends EntityCreature private float prevRearingAmount; private int jumpTicks; - private EntityPlayer owner; - private boolean tamed = false; - private final EntityAIControlledByPlayer aiControlledByPlayer; + @SuppressWarnings("unused") + private EntityPlayer owner; + @SuppressWarnings("unused") + private boolean tamed = false; + @SuppressWarnings("unused") + private final EntityAIControlledByPlayer aiControlledByPlayer; @Override protected void entityInit() { @@ -484,7 +487,8 @@ public void spiderJump() public static class GroupData implements IEntityLivingData { public int field_111105_a; - private static final String __OBFID = "CL_00001700"; + @SuppressWarnings("unused") + private static final String __OBFID = "CL_00001700"; public void func_111104_a(Random p_111104_1_) { diff --git a/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java b/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java index f0a7e1b7..85648fc7 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java @@ -30,7 +30,8 @@ */ public class EntityInflatableBoat extends EntityBoat implements IInventoryTanks { - private FluidTank fuelTank; + @SuppressWarnings("unused") + private FluidTank fuelTank; private boolean isBoatEmpty; private double speedMultiplier; private int boatPosRotationIncrements; @@ -319,7 +320,8 @@ public void onUpdate() if (!this.worldObj.isRemote) { - List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.expand(0.20000000298023224D, 0.0D, 0.20000000298023224D)); + @SuppressWarnings("rawtypes") + List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.expand(0.20000000298023224D, 0.0D, 0.20000000298023224D)); if (list != null && !list.isEmpty()) { diff --git a/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIAvoidPlayerWithBackpack.java b/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIAvoidPlayerWithBackpack.java index b8fdd997..0e4b4959 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIAvoidPlayerWithBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIAvoidPlayerWithBackpack.java @@ -46,9 +46,10 @@ public class EntityAIAvoidPlayerWithBackpack extends EntityAIBase /** * The class of the com.darkona.adventurebackpack.entity we should avoid */ - private Class targetEntityClass; + @SuppressWarnings("rawtypes") + private Class targetEntityClass; - public EntityAIAvoidPlayerWithBackpack(EntityCreature par1EntityCreature, Class par2Class, float par3, double par4, double par6, String colorName) + public EntityAIAvoidPlayerWithBackpack(EntityCreature par1EntityCreature, @SuppressWarnings("rawtypes") Class par2Class, float par3, double par4, double par6, String colorName) { this.theEntity = par1EntityCreature; this.targetEntityClass = par2Class; diff --git a/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIHorseFollowOwner.java b/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIHorseFollowOwner.java index b794ed00..8cbe2825 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIHorseFollowOwner.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIHorseFollowOwner.java @@ -25,7 +25,8 @@ public class EntityAIHorseFollowOwner extends EntityAIBase float maxDist; float minDist; private boolean avoidWater; - private static final String __OBFID = "CL_00001585"; + @SuppressWarnings("unused") + private static final String __OBFID = "CL_00001585"; public EntityAIHorseFollowOwner(EntityHorse horse, double speed, float minDist, float maxDist) { diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/effects/MushroomStewEffect.java b/src/main/java/com/darkona/adventurebackpack/fluids/effects/MushroomStewEffect.java index 088b9086..037d7ddf 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/effects/MushroomStewEffect.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/effects/MushroomStewEffect.java @@ -12,6 +12,7 @@ * * @author Darkona */ +@SuppressWarnings("unused") public class MushroomStewEffect extends FluidEffect { public MushroomStewEffect() diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java index fc74438e..2cdb9bc7 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java @@ -78,6 +78,12 @@ public void mouseWheelDetect(MouseEvent event) { //LogHelper.debug("Mouse Wheel moving"); EntityClientPlayerMP player = mc.thePlayer; + boolean hasCape = player.func_152122_n(); + hasCape = event.buttonstate && hasCape; + @SuppressWarnings("unused") + float f4; + + if (hasCape && !player.isInvisible() && !player.getHideCape()) if (player != null && !player.isDead && player.isSneaking()) { ItemStack backpack = Wearing.getWearingBackpack(player); @@ -102,11 +108,13 @@ public void mouseWheelDetect(MouseEvent event) ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(dWheel, slot, CycleToolPacket.SWITCH_HOSE_ACTION)); ServerActions.switchHose(player, ServerActions.HOSE_SWITCH, dWheel, slot); event.setCanceled(true); + { + } } } } } } - -} + } +} \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java index 9b7c5af7..de24fb6b 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java @@ -8,7 +8,6 @@ import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.inventory.InventoryBackpack; import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; -import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Utils; import com.darkona.adventurebackpack.util.Wearing; import cpw.mods.fml.common.eventhandler.SubscribeEvent; @@ -17,9 +16,7 @@ import net.minecraft.entity.passive.EntityHorse; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; -import net.minecraft.item.Item; import net.minecraft.item.ItemAppleGold; -import net.minecraft.item.ItemGlassBottle; import net.minecraft.item.ItemPotion; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; @@ -129,32 +126,36 @@ public void detectLightning(EntityStruckByLightningEvent event) public void makeHorsesFollowOwner(EntityJoinWorldEvent event) { if(!ConfigHandler.BACKPACK_ABILITIES)return; - if(event.entity instanceof EntityHorse && ((EntityHorse)event.entity).isTame()) + if(event.entity instanceof EntityHorse) { EntityHorse horse = ((EntityHorse)event.entity); - if(!horse.isDead && horse.hasCustomNameTag()) + if(!horse.isDead && horse.isTame() && horse.hasCustomNameTag()) { - boolean set = true; - if(horse.worldObj.func_152378_a(UUID.fromString(horse.func_152119_ch())) != null) + String ownerUUIDstring = horse.func_152119_ch(); + if (ownerUUIDstring != null && !ownerUUIDstring.isEmpty()) { - for (Object entry : horse.tasks.taskEntries) + boolean set = true; + if(horse.worldObj.func_152378_a(UUID.fromString(ownerUUIDstring)) != null) { - if (((EntityAITasks.EntityAITaskEntry) entry).action instanceof EntityAIHorseFollowOwner) + for (Object entry : horse.tasks.taskEntries) { - set = false; + if (((EntityAITasks.EntityAITaskEntry) entry).action instanceof EntityAIHorseFollowOwner) + { + set = false; + } } } - } - if(set) - { - horse.tasks.addTask(4, new EntityAIHorseFollowOwner(horse, 1.5d, 2.0f, 20.0f)); - - if (horse.getAttributeMap().getAttributeInstance(SharedMonsterAttributes.followRange) != null) + if(set) { - horse.getAttributeMap().getAttributeInstance(SharedMonsterAttributes.followRange).setBaseValue(100.0D); + horse.tasks.addTask(4, new EntityAIHorseFollowOwner(horse, 1.5d, 2.0f, 20.0f)); + + if (horse.getAttributeMap().getAttributeInstance(SharedMonsterAttributes.followRange) != null) + { + horse.getAttributeMap().getAttributeInstance(SharedMonsterAttributes.followRange).setBaseValue(100.0D); + } } - } + } } } } diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index fefc6bfb..f6fd3274 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -47,7 +47,8 @@ public class PlayerEventHandler { - private static int tickCounter = 0; + @SuppressWarnings("unused") + private static int tickCounter = 0; @SubscribeEvent public void registerBackpackProperty(EntityEvent.EntityConstructing event) { @@ -292,7 +293,8 @@ public void tickPlayer(TickEvent.PlayerTickEvent event) { if (event.side.isServer()) { - EntityPlayerMP playerMP = (EntityPlayerMP) event.player; + @SuppressWarnings("unused") + EntityPlayerMP playerMP = (EntityPlayerMP) event.player; BackpackProperty.syncToNear(event.player); // if (Utils.notNullAndInstanceOf(event.player.openContainer, IWearableContainer.class)) // { diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/RenderHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/RenderHandler.java index 49acc7b1..0f0f0a7a 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/RenderHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/RenderHandler.java @@ -30,6 +30,6 @@ public void playerSpecialsRendering(RenderPlayerEvent.Specials.Pre event) float yaw = event.entity.rotationYaw; ClientProxy.rendererWearableEquipped.render(event.entity, x, y, z, rotationX, rotationY, rotationZ, pitch, yaw); - event.renderCape = false; + event.renderCape = true; } } diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java b/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java index 6a22c8cf..b1783146 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java @@ -39,14 +39,14 @@ public static void init() } - @SuppressWarnings("unchecked") + @SuppressWarnings({ "unchecked", "rawtypes" }) public static void registerClientSide(Class handler, Class message) { net.registerMessage(handler, message, messages, Side.CLIENT); messages++; } - @SuppressWarnings("unchecked") + @SuppressWarnings({ "unchecked", "rawtypes" }) private static void registerMessage(Class handler, Class message) { net.registerMessage(handler, message, messages, Side.CLIENT); diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java index 955bc6b8..eefb2a6d 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java @@ -19,7 +19,8 @@ */ public class ModRecipes { - private static ItemStack bc(int damage) + @SuppressWarnings("unused") + private static ItemStack bc(int damage) { return BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), damage); } diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java b/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java index 5f8c5bc0..795519c4 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java @@ -77,7 +77,8 @@ public static class TradeHandler implements VillagerRegistry.IVillageTradeHandle * @param recipeList * @param random */ - @Override + @SuppressWarnings("unchecked") + @Override public void manipulateTradesForVillager(EntityVillager villager, MerchantRecipeList recipeList, Random random) { //0 Farmer, 1 Librarian, 2Priest, 3 Blacksmith, 4 Butcher diff --git a/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipe.java b/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipe.java index 5699c5a6..c82d955f 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipe.java +++ b/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipe.java @@ -23,7 +23,8 @@ public class AbstractBackpackRecipe implements IRecipe final BackpackRecipes br = new BackpackRecipes(); private ItemStack result; - private ItemStack[] recipe; + @SuppressWarnings("unused") + private ItemStack[] recipe; public boolean compareStacksForColor(ItemStack stack1, ItemStack stack2) { diff --git a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipes.java index 62d59ab0..23bd7bbd 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipes.java @@ -592,7 +592,8 @@ public BackpackRecipes() public final ItemStack[] Zombie; - public static ItemStack[] reviewRecipe(Object... objects) + @SuppressWarnings({ "unchecked", "rawtypes" }) + public static ItemStack[] reviewRecipe(Object... objects) { String s = ""; //BackpackRecipe recipe = new BackpackRecipe(); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java index 81a47362..cea48591 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java @@ -185,7 +185,8 @@ public boolean isItemValidForSlot(int i, ItemStack stack) public void onInventoryChanged() { - ItemStack container = getStackInSlot(0); + @SuppressWarnings("unused") + ItemStack container = getStackInSlot(0); closeInventory(); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventorySteamJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventorySteamJetpack.java index ee07d6dd..3f6a0719 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventorySteamJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventorySteamJetpack.java @@ -486,7 +486,8 @@ public ItemStack getContainerStack() public void calculateLostTime() { - long elapsedTimesince = System.currentTimeMillis() - systemTime; + @SuppressWarnings("unused") + long elapsedTimesince = System.currentTimeMillis() - systemTime; } } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java index 1f93e9c6..7e3870b4 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java @@ -57,13 +57,15 @@ public static boolean isValidTool(ItemStack stack) // Just for extra compatibility and/or security and/or less annoyance for (String toolName : validToolNames) { - String a = toolName; + @SuppressWarnings("unused") + String a = toolName; if (name.contains(toolName)) return true; } for (String toolName : invalidToolNames) { - String a = toolName; + @SuppressWarnings("unused") + String a = toolName; if (name.contains(toolName)) return false; } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java b/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java index ae36b2b7..3eb58c02 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java @@ -85,7 +85,7 @@ public String getUnlocalizedName(ItemStack stack) @Override @SideOnly(Side.CLIENT) - @SuppressWarnings("unchecked") + @SuppressWarnings({ "unchecked", "rawtypes" }) public void getSubItems(Item item, CreativeTabs creativeTabs, List list) { for (int i = 1; i <= names.length; i++) @@ -185,7 +185,8 @@ private ItemStack placeBoat(ItemStack stack, World world, EntityPlayer player, b Vec3 vec32 = player.getLook(f); boolean flag = false; float f9 = 1.0F; - List list = world.getEntitiesWithinAABBExcludingEntity(player, player.boundingBox.addCoord(vec32.xCoord * d3, vec32.yCoord * d3, vec32.zCoord * d3).expand((double) f9, (double) f9, (double) f9)); + @SuppressWarnings("rawtypes") + List list = world.getEntitiesWithinAABBExcludingEntity(player, player.boundingBox.addCoord(vec32.xCoord * d3, vec32.yCoord * d3, vec32.zCoord * d3).expand((double) f9, (double) f9, (double) f9)); int i; for (i = 0; i < list.size(); ++i) diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemMachete.java b/src/main/java/com/darkona/adventurebackpack/item/ItemMachete.java index 417d93c0..f4fe484b 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemMachete.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemMachete.java @@ -25,7 +25,8 @@ */ public class ItemMachete extends ToolAB { - private static final Set breakableBlocks = Sets.newHashSet(Blocks.pumpkin, + @SuppressWarnings("rawtypes") + private static final Set breakableBlocks = Sets.newHashSet(Blocks.pumpkin, Blocks.web, Blocks.leaves, Blocks.leaves2, @@ -48,7 +49,8 @@ public class ItemMachete extends ToolAB Blocks.waterlily, Blocks.wheat, Blocks.wool); - private float field_150934_a; + @SuppressWarnings("unused") + private float field_150934_a; public ItemMachete() { diff --git a/src/main/java/com/darkona/adventurebackpack/item/ToolAB.java b/src/main/java/com/darkona/adventurebackpack/item/ToolAB.java index f9422351..1dd5d240 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ToolAB.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ToolAB.java @@ -17,7 +17,7 @@ public class ToolAB extends ItemTool { - public ToolAB(ToolMaterial material, Set breakableBlocks) + public ToolAB(ToolMaterial material, @SuppressWarnings("rawtypes") Set breakableBlocks) { super(1f, material, breakableBlocks); //setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); diff --git a/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java b/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java index 190a1874..ad4cb2db 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java @@ -42,7 +42,7 @@ public Message onMessage(Message message, MessageContext ctx) } }else { - player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:already.equipped")); + player.addChatComponentMessage(new ChatComponentTranslation("You already have a adventurebackpack on your back please take it off if you want to equip this one")); } } if(message.action == UNEQUIP_WEARABLE) diff --git a/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java b/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java index bab96da4..18e1da17 100644 --- a/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java +++ b/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java @@ -4,6 +4,10 @@ import com.darkona.adventurebackpack.item.IBackWearableItem; import com.darkona.adventurebackpack.network.SyncPropertiesPacket; import com.darkona.adventurebackpack.util.Utils; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.AbstractClientPlayer; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -11,6 +15,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ChunkCoordinates; import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderPlayerEvent; import net.minecraftforge.common.IExtendedEntityProperties; /** @@ -18,6 +23,7 @@ * * @author Darkona */ +@SuppressWarnings("unused") public class BackpackProperty implements IExtendedEntityProperties { @@ -28,6 +34,7 @@ public class BackpackProperty implements IExtendedEntityProperties private NBTTagCompound wearableData = new NBTTagCompound(); private boolean forceCampFire = false; private int dimension = 0; + private RenderPlayerEvent.Specials.Pre event; public NBTTagCompound getWearableData() { @@ -220,6 +227,6 @@ public void executeWearableUnequipProtocol() if (Utils.notNullAndInstanceOf(wearable.getItem() , IBackWearableItem.class)) { ((IBackWearableItem) wearable.getItem()).onUnequipped(player.getEntityWorld(), player, wearable); + } } - } -} +} \ No newline at end of file From 153af18c5ac6f004e870ecba578fe8d0b7fb9099 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 25 Apr 2016 19:42:20 -0400 Subject: [PATCH 012/462] Added files via upload --- .../client/gui/GuiOverlay.java | 9 ++++++--- .../client/gui/ModGuiConfig.java | 3 ++- .../client/models/ModelBackpackArmor.java | 3 ++- .../client/models/ModelBackpackBlock.java | 6 ++++-- .../client/render/RenderRideableSpider.java | 3 ++- .../RendererAdventureBackpackBlock.java | 2 ++ .../client/render/RendererHose.java | 4 ++-- .../render/RendererItemAdventureBackpack.java | 19 ++++++++++++++++--- .../common/BackpackAbilities.java | 6 ++++-- .../config/ConfigHandler.java | 3 ++- 10 files changed, 42 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java index 2d8e79a7..d3b9093e 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java @@ -44,7 +44,8 @@ public class GuiOverlay extends Gui protected static RenderItem itemRender = new RenderItem(); protected FontRenderer fontRendererObj; ScaledResolution resolution; - public GuiOverlay(Minecraft mc) + @SuppressWarnings("static-access") + public GuiOverlay(Minecraft mc) { super(); @@ -75,14 +76,16 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) { int xPos = 2; int yPos = 2; - Collection collection = this.mc.thePlayer.getActivePotionEffects(); + @SuppressWarnings("rawtypes") + Collection collection = this.mc.thePlayer.getActivePotionEffects(); if (!collection.isEmpty()) { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glDisable(GL11.GL_LIGHTING); this.mc.renderEngine.bindTexture(new ResourceLocation("textures/gui/container/inventory.png")); - for (Iterator iterator = this.mc.thePlayer.getActivePotionEffects() + for (@SuppressWarnings("rawtypes") + Iterator iterator = this.mc.thePlayer.getActivePotionEffects() .iterator(); iterator.hasNext(); xPos += BUFF_ICON_SPACING) { PotionEffect potioneffect = (PotionEffect) iterator.next(); diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java b/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java index dc296233..d69d137a 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java @@ -13,7 +13,8 @@ public class ModGuiConfig extends GuiConfig { - public ModGuiConfig(GuiScreen guiScreen) + @SuppressWarnings({ "rawtypes", "unchecked" }) + public ModGuiConfig(GuiScreen guiScreen) { super(guiScreen, new ConfigElement(ConfigHandler.config.getCategory(Configuration.CATEGORY_GENERAL)).getChildElements(), diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java index fe5e9b35..ba8162c7 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java @@ -305,7 +305,8 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f isSneak = ((entity != null) && (entity).isSneaking()); setRotationAngles(f, f1, f2, f3, f4, f5, entity); - float oV = (isSneak) ? 0 : .3F; + @SuppressWarnings("unused") + float oV = (isSneak) ? 0 : .3F; float scale = f5 * 0.9f; diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java index 87875268..061141b1 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java @@ -275,7 +275,8 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f { //scale*=0.9; - boolean sleepingbag = backpack.isSBDeployed(); + @SuppressWarnings("unused") + boolean sleepingbag = backpack.isSBDeployed(); FluidTank tankLeft = backpack.getLeftTank(); FluidTank tankRight = backpack.getRightTank(); setRotationAngles(f, f1, f2, f3, f4, scale, entity); @@ -313,7 +314,8 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f } } - private void renderFluidsInTanks(FluidTank tankLeft, FluidTank tankRight, float scale) + @SuppressWarnings("unused") + private void renderFluidsInTanks(FluidTank tankLeft, FluidTank tankRight, float scale) { //Size of the cuboid //Y-- is up, Y++ is down diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RenderRideableSpider.java b/src/main/java/com/darkona/adventurebackpack/client/render/RenderRideableSpider.java index 019f9e13..8c59aef1 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RenderRideableSpider.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RenderRideableSpider.java @@ -15,7 +15,8 @@ public class RenderRideableSpider extends RenderLiving { private static final ResourceLocation spiderEyesTextures = new ResourceLocation("textures/entity/spider_eyes.png"); private static final ResourceLocation spiderTextures = new ResourceLocation("textures/entity/spider/spider.png"); - private static final String __OBFID = "CL_00001027"; + @SuppressWarnings("unused") + private static final String __OBFID = "CL_00001027"; public RenderRideableSpider() { diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java index 5abb49a8..d2ac4432 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java @@ -18,6 +18,7 @@ * @author Darkona */ +@SuppressWarnings("unused") public class RendererAdventureBackpackBlock extends TileEntitySpecialRenderer { @@ -78,6 +79,7 @@ public void renderTileEntityAt(TileEntity te, double x, double y, double z, floa GL11.glPopMatrix(); GL11.glPopMatrix(); GL11.glPopMatrix(); + } diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java index 3f66f493..0f8816e4 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java @@ -20,7 +20,8 @@ public class RendererHose implements IItemRenderer private static RenderItem renderHose = new RenderItem(); private FontRenderer fontRenderer; - private Tessellator tessellator = Tessellator.instance; + @SuppressWarnings("unused") + private Tessellator tessellator = Tessellator.instance; @Override public boolean handleRenderType(ItemStack item, ItemRenderType type) @@ -34,7 +35,6 @@ public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRe return false; } - @SuppressWarnings("incomplete-switch") @Override public void renderItem(ItemRenderType type, ItemStack hose, Object... data) { diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java index 73a248ce..f2644b59 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java @@ -5,10 +5,23 @@ import com.darkona.adventurebackpack.inventory.InventoryBackpack; import com.darkona.adventurebackpack.reference.BackpackNames; import com.darkona.adventurebackpack.util.Resources; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityClientPlayerMP; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.IItemRenderer; +import net.minecraftforge.event.entity.player.ItemTooltipEvent; +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.client.renderer.entity.RenderPlayer; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.client.renderer.EntityRenderer; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraftforge.client.event.RenderPlayerEvent; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.client.entity.AbstractClientPlayer; import org.lwjgl.opengl.GL11; /** @@ -16,9 +29,11 @@ * * @author Darkona */ +@SuppressWarnings("unused") public class RendererItemAdventureBackpack implements IItemRenderer { private final ModelBackpackBlock model; + private Minecraft mc; public RendererItemAdventureBackpack() { @@ -175,10 +190,8 @@ public void renderItem(IItemRenderer.ItemRenderType type, ItemStack backpack, Ob GL11.glPopMatrix(); GL11.glPopMatrix(); break; - case FIRST_PERSON_MAP: break; } } - -} + } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java index 52f126b8..7b50537b 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java @@ -150,7 +150,8 @@ public void executeRemoval(EntityPlayer player, World world,ItemStack backpack ) * * @see com.darkona.adventurebackpack.block.BlockAdventureBackpack */ - private static String[] validTileBackpacks = {"Cactus","Melon"}; + @SuppressWarnings("unused") + private static String[] validTileBackpacks = {"Cactus","Melon"}; /** * Detects if a player is under the rain. For detecting when it is Under The Sea (maybe to sing a nice Disney tune) @@ -482,7 +483,8 @@ public void itemCreeper(EntityPlayer player, World world, ItemStack backpack) private FluidStack milkStack = new FluidStack(FluidRegistry.getFluid("milk"), 1); private FluidStack soupStack = new FluidStack(FluidRegistry.getFluid("mushroomstew"), 1); - private FluidStack lavaStack = new FluidStack(FluidRegistry.LAVA, 1); + @SuppressWarnings("unused") + private FluidStack lavaStack = new FluidStack(FluidRegistry.LAVA, 1); /** * The Cow Backpack fills itself with milk when there is wheat in the backpack's inventory, but it will do so slowly diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 719f914c..b9fec03a 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -53,7 +53,8 @@ public static void init(File configFile) } - private static void loadConfiguration() + @SuppressWarnings("static-access") + private static void loadConfiguration() { GUI_TANK_RENDER = config.getInt("TankRenderType", config.CATEGORY_GENERAL, 3, 1, 3, "1,2 or 3 for different rendering of fluids in the Backpack GUI"); BONUS_CHEST_ALLOWED = config.getBoolean("BonusBackpack", config.CATEGORY_GENERAL, false, "Include a Standard Adventure Backpack in bonus chest?"); From b5ce77ec11886fe77d491f76d989b84c809a1754 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 25 Apr 2016 23:54:04 -0400 Subject: [PATCH 013/462] Fixed Internal server error when drinking Melon Juice Bottle --- .../adventurebackpack/fluids/effects/WaterEffect.java | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/effects/WaterEffect.java b/src/main/java/com/darkona/adventurebackpack/fluids/effects/WaterEffect.java index 2f38135e..5b79427a 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/effects/WaterEffect.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/effects/WaterEffect.java @@ -16,6 +16,7 @@ * * @author Javier Darkona */ +@SuppressWarnings("unused") public class WaterEffect extends FluidEffect { @@ -30,16 +31,6 @@ public void affectDrinker(World world, Entity entity) if (entity instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) entity; - BiomeGenBase biome = world.getWorldChunkManager().getBiomeGenAt(player.serverPosX, player.serverPosZ); - - //If it's hot - if ( - BiomeDictionary.isBiomeOfType(biome, BiomeDictionary.Type.HOT) || - BiomeDictionary.isBiomeOfType(biome, BiomeDictionary.Type.DRY) || - BiomeDictionary.isBiomeOfType(biome, BiomeDictionary.Type.SANDY) || - BiomeDictionary.isBiomeOfType(biome, BiomeDictionary.Type.WASTELAND) || - BiomeDictionary.isBiomeOfType(biome, BiomeDictionary.Type.NETHER) - ) { // player.getFoodStats().addStats(1, 0.1f); if (player.isBurning()) From 1f1f9e3d03e809bb8bf9bf7d7676e10cce246f48 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Tue, 26 Apr 2016 18:50:49 -0400 Subject: [PATCH 014/462] Added files via upload --- .../handlers/PlayerEventHandler.java | 5 +- .../item/ItemPistonBoots.java | 2 +- .../playerProperties/BackpackProperty.java | 462 +++++++++--------- .../adventurebackpack/proxy/ClientProxy.java | 36 +- .../adventurebackpack/proxy/IProxy.java | 5 + .../adventurebackpack/proxy/ServerProxy.java | 204 ++++---- .../adventurebackpack/reference/ModInfo.java | 4 +- 7 files changed, 385 insertions(+), 333 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index f6fd3274..78a181fb 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -36,6 +36,7 @@ import net.minecraftforge.event.entity.living.LivingFallEvent; import net.minecraftforge.event.entity.player.EntityInteractEvent; import net.minecraftforge.event.entity.player.PlayerWakeUpEvent; +import com.darkona.adventurebackpack.develop.msg; /** * Created on 11/10/2014 @@ -72,6 +73,8 @@ public void joinPlayer(EntityJoinWorldEvent event) { EntityPlayer player = (EntityPlayer) event.entity; LogHelper.info("Joined EntityPlayer of name: " + event.entity.getCommandSenderName()); + BackpackProperty.syncToNear(player); + msg.handleJoin(player); NBTTagCompound playerData = ServerProxy.extractPlayerProps(player.getUniqueID()); if (playerData != null) { @@ -293,8 +296,6 @@ public void tickPlayer(TickEvent.PlayerTickEvent event) { if (event.side.isServer()) { - @SuppressWarnings("unused") - EntityPlayerMP playerMP = (EntityPlayerMP) event.player; BackpackProperty.syncToNear(event.player); // if (Utils.notNullAndInstanceOf(event.player.openContainer, IWearableContainer.class)) // { diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java b/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java index e742b912..ce46c9ba 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java @@ -27,7 +27,7 @@ public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 1)); } else { - player.stepHeight = 0.5001F; + player.stepHeight = 2.5001F; } } diff --git a/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java b/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java index 18e1da17..3e46f4db 100644 --- a/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java +++ b/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java @@ -1,232 +1,232 @@ -package com.darkona.adventurebackpack.playerProperties; - -import com.darkona.adventurebackpack.init.ModNetwork; -import com.darkona.adventurebackpack.item.IBackWearableItem; -import com.darkona.adventurebackpack.network.SyncPropertiesPacket; -import com.darkona.adventurebackpack.util.Utils; - -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.AbstractClientPlayer; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.ChunkCoordinates; -import net.minecraft.world.World; -import net.minecraftforge.client.event.RenderPlayerEvent; -import net.minecraftforge.common.IExtendedEntityProperties; - -/** - * Created on 24/10/2014 - * - * @author Darkona - */ -@SuppressWarnings("unused") -public class BackpackProperty implements IExtendedEntityProperties -{ - - public static final String PROPERTY_NAME = "abp.property"; - protected EntityPlayer player = null; - private ItemStack wearable = null; - private ChunkCoordinates campFire = null; - private NBTTagCompound wearableData = new NBTTagCompound(); - private boolean forceCampFire = false; - private int dimension = 0; - private RenderPlayerEvent.Specials.Pre event; - - public NBTTagCompound getWearableData() - { - return wearableData; - } - - - public static void sync(EntityPlayer player) - { - if(player instanceof EntityPlayerMP) - { - syncToNear(player); - } - } - - public static void syncToNear(EntityPlayer player) - { - //Thanks diesieben07!!! - if(player != null && player instanceof EntityPlayerMP) - { - try - { - ((EntityPlayerMP) player) - .getServerForPlayer() - .getEntityTracker() - .func_151248_b(player, ModNetwork.net.getPacketFrom(new SyncPropertiesPacket.Message(player.getEntityId(), get(player).getData()))); - }catch(Exception ex){ - ex.printStackTrace(); - } - } - } - - public BackpackProperty(EntityPlayer player) - { - this.player = player; - } - - public NBTTagCompound getData() - { - NBTTagCompound data = new NBTTagCompound(); - saveNBTData(data); - - return data; - } - - public static void register(EntityPlayer player) - { - player.registerExtendedProperties(PROPERTY_NAME, new BackpackProperty(player)); - } - - public static BackpackProperty get(EntityPlayer player) - { - return (BackpackProperty) player.getExtendedProperties(PROPERTY_NAME); - } - - /** - * Called when the entity that this class is attached to is saved. - * Any custom entity data that needs saving should be saved here. - * - * @param compound The compound to save to. - */ - @Override - public void saveNBTData(NBTTagCompound compound) - { - if(wearable != null) compound.setTag("wearable", wearable.writeToNBT(new NBTTagCompound())); - if (campFire != null) - { - compound.setInteger("campFireX", campFire.posX); - compound.setInteger("campFireY", campFire.posY); - compound.setInteger("campFireZ", campFire.posZ); - compound.setInteger("campFireDim", dimension); - - } - compound.setBoolean("forceCampFire",forceCampFire); - } - - /** - * Called when the entity that this class is attached to is loaded. - * In order to hook into this, you will need to subscribe to the EntityConstructing event. - * Otherwise, you will need to initialize manually. - * - * @param compound The compound to load from. - */ - @Override - public void loadNBTData(NBTTagCompound compound) - { - if(compound!=null) - { - setWearable( compound.hasKey("wearable") ? ItemStack.loadItemStackFromNBT(compound.getCompoundTag("wearable")) : null); - setCampFire( new ChunkCoordinates(compound.getInteger("campFireX"), compound.getInteger("campFireY"), compound.getInteger("campFireZ"))); - dimension = compound.getInteger("compFireDim"); - forceCampFire = compound.getBoolean("forceCampfire"); - } - } - - /** - * Used to initialize the extended properties with the entity that this is attached to, as well - * as the world object. - * Called automatically if you register with the EntityConstructing event. - * May be called multiple times if the extended properties is moved over to a new entity. - * Such as when a player switches dimension {Minecraft re-creates the player entity} - * - * @param entity The entity that this extended properties is attached to - * @param world The world in which the entity exists - */ - @Override - public void init(Entity entity, World world) - { - this.player = (EntityPlayer)entity; - } - - public void setWearable(ItemStack bp) - { - wearable = bp; - } - - - public ItemStack getWearable() - { - return wearable != null ? wearable : null ; - } - - public void setCampFire(ChunkCoordinates cf) - { - campFire = cf; - } - - public boolean hasWearable() - { - return wearable != null; - } - - public ChunkCoordinates getCampFire() - { - return campFire; - } - - public EntityPlayer getPlayer() - { - return player; - } - - public void setDimension(int dimension) - { - this.dimension = dimension; - } - - public int getDimension() - { - return dimension; - } - - public boolean isForcedCampFire() - { - return forceCampFire; - } - - public void setForceCampFire(boolean forceCampFire) - { - this.forceCampFire = forceCampFire; - } - - //Scary names for methods because why not - public void executeWearableUpdateProtocol() - { - if(Utils.notNullAndInstanceOf(wearable.getItem(), IBackWearableItem.class)) - { - ((IBackWearableItem)wearable.getItem()).onEquippedUpdate(player.getEntityWorld(), player, wearable); - } - } - - public void executeWearableDeathProtocol() - { - if (Utils.notNullAndInstanceOf(wearable.getItem(), IBackWearableItem.class)) - { - ((IBackWearableItem) wearable.getItem()).onPlayerDeath(player.getEntityWorld(), player, wearable); - } - } - - public void executeWearableEquipProtocol() - { - if (Utils.notNullAndInstanceOf(wearable.getItem(), IBackWearableItem.class)) - { - ((IBackWearableItem) wearable.getItem()).onEquipped(player.getEntityWorld(), player, wearable); - } - } - - public void executeWearableUnequipProtocol() - { - if (Utils.notNullAndInstanceOf(wearable.getItem() , IBackWearableItem.class)) - { - ((IBackWearableItem) wearable.getItem()).onUnequipped(player.getEntityWorld(), player, wearable); - } - } +package com.darkona.adventurebackpack.playerProperties; + +import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.item.IBackWearableItem; +import com.darkona.adventurebackpack.network.SyncPropertiesPacket; +import com.darkona.adventurebackpack.util.Utils; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.AbstractClientPlayer; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ChunkCoordinates; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderPlayerEvent; +import net.minecraftforge.common.IExtendedEntityProperties; + +/** + * Created on 24/10/2014 + * + * @author Darkona + */ +@SuppressWarnings("unused") +public class BackpackProperty implements IExtendedEntityProperties +{ + + public static final String PROPERTY_NAME = "abp.property"; + protected EntityPlayer player = null; + private ItemStack wearable = null; + private ChunkCoordinates campFire = null; + private NBTTagCompound wearableData = new NBTTagCompound(); + private boolean forceCampFire = false; + private int dimension = 0; + private RenderPlayerEvent.Specials.Pre event; + + public NBTTagCompound getWearableData() + { + return wearableData; + } + + + public static void sync(EntityPlayer player) + { + if(player instanceof EntityPlayerMP) + { + syncToNear(player); + } + } + + public static void syncToNear(EntityPlayer player) + { + //Thanks diesieben07!!! + if(player != null && player instanceof EntityPlayerMP) + { + try + { + ((EntityPlayerMP) player) + .getServerForPlayer() + .getEntityTracker() + .func_151248_b(player, ModNetwork.net.getPacketFrom(new SyncPropertiesPacket.Message(player.getEntityId(), get(player).getData()))); + }catch(Exception ex){ + ex.printStackTrace(); + } + } + } + + public BackpackProperty(EntityPlayer player) + { + this.player = player; + } + + public NBTTagCompound getData() + { + NBTTagCompound data = new NBTTagCompound(); + saveNBTData(data); + + return data; + } + + public static void register(EntityPlayer player) + { + player.registerExtendedProperties(PROPERTY_NAME, new BackpackProperty(player)); + } + + public static BackpackProperty get(EntityPlayer player) + { + return (BackpackProperty) player.getExtendedProperties(PROPERTY_NAME); + } + + /** + * Called when the entity that this class is attached to is saved. + * Any custom entity data that needs saving should be saved here. + * + * @param compound The compound to save to. + */ + @Override + public void saveNBTData(NBTTagCompound compound) + { + if(wearable != null) compound.setTag("wearable", wearable.writeToNBT(new NBTTagCompound())); + if (campFire != null) + { + compound.setInteger("campFireX", campFire.posX); + compound.setInteger("campFireY", campFire.posY); + compound.setInteger("campFireZ", campFire.posZ); + compound.setInteger("campFireDim", dimension); + + } + compound.setBoolean("forceCampFire",forceCampFire); + } + + /** + * Called when the entity that this class is attached to is loaded. + * In order to hook into this, you will need to subscribe to the EntityConstructing event. + * Otherwise, you will need to initialize manually. + * + * @param compound The compound to load from. + */ + @Override + public void loadNBTData(NBTTagCompound compound) + { + if(compound!=null) + { + setWearable( compound.hasKey("wearable") ? ItemStack.loadItemStackFromNBT(compound.getCompoundTag("wearable")) : null); + setCampFire( new ChunkCoordinates(compound.getInteger("campFireX"), compound.getInteger("campFireY"), compound.getInteger("campFireZ"))); + dimension = compound.getInteger("compFireDim"); + forceCampFire = compound.getBoolean("forceCampfire"); + } + } + + /** + * Used to initialize the extended properties with the entity that this is attached to, as well + * as the world object. + * Called automatically if you register with the EntityConstructing event. + * May be called multiple times if the extended properties is moved over to a new entity. + * Such as when a player switches dimension {Minecraft re-creates the player entity} + * + * @param entity The entity that this extended properties is attached to + * @param world The world in which the entity exists + */ + @Override + public void init(Entity entity, World world) + { + this.player = (EntityPlayer)entity; + } + + public void setWearable(ItemStack bp) + { + wearable = bp; + } + + + public ItemStack getWearable() + { + return wearable != null ? wearable : null ; + } + + public void setCampFire(ChunkCoordinates cf) + { + campFire = cf; + } + + public boolean hasWearable() + { + return wearable != null; + } + + public ChunkCoordinates getCampFire() + { + return campFire; + } + + public EntityPlayer getPlayer() + { + return player; + } + + public void setDimension(int dimension) + { + this.dimension = dimension; + } + + public int getDimension() + { + return dimension; + } + + public boolean isForcedCampFire() + { + return forceCampFire; + } + + public void setForceCampFire(boolean forceCampFire) + { + this.forceCampFire = forceCampFire; + } + + //Scary names for methods because why not + public void executeWearableUpdateProtocol() + { + if(Utils.notNullAndInstanceOf(wearable.getItem(), IBackWearableItem.class)) + { + ((IBackWearableItem)wearable.getItem()).onEquippedUpdate(player.getEntityWorld(), player, wearable); + } + } + + public void executeWearableDeathProtocol() + { + if (Utils.notNullAndInstanceOf(wearable.getItem(), IBackWearableItem.class)) + { + ((IBackWearableItem) wearable.getItem()).onPlayerDeath(player.getEntityWorld(), player, wearable); + } + } + + public void executeWearableEquipProtocol() + { + if (Utils.notNullAndInstanceOf(wearable.getItem(), IBackWearableItem.class)) + { + ((IBackWearableItem) wearable.getItem()).onEquipped(player.getEntityWorld(), player, wearable); + } + } + + public void executeWearableUnequipProtocol() + { + if (Utils.notNullAndInstanceOf(wearable.getItem() , IBackWearableItem.class)) + { + ((IBackWearableItem) wearable.getItem()).onUnequipped(player.getEntityWorld(), player, wearable); + } + } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java index 79729724..1aa65d40 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java @@ -1,5 +1,7 @@ package com.darkona.adventurebackpack.proxy; +import java.lang.reflect.Field; + import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.block.TileCampfire; import com.darkona.adventurebackpack.client.gui.GuiOverlay; @@ -21,7 +23,9 @@ import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.common.event.FMLInitializationEvent; import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.EntityRenderer; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -49,7 +53,7 @@ public class ClientProxy implements IProxy public static ModelBackpackArmor modelAdventureBackpack = new ModelBackpackArmor(); public static ModelCopterPack modelCopterPack = new ModelCopterPack(); - + public static Field camRollField; public void init() { initRenderers(); @@ -124,4 +128,34 @@ public void registerHandlers() { } + @Override + public void init(FMLInitializationEvent event) { + // TODO Auto-generated method stub + + } + @Override + public void registerRenderInformation() + { + renderHandler = new RenderHandler(); + MinecraftForge.EVENT_BUS.register(renderHandler); + rendererWearableEquipped = new RendererWearableEquipped(); + + rendererItemAdventureBackpack = new RendererItemAdventureBackpack(); + MinecraftForgeClient.registerItemRenderer(ModItems.adventureBackpack, rendererItemAdventureBackpack); + MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(ModBlocks.blockBackpack), rendererItemAdventureBackpack); + ClientRegistry.bindTileEntitySpecialRenderer(TileAdventureBackpack.class, new RendererAdventureBackpackBlock()); + int i = 0; + for (Field curField : EntityRenderer.class.getDeclaredFields()) + { + if (curField.getType() == float.class) + { + if (++i == 15) + { + camRollField = curField; + curField.setAccessible(true); + } + } + } + } + } diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java index 7834c533..63ba90d3 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java @@ -1,5 +1,6 @@ package com.darkona.adventurebackpack.proxy; +import cpw.mods.fml.common.event.FMLInitializationEvent; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; @@ -23,4 +24,8 @@ public interface IProxy void registerHandlers(); + void init(FMLInitializationEvent event); + + public void registerRenderInformation(); + } diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java index e26dbd8d..8bfd5835 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java @@ -1,96 +1,108 @@ -package com.darkona.adventurebackpack.proxy; - -import com.darkona.adventurebackpack.playerProperties.BackpackProperty; -import com.darkona.adventurebackpack.util.LogHelper; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import io.netty.buffer.ByteBuf; -import io.netty.channel.ChannelHandlerContext; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.network.Packet; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; -import net.minecraftforge.common.MinecraftForge; -import cpw.mods.fml.common.FMLCommonHandler; -/** - * Created on 22/12/2014 - * - * @author Darkona - */ -@SuppressWarnings("unused") -public class ServerProxy implements IProxy -{ - private static final Map extendedEntityData = new HashMap(); - - @Override - public void init() - { - - } - - @Override - public void registerKeybindings() - { - - } - - @Override - public void initNetwork() - { - - } - - @Override - public void joinPlayer(EntityPlayer player) - { - NBTTagCompound playerData = extractPlayerProps(player.getUniqueID()); - - if (playerData != null) - { - LogHelper.info("Stored properties retrieved"); - BackpackProperty.get(player).loadNBTData(playerData); - BackpackProperty.syncToNear(player); - }else{ - LogHelper.info("Data is null! WTF!"); - } - } - - @Override - public void synchronizePlayer(int id, NBTTagCompound compound) - { - - } - - public static void storePlayerProps(EntityPlayer player) - { - try - { - NBTTagCompound data = BackpackProperty.get(player).getData(); - if(data.hasKey("wearable")) - { - LogHelper.info("Storing wearable: " + ItemStack.loadItemStackFromNBT(data.getCompoundTag("wearable")).getDisplayName()); - } - extendedEntityData.put(player.getUniqueID(), data); - LogHelper.info("Stored player properties for dead player"); - } - catch(Exception ex) - { - LogHelper.error("Something went wrong while saving player properties: " + ex.getMessage()); - ex.printStackTrace(); - } - } - - - public static NBTTagCompound extractPlayerProps(UUID playerID) - { - return extendedEntityData.remove(playerID); - } - - @Override - public void registerHandlers() { - // TODO Auto-generated method stub - - } -} +package com.darkona.adventurebackpack.proxy; + +import com.darkona.adventurebackpack.playerProperties.BackpackProperty; +import com.darkona.adventurebackpack.develop.DeveloperJoining; +import com.darkona.adventurebackpack.develop.msg; +import com.darkona.adventurebackpack.util.LogHelper; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandlerContext; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.network.Packet; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; +import net.minecraftforge.common.MinecraftForge; +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.common.event.FMLInitializationEvent; +/** + * Created on 22/12/2014 + * + * @author Darkona + */ +@SuppressWarnings("unused") +public class ServerProxy implements IProxy +{ + private static final Map extendedEntityData = new HashMap(); + + @Override + public void init() + { + FMLCommonHandler.instance().bus().register(new DeveloperJoining()); + } + + @Override + public void registerKeybindings() + { + + } + + @Override + public void initNetwork() + { + } + + @Override + public void joinPlayer(EntityPlayer player) + { + NBTTagCompound playerData = extractPlayerProps(player.getUniqueID()); + + if (playerData != null) + { + LogHelper.info("Stored properties retrieved"); + BackpackProperty.get(player).loadNBTData(playerData); + BackpackProperty.syncToNear(player); + }else{ + LogHelper.info("Data is null! WTF!"); + } + } + + @Override + public void synchronizePlayer(int id, NBTTagCompound compound) + { + + } + + public static void storePlayerProps(EntityPlayer player) + { + try + { + NBTTagCompound data = BackpackProperty.get(player).getData(); + if(data.hasKey("wearable")) + { + LogHelper.info("Storing wearable: " + ItemStack.loadItemStackFromNBT(data.getCompoundTag("wearable")).getDisplayName()); + } + extendedEntityData.put(player.getUniqueID(), data); + LogHelper.info("Stored player properties for dead player"); + } + catch(Exception ex) + { + LogHelper.error("Something went wrong while saving player properties: " + ex.getMessage()); + ex.printStackTrace(); + } + } + + + public static NBTTagCompound extractPlayerProps(UUID playerID) + { + return extendedEntityData.remove(playerID); + } + + @Override + public void registerHandlers() { + // TODO Auto-generated method stub + + } + + public void registerRenderInformation() + { + + } + + @Override + public void init(FMLInitializationEvent event) { + FMLCommonHandler.instance().bus().register(new DeveloperJoining()); + } +} \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/reference/ModInfo.java b/src/main/java/com/darkona/adventurebackpack/reference/ModInfo.java index 70eaa76d..5038d573 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/ModInfo.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/ModInfo.java @@ -6,10 +6,10 @@ public class ModInfo { public static final String MOD_NAME = "Adventure Backpack"; - public static final String MOD_VERSION = "1.7.10-0.8ebeta6"; + public static final String MOD_VERSION = "1.7.10-0.8e"; public static final String MOD_ID = "adventurebackpack"; public static final String MOD_CHANNEL = "advBackpackChan"; public static final String MOD_CLIENT_PROXY = "com.darkona.adventurebackpack.proxy.ClientProxy"; - public static final String MOD_SERVER_PROXY = "com.darkona.adventurebackpack.proxy.ServerProxy"; public static final String GUI_FACTORY_CLASS = "com.darkona.adventurebackpack.client.gui.GuiFactory"; + public static final String MOD_SERVER_PROXY = "com.darkona.adventurebackpack.proxy.ServerProxy"; } From efd675cf7badc1c116490d57a520f55bb0fd8e3e Mon Sep 17 00:00:00 2001 From: runescapejon Date: Tue, 26 Apr 2016 18:53:03 -0400 Subject: [PATCH 015/462] Fix Slime Backpack Abilities --- .../common/BackpackAbilities.java | 8 ++--- .../develop/ChatHandler.java | 12 ++++++++ .../develop/DeveloperJoining.java | 14 +++++++++ .../adventurebackpack/develop/msg.java | 30 +++++++++++++++++++ 4 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/darkona/adventurebackpack/develop/ChatHandler.java create mode 100644 src/main/java/com/darkona/adventurebackpack/develop/DeveloperJoining.java create mode 100644 src/main/java/com/darkona/adventurebackpack/develop/msg.java diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java index 7b50537b..0357f80f 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java @@ -319,7 +319,7 @@ public void itemSlime(EntityPlayer player, World world, ItemStack backpack) // 4 is New Moon, 5 is Waxing Crescent, 6 is First Quarter and 7 is Waxing Gibbous if (world.getMoonPhase() == 0 && !world.isDaytime()) { - player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 1, 1)); + player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 100, 0)); } if (player.onGround) { @@ -732,8 +732,8 @@ public void itemRainbow(EntityPlayer player, World world, ItemStack backpack) if (noteTime >= 0 && noteTime < Utils.secondsToTicks(147)) { player.setSprinting(true); - player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 40, 2)); - player.addPotionEffect(new PotionEffect(Potion.jump.getId(), 40, 2)); + player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 100, 0)); + player.addPotionEffect((new PotionEffect(Potion.jump.getId(), 100, 0))); if (noteTime % 2 == 0) { //Visuals.NyanParticles(player, world); @@ -748,7 +748,7 @@ public void itemRainbow(EntityPlayer player, World world, ItemStack backpack) potion = player.getActivePotionEffect(Potion.moveSpeed); } if (potion == null || potion.getDuration() < 40 && potion.getAmplifier() != -5) { - player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 5000, -5)); + player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 500, -5)); } inv.setLastTime(noteTime); inv.markDirty(); diff --git a/src/main/java/com/darkona/adventurebackpack/develop/ChatHandler.java b/src/main/java/com/darkona/adventurebackpack/develop/ChatHandler.java new file mode 100644 index 00000000..4e6cb600 --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/develop/ChatHandler.java @@ -0,0 +1,12 @@ +package com.darkona.adventurebackpack.develop; + +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.ChatComponentTranslation; +public class ChatHandler +{ + public static void sendServerMessage(String string) + { + ChatComponentTranslation translation = new ChatComponentTranslation(string, new Object[0]); + MinecraftServer.getServer().getConfigurationManager().sendChatMsg(translation); + } + } diff --git a/src/main/java/com/darkona/adventurebackpack/develop/DeveloperJoining.java b/src/main/java/com/darkona/adventurebackpack/develop/DeveloperJoining.java new file mode 100644 index 00000000..a0b85d7c --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/develop/DeveloperJoining.java @@ -0,0 +1,14 @@ +package com.darkona.adventurebackpack.develop; + +import net.minecraft.entity.player.EntityPlayerMP; +import com.darkona.adventurebackpack.develop.msg; + +public class DeveloperJoining +{ + private EntityPlayerMP player; + + public void onPlayerLogin() + { + msg.handleJoin(player); + } + } diff --git a/src/main/java/com/darkona/adventurebackpack/develop/msg.java b/src/main/java/com/darkona/adventurebackpack/develop/msg.java new file mode 100644 index 00000000..f54170a9 --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/develop/msg.java @@ -0,0 +1,30 @@ +package com.darkona.adventurebackpack.develop; + +import java.util.ArrayList; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.EnumChatFormatting; +import com.darkona.adventurebackpack.develop.ChatHandler; + +public class msg { + public static void loadDev() { + } + private static ArrayList devUUID = new ArrayList(); + static + { + //add uuid to list Developers who had work with this mod + devUUID.add("e23b034b-c2d2-4ae5-ba7a-93fb08de9c69"); + devUUID.add("9932b533-00b3-4d05-bac8-288500df7c9d"); + } + + public static boolean isDev(String uuid) + { + return devUUID.contains(uuid); + } + + public static void handleJoin(EntityPlayer player) + { + if (isDev(player.getUniqueID().toString())) { + ChatHandler.sendServerMessage("" + EnumChatFormatting.AQUA + "~~AdventureBackPack Mod Dev~~ " + EnumChatFormatting.UNDERLINE + player.getDisplayName() + EnumChatFormatting.AQUA + " has joined."); + } + } + } From 1db2e79d2824c16cd15c6d73a95c6a8509e1296e Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 19:47:41 -0400 Subject: [PATCH 016/462] Updated resources for beta 13 --- .../assets/adventurebackpack/lang/en_US.lang | 13 +++++++------ .../textures/adventureSuit_texture.png | Bin 0 -> 1810 bytes .../textures/backpack/ModdedNetwork.png | Bin 0 -> 3744 bytes 3 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 src/main/resources/assets/adventurebackpack/textures/adventureSuit_texture.png create mode 100644 src/main/resources/assets/adventurebackpack/textures/backpack/ModdedNetwork.png diff --git a/src/main/resources/assets/adventurebackpack/lang/en_US.lang b/src/main/resources/assets/adventurebackpack/lang/en_US.lang index 3449ee99..5f288708 100644 --- a/src/main/resources/assets/adventurebackpack/lang/en_US.lang +++ b/src/main/resources/assets/adventurebackpack/lang/en_US.lang @@ -1,4 +1,4 @@ -# Items +# Items THIS IS ALL UPDATED ALL OF THE OTHER LANGUAGE IS NOT ## Component Items For Crafting item.adventurebackpack:backpackComponent.name=Backpack Component Item @@ -30,9 +30,10 @@ item.adventurebackpack:hoseUseless.name=Hose: Useless / No Backpack ## Wearables item.adventurebackpack:adventureBackpack.name=Adventure Backpack item.adventurebackpack:copterPack.name=Copter Pack -item.adventurebackpack:steamJetpack.name=Steam Jetpack +item.adventurebackpack:CoalJetpack.name=Coal Jetpack ## Armor +item.adventurebackpack:pants.name=Adventurer's Pants item.adventurebackpack:adventureSuit.name=Adventurer's Suit item.adventurebackpack:adventureHat.name=Adventurer's Fedora item.adventurebackpack:pistonBoots.name=Piston Boots @@ -41,9 +42,9 @@ item.adventurebackpack:pistonBoots.name=Piston Boots block.adventurebackpack:AdventureBackpack.name=Adventure Backpack Block block.adventurebackpack:CampFire.name=Campfire block.adventurebackpack:SleepingBag.name=Sleeping Bag - +blockCampFire.name=CampFire ## CreativeTab -itemGroup.adventurebackpack=Adventure Backpack +itemGroup.adventurebackpack=Adventure Backpack Mod ## Keybindings keys.adventureBackpack.category=Adventure Backpack @@ -63,6 +64,6 @@ adventurebackpack:messages.copterpack.normal=CopterPack: Normal Mode. adventurebackpack:messages.copterpack.outoffuel=CopterPack: Out of fuel. adventurebackpack:messages.copterpack.cantwater=CopterPack: Can't function in water. adventurebackpack:messages.copterpack.off=CopterPack: Off. -adventurebackpack:messages.jetpack.on=Steam Jetpack: On. -adventurebackpack:messages.jetpack.off=Steam Jetpack: Off. +adventurebackpack:messages.jetpack.on=Coal Jetpack: On. +adventurebackpack:messages.jetpack.off=Coal Jetpack: Off. adventurebackpack:messages.crossbow.outofammo=Clockwork Crossbow: Out of ammo. diff --git a/src/main/resources/assets/adventurebackpack/textures/adventureSuit_texture.png b/src/main/resources/assets/adventurebackpack/textures/adventureSuit_texture.png new file mode 100644 index 0000000000000000000000000000000000000000..8fafe06217074bf8bdfc336bdf2cd567e7989711 GIT binary patch literal 1810 zcmV+t2krQYP)*b0WD_NUKq3W0K%lTdSt3QsDiVkV8&+fqWW^6) z#{#7Mg8TvbWHP%>TjWyO-V~sV|SYwUmpue(?J9IYz;UK!}O<;5JFXXh;I@U-9a3 z0iQlS$}vIZ6w`4D!2Z0W4H;`dvLxaQgUS9yXE9ae=d%B>8_&K;;ZZE3DQSb8kUL zpOlDU4EX?}b0=5pal z`cGBWjK^czjmcBS+FNE+QdKo@NJyEKGr#%Mbqd=j;G=N2Z=63f&UgDoVKoXUou&&y zlAb{CK`Bu5^Nm)7C^)OJMiWy%_ar^Sj%&-gC#PKdbRRHO2pgl4vT%6sF$(s`geVlw zusN>!BnykPhL{ASdgA&Q3w3Fk&*$u1c;))x#Y;v;HFar$Off7nB_SqZd!wTDkuD_K zkOvhiN@u7FJNzeDqXAhGCK;^h8)1k-%0j8lFb_aZv_}-zM zo=%vIYff#B*<_4|{b|muydJO4q;87){|!zi6lV`05RQ^wW2-^%j$tUQG4I4j*5= zLFF{1GZfBXOi#rAyrU}Y@T@wL{QkVdnEoAAVX?zAtCbE>5XmIb$e@tbxyNpSC$`2M zE-V+mc$UM)v%OKVwNX)*C5MZa5CcjntkKj}iP0Ko4Wr7@bpfpug|m#Rf<@cWx6Q;x z?byHl4?cJ9ODr0HB(c69cv4D;%Iwd(<&g<2lXphrjAB&P{T4brAP&k=s+V|@Oh~f) z4MOW9RblBuJf46M1#1jvwkK?DL<(mqtY+Rcq$HHqGOkMYw4!nr$uO!Mb!o{tQ#gyW zju11TmQsH08!z(CyMN@pUw#|QY>;=t7y~Nftm}=4lBHKz^$l)N)@l-y$!70On)#9l z5K3q0LPC@Qj*@UJ0X{^=bwSg`VV}ZeV*_S0oQ1NmC~XFhkdU0QMl)|bDG8kyd}!_k zG@1(Gm6x97!|R_A7I%n)0<6*a5b;A&);My`l!Zmd#QwYkpme=22r(`Dz$#XWXniEa zNEC%8lTlQKCPaDQxrg?Es<2drr7kUnb8L=B9L{F6KKAY}Mixy&j0tNLb?NXS_Odhm zNpU~gka^~rbG&h(;(I^*3C+QcWrJHq7ZNeCOtie)M+(~;r39^y#MCDfLLh`d+ctDv zOPe%42tH;cMM6rXl!@`)iE*p~b`Kint*0(aLiG5UAxCBlk7PyDC1Mgf-(jtzbeX1$ z_z-Z`P?naQ;(cC1@#NX_yechjw8Pu){EEswcp8Zktk!6)j!3rk5v?^kXJShIksO7C zxyKkq5mRr^tpQ_!!5W*sxpq+~ttOu26gX@;4(6V{*}NZcz1&B2iB_5Y*@8Aie9Roo zT5jylX*$o`3v(Ya4_+r|L#8>r&1Aa63+Jc2_2zdTssMvRa_=6EF|zjUVov;mA#kj>ecsQK4Nv;Y54O$3($%}D`M(zXIjA*wgXR1EnO6L=fdSZ$K5Sy zv?1h7mcIJN^!EYoUWSIVJtg7h?(8!oAm_}#0ri8S5G9lXX8-^I07*qoM6N<$f^<)3 AzW@LL literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/adventurebackpack/textures/backpack/ModdedNetwork.png b/src/main/resources/assets/adventurebackpack/textures/backpack/ModdedNetwork.png new file mode 100644 index 0000000000000000000000000000000000000000..80b3684f79cb0f4fc0c8167eeafcaaf0d8c52b55 GIT binary patch literal 3744 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 K;Dak^ Date: Fri, 29 Apr 2016 19:49:54 -0400 Subject: [PATCH 017/462] Upload files for new beta 13 From ff47fa2f15d386ff99166d9be8abf6008bb5535b Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 19:51:18 -0400 Subject: [PATCH 018/462] Upload files for new beta 13 --- .../darkona/adventurebackpack/AdventureBackpack.java | 10 ---------- .../adventurebackpack/network/PlayerActionPacket.java | 4 ++-- .../darkona/adventurebackpack/proxy/ClientProxy.java | 4 ++-- .../adventurebackpack/reference/BackpackNames.java | 3 ++- .../adventurebackpack/reference/GeneralReference.java | 8 ++------ .../com/darkona/adventurebackpack/util/Wearing.java | 8 ++++---- 6 files changed, 12 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java index c6c5a0d7..d56e2a19 100644 --- a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java @@ -115,22 +115,12 @@ public void postInit(FMLPostInitializationEvent event) ConfigHandler.IS_THAUM = Loader.isModLoaded("Thaumcraft"); ConfigHandler.IS_TWILIGHT = Loader.isModLoaded("TwilightForest"); ConfigHandler.IS_ENVIROMINE = Loader.isModLoaded("EnviroMine"); - ConfigHandler.IS_BUILDCRAFT = Loader.isModLoaded("BuildCraft|Core"); - ConfigHandler.IS_RAILCRAFT = Loader.isModLoaded("Railcraft"); - - - if (ConfigHandler.IS_BUILDCRAFT) - { - LogHelper.info("Buildcraft is present. Acting accordingly"); - } if (ConfigHandler.IS_TWILIGHT) { LogHelper.info("Twilight Forest is present. Acting accordingly"); } - ConditionalFluidEffect.init(); - ModItems.conditionalInit(); ModRecipes.conditionalInit(); diff --git a/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java b/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java index fced6343..b6136844 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java @@ -1,7 +1,7 @@ package com.darkona.adventurebackpack.network; import com.darkona.adventurebackpack.entity.EntityFriendlySpider; -import com.darkona.adventurebackpack.inventory.InventorySteamJetpack; +import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; import com.darkona.adventurebackpack.util.Wearing; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; @@ -33,7 +33,7 @@ public IMessage onMessage(ActionMessage message, MessageContext ctx) { if(Wearing.isWearingSteam(ctx.getServerHandler().playerEntity)) { - InventorySteamJetpack inv = new InventorySteamJetpack(Wearing.getWearingSteam(ctx.getServerHandler().playerEntity)); + InventoryCoalJetpack inv = new InventoryCoalJetpack(Wearing.getWearingSteam(ctx.getServerHandler().playerEntity)); inv.setInUse(message.type == JETPACK_IN_USE); inv.markDirty(); } diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java index 1aa65d40..49f02bbf 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java @@ -7,7 +7,7 @@ import com.darkona.adventurebackpack.client.gui.GuiOverlay; import com.darkona.adventurebackpack.client.models.ModelBackpackArmor; import com.darkona.adventurebackpack.client.models.ModelCopterPack; -import com.darkona.adventurebackpack.client.models.ModelSteamJetpack; +import com.darkona.adventurebackpack.client.models.ModelCoalJetpack; import com.darkona.adventurebackpack.client.render.*; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.config.Keybindings; @@ -49,7 +49,7 @@ public class ClientProxy implements IProxy public static RendererInflatableBoat renderInflatableBoat; public static RenderRideableSpider renderRideableSpider; public static RendererItemClockworkCrossbow renderCrossbow; - public static ModelSteamJetpack modelSteamJetpack = new ModelSteamJetpack(); + public static ModelCoalJetpack modelCoalJetpack = new ModelCoalJetpack(); public static ModelBackpackArmor modelAdventureBackpack = new ModelBackpackArmor(); public static ModelCopterPack modelCopterPack = new ModelCopterPack(); diff --git a/src/main/java/com/darkona/adventurebackpack/reference/BackpackNames.java b/src/main/java/com/darkona/adventurebackpack/reference/BackpackNames.java index 04fbd2fa..12b401f0 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/BackpackNames.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/BackpackNames.java @@ -90,7 +90,8 @@ public class BackpackNames "White", "Wolf", "Yellow", - "Zombie" + "Zombie", + "ModdedNetwork" }; public static ItemStack setBackpackColorNameFromDamage(ItemStack backpack, int damage) diff --git a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java index e5aafbd2..4d20fb00 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java @@ -16,12 +16,8 @@ public class GeneralReference public static void init() { - liquidFuels.put("fuel", 1.0f); - liquidFuels.put("oil", 1.5f); - liquidFuels.put("bioethanol", 1.2f); - liquidFuels.put("biofuel", 1.0f); - liquidFuels.put("creosote", 1.8f); - liquidFuels.put("coal", 0.8f); + liquidFuels.put("water", 1.6f); + liquidFuels.put("lava", 1.0f); } diff --git a/src/main/java/com/darkona/adventurebackpack/util/Wearing.java b/src/main/java/com/darkona/adventurebackpack/util/Wearing.java index 2fe09829..26868289 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Wearing.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Wearing.java @@ -3,7 +3,7 @@ import com.darkona.adventurebackpack.inventory.IInventoryTanks; import com.darkona.adventurebackpack.inventory.InventoryBackpack; import com.darkona.adventurebackpack.inventory.InventoryCopterPack; -import com.darkona.adventurebackpack.inventory.InventorySteamJetpack; +import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; import com.darkona.adventurebackpack.item.*; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.reference.BackpackNames; @@ -42,7 +42,7 @@ public static ItemStack getWearingCopter(EntityPlayer player) public static boolean isHoldingSteam(EntityPlayer player) { - return player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemSteamJetpack; + return player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemCoalJetpack; } public static ItemStack getHoldingSteam(EntityPlayer player) @@ -52,7 +52,7 @@ public static ItemStack getHoldingSteam(EntityPlayer player) public static boolean isWearingSteam(EntityPlayer player) { - return BackpackProperty.get(player).getWearable() != null && BackpackProperty.get(player).getWearable().getItem() instanceof ItemSteamJetpack; + return BackpackProperty.get(player).getWearable() != null && BackpackProperty.get(player).getWearable().getItem() instanceof ItemCoalJetpack; } public static ItemStack getWearingSteam(EntityPlayer player) @@ -147,7 +147,7 @@ public static IInventoryTanks getWearableInv(EntityPlayer player) { ItemStack wearable = Wearing.getWearingWearable(player); if(wearable.getItem() instanceof ItemAdventureBackpack)return new InventoryBackpack(wearable); - if (wearable.getItem() instanceof ItemSteamJetpack) return new InventorySteamJetpack(wearable); + if (wearable.getItem() instanceof ItemCoalJetpack) return new InventoryCoalJetpack(wearable); if (wearable.getItem() instanceof ItemCopterPack) return new InventoryCopterPack(wearable); return null; } From 0fa100a18001242b51cea67e81b7d01f4fbf1242 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 19:51:59 -0400 Subject: [PATCH 019/462] Upload files for new beta 13 --- events/WearableEvent.java | 39 ++ fluids/FluidEffectRegistry.java | 118 ++++ fluids/FluidMelonJuice.java | 50 ++ fluids/FluidMilk.java | 57 ++ fluids/FluidMushroomStew.java | 54 ++ fluids/TankWrapper.java | 39 ++ fluids/effects/FuelEffect.java | 47 ++ fluids/effects/LavaEffect.java | 34 + fluids/effects/MelonJuiceEffect.java | 42 ++ fluids/effects/MilkEffect.java | 29 + fluids/effects/MushroomStewEffect.java | 30 + fluids/effects/OilEffect.java | 40 ++ fluids/effects/WaterEffect.java | 46 ++ handlers/ClientEventHandler.java | 120 ++++ handlers/GeneralEventHandler.java | 175 +++++ handlers/GuiHandler.java | 142 ++++ handlers/KeybindHandler.java | 108 +++ handlers/PlayerEventHandler.java | 315 +++++++++ handlers/RenderHandler.java | 35 + init/ModBlocks.java | 27 + init/ModEntities.java | 28 + init/ModFluids.java | 40 ++ init/ModItems.java | 43 ++ init/ModMaterials.java | 18 + init/ModNetwork.java | 74 +++ init/ModRecipes.java | 282 ++++++++ init/ModWorldGen.java | 99 +++ init/recipes/AbstractBackpackRecipe.java | 171 +++++ init/recipes/AbstractBackpackRecipeTwo.java | 100 +++ init/recipes/BackpackRecipe.java | 24 + init/recipes/BackpackRecipes.java | 669 +++++++++++++++++++ init/recipes/BackpackRecipesList.java | 688 ++++++++++++++++++++ inventory/ContainerBackpack.java | 378 +++++++++++ inventory/ContainerCopter.java | 166 +++++ inventory/ContainerJetpack.java | 176 +++++ inventory/IAsynchronousInventory.java | 16 + inventory/IInventoryTanks.java | 24 + inventory/IWearableContainer.java | 11 + inventory/InventoryActions.java | 165 +++++ inventory/InventoryBackpack.java | 408 ++++++++++++ inventory/InventoryCoalJetpack.java | 493 ++++++++++++++ inventory/InventoryCopterPack.java | 286 ++++++++ inventory/SlotAdventureBackpack.java | 28 + inventory/SlotBackpack.java | 34 + inventory/SlotFluid.java | 52 ++ inventory/SlotFuel.java | 19 + inventory/SlotTool.java | 114 ++++ item/ArmorAB.java | 66 ++ item/IBackWearableItem.java | 32 + item/ItemAB.java | 52 ++ item/ItemAdventureBackpack.java | 374 +++++++++++ item/ItemAdventureHat.java | 42 ++ item/ItemAdventureJacket.java | 46 ++ item/ItemAdventurePantaloon.java | 53 ++ item/ItemCoalJetpack.java | 292 +++++++++ item/ItemComponent.java | 264 ++++++++ item/ItemCopterPack.java | 300 +++++++++ item/ItemCrossbow.java | 205 ++++++ item/ItemCrossbowMagazine.java | 10 + item/ItemHose.java | 475 ++++++++++++++ item/ItemJuiceBottle.java | 71 ++ item/ItemMachete.java | 145 +++++ item/ItemPistonBoots.java | 34 + item/ItemProjectile.java | 13 + item/ItemTelescope.java | 12 + item/ToolAB.java | 56 ++ 66 files changed, 8695 insertions(+) create mode 100644 events/WearableEvent.java create mode 100644 fluids/FluidEffectRegistry.java create mode 100644 fluids/FluidMelonJuice.java create mode 100644 fluids/FluidMilk.java create mode 100644 fluids/FluidMushroomStew.java create mode 100644 fluids/TankWrapper.java create mode 100644 fluids/effects/FuelEffect.java create mode 100644 fluids/effects/LavaEffect.java create mode 100644 fluids/effects/MelonJuiceEffect.java create mode 100644 fluids/effects/MilkEffect.java create mode 100644 fluids/effects/MushroomStewEffect.java create mode 100644 fluids/effects/OilEffect.java create mode 100644 fluids/effects/WaterEffect.java create mode 100644 handlers/ClientEventHandler.java create mode 100644 handlers/GeneralEventHandler.java create mode 100644 handlers/GuiHandler.java create mode 100644 handlers/KeybindHandler.java create mode 100644 handlers/PlayerEventHandler.java create mode 100644 handlers/RenderHandler.java create mode 100644 init/ModBlocks.java create mode 100644 init/ModEntities.java create mode 100644 init/ModFluids.java create mode 100644 init/ModItems.java create mode 100644 init/ModMaterials.java create mode 100644 init/ModNetwork.java create mode 100644 init/ModRecipes.java create mode 100644 init/ModWorldGen.java create mode 100644 init/recipes/AbstractBackpackRecipe.java create mode 100644 init/recipes/AbstractBackpackRecipeTwo.java create mode 100644 init/recipes/BackpackRecipe.java create mode 100644 init/recipes/BackpackRecipes.java create mode 100644 init/recipes/BackpackRecipesList.java create mode 100644 inventory/ContainerBackpack.java create mode 100644 inventory/ContainerCopter.java create mode 100644 inventory/ContainerJetpack.java create mode 100644 inventory/IAsynchronousInventory.java create mode 100644 inventory/IInventoryTanks.java create mode 100644 inventory/IWearableContainer.java create mode 100644 inventory/InventoryActions.java create mode 100644 inventory/InventoryBackpack.java create mode 100644 inventory/InventoryCoalJetpack.java create mode 100644 inventory/InventoryCopterPack.java create mode 100644 inventory/SlotAdventureBackpack.java create mode 100644 inventory/SlotBackpack.java create mode 100644 inventory/SlotFluid.java create mode 100644 inventory/SlotFuel.java create mode 100644 inventory/SlotTool.java create mode 100644 item/ArmorAB.java create mode 100644 item/IBackWearableItem.java create mode 100644 item/ItemAB.java create mode 100644 item/ItemAdventureBackpack.java create mode 100644 item/ItemAdventureHat.java create mode 100644 item/ItemAdventureJacket.java create mode 100644 item/ItemAdventurePantaloon.java create mode 100644 item/ItemCoalJetpack.java create mode 100644 item/ItemComponent.java create mode 100644 item/ItemCopterPack.java create mode 100644 item/ItemCrossbow.java create mode 100644 item/ItemCrossbowMagazine.java create mode 100644 item/ItemHose.java create mode 100644 item/ItemJuiceBottle.java create mode 100644 item/ItemMachete.java create mode 100644 item/ItemPistonBoots.java create mode 100644 item/ItemProjectile.java create mode 100644 item/ItemTelescope.java create mode 100644 item/ToolAB.java diff --git a/events/WearableEvent.java b/events/WearableEvent.java new file mode 100644 index 00000000..c16b3670 --- /dev/null +++ b/events/WearableEvent.java @@ -0,0 +1,39 @@ +package com.darkona.adventurebackpack.events; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraftforge.event.entity.player.PlayerEvent; + +/** + * Created on 16/10/2014 + * + * @author Darkona + */ +public class WearableEvent extends PlayerEvent +{ + + public final ItemStack wearable; + + public WearableEvent(EntityPlayer player, ItemStack wearable) + { + super(player); + this.wearable = wearable; + } + + public static class UnequipWearableEvent extends WearableEvent + { + public UnequipWearableEvent(EntityPlayer player, ItemStack wearable) + { + super(player, wearable); + } + } + + public static class EquipWearableEvent extends WearableEvent + { + public EquipWearableEvent(EntityPlayer player, ItemStack wearable) + { + super(player, wearable); + } + } + +} diff --git a/fluids/FluidEffectRegistry.java b/fluids/FluidEffectRegistry.java new file mode 100644 index 00000000..02834e54 --- /dev/null +++ b/fluids/FluidEffectRegistry.java @@ -0,0 +1,118 @@ +package com.darkona.adventurebackpack.fluids; + +import adventurebackpack.api.FluidEffect; +import com.darkona.adventurebackpack.fluids.effects.*; +import com.darkona.adventurebackpack.util.LogHelper; +import com.google.common.collect.BiMap; +import com.google.common.collect.HashBiMap; +import com.google.common.collect.ImmutableMap; +import net.minecraft.entity.Entity; +import net.minecraft.world.World; +import net.minecraftforge.fluids.Fluid; + +import java.util.ArrayList; +import java.util.Map; + +/** + * Created on 12/10/2014 + * + * @author Darkona + */ +public class FluidEffectRegistry +{ + static BiMap EFFECT_REGISTRY = HashBiMap.create(); + + public static FluidEffect WATER_EFFECT; + public static FluidEffect LAVA_EFFECT; + public static FluidEffect MILK_EFFECT; + public static FluidEffect MELON_EFFECT; + public static FluidEffect SOUP_EFFECT; + + private static int effectIDCounter = 0; + + public static void init() + { + EFFECT_REGISTRY.clear(); + WATER_EFFECT = new WaterEffect(); + LAVA_EFFECT = new LavaEffect(); + MILK_EFFECT = new MilkEffect(); + MELON_EFFECT = new MelonJuiceEffect(); + SOUP_EFFECT = new MushroomStewEffect(); + } + + /** + * @param effect + * @return + */ + public static int registerFluidEffect(FluidEffect effect) + { + String className = effect.getClass().getName(); + if (!EFFECT_REGISTRY.containsKey(className) && effect.fluid != null) + { + EFFECT_REGISTRY.put(className, effect); + effect.setEffectID(effectIDCounter); + LogHelper.info("Registered the class " + className + " as a FluidEffect for " + effect.fluid.getName() + " with the ID " + effectIDCounter); + effectIDCounter++; + return effectIDCounter; + } + return -1; + } + + public static Map getRegisteredFluidEffects() + { + return ImmutableMap.copyOf(EFFECT_REGISTRY); + } + + public static String[] getRegisteredFluids() + { + String[] result = new String[EFFECT_REGISTRY.size()]; + int counter = 0; + for (FluidEffect effect : getRegisteredFluidEffects().values()) + { + result[counter++] = effect.fluid.getName(); + } + return result; + } + + public static boolean hasFluidEffect(Fluid fluid) + { + for (FluidEffect effect : getRegisteredFluidEffects().values()) + { + if (fluid == effect.fluid) + { + return true; + } + } + return false; + } + + public static ArrayList getEffectsForFluid(Fluid fluid) + { + ArrayList effectsForFluid = new ArrayList(); + for (FluidEffect effect : EFFECT_REGISTRY.values()) + { + if (fluid == effect.fluid) + { + effectsForFluid.add(effect); + } + } + return effectsForFluid; + } + + public static boolean executeFluidEffectsForFluid(Fluid fluid, Entity entity, World world) + { + boolean executed = false; + for (FluidEffect effect : EFFECT_REGISTRY.values()) + { + if (effect != null) + { + if (effect.fluid == fluid) + { + effect.affectDrinker(world, entity); + executed = true; + } + } + } + return executed; + } +} diff --git a/fluids/FluidMelonJuice.java b/fluids/FluidMelonJuice.java new file mode 100644 index 00000000..3805c3ab --- /dev/null +++ b/fluids/FluidMelonJuice.java @@ -0,0 +1,50 @@ +package com.darkona.adventurebackpack.fluids; + +import com.darkona.adventurebackpack.client.Icons; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; + +/** + * Created by Darkona on 12/10/2014. + */ +public class FluidMelonJuice extends Fluid +{ + + public FluidMelonJuice() + { + super("melonJuice"); + setUnlocalizedName("melonJuice"); + } + + @Override + public IIcon getStillIcon() + { + return Icons.melonJuiceStill; + } + + @Override + public IIcon getIcon() + { + return Icons.melonJuiceStill; + } + + @Override + public IIcon getFlowingIcon() + { + return Icons.melonJuiceFlowing; + } + + @Override + public int getColor(FluidStack stack) + { + return 0xc31d08; + } + + @Override + public boolean isGaseous(World world, int x, int y, int z) + { + return false; + } +} diff --git a/fluids/FluidMilk.java b/fluids/FluidMilk.java new file mode 100644 index 00000000..ca06b4cd --- /dev/null +++ b/fluids/FluidMilk.java @@ -0,0 +1,57 @@ +package com.darkona.adventurebackpack.fluids; + + +import com.darkona.adventurebackpack.client.Icons; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; + +/** + * Created on 12/10/2014. + * @author Javier Darkona + */ +public class FluidMilk extends Fluid +{ + + public FluidMilk() + { + super("milk"); + setDensity(1200); + setViscosity(1200); + setLuminosity(0); + } + + + @Override + public IIcon getStillIcon() + { + return Icons.milkStill; + } + + @Override + public IIcon getIcon() + { + return Icons.milkStill; + } + + @Override + public IIcon getFlowingIcon() + { + return Icons.milkStill; + } + + @Override + public int getColor(FluidStack stack) + { + return 0xffffff; + } + + @Override + public boolean isGaseous(World world, int x, int y, int z) + { + return false; + } + + +} \ No newline at end of file diff --git a/fluids/FluidMushroomStew.java b/fluids/FluidMushroomStew.java new file mode 100644 index 00000000..ebbcec88 --- /dev/null +++ b/fluids/FluidMushroomStew.java @@ -0,0 +1,54 @@ +package com.darkona.adventurebackpack.fluids; + +import com.darkona.adventurebackpack.client.Icons; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; + +/** + * Created on 11/01/2015 + * + * @author Darkona + */ +public class FluidMushroomStew extends Fluid +{ + public FluidMushroomStew() + { + super("mushroomStew"); + setDensity(1200); + setViscosity(1200); + setLuminosity(0); + } + + @Override + public IIcon getStillIcon() + { + return Icons.mushRoomStewStill; + } + + @Override + public IIcon getIcon() + { + return Icons.mushRoomStewStill; + } + + @Override + public IIcon getFlowingIcon() + { + return Icons.mushRoomStewFlowing; + } + + @Override + public int getColor(FluidStack stack) + { + //Color color1 = new Color(205,140,111); + return 0xcd8c6f; + } + + @Override + public boolean isGaseous(World world, int x, int y, int z) + { + return false; + } +} diff --git a/fluids/TankWrapper.java b/fluids/TankWrapper.java new file mode 100644 index 00000000..fc1f472f --- /dev/null +++ b/fluids/TankWrapper.java @@ -0,0 +1,39 @@ +package com.darkona.adventurebackpack.fluids; + +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; + +/** + * Created on 17/01/2015 + * + * @author Darkona + */ +public class TankWrapper extends FluidTank +{ + public TankWrapper(int capacity) + { + super(capacity); + } + + public TankWrapper(FluidStack stack, int capacity) + { + super(stack, capacity); + } + + public TankWrapper(Fluid fluid, int amount, int capacity) + { + super(fluid, amount, capacity); + } + + public boolean isFull() + { + return this.fluid != null && this.getFluidAmount() == this.capacity; + } + + public boolean isEmpty() + { + return this.fluid == null || (this.getFluidAmount() == this.capacity); + } + +} diff --git a/fluids/effects/FuelEffect.java b/fluids/effects/FuelEffect.java new file mode 100644 index 00000000..bef8dab5 --- /dev/null +++ b/fluids/effects/FuelEffect.java @@ -0,0 +1,47 @@ +package com.darkona.adventurebackpack.fluids.effects; + +import adventurebackpack.api.FluidEffect; +import com.darkona.adventurebackpack.util.Utils; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; +import net.minecraftforge.fluids.FluidRegistry; + +/** + * Created on 12/10/2014 + * + * @author Darkona + */ + + +public class FuelEffect extends FluidEffect +{ + + public FuelEffect() + { + super(FluidRegistry.getFluid("fuel"), 20); + } + + /** + * This method determines what will happen to the player when drinking the + * corresponding fluid. For example set potion effects, set player on fire, + * heal, fill hunger, etc. You can use the world parameter to make + * conditions based on where the player is. + * + * @param world The World. + * @param player The Player. + */ + @Override + public void affectDrinker(World world, Entity entity) + { + if (entity instanceof EntityPlayer) + { + EntityPlayer player = (EntityPlayer) entity; + player.addPotionEffect(new PotionEffect(Potion.confusion.getId(), this.timeInTicks, 2)); + player.addPotionEffect(new PotionEffect(Potion.moveSlowdown.getId(), this.timeInTicks, 1)); + player.addPotionEffect(new PotionEffect(Potion.poison.getId(), Utils.secondsToTicks(8), 0)); + } + } +} diff --git a/fluids/effects/LavaEffect.java b/fluids/effects/LavaEffect.java new file mode 100644 index 00000000..704cf129 --- /dev/null +++ b/fluids/effects/LavaEffect.java @@ -0,0 +1,34 @@ +package com.darkona.adventurebackpack.fluids.effects; + +import adventurebackpack.api.FluidEffect; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; +import net.minecraftforge.fluids.FluidRegistry; + +/** + * Created by Darkona on 12/10/2014. + */ +public class LavaEffect extends FluidEffect +{ + public LavaEffect() + { + super(FluidRegistry.LAVA, 15); + } + + @Override + public void affectDrinker(World world, Entity entity) + { + if (entity instanceof EntityPlayer) + { + EntityPlayer player = (EntityPlayer) entity; + player.setFire(timeInSeconds); + player.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, timeInSeconds * 20 * 6, 2, false)); + player.addPotionEffect(new PotionEffect(Potion.jump.id, timeInSeconds * 20 * 6, 0, false)); + player.addPotionEffect(new PotionEffect(Potion.digSlowdown.id, timeInSeconds * 20 * 6, 3, false)); + } + } + +} diff --git a/fluids/effects/MelonJuiceEffect.java b/fluids/effects/MelonJuiceEffect.java new file mode 100644 index 00000000..362e848a --- /dev/null +++ b/fluids/effects/MelonJuiceEffect.java @@ -0,0 +1,42 @@ +package com.darkona.adventurebackpack.fluids.effects; + +import adventurebackpack.api.FluidEffect; +import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; +import com.darkona.adventurebackpack.init.ModFluids; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; + +/** + * Created by Darkona on 12/10/2014. + */ +public class MelonJuiceEffect extends FluidEffect +{ + + public MelonJuiceEffect() + { + super(ModFluids.melonJuice, 30); + } + + /** + * This method determines what will happen to the player when drinking the + * corresponding fluid. For example set potion effects, set player on fire, + * heal, fill hunger, etc. You can use the world parameter to make + * conditions based on where the player is. + * + * @param world The World. + * @param player The Player. + */ + @Override + public void affectDrinker(World world, Entity entity) + { + if (entity instanceof EntityPlayer) + { + EntityPlayer player = (EntityPlayer) entity; + player.addPotionEffect(new PotionEffect(Potion.digSpeed.getId(), timeInTicks, 0)); + FluidEffectRegistry.WATER_EFFECT.affectDrinker(world, player); + } + } +} diff --git a/fluids/effects/MilkEffect.java b/fluids/effects/MilkEffect.java new file mode 100644 index 00000000..36f0e860 --- /dev/null +++ b/fluids/effects/MilkEffect.java @@ -0,0 +1,29 @@ +package com.darkona.adventurebackpack.fluids.effects; + +import adventurebackpack.api.FluidEffect; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; +import net.minecraftforge.fluids.FluidRegistry; + +/** + * Created on 12/10/2014. + * + * @author Javier Darkona + */ +public class MilkEffect extends FluidEffect +{ + public MilkEffect() + { + super(FluidRegistry.getFluid("milk"), 7); + } + + @Override + public void affectDrinker(World world, Entity entity) + { + if (entity instanceof EntityPlayer) + { + ((EntityPlayer) entity).clearActivePotions(); + } + } +} diff --git a/fluids/effects/MushroomStewEffect.java b/fluids/effects/MushroomStewEffect.java new file mode 100644 index 00000000..037d7ddf --- /dev/null +++ b/fluids/effects/MushroomStewEffect.java @@ -0,0 +1,30 @@ +package com.darkona.adventurebackpack.fluids.effects; + +import adventurebackpack.api.FluidEffect; +import com.darkona.adventurebackpack.init.ModFluids; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; +import net.minecraftforge.fluids.FluidRegistry; + +/** + * Created on 11/01/2015 + * + * @author Darkona + */ +@SuppressWarnings("unused") +public class MushroomStewEffect extends FluidEffect +{ + public MushroomStewEffect() + { + super(FluidRegistry.getFluid("mushroomstew")); + } + @Override + public void affectDrinker(World world, Entity entity) + { + if(entity instanceof EntityPlayer) + { + ((EntityPlayer)entity).getFoodStats().addStats(6,0.6F); + } + } +} diff --git a/fluids/effects/OilEffect.java b/fluids/effects/OilEffect.java new file mode 100644 index 00000000..76c9f508 --- /dev/null +++ b/fluids/effects/OilEffect.java @@ -0,0 +1,40 @@ +package com.darkona.adventurebackpack.fluids.effects; + +import adventurebackpack.api.FluidEffect; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; +import net.minecraftforge.fluids.FluidRegistry; + +/** + * Created by Darkona on 12/10/2014. + */ +public class OilEffect extends FluidEffect +{ + public OilEffect() + { + super(FluidRegistry.getFluid("oil"), 20); + } + + /** + * This method determines what will happen to the player when drinking the + * corresponding fluid. For example set potion effects, set player on fire, + * heal, fill hunger, etc. You can use the world parameter to make + * conditions based on where the player is. + * + * @param world The World. + * @param entity The Player. + */ + @Override + public void affectDrinker(World world, Entity entity) + { + if (entity instanceof EntityPlayer) + { + EntityPlayer player = (EntityPlayer) entity; + player.addPotionEffect(new PotionEffect(Potion.confusion.getId(), this.timeInTicks, 2)); + player.addPotionEffect(new PotionEffect(Potion.poison.getId(), this.timeInTicks / 2, 1)); + } + } +} diff --git a/fluids/effects/WaterEffect.java b/fluids/effects/WaterEffect.java new file mode 100644 index 00000000..5b79427a --- /dev/null +++ b/fluids/effects/WaterEffect.java @@ -0,0 +1,46 @@ +package com.darkona.adventurebackpack.fluids.effects; + +import adventurebackpack.api.FluidEffect; +import com.darkona.adventurebackpack.util.Utils; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraftforge.common.BiomeDictionary; +import net.minecraftforge.fluids.FluidRegistry; + +/** + * Created on 12/10/2014. + * + * @author Javier Darkona + */ +@SuppressWarnings("unused") +public class WaterEffect extends FluidEffect +{ + + public WaterEffect() + { + super(FluidRegistry.WATER, 7); + } + + @Override + public void affectDrinker(World world, Entity entity) + { + if (entity instanceof EntityPlayer) + { + EntityPlayer player = (EntityPlayer) entity; + { + // player.getFoodStats().addStats(1, 0.1f); + if (player.isBurning()) + { + player.extinguish(); + }else { + player.addPotionEffect(new PotionEffect(Potion.regeneration.id, Utils.secondsToTicks(timeInSeconds), 0)); + } + } + + } + } +} diff --git a/handlers/ClientEventHandler.java b/handlers/ClientEventHandler.java new file mode 100644 index 00000000..2cdb9bc7 --- /dev/null +++ b/handlers/ClientEventHandler.java @@ -0,0 +1,120 @@ +package com.darkona.adventurebackpack.handlers; + +import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.common.ServerActions; +import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.inventory.SlotTool; +import com.darkona.adventurebackpack.item.ItemAdventureBackpack; +import com.darkona.adventurebackpack.item.ItemHose; +import com.darkona.adventurebackpack.network.CycleToolPacket; +import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.util.Wearing; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityClientPlayerMP; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.client.event.MouseEvent; +import net.minecraftforge.event.entity.player.ItemTooltipEvent; +import net.minecraftforge.fluids.FluidTank; + +/** + * Created on 17/10/2014 + * + * @author Darkona + */ +public class ClientEventHandler +{ + /** + * Makes the tool tips of the backpacks have the Tank information displayed below. + */ + @SubscribeEvent + @SideOnly(Side.CLIENT) + public void toolTips(ItemTooltipEvent event) + { + if (event.itemStack.getItem() instanceof ItemAdventureBackpack) + { + NBTTagCompound compound = event.itemStack.stackTagCompound; + FluidTank tank = new FluidTank(Constants.basicTankCapacity); + String tankInfo = ""; + if (compound != null) + { + if (compound.hasKey("leftTank")) + { + tank.readFromNBT(compound.getCompoundTag("leftTank")); + String name = tank.getFluid() == null ? "" : tank.getFluid().getLocalizedName(); + tankInfo = EnumChatFormatting.BLUE + "Left Tank: " + tank.getFluidAmount() + "/" + tank.getCapacity() + " " + name; + + event.toolTip.add(tankInfo); + } + if (compound.hasKey("rightTank")) + { + tank.readFromNBT(compound.getCompoundTag("rightTank")); + String name = tank.getFluid() == null ? "" : tank.getFluid().getLocalizedName(); + tankInfo = EnumChatFormatting.RED + "Right Tank: " + tank.getFluidAmount() + "/" + tank.getCapacity() + " " + name; + + event.toolTip.add(tankInfo); + } + } + } + } + + /** + * @param event + */ + @SubscribeEvent + @SideOnly(Side.CLIENT) + public void mouseWheelDetect(MouseEvent event) + { + /*Special thanks go to MachineMuse, both for inspiration and the event. God bless you girl.*/ + Minecraft mc = Minecraft.getMinecraft(); + int dWheel = event.dwheel; + if (dWheel != 0) + { + //LogHelper.debug("Mouse Wheel moving"); + EntityClientPlayerMP player = mc.thePlayer; + boolean hasCape = player.func_152122_n(); + hasCape = event.buttonstate && hasCape; + @SuppressWarnings("unused") + float f4; + + if (hasCape && !player.isInvisible() && !player.getHideCape()) + if (player != null && !player.isDead && player.isSneaking()) + { + ItemStack backpack = Wearing.getWearingBackpack(player); + if (backpack != null && backpack.getItem() instanceof ItemAdventureBackpack) + { + if (player.getCurrentEquippedItem() != null) + { + int slot = player.inventory.currentItem; + ItemStack heldItem = player.inventory.getStackInSlot(slot); + Item theItem = heldItem.getItem(); + + if (SlotTool.isValidTool(heldItem) || + (BackpackNames.getBackpackColorName(backpack).equals("Skeleton") && theItem.equals(Items.bow))) + { + ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(dWheel, slot, CycleToolPacket.CYCLE_TOOL_ACTION)); + ServerActions.cycleTool(player, dWheel, slot); + event.setCanceled(true); + } + + if (theItem instanceof ItemHose) + { + ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(dWheel, slot, CycleToolPacket.SWITCH_HOSE_ACTION)); + ServerActions.switchHose(player, ServerActions.HOSE_SWITCH, dWheel, slot); + event.setCanceled(true); + { + + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/handlers/GeneralEventHandler.java b/handlers/GeneralEventHandler.java new file mode 100644 index 00000000..de24fb6b --- /dev/null +++ b/handlers/GeneralEventHandler.java @@ -0,0 +1,175 @@ +package com.darkona.adventurebackpack.handlers; + +import com.darkona.adventurebackpack.common.ServerActions; +import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.entity.ai.EntityAIHorseFollowOwner; +import com.darkona.adventurebackpack.events.WearableEvent; +import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; +import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.inventory.InventoryBackpack; +import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; +import com.darkona.adventurebackpack.util.Utils; +import com.darkona.adventurebackpack.util.Wearing; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.EntityAITasks; +import net.minecraft.entity.passive.EntityHorse; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; +import net.minecraft.item.ItemAppleGold; +import net.minecraft.item.ItemPotion; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.event.entity.EntityJoinWorldEvent; +import net.minecraftforge.event.entity.EntityStruckByLightningEvent; +import net.minecraftforge.event.entity.player.ArrowLooseEvent; +import net.minecraftforge.event.entity.player.ArrowNockEvent; +import net.minecraftforge.event.entity.player.PlayerUseItemEvent; +import net.minecraftforge.fluids.FluidRegistry; + +import java.util.UUID; + +/** + * Created on 17/10/2014 + * + * @author Darkona + */ +public class GeneralEventHandler +{ + /** + * @param event + */ + @SubscribeEvent + public void eatGoldenApple(PlayerUseItemEvent.Finish event) + { + EntityPlayer player = event.entityPlayer; + if (ConfigHandler.BACKPACK_ABILITIES) + { + if (event.item.getItem() instanceof ItemAppleGold && + //((ItemAppleGold) event.item.getItem()).getRarity(event.item) == EnumRarity.epic && + Wearing.isWearingTheRightBackpack(player, "Rainbow")) + { + + InventoryBackpack inv = new InventoryBackpack(Wearing.getWearingBackpack(player)); + if (inv.getLastTime() > 0) return; + inv.setLastTime(Utils.secondsToTicks(150)); + inv.dirtyTime(); + if (!player.worldObj.isRemote) + { + String nyanString = + EnumChatFormatting.RED + "N" + + EnumChatFormatting.GOLD + "Y" + + EnumChatFormatting.YELLOW + "A" + + EnumChatFormatting.GREEN + "N" + + EnumChatFormatting.AQUA + "C" + + EnumChatFormatting.BLUE + "A" + + EnumChatFormatting.DARK_PURPLE + "T"; + player.addChatComponentMessage(new ChatComponentText(nyanString)); + ModNetwork.sendToNearby(new EntitySoundPacket.Message(EntitySoundPacket.NYAN_SOUND, player), player); + } + } + } + + if (event.item.getItem() instanceof ItemPotion + && (event.item.getItem()).getDamage(event.item) == 0) + { + if (!player.worldObj.isRemote) + { + FluidEffectRegistry.executeFluidEffectsForFluid(FluidRegistry.WATER, player, player.getEntityWorld()); + } + } + } + + @SubscribeEvent + public void detectBow(ArrowNockEvent event) + { + if (!ConfigHandler.BACKPACK_ABILITIES) return; + if (Wearing.isWearingTheRightBackpack(event.entityPlayer, "Skeleton")) + { + InventoryBackpack backpack = new InventoryBackpack(Wearing.getWearingBackpack(event.entityPlayer)); + if (backpack.hasItem(Items.arrow)) + { + event.entityPlayer.setItemInUse(event.result, event.result.getMaxItemUseDuration()); + event.setCanceled(true); + } + } + } + + @SubscribeEvent + public void detectArrow(ArrowLooseEvent event) + { + if (!ConfigHandler.BACKPACK_ABILITIES) return; + if (Wearing.isWearingTheRightBackpack(event.entityPlayer, "Skeleton")) + { + InventoryBackpack backpack = new InventoryBackpack(Wearing.getWearingBackpack(event.entityPlayer)); + if (backpack.hasItem(Items.arrow)) + { + ServerActions.leakArrow(event.entityPlayer, event.bow, event.charge); + event.setCanceled(true); + } + } + } + + /** + * @param event + */ + @SubscribeEvent + public void detectLightning(EntityStruckByLightningEvent event) + { + if (event.entity != null && event.entity instanceof EntityPlayer) + { + ServerActions.electrify((EntityPlayer) event.entity); + } + } + + @SubscribeEvent + public void makeHorsesFollowOwner(EntityJoinWorldEvent event) + { + if(!ConfigHandler.BACKPACK_ABILITIES)return; + if(event.entity instanceof EntityHorse) + { + + EntityHorse horse = ((EntityHorse)event.entity); + if(!horse.isDead && horse.isTame() && horse.hasCustomNameTag()) + { + String ownerUUIDstring = horse.func_152119_ch(); + if (ownerUUIDstring != null && !ownerUUIDstring.isEmpty()) + { + boolean set = true; + if(horse.worldObj.func_152378_a(UUID.fromString(ownerUUIDstring)) != null) + { + for (Object entry : horse.tasks.taskEntries) + { + if (((EntityAITasks.EntityAITaskEntry) entry).action instanceof EntityAIHorseFollowOwner) + { + set = false; + } + } + } + if(set) + { + horse.tasks.addTask(4, new EntityAIHorseFollowOwner(horse, 1.5d, 2.0f, 20.0f)); + + if (horse.getAttributeMap().getAttributeInstance(SharedMonsterAttributes.followRange) != null) + { + horse.getAttributeMap().getAttributeInstance(SharedMonsterAttributes.followRange).setBaseValue(100.0D); + } + } + } + } + } + } + + @SubscribeEvent + public void backpackUnequipped(WearableEvent.UnequipWearableEvent event) + { + + + } + + /* @SubscribeEvent + public void listFluids(FluidRegistry.FluidRegisterEvent event) + { + LogHelper.info("Registered fluid " + event.fluidName + " with id " + event.fluidID); + }*/ +} diff --git a/handlers/GuiHandler.java b/handlers/GuiHandler.java new file mode 100644 index 00000000..1c4a3b20 --- /dev/null +++ b/handlers/GuiHandler.java @@ -0,0 +1,142 @@ +package com.darkona.adventurebackpack.handlers; + +import com.darkona.adventurebackpack.block.TileAdventureBackpack; +import com.darkona.adventurebackpack.client.gui.GuiAdvBackpack; +import com.darkona.adventurebackpack.client.gui.GuiCopterPack; +import com.darkona.adventurebackpack.client.gui.GuiCoalJetpack; +import com.darkona.adventurebackpack.inventory.*; +import com.darkona.adventurebackpack.util.Wearing; +import cpw.mods.fml.common.network.IGuiHandler; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; + +/** + * Created on 12/10/2014 + * + * @author Darkona + */ +public class GuiHandler implements IGuiHandler +{ + public static final byte JETPACK_WEARING = 6; + public static final byte JETPACK_HOLDING = 5; + public static final byte COPTER_WEARING = 4; + public static final byte COPTER_HOLDING = 3; + public static final byte BACKPACK_HOLDING = 2; + public static final byte BACKPACK_WEARING = 1; + public static final byte BACKPACK_TILE = 0; + + + public GuiHandler() + { + } + + @Override + public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) + { + switch (ID) + { + case BACKPACK_TILE: + if (world.getTileEntity(x, y, z) != null && world.getTileEntity(x, y, z) instanceof TileAdventureBackpack) + { + return new ContainerBackpack(player, (TileAdventureBackpack) world.getTileEntity(x, y, z), ContainerBackpack.SOURCE_TILE); + } + break; + case BACKPACK_WEARING: + if (Wearing.isWearingBackpack(player)) + { + return new ContainerBackpack(player, new InventoryBackpack(Wearing.getWearingBackpack(player)), ContainerBackpack.SOURCE_WEARING); + } + break; + case BACKPACK_HOLDING: + if (Wearing.isHoldingBackpack(player)) + { + return new ContainerBackpack(player, new InventoryBackpack(Wearing.getHoldingBackpack(player)), ContainerBackpack.SOURCE_HOLDING); + } + break; + case COPTER_HOLDING: + if (Wearing.isHoldingCopter(player)) + { + return new ContainerCopter(player, new InventoryCopterPack(Wearing.getHoldingCopter(player)),false); + } + break; + case COPTER_WEARING: + if (Wearing.isWearingCopter(player)) + { + return new ContainerCopter(player, new InventoryCopterPack(Wearing.getWearingCopter(player)), true); + } + break; + case JETPACK_HOLDING: + if (Wearing.isHoldingSteam(player)) + { + return new ContainerJetpack(player, new InventoryCoalJetpack(Wearing.getHoldingSteam(player)),false); + } + break; + case JETPACK_WEARING: + if (Wearing.isWearingSteam(player)) + { + return new ContainerJetpack(player, new InventoryCoalJetpack(Wearing.getWearingSteam(player)), true); + } + break; + default: + player.closeScreen(); + break; + } + + return null; + + } + + @Override + public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) + { + switch (ID) + { + case BACKPACK_TILE: + if (world.getTileEntity(x, y, z) != null && world.getTileEntity(x, y, z) instanceof TileAdventureBackpack) + { + return new GuiAdvBackpack(player, (TileAdventureBackpack) world.getTileEntity(x, y, z)); + } + break; + case BACKPACK_WEARING: + if (Wearing.isWearingBackpack(player)) + { + return new GuiAdvBackpack(player, new InventoryBackpack(Wearing.getWearingBackpack(player)), true); + } + break; + case BACKPACK_HOLDING: + if (Wearing.isHoldingBackpack(player)) + { + return new GuiAdvBackpack(player, new InventoryBackpack(Wearing.getHoldingBackpack(player)), false); + } + break; + case COPTER_HOLDING: + if (Wearing.isHoldingCopter(player)) + { + return new GuiCopterPack(player, new InventoryCopterPack(Wearing.getHoldingCopter(player)),false); + } + break; + case COPTER_WEARING: + if (Wearing.isWearingCopter(player)) + { + return new GuiCopterPack(player, new InventoryCopterPack(Wearing.getWearingCopter(player)), true); + } + break; + case JETPACK_HOLDING: + if (Wearing.isHoldingSteam(player)) + { + return new GuiCoalJetpack(player, new InventoryCoalJetpack(Wearing.getHoldingSteam(player)),false); + } + break; + case JETPACK_WEARING: + if (Wearing.isWearingSteam(player)) + { + return new GuiCoalJetpack(player, new InventoryCoalJetpack(Wearing.getWearingSteam(player)), true); + } + break; + default: + player.closeScreen(); + break; + } + return null; + } +} diff --git a/handlers/KeybindHandler.java b/handlers/KeybindHandler.java new file mode 100644 index 00000000..be15a885 --- /dev/null +++ b/handlers/KeybindHandler.java @@ -0,0 +1,108 @@ +package com.darkona.adventurebackpack.handlers; + +import com.darkona.adventurebackpack.common.ServerActions; +import com.darkona.adventurebackpack.config.Keybindings; +import com.darkona.adventurebackpack.entity.EntityFriendlySpider; +import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.item.ItemHose; +import com.darkona.adventurebackpack.network.*; +import com.darkona.adventurebackpack.reference.Key; +import com.darkona.adventurebackpack.util.Wearing; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.InputEvent; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; + +/** + * Created by Darkona on 11/10/2014. + */ +public class KeybindHandler +{ + + private static Key getPressedKeyBinding() + { + if (Keybindings.openBackpack.isPressed()) + { + return Key.INVENTORY_KEY; + } + if (Keybindings.toggleHose.isPressed()) + { + return Key.TOGGLE_KEY; + } + + if (Minecraft.getMinecraft().gameSettings.keyBindJump.isPressed()) + { + return Key.JUMP; + } + return Key.UNKNOWN; + } + + @SubscribeEvent + public void handleKeyInputEvent(InputEvent.KeyInputEvent event) + { + Key keypressed = getPressedKeyBinding(); + Minecraft mc = Minecraft.getMinecraft(); + EntityPlayer player = mc.thePlayer; + + if(player != null) + { + if (keypressed == Key.INVENTORY_KEY) + { + if (mc.inGameHasFocus) + { + ModNetwork.net.sendToServer(new SyncPropertiesPacket.Message()); + if (Wearing.isWearingBackpack(player)) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_KEYBIND)); + } + if (Wearing.isWearingCopter(player)) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.COPTER_GUI, GUIPacket.FROM_KEYBIND)); + } + if (Wearing.isWearingSteam(player)) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.JETPACK_GUI, GUIPacket.FROM_KEYBIND)); + } + } + } + + if (keypressed == Key.TOGGLE_KEY) + { + if(player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemHose) + { + ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(0, (player).inventory.currentItem, CycleToolPacket.TOGGLE_HOSE_TANK)); + ServerActions.switchHose(player, ServerActions.HOSE_TOGGLE, 0, (player).inventory.currentItem); + } + if (Wearing.isWearingCopter(player)) + { + if (!player.isSneaking()) + { + ModNetwork.net.sendToServer(new WearableModePacket.Message(WearableModePacket.COPTER_TOGGLE, "")); + ServerActions.toggleCopterPack(player, Wearing.getWearingCopter(player), WearableModePacket.COPTER_TOGGLE); + } else + { + ModNetwork.net.sendToServer(new WearableModePacket.Message(WearableModePacket.COPTER_ON_OFF, "")); + ServerActions.toggleCopterPack(player, Wearing.getWearingCopter(player), WearableModePacket.COPTER_ON_OFF); + } + } + if (Wearing.isWearingSteam(player)) + { + if (player.isSneaking()) + { + ModNetwork.net.sendToServer(new WearableModePacket.Message(WearableModePacket.JETPACK_ON_OFF, "")); + ServerActions.toggleSteamJetpack(player, Wearing.getWearingSteam(player), WearableModePacket.JETPACK_ON_OFF); + } + } + } + + if(keypressed == Key.JUMP ) + { + if(player.ridingEntity != null && player.ridingEntity instanceof EntityFriendlySpider) + { + ModNetwork.net.sendToServer(new PlayerActionPacket.ActionMessage(PlayerActionPacket.spiderJump)); + ((EntityFriendlySpider)player.ridingEntity).setJumping(true); + } + } + } + } +} \ No newline at end of file diff --git a/handlers/PlayerEventHandler.java b/handlers/PlayerEventHandler.java new file mode 100644 index 00000000..617bf025 --- /dev/null +++ b/handlers/PlayerEventHandler.java @@ -0,0 +1,315 @@ +package com.darkona.adventurebackpack.handlers; + +import com.darkona.adventurebackpack.common.ServerActions; +import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.entity.EntityFriendlySpider; +import com.darkona.adventurebackpack.entity.ai.EntityAIHorseFollowOwner; +import com.darkona.adventurebackpack.init.ModBlocks; +import com.darkona.adventurebackpack.init.ModItems; +import com.darkona.adventurebackpack.item.IBackWearableItem; +import com.darkona.adventurebackpack.playerProperties.BackpackProperty; +import com.darkona.adventurebackpack.proxy.ServerProxy; +import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.util.LogHelper; +import com.darkona.adventurebackpack.util.Utils; +import com.darkona.adventurebackpack.util.Wearing; +import cpw.mods.fml.common.eventhandler.Event; +import cpw.mods.fml.common.eventhandler.EventPriority; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.PlayerEvent; +import cpw.mods.fml.common.gameevent.TickEvent; +import net.minecraft.entity.EntityCreature; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.monster.EntitySpider; +import net.minecraft.entity.passive.EntityHorse; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemNameTag; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ChunkCoordinates; +import net.minecraftforge.event.entity.EntityEvent; +import net.minecraftforge.event.entity.EntityJoinWorldEvent; +import net.minecraftforge.event.entity.living.LivingDeathEvent; +import net.minecraftforge.event.entity.living.LivingEvent; +import net.minecraftforge.event.entity.living.LivingFallEvent; +import net.minecraftforge.event.entity.player.EntityInteractEvent; +import net.minecraftforge.event.entity.player.PlayerWakeUpEvent; +import com.darkona.adventurebackpack.develop.msg; + +/** + * Created on 11/10/2014 + * Handle ALL the events! + * + * @author Darkona + * @see com.darkona.adventurebackpack.client.ClientActions + */ +public class PlayerEventHandler +{ + @SuppressWarnings("unused") + private static int tickCounter = 0; + @SubscribeEvent + public void registerBackpackProperty(EntityEvent.EntityConstructing event) + { + if (event.entity instanceof EntityPlayer && BackpackProperty.get((EntityPlayer) event.entity) == null) + { + BackpackProperty.register((EntityPlayer) event.entity); + /*if (!event.entity.worldObj.isRemote) + { + AdventureBackpack.proxy.joinPlayer((EntityPlayer)event.entity); + }*/ + } + + } + @SubscribeEvent + public void joinPlayer(EntityJoinWorldEvent event) + { + if (!event.world.isRemote) + { + if (Utils.notNullAndInstanceOf(event.entity, EntityPlayer.class)) + { + EntityPlayer player = (EntityPlayer) event.entity; + LogHelper.info("Joined EntityPlayer of name: " + event.entity.getCommandSenderName()); + BackpackProperty.syncToNear(player); + msg.handleJoin(player); + NBTTagCompound playerData = ServerProxy.extractPlayerProps(player.getUniqueID()); + if (playerData != null) + { + BackpackProperty.get(player).loadNBTData(playerData); + BackpackProperty.syncToNear(player); + BackpackProperty.sync(player); + LogHelper.info("Stored properties retrieved"); + } + } + } + + } + + @SubscribeEvent + public NBTTagCompound playerLogsIn(PlayerEvent.PlayerLoggedInEvent event) + { + if (event.player instanceof EntityPlayerMP) + { + BackpackProperty.sync(event.player); + return new NBTTagCompound(); + } + return null; + } + + @SubscribeEvent + public void playerTravelsAcrossDimensions(PlayerEvent.PlayerChangedDimensionEvent event) + { + if (event.player instanceof EntityPlayerMP) + { + BackpackProperty.sync(event.player); + } + } + + /** + * Used for the Piston Boots to give them their amazing powers. + * + * @param event + */ + @SubscribeEvent + public void onPlayerJump(LivingEvent.LivingJumpEvent event) + { + if (event.entity != null && + event.entityLiving instanceof EntityPlayer) + { + EntityPlayer player = (EntityPlayer) event.entity; + + + if (Wearing.isWearingBoots(player) && player.onGround) + { + ServerActions.pistonBootsJump(player); + } + } + } + + /** + * Used by the Piston boots to lessen the fall damage. It's hacky, but I don't care. + * + * @param event + */ + @SubscribeEvent + public void onFall(LivingFallEvent event) + { + if (event.entity != null) + { + if (event.entityLiving instanceof EntityCreature && ConfigHandler.FIX_LEAD) + { + EntityCreature creature = (EntityCreature) event.entityLiving; + if (creature.getLeashed() && creature.getLeashedToEntity() != null && creature.getLeashedToEntity() instanceof EntityPlayer) + { + EntityPlayer player = (EntityPlayer) creature.getLeashedToEntity(); + if (creature.motionY > -2.0f && player.motionY > -2.0f) + { + event.setCanceled(true); + } + } + } + + if (event.entityLiving instanceof EntityFriendlySpider) + { + if (((EntityFriendlySpider) event.entityLiving).riddenByEntity != null + && ((EntityFriendlySpider) event.entityLiving).riddenByEntity instanceof EntityPlayer + && event.distance < 5) + { + event.setCanceled(true); + } + } + + if (event.entityLiving instanceof EntityPlayer) + { + if (Wearing.isWearingBoots(((EntityPlayer) event.entityLiving)) && event.distance < 8) + { + event.setCanceled(true); + } + if(Wearing.isWearingTheRightBackpack((EntityPlayer)event.entityLiving,"IronGolem") && ConfigHandler.BACKPACK_ABILITIES) + { + event.setCanceled(true); + } + } + } + } + + + @SubscribeEvent(priority = EventPriority.LOW) + public void playerDies(LivingDeathEvent event) + { + if (Utils.notNullAndInstanceOf(event.entity, EntityPlayer.class)) + { + EntityPlayer player = (EntityPlayer) event.entity; + if (!player.worldObj.isRemote) + { + //LogHelper.info("Player died"); + BackpackProperty props = BackpackProperty.get(player); + + if (props.hasWearable()) + { + //We want to keep the wearables on the player if KeepInventory is active. + if (!player.getEntityWorld().getGameRules().getGameRuleBooleanValue("keepInventory")) + { + //So if it isn't, we drop it like it's hot, drop it like it's hot, drop it like it's hot. + ((IBackWearableItem) props.getWearable().getItem()).onPlayerDeath(player.worldObj, player, props.getWearable()); + } + } + + if (props.isForcedCampFire()) + { + ChunkCoordinates lastCampFire = BackpackProperty.get(player).getCampFire(); + if (lastCampFire != null) + { + player.setSpawnChunk(lastCampFire, false, player.dimension); + } + //Set the forced spawn coordinates on the campfire. False, because the player must respawn at spawn point if there's no campfire. + } + ServerProxy.storePlayerProps(player); + } + } + event.setResult(Event.Result.ALLOW); + } + + @SubscribeEvent + public void playerCraftsBackpack(PlayerEvent.ItemCraftedEvent event) + { + if (event.crafting.getItem() == ModItems.adventureBackpack) + { + LogHelper.info("Player crafted a backpack, and that backpack's appearance is: " + event.crafting.getTagCompound().getString("colorName")); + if (BackpackNames.getBackpackColorName(event.crafting).equals("Dragon")) + { + event.player.dropPlayerItemWithRandomChoice(new ItemStack(Blocks.dragon_egg, 1), false); + event.player.playSound("mob.enderdragon.growl", 1.0f, 5.0f); + } + } + } + + @SubscribeEvent + public void interactWithCreatures(EntityInteractEvent event) + { + EntityPlayer player = event.entityPlayer; + if (!event.entityPlayer.worldObj.isRemote) + { + if (Utils.notNullAndInstanceOf(event.target, EntitySpider.class)) + { + if (Wearing.isWearingTheRightBackpack(player, "Spider")) + { + EntityFriendlySpider pet = new EntityFriendlySpider(event.target.worldObj); + pet.setLocationAndAngles(event.target.posX, event.target.posY, event.target.posZ, event.target.rotationYaw, event.target.rotationPitch); + event.target.setDead(); + event.entityPlayer.worldObj.spawnEntityInWorld(pet); + event.entityPlayer.mountEntity(pet); + } + } + if (Utils.notNullAndInstanceOf(event.target, EntityHorse.class)) + { + ItemStack stack = player.getCurrentEquippedItem(); + EntityHorse horse = (EntityHorse) event.target; + if (stack != null && stack.getItem() != null && stack.getItem() instanceof ItemNameTag && stack.hasDisplayName()) + { + if (horse.getCustomNameTag() == null || horse.getCustomNameTag().equals("") && horse.isTame()) + { + horse.setTamedBy(player); + horse.tasks.addTask(4, new EntityAIHorseFollowOwner(horse, 1.5d, 2.0f, 20.0f)); + + if (horse.getAttributeMap().getAttributeInstance(SharedMonsterAttributes.followRange) != null) + { + horse.getAttributeMap().getAttributeInstance(SharedMonsterAttributes.followRange).setBaseValue(100.0D); + LogHelper.info("The horse follow range is now: " + horse.getEntityAttribute(SharedMonsterAttributes.followRange).getBaseValue()); + } + } + } + } + } + event.setResult(Event.Result.ALLOW); + } + + @SubscribeEvent + public void playerWokeUp(PlayerWakeUpEvent event) + { + if (event.entity.worldObj.isRemote) return; + ChunkCoordinates bedLocation = event.entityPlayer.getBedLocation(event.entityPlayer.dimension); + if (bedLocation != null && event.entityPlayer.worldObj.getBlock(bedLocation.posX, bedLocation.posY, bedLocation.posZ) == ModBlocks.blockSleepingBag) + { + //If the player wakes up in one of those super confortable SleepingBags (tm) (Patent Pending) + BackpackProperty.get(event.entityPlayer).setForceCampFire(true); + LogHelper.info("Player just woke up in a sleeping bag, forcing respawn in the last lighted campfire, if there's any"); + } else + { + //If it's a regular bed or whatever + BackpackProperty.get(event.entityPlayer).setForceCampFire(false); + } + } + + + @SubscribeEvent + public void tickPlayer(TickEvent.PlayerTickEvent event) + { + if (event.player != null && !event.player.isDead && Wearing.isWearingWearable(event.player)) + { + if(event.phase == TickEvent.Phase.START) + { + BackpackProperty.get(event.player).executeWearableUpdateProtocol(); + } + if (event.phase == TickEvent.Phase.END) + { + if (event.side.isServer()) + { + BackpackProperty.syncToNear(event.player); +// if (Utils.notNullAndInstanceOf(event.player.openContainer, IWearableContainer.class)) +// { +// //playerMP.sendContainerAndContentsToPlayer(playerMP.openContainer, playerMP.openContainer.getInventory()); +// BackpackProperty.syncToNear(event.player); +// }else +// { +// BackpackProperty.syncToNear(event.player); +// } + } + } + } + } + + +} + diff --git a/handlers/RenderHandler.java b/handlers/RenderHandler.java new file mode 100644 index 00000000..0f0f0a7a --- /dev/null +++ b/handlers/RenderHandler.java @@ -0,0 +1,35 @@ +package com.darkona.adventurebackpack.handlers; + +import com.darkona.adventurebackpack.proxy.ClientProxy; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraftforge.client.event.RenderPlayerEvent; + +/** + * Created on 25/12/2014 + * + * @author Darkona + */ +public class RenderHandler +{ + @SubscribeEvent + @SideOnly(Side.CLIENT) + public void playerSpecialsRendering(RenderPlayerEvent.Specials.Pre event) + { + + float rotationY = event.renderer.modelBipedMain.bipedBody.rotateAngleY; + float rotationX = event.renderer.modelBipedMain.bipedBody.rotateAngleX; + float rotationZ = event.renderer.modelBipedMain.bipedBody.rotateAngleZ; + + double x = event.entity.posX; + double y = event.entity.posY; + double z = event.entity.posZ; + + float pitch = event.entity.rotationPitch; + float yaw = event.entity.rotationYaw; + ClientProxy.rendererWearableEquipped.render(event.entity, x, y, z, rotationX, rotationY, rotationZ, pitch, yaw); + + event.renderCape = true; + } +} diff --git a/init/ModBlocks.java b/init/ModBlocks.java new file mode 100644 index 00000000..6d2cab7f --- /dev/null +++ b/init/ModBlocks.java @@ -0,0 +1,27 @@ +package com.darkona.adventurebackpack.init; + + +import com.darkona.adventurebackpack.block.*; +import cpw.mods.fml.common.registry.GameRegistry; + +/** + * Created by Darkona on 12/10/2014. + */ +public class ModBlocks +{ + + public static BlockAdventureBackpack blockBackpack = new BlockAdventureBackpack(); + public static BlockSleepingBag blockSleepingBag = new BlockSleepingBag(); + public static BlockCampFire blockCampFire = new BlockCampFire(); + + public static void init() + { + GameRegistry.registerBlock(blockBackpack, "blockBackpack"); + GameRegistry.registerBlock(blockSleepingBag, "blockSleepingBag"); + GameRegistry.registerBlock(blockCampFire, "blockCampFire"); + + GameRegistry.registerTileEntity(TileCampfire.class, "tileCampFire"); + GameRegistry.registerTileEntity(TileAdventureBackpack.class, "adventureBackpackTileEntity"); + } + +} diff --git a/init/ModEntities.java b/init/ModEntities.java new file mode 100644 index 00000000..7ea8c023 --- /dev/null +++ b/init/ModEntities.java @@ -0,0 +1,28 @@ +package com.darkona.adventurebackpack.init; + +import com.darkona.adventurebackpack.AdventureBackpack; +import com.darkona.adventurebackpack.entity.EntityFriendlySpider; +import com.darkona.adventurebackpack.entity.EntityInflatableBoat; +import cpw.mods.fml.common.registry.EntityRegistry; + +/** + * Created on 12/10/2014 + * + * @author Darkona + */ +public class ModEntities +{ + + public static void init() + { + //Color color1 = new Color(227,129,216); + // Color color2 = new Color(0, 0, 0); + //int color_int1 = (color1.getRed() << 16) + (color1.getGreen() << 8) + color1.getBlue(); + //int color_int2 = (color2.getRed() << 16) + (color2.getGreen() << 8) + color2.getBlue(); + int counter = 0; + EntityRegistry.registerModEntity(EntityInflatableBoat.class, "inflatableBoat", counter++, AdventureBackpack.instance, 64, 1, true); + + EntityRegistry.registerModEntity(EntityFriendlySpider.class, "rideableSpider", counter++, AdventureBackpack.instance, 64, 2, true); + //EntityRegistry.registerGlobalEntityID(EntityRideableSpider.class, "rideableSpider", EntityRegistry.findGlobalUniqueEntityId(),color_int2,color_int1); + } +} diff --git a/init/ModFluids.java b/init/ModFluids.java new file mode 100644 index 00000000..b487faa1 --- /dev/null +++ b/init/ModFluids.java @@ -0,0 +1,40 @@ +package com.darkona.adventurebackpack.init; + +import com.darkona.adventurebackpack.fluids.FluidMelonJuice; +import com.darkona.adventurebackpack.fluids.FluidMilk; +import com.darkona.adventurebackpack.fluids.FluidMushroomStew; +import com.darkona.adventurebackpack.reference.GeneralReference; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidRegistry; + +/** + * Created on 12/10/2014. + * + * @author Javier Darkona + */ +public class ModFluids +{ + public static FluidMilk milk; + public static FluidMelonJuice melonJuice; + public static FluidMushroomStew mushroomStew; + public static void init() + { + milk = new FluidMilk(); + melonJuice = new FluidMelonJuice(); + mushroomStew = new FluidMushroomStew(); + + FluidRegistry.registerFluid(milk); + FluidContainerRegistry.registerFluidContainer(milk, new ItemStack(Items.milk_bucket), FluidContainerRegistry.EMPTY_BUCKET); + + FluidRegistry.registerFluid(melonJuice); + FluidContainerRegistry.registerFluidContainer(melonJuice, new ItemStack(ModItems.melonJuiceBottle), FluidContainerRegistry.EMPTY_BOTTLE); + + FluidRegistry.registerFluid(mushroomStew); + FluidContainerRegistry.registerFluidContainer(mushroomStew, new ItemStack(Items.mushroom_stew), new ItemStack(Items.bowl)); + + GeneralReference.init(); + } + +} diff --git a/init/ModItems.java b/init/ModItems.java new file mode 100644 index 00000000..504c8d4a --- /dev/null +++ b/init/ModItems.java @@ -0,0 +1,43 @@ +package com.darkona.adventurebackpack.init; + +import com.darkona.adventurebackpack.item.*; +import cpw.mods.fml.common.registry.GameRegistry; + +/** + * Created on 10/10/2014 + * @author Darkona + * + */ +public class ModItems +{ + + public static final ItemMachete machete = new ItemMachete(); + public static final ItemComponent component = new ItemComponent(); + public static final ItemHose hose = new ItemHose(); + public static final ArmorAB adventureHat = new ItemAdventureHat(); + public static final ArmorAB pistonBoots = new ItemPistonBoots(); + public static final ArmorAB adventureSuit = new ItemAdventureJacket(); + public static final ItemAdventureBackpack adventureBackpack = new ItemAdventureBackpack(); + public static final ItemJuiceBottle melonJuiceBottle = new ItemJuiceBottle(); + public static final ItemCopterPack copterPack = new ItemCopterPack(); + public static final ItemCrossbow cwxbow = new ItemCrossbow(); + public static final ItemCoalJetpack CoalJetpack = new ItemCoalJetpack(); + public static final ItemAdventurePantaloon Pantaloon = new ItemAdventurePantaloon(); + + public static void init() + { + GameRegistry.registerItem(component, "backpackComponent"); + GameRegistry.registerItem(machete, "machete"); + GameRegistry.registerItem(adventureHat, "adventureHat"); + GameRegistry.registerItem(pistonBoots, "pistonBoots"); + GameRegistry.registerItem(adventureSuit, "adventureSuit"); + GameRegistry.registerItem(adventureBackpack, "adventureBackpack"); + GameRegistry.registerItem(hose, "backpackHose"); + GameRegistry.registerItem(melonJuiceBottle, "melonJuiceBottle"); + GameRegistry.registerItem(cwxbow, "clockworkCrossbow"); + GameRegistry.registerItem(CoalJetpack, "CoalJetpack"); + GameRegistry.registerItem(copterPack, "copterPack"); + GameRegistry.registerItem(Pantaloon, "Pantaloon"); + + } +} diff --git a/init/ModMaterials.java b/init/ModMaterials.java new file mode 100644 index 00000000..0a9d94ec --- /dev/null +++ b/init/ModMaterials.java @@ -0,0 +1,18 @@ +package com.darkona.adventurebackpack.init; + +import net.minecraft.item.Item; +import net.minecraft.item.ItemArmor; +import net.minecraftforge.common.util.EnumHelper; + +/** + * Created on 11/10/2014 + * @author Darkona + * + */ +public class ModMaterials +{ + + public static Item.ToolMaterial ruggedIron = EnumHelper.addToolMaterial("RUGGED_IRON", 2, 350, 6.5F, 5.2F, 10); + + public static ItemArmor.ArmorMaterial ruggedLeather = EnumHelper.addArmorMaterial("RUGGED_LEATHER", 15, new int[]{2, 5, 4, 2}, 12); +} diff --git a/init/ModNetwork.java b/init/ModNetwork.java new file mode 100644 index 00000000..14abd2e4 --- /dev/null +++ b/init/ModNetwork.java @@ -0,0 +1,74 @@ +package com.darkona.adventurebackpack.init; + +import com.darkona.adventurebackpack.network.*; +import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; +import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; +import com.darkona.adventurebackpack.playerProperties.BackpackProperty; +import com.darkona.adventurebackpack.reference.ModInfo; +import cpw.mods.fml.common.network.NetworkRegistry; +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper; +import cpw.mods.fml.relauncher.Side; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.WorldServer; + +/** + * Created on 12/10/2014 + * @author Darkona + * + */ +public class ModNetwork +{ + public static SimpleNetworkWrapper net; + public static int messages = 0; + + public static void init() + { + net = NetworkRegistry.INSTANCE.newSimpleChannel(ModInfo.MOD_CHANNEL); + + registerMessage(SyncPropertiesPacket.class, SyncPropertiesPacket.Message.class); + registerMessage(EntityParticlePacket.class, EntityParticlePacket.Message.class); + registerMessage(EntitySoundPacket.class, EntitySoundPacket.Message.class); + + registerMessage(WearableModePacket.class, WearableModePacket.Message.class); + registerMessage(CycleToolPacket.class, CycleToolPacket.CycleToolMessage.class); + registerMessage(GUIPacket.class, GUIPacket.GUImessage.class); + registerMessage(SleepingBagPacket.class, SleepingBagPacket.SleepingBagMessage.class); + registerMessage(CowAbilityPacket.class, CowAbilityPacket.CowAbilityMessage.class); + registerMessage(PlayerActionPacket.class, PlayerActionPacket.ActionMessage.class); + registerMessage(EquipUnequipBackWearablePacket.class, EquipUnequipBackWearablePacket.Message.class); + + } + public static void registerClientSide(Class handler, Class message) + { + net.registerMessage(handler, message, messages, Side.CLIENT); + messages++; + } + + private static void registerMessage(Class handler, Class message) + { + net.registerMessage(handler, message, messages, Side.CLIENT); + net.registerMessage(handler, message, messages, Side.SERVER); + messages++; + } + + public static void sendToNearby(IMessage message, EntityPlayer player) + { + if(player!=null && player.worldObj instanceof WorldServer) + { + try + { + ((WorldServer) player.worldObj).getEntityTracker().func_151248_b(player, ModNetwork.net.getPacketFrom(message)); + } catch (Exception ex) + { + ex.printStackTrace(); + } + } + } + + public static void sendToDimension(IMessage message, EntityPlayer player) + { + net.sendToDimension(message, player.dimension); + BackpackProperty.sync(player); + } +} diff --git a/init/ModRecipes.java b/init/ModRecipes.java new file mode 100644 index 00000000..8445b79b --- /dev/null +++ b/init/ModRecipes.java @@ -0,0 +1,282 @@ +package com.darkona.adventurebackpack.init; + +import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.init.recipes.BackpackRecipesList; +import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.util.LogHelper; +import cpw.mods.fml.common.registry.GameRegistry; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.ShapedOreRecipe; + +import java.lang.reflect.Field; + +/** + * Created on 20/10/2014 + * + * @author Darkona + */ +public class ModRecipes +{ + private static ItemStack bc(int damage) + { + return BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), damage); + } + + public static void init() + { + + //CampFire + GameRegistry.addRecipe(new ShapedOreRecipe(ModBlocks.blockCampFire, + " S ", + "SxS", + "ccc", + 'S', "stickWood", + 'x', Items.coal, + 'c', "cobblestone" + )); + //Inflatable Boat + GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 7), + " ", + "w w", + "sws", + 'w', Blocks.wool, + 's', Blocks.sand + ); + //Sleeping Bag + GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 1), + " X", + "CCC", + 'X', Blocks.wool, + 'C', Blocks.carpet + ); + + //Backpack Tank + GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 2), + "GIG", + "GGG", + "GIG", + 'G', Blocks.glass, + 'I', Items.iron_ingot + ); + + + //Inflatable Boat (Motorized) + GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 8), + " B ", + " E ", + " H ", + 'B', new ItemStack(ModItems.component, 1, 7), + 'H', new ItemStack(ModItems.component, 1, 9), + 'E', new ItemStack(ModItems.component, 1, 5) + ); + + //Hose Nozzle + GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 3), + " G ", + "ILI", + " ", + 'G', Items.gold_ingot, + 'I', Items.iron_ingot, + 'L', Blocks.lever + ); + + //Machete Handle + GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 4), + "YIY", + "BSB", + "RbR", + 'Y', new ItemStack(Items.dye, 1, 11), + 'B', new ItemStack(Items.dye, 1, 4), + 'R', new ItemStack(Items.dye, 1, 1), + 'b', new ItemStack(Items.dye, 1, 0), + 'I', Items.iron_ingot, + 'S', Items.stick + ); + + //Mechete + GameRegistry.addRecipe(new ItemStack(ModItems.machete), + " I ", + " I ", + " H ", + 'I', Items.iron_ingot, + 'H', new ItemStack(ModItems.component, 1, 4) + ); + //Adventure Hats + GameRegistry.addRecipe(new ItemStack(ModItems.adventureHat), + " ", + "nC ", + "LLL", + 'n', Items.gold_nugget, + 'C', Items.leather_helmet, + 'L', Items.leather + ); + //Adventure Suit + GameRegistry.addRecipe(new ItemStack(ModItems.adventureSuit), + " V ", + " W ", + " ", + 'V', Items.leather_chestplate, + 'W', Blocks.wool + ); + //Adventure Pants + GameRegistry.addRecipe(new ItemStack(ModItems.Pantaloon), + " V ", + " W ", + " ", + 'V', Items.leather_leggings, + 'W', Blocks.wool + ); + //Piston Boots + GameRegistry.addRecipe(new ItemStack(ModItems.pistonBoots), + " B ", + "PSP", + 'B', Items.leather_boots, + 'P', Blocks.piston, + 'S', Items.slime_ball + ); + //Melon Juice Bottle + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.melonJuiceBottle), + Items.melon, Items.potionitem + ); + //Hose + GameRegistry.addRecipe(new ItemStack(ModItems.hose), + "NGG", + " G", + 'N', new ItemStack(ModItems.component, 1, 3), + 'G', new ItemStack(Items.dye, 1, 2) + ); + BackpackRecipesList br = new BackpackRecipesList(); + int counter = 0; + for (int i = 0; i < BackpackNames.backpackNames.length; i++) + { + for (Field field : BackpackRecipesList.class.getFields()) + { + try + { + if (field.getName().equals((BackpackNames.backpackNames[i]))) + { + GameRegistry.addRecipe(new ShapedOreRecipe(BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i), (Object[]) field.get(br))); + counter++; + } + } catch (Exception oops) + { + LogHelper.error("Huge mistake during reflection. Some bad things might happen: " + oops.getClass().getName()); + oops.printStackTrace(); + } + } + + } + LogHelper.info("Loaded " + counter + " backpack recipes."); + + //GameRegistry.addRecipe(new AbstractBackpackRecipe()); + /*BackpackRecipes br = new BackpackRecipes(); + int i = 0; + for (Field field : BackpackRecipes.class.getFields()) + { + try + { + if (field.getType() == ItemStack[].class) + { + AbstractBackpackRecipeTwo recipe = new AbstractBackpackRecipeTwo(field.getName(), (ItemStack[]) field.get(br)); + GameRegistry.addRecipe(recipe); + //LogHelper.info("Loaded recipe for " + field.getName() + " backpack."); + i++; + } + } catch (Exception oops) + { + LogHelper.error("Huge mistake during reflection. Some bad things might happen."); + } + } + LogHelper.info("Loaded " + i + " backpack recipes."); + RecipeSorter.register(ModInfo.MOD_ID + ":adventureBackpack", AbstractBackpackRecipeTwo.class, RecipeSorter.Category.SHAPED, "after:minecraft:shapeless"); + */ + } + + public static void conditionalInit() + { + if(ConfigHandler.SADDLE_RECIPE) + { + GameRegistry.addRecipe(new ItemStack(Items.saddle), + "LLL", + "L L", + "I I", + 'L', Items.leather, + 'I', Items.iron_ingot + ); + } + + //change to make it not support BuildCraft there are people out there who dont like that mod + { + //Copter Engine + GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 5), + "IGI", + "PCP", + "FOF", + 'I', Items.iron_ingot, + 'G', Items.gold_ingot, + 'P', Blocks.piston, + 'F', Blocks.furnace, + 'C', Items.cauldron, + 'O', Blocks.obsidian + ); + + //Copter Blades + GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 6), + "III", + " F ", + " F ", + 'I', Items.iron_ingot, + 'F', Blocks.fence + ); + + //Hydro Blades + GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 9), + " F ", + " F ", + "III", + 'I', Items.iron_ingot, + 'F', Blocks.fence + ); + + //Clockwork Crossbow + GameRegistry.addRecipe(new ItemStack(ModItems.cwxbow), + " ", + "BA ", + "SW ", + 'B', Items.bow, + 'A', Items.arrow, + 'S', Items.stick, + 'W', Blocks.planks + ); + + //Copter Pack + GameRegistry.addRecipe(new ItemStack(ModItems.copterPack), + "WBW", + "TEI", + "CDI", + 'W', Blocks.planks, + 'B', new ItemStack(ModItems.component, 1, 6), + 'T', new ItemStack(ModItems.component, 1, 2), + 'E', new ItemStack(ModItems.component, 1, 5), + 'C', new ItemStack(Items.dye, 1, 2), + 'D', Items.diamond, + 'I', Items.iron_ingot + ); + + //CoalJetpack (Broken Test out) + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.CoalJetpack), + "SWT", + "GIG", + "FWS", + 'W', "plankWood", + 'G', "ingotGold", + 'I',"ingotIron", + 'S', "Stone", + 'F', "Furnace", + 'T', new ItemStack(ModItems.component, 1, 2) + )); + } + } +} \ No newline at end of file diff --git a/init/ModWorldGen.java b/init/ModWorldGen.java new file mode 100644 index 00000000..795519c4 --- /dev/null +++ b/init/ModWorldGen.java @@ -0,0 +1,99 @@ +package com.darkona.adventurebackpack.init; + +import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.reference.BackpackNames; +import cpw.mods.fml.common.registry.VillagerRegistry; +import net.minecraft.entity.passive.EntityVillager; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraft.util.WeightedRandomChestContent; +import net.minecraft.village.MerchantRecipe; +import net.minecraft.village.MerchantRecipeList; +import net.minecraftforge.common.ChestGenHooks; + +import java.util.Random; + +/** + * Created on 24/12/2014 + * + * @author Darkona + */ +public class ModWorldGen +{ + public static void init() + { + + //Dungeon Generation + + for (int i = 0; i < BackpackNames.backpackNames.length; i++) + { + if (BackpackNames.backpackNames[i].equals("IronGolem")) + { + ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i); + ChestGenHooks.addItem(ChestGenHooks.VILLAGE_BLACKSMITH, new WeightedRandomChestContent(backpack, 1, 1, 2)); + } else if (BackpackNames.backpackNames[i].equals("Bat")) + { + ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i); + ChestGenHooks.addItem(ChestGenHooks.DUNGEON_CHEST, new WeightedRandomChestContent(backpack, 1, 1, 2)); + ChestGenHooks.addItem(ChestGenHooks.MINESHAFT_CORRIDOR, new WeightedRandomChestContent(backpack, 1, 1, 12)); + } else if (BackpackNames.backpackNames[i].equals("Pigman") && ConfigHandler.PIGMAN_ALLOWED) + { + ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i); + ChestGenHooks.addItem(ChestGenHooks.PYRAMID_DESERT_CHEST, new WeightedRandomChestContent(backpack, 1, 1, 12)); + VillagerRegistry.instance().registerVillageTradeHandler(i, new ModWorldGen.TradeHandler(backpack)); + } else if (BackpackNames.backpackNames[i].equals("Villager")) + { + ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i); + VillagerRegistry.instance().registerVillageTradeHandler(1, new ModWorldGen.TradeHandler(backpack)); + VillagerRegistry.instance().registerVillageTradeHandler(2, new ModWorldGen.TradeHandler(backpack)); + VillagerRegistry.instance().registerVillageTradeHandler(3, new ModWorldGen.TradeHandler(backpack)); + } else if (BackpackNames.backpackNames[i].equals("Standard") && ConfigHandler.BONUS_CHEST_ALLOWED) + { + ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i); + ChestGenHooks.addItem(ChestGenHooks.BONUS_CHEST, new WeightedRandomChestContent(backpack, 0, 1, 5)); + } + } + + //Villager Trade + + + } + + public static class TradeHandler implements VillagerRegistry.IVillageTradeHandler + { + + ItemStack backpack; + + TradeHandler(ItemStack backpack) + { + this.backpack = backpack; + } + + /** + * Called to allow changing the content of the {@link net.minecraft.village.MerchantRecipeList} for the villager + * supplied during creation + * + * @param villager + * @param recipeList + * @param random + */ + @SuppressWarnings("unchecked") + @Override + public void manipulateTradesForVillager(EntityVillager villager, MerchantRecipeList recipeList, Random random) + { + //0 Farmer, 1 Librarian, 2Priest, 3 Blacksmith, 4 Butcher + if (villager.getProfession() == 1 || villager.getProfession() == 2) + { + ItemStack payment = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), 0); + recipeList.add(new MerchantRecipe(new ItemStack(Items.emerald, 10), payment, this.backpack)); + } + if (villager.getProfession() == 3) + { + ItemStack payment = new ItemStack(ModItems.adventureBackpack); + BackpackNames.setBackpackColorName(payment, "IronGolem"); + recipeList.add(new MerchantRecipe(new ItemStack(Items.emerald, 10), payment, this.backpack)); + } + } + } + +} diff --git a/init/recipes/AbstractBackpackRecipe.java b/init/recipes/AbstractBackpackRecipe.java new file mode 100644 index 00000000..c82d955f --- /dev/null +++ b/init/recipes/AbstractBackpackRecipe.java @@ -0,0 +1,171 @@ +package com.darkona.adventurebackpack.init.recipes; + +import com.darkona.adventurebackpack.init.ModItems; +import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.util.LogHelper; +import net.minecraft.inventory.InventoryCrafting; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.IRecipe; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +import java.lang.reflect.Field; +import java.util.HashMap; +import java.util.Map; + +/** + * Created on 20/10/2014 + * + * @author Darkona + */ +public class AbstractBackpackRecipe implements IRecipe +{ + + final BackpackRecipes br = new BackpackRecipes(); + private ItemStack result; + @SuppressWarnings("unused") + private ItemStack[] recipe; + + public boolean compareStacksForColor(ItemStack stack1, ItemStack stack2) + { + + if (stack1 == null && stack2 == null) + { + return true; + } else if (stack1 != null && stack2 != null) + { + if (stack1.getItem() != stack2.getItem()) + { + return false; + } else + { + return (stack1.getItemDamage() == stack2.getItemDamage()); + } + } + return false; + } + + + public AbstractBackpackRecipe() + { + recipes = new HashMap(); + int i = 0; + for (Field field : BackpackRecipes.class.getFields()) + { + try + { + if (field.getType() == ItemStack[].class) + { + recipes.put(field.getName(), (ItemStack[]) field.get(br)); + i++; + } + } catch (Exception oops) + { + LogHelper.error("Huge mistake during reflection. Some bad things might happen."); + } + } + LogHelper.info("Loaded " + i + " recipes for backpack coloration."); + } + + public HashMap recipes; + + + public ItemStack makeBackpack(ItemStack backpackIn, String colorName) + { + if (backpackIn == null) return null; + + ItemStack newBackpack = backpackIn.copy(); //new ItemStack(ModItems.adventureBackpack,1); + if (backpackIn.stackTagCompound == null) + { + backpackIn.setTagCompound(new NBTTagCompound()); + backpackIn.stackTagCompound.setString("colorName", "Standard"); + } + NBTTagCompound compound = (NBTTagCompound) backpackIn.getTagCompound().copy(); + newBackpack.setTagCompound(compound); + newBackpack.stackTagCompound.setString("colorName", colorName); + return newBackpack; + } + + + public boolean match(ItemStack[] model, InventoryCrafting invC) + { + if (model == null || invC == null) return false; + for (int i = 0; i < invC.getSizeInventory(); i++) + { + ItemStack m = model[i]; + ItemStack c = invC.getStackInSlot(i); + if (!compareStacksForColor(m, c)) + { + return false; + } + if (i == 4) + { + if (!BackpackNames.getBackpackColorName(c).equals("Standard")) + { + return false; + } + } + } + + return true; + } + + @Override + public boolean matches(InventoryCrafting invC, World world) + { + result = null; + if (invC != null) + { + for (Map.Entry recipe : recipes.entrySet()) + { + if (match(recipe.getValue(), invC)) + { + result = makeBackpack(invC.getStackInSlot(4), recipe.getKey()); + break; + } + } + } + return result != null; + } + + /** + * Returns an Item that is the result of this recipe + */ + @Override + public ItemStack getCraftingResult(InventoryCrafting invC) + { + //result = null; + if (invC != null) + { + for (Map.Entry recipe : recipes.entrySet()) + { + if (match(recipe.getValue(), invC)) + { + return makeBackpack(invC.getStackInSlot(4), recipe.getKey()); + } + } + } + return this.result; + // return result.copy(); + } + + /** + * Returns the size of the recipe area + */ + @Override + public int getRecipeSize() + { + return 9; + } + + @Override + public ItemStack getRecipeOutput() + { + ItemStack backpack = new ItemStack(ModItems.adventureBackpack, 1); + backpack.setTagCompound(new NBTTagCompound()); + backpack.stackTagCompound.setString("colorName", "Standard"); + return backpack; + } + + +} diff --git a/init/recipes/AbstractBackpackRecipeTwo.java b/init/recipes/AbstractBackpackRecipeTwo.java new file mode 100644 index 00000000..fb58f82b --- /dev/null +++ b/init/recipes/AbstractBackpackRecipeTwo.java @@ -0,0 +1,100 @@ +package com.darkona.adventurebackpack.init.recipes; + +import com.darkona.adventurebackpack.init.ModItems; +import net.minecraft.inventory.InventoryCrafting; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.IRecipe; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +/** + * Created on 24/12/2014 + * + * @author Darkona + */ +public class AbstractBackpackRecipeTwo implements IRecipe +{ + private ItemStack result; + private ItemStack[] recipe; + private String name; + + public AbstractBackpackRecipeTwo(String name, ItemStack[] recipe) + { + this.recipe = recipe; + this.name = name; + this.result = makeBackpack(new ItemStack(ModItems.adventureBackpack), this.name); + } + + public boolean compareStacks(ItemStack stack1, ItemStack stack2) + { + + if (stack1 == null && stack2 == null) + { + return true; + } else if (stack1 != null && stack2 != null) + { + if (stack1.getItem().equals(stack2.getItem())) + { + /*if(stack1.getItem() instanceof ItemAdventureBackpack) + { + return stack1.stackTagCompound.getString("colorName").equals("Standard"); + }*/ + return ((stack1.getItemDamage() == stack2.getItemDamage())); + } + } + return false; + } + + public static ItemStack makeBackpack(ItemStack backpackIn, String colorName) + { + if (backpackIn == null) return null; + if (backpackIn.stackTagCompound == null) + { + backpackIn.setTagCompound(new NBTTagCompound()); + backpackIn.stackTagCompound.setString("colorName", colorName); + } + ItemStack newBackpack = backpackIn.copy(); + NBTTagCompound compound = (NBTTagCompound) backpackIn.getTagCompound().copy(); + newBackpack.setTagCompound(compound); + newBackpack.stackTagCompound.setString("colorName", colorName); + return newBackpack; + } + + @Override + public boolean matches(InventoryCrafting invC, World world) + { + //LogHelper.info("Matching recipe"); + if (this.recipe == null || invC == null) return false; + for (int i = 0; i < invC.getSizeInventory(); i++) + { + if (!compareStacks(this.recipe[i], invC.getStackInSlot(i))) + { + return false; + } + + } + return true; + } + + @Override + public ItemStack getCraftingResult(InventoryCrafting invC) + { + if (matches(invC, null)) + { + return makeBackpack(invC.getStackInSlot(4), this.name); + } + return null; + } + + @Override + public int getRecipeSize() + { + return 9; + } + + @Override + public ItemStack getRecipeOutput() + { + return result; + } +} diff --git a/init/recipes/BackpackRecipe.java b/init/recipes/BackpackRecipe.java new file mode 100644 index 00000000..01d381bb --- /dev/null +++ b/init/recipes/BackpackRecipe.java @@ -0,0 +1,24 @@ +package com.darkona.adventurebackpack.init.recipes; + +import net.minecraft.item.ItemStack; + +/** + * Created on 24/12/2014 + * + * @author Darkona + */ +public class BackpackRecipe +{ + public ItemStack[] array; + public String name; + + BackpackRecipe() + { + } + + BackpackRecipe(String name, ItemStack[] array) + { + this.name = name; + this.array = array; + } +} diff --git a/init/recipes/BackpackRecipes.java b/init/recipes/BackpackRecipes.java new file mode 100644 index 00000000..23bd7bbd --- /dev/null +++ b/init/recipes/BackpackRecipes.java @@ -0,0 +1,669 @@ +package com.darkona.adventurebackpack.init.recipes; + +import com.darkona.adventurebackpack.init.ModItems; +import net.minecraft.block.Block; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +import java.util.HashMap; +import java.util.List; + +/** + * Created on 20/10/2014 + * + * @author Darkona + */ +public class BackpackRecipes +{ + + public List recipes; + + public BackpackRecipes() + { + String[] covered = {"XXX", "XaX", "XXX"}; + Black = reviewRecipe(covered, + 'X', new ItemStack(Blocks.wool, 1, 15), + 'a', ModItems.adventureBackpack + ); + + Blaze = reviewRecipe( + "BFB", + "BaB", + "PLP", + 'B', Items.blaze_rod, + 'F', Items.fire_charge, + 'a', ModItems.adventureBackpack, + 'P', Items.blaze_powder, + 'L', Items.lava_bucket + ); + + Blue = reviewRecipe(covered, + 'X', new ItemStack(Blocks.wool, 1, 11), + 'a', ModItems.adventureBackpack + ); + + Bookshelf = reviewRecipe( + "BDB", + "BaB", + "bbb", + 'B', Blocks.bookshelf, + 'a', ModItems.adventureBackpack, + 'b', Items.book + ); + + Brown = reviewRecipe(covered, + 'X', new ItemStack(Blocks.wool, 1, 12), + 'a', ModItems.adventureBackpack + ); + + BrownMushroom = reviewRecipe(covered, + 'X', Blocks.brown_mushroom, + 'a', ModItems.adventureBackpack + ); + + Cactus = reviewRecipe( + "CGC", + "CaC", + "SSS", + 'C', Blocks.cactus, + 'G', new ItemStack(Items.dye, 1, 2), + 'a', ModItems.adventureBackpack, + 'S', Blocks.sand + ); + + Cake = reviewRecipe( + "ECE", + "WaW", + "SmS", + 'a', ModItems.adventureBackpack, + 'E', Items.egg, + 'C', Items.cake, + 'W', Items.wheat, + 'S', Items.sugar, + 'm', Items.milk_bucket + ); + + Chest = reviewRecipe( + "CWC", + "WaW", + "CWC", + 'C', Blocks.chest, + 'W', Blocks.planks, + 'a', ModItems.adventureBackpack + ); + + Chicken = reviewRecipe( + "FnF", + "FaF", + "nEn", + 'F', Items.feather, + 'n', Items.gold_nugget, + 'a', ModItems.adventureBackpack, + 'E', Items.egg + ); + + Coal = reviewRecipe( + "cCc", + "CaC", + "ccc", + 'c', Items.coal, + 'C', Blocks.coal_block, + 'a', ModItems.adventureBackpack + ); + + Cookie = reviewRecipe( + "cCc", + "WaW", + "ccc", + 'c', Items.cookie, + 'C', new ItemStack(Items.dye, 1, 3), + 'W', Items.wheat, + 'a', ModItems.adventureBackpack + ); + + Cow = reviewRecipe( + "BLB", + "BaB", + "LML", + 'B', Items.beef, + 'a', ModItems.adventureBackpack, + 'L', Items.leather, + 'M', Items.milk_bucket + ); + + Creeper = reviewRecipe( + "GHG", + "GaG", + "TNT",//see what I did there? ;D + 'G', Items.gunpowder, + 'H', new ItemStack(Items.skull, 1, 4), //Creeper Skull + 'a', ModItems.adventureBackpack, + 'T', Blocks.tnt, + 'N', Blocks.tnt + ); + + Cyan = reviewRecipe(covered, + 'X', new ItemStack(Blocks.wool, 1, 9), + 'a', ModItems.adventureBackpack + ); + + Diamond = reviewRecipe( + "GDG", + "GaG", + "GdG", + 'G', Blocks.glass, + 'D', Blocks.diamond_block, + 'a', ModItems.adventureBackpack, + 'd', Items.diamond + ); + + Dragon = reviewRecipe( + "EDE", + "OaO", + "POP", + 'E', Blocks.end_stone, + 'D', new ItemStack(Blocks.dragon_egg, 1), + 'O', Blocks.obsidian, + 'a', ModItems.adventureBackpack, + 'P', Items.ender_pearl + ); + + Egg = reviewRecipe(covered, + 'X', Items.egg, + 'a', ModItems.adventureBackpack + ); + + Emerald = reviewRecipe( + "GEG", + "GaG", + "eGe", + 'G', Blocks.glass, + 'E', Blocks.emerald_block, + 'a', ModItems.adventureBackpack, + 'e', Items.emerald + ); + + End = reviewRecipe( + "eEe", + "EaE", + "eEe", + 'E', Blocks.end_stone, + 'e', Items.ender_eye, + 'a', ModItems.adventureBackpack + ); + + Enderman = reviewRecipe( + "PXP", + "XaX", + "PXP", + 'X', new ItemStack(Blocks.wool, 1, 15), + 'P', Items.ender_pearl, + 'a', ModItems.adventureBackpack + ); + + Ghast = reviewRecipe( + "GFG", + "TaT", + "GTG", + 'G', Items.ghast_tear, + 'F', Items.fire_charge, + 'T', Items.gunpowder, + 'a', ModItems.adventureBackpack + ); + + Glowstone = reviewRecipe( + "GgG", + "GaG", + "GgG", + 'G', Blocks.glowstone, + 'g', Items.glowstone_dust, + 'a', ModItems.adventureBackpack + ); + + Gold = reviewRecipe( + "FGF", + "FaF", + "gFg", + 'F', Blocks.glass, + 'G', Blocks.gold_block, + 'a', ModItems.adventureBackpack, + 'g', Items.gold_ingot + ); + + Gray = reviewRecipe(covered, + 'X', new ItemStack(Blocks.wool, 1, 7), + 'a', ModItems.adventureBackpack + ); + + Green = reviewRecipe(covered, + 'X', new ItemStack(Blocks.wool, 1, 13), + 'a', ModItems.adventureBackpack + ); + + Haybale = reviewRecipe(covered, + 'X', Blocks.hay_block, + 'a', ModItems.adventureBackpack + ); + + Iron = reviewRecipe( + "GIG", + "GaG", + "iGi", + 'G', Blocks.glass, + 'I', Blocks.iron_block, + 'a', ModItems.adventureBackpack, + 'i', Items.iron_ingot + ); + + Lapis = reviewRecipe( + "GLG", + "GaG", + "lGl", + 'G', Blocks.glass, + 'L', Blocks.lapis_block, + 'l', new ItemStack(Items.dye, 1, 4), + 'a', ModItems.adventureBackpack + ); + + Leather = reviewRecipe(covered, + 'X', Items.leather, + 'a', ModItems.adventureBackpack + ); + + LightBlue = reviewRecipe( + "XXX", + "XaX", + "XXX", + 'X', new ItemStack(Blocks.wool, 1, 3), + 'a', ModItems.adventureBackpack + ); + + LightGray = reviewRecipe(covered, + 'X', new ItemStack(Blocks.wool, 1, 8), + 'a', ModItems.adventureBackpack + ); + + Lime = reviewRecipe(covered, + 'X', new ItemStack(Blocks.wool, 1, 5), + 'a', ModItems.adventureBackpack + ); + + Magenta = reviewRecipe(covered, + 'X', new ItemStack(Blocks.wool, 1, 2), + 'a', ModItems.adventureBackpack + ); + + MagmaCube = reviewRecipe( + "MLM", + "MaM", + "MLM", + 'M', Items.magma_cream, + 'a', ModItems.adventureBackpack, + 'L', Items.lava_bucket + ); + + Melon = reviewRecipe( + "mMm", + "mam", + "msm", + 'm', Items.melon, + 'M', Blocks.melon_block, + 'a', ModItems.adventureBackpack, + 's', Items.melon_seeds + ); + + Mooshroom = reviewRecipe( + "SRL", + "BaB", + "LRS", + 'R', Blocks.red_mushroom, + 'B', Blocks.brown_mushroom, + 'a', ModItems.adventureBackpack, + 'S', Items.mushroom_stew, + 'L', Blocks.mycelium + ); + + Nether = reviewRecipe( + "QwQ", + "NaN", + "QLQ", + 'Q', Items.quartz, + 'N', Blocks.netherrack, + 'w', Items.nether_wart, + 'L', Items.lava_bucket, + 'a', ModItems.adventureBackpack + ); + + Obsidian = reviewRecipe( + covered, + 'X', Blocks.obsidian, + 'a', ModItems.adventureBackpack + ); + + Ocelot = reviewRecipe( + "FYF", + "YaY", + "FYF", + 'F', Items.fish, + 'Y', new ItemStack(Blocks.wool, 1, 4), + 'a', ModItems.adventureBackpack + ); + + Orange = reviewRecipe(covered, + 'X', new ItemStack(Blocks.wool, 1, 1), + 'a', ModItems.adventureBackpack + ); + + Pig = reviewRecipe(covered, + 'X', Items.porkchop, + 'a', ModItems.adventureBackpack + ); + + Pink = reviewRecipe(covered, + 'X', new ItemStack(Blocks.wool, 1, 6), + 'a', ModItems.adventureBackpack + ); + + Pumpkin = reviewRecipe( + "PPP", + "PaP", + "PsP", + 'P', Blocks.pumpkin, + 'a', ModItems.adventureBackpack, + 's', Items.pumpkin_seeds + ); + + Purple = reviewRecipe(covered, + 'X', new ItemStack(Blocks.wool, 1, 10), + 'a', ModItems.adventureBackpack + ); + + Quartz = reviewRecipe( + "QqQ", + "qaq", + "QqQ", + 'Q', Blocks.quartz_block, + 'q', Items.quartz, + 'a', ModItems.adventureBackpack + ); + + Rainbow = reviewRecipe( + "RCP", + "OaB", + "YGF", + 'R', new ItemStack(Items.dye, 1, 1), //RED + 'O', new ItemStack(Items.dye, 1, 14),//ORANGE + 'Y', new ItemStack(Items.dye, 1, 11),//YELLOW + 'G', new ItemStack(Items.dye, 1, 10),//LIME + 'F', new ItemStack(Items.dye, 1, 6),//CYAN + 'B', new ItemStack(Items.dye, 1, 4),//BLUE + 'P', new ItemStack(Items.dye, 1, 5),//PURPLE + 'C', Items.record_cat, + 'a', ModItems.adventureBackpack + ); + + Red = reviewRecipe(covered, + 'X', new ItemStack(Blocks.wool, 1, 14), + 'a', ModItems.adventureBackpack + ); + + RedMushroom = reviewRecipe(covered, + 'X', Blocks.red_mushroom, + 'a', ModItems.adventureBackpack + ); + + Redstone = reviewRecipe( + "rRr", + "RaR", + "rRr", + 'R', Blocks.redstone_block, + 'r', Items.redstone, + 'a', ModItems.adventureBackpack + ); + + Sandstone = reviewRecipe( + "CSC", + "SaS", + "CSC", + 'S', new ItemStack(Blocks.sandstone, 1, 0), + 'C', new ItemStack(Blocks.sandstone, 1, 1), + 'a', ModItems.adventureBackpack + ); + + Sheep = reviewRecipe( + "WPW", + "WaW", + "WWW", + 'W', new ItemStack(Blocks.wool, 1, 0), + 'P', new ItemStack(Blocks.wool, 1, 6), + 'a', ModItems.adventureBackpack + ); + + Skeleton = reviewRecipe( + "BSB", + "bab", + "BAB", + 'B', Items.bone, + 'S', new ItemStack(Items.skull, 1, 0),//Skeleton skull + 'b', Items.bow, + 'A', Items.arrow, + 'a', ModItems.adventureBackpack + ); + + Slime = reviewRecipe(covered, + 'X', Items.slime_ball, + 'a', ModItems.adventureBackpack + ); + + Snow = reviewRecipe( + "sSs", + "SaS", + "sSs", + 'S', Blocks.snow, + 's', Items.snowball, + 'a', ModItems.adventureBackpack + ); + + Spider = reviewRecipe( + "ESE", + "LaL", + "ESE", + 'E', Items.spider_eye, + 'S', Items.string, + 'L', Blocks.ladder, + 'a', ModItems.adventureBackpack + ); + + White = reviewRecipe(covered, + 'X', new ItemStack(Blocks.wool, 1, 0), + 'a', ModItems.adventureBackpack + ); + + Wither = reviewRecipe( + "SSS", + "sas", + "NsD", + 'S', new ItemStack(Items.skull, 1, 1),//WitherSkelleton Skull + 's', Blocks.soul_sand, + 'N', Items.nether_star, + 'D', Items.diamond, + 'a', ModItems.adventureBackpack + ); + + WitherSkeleton = reviewRecipe( + "BsB", + "SaS", + "CBC", + 'B', Items.bone, + 'S', Items.stone_sword, + 'a', ModItems.adventureBackpack, + 'C', Items.coal, + 's', new ItemStack(Items.skull, 1, 1) + ); + + Wolf = reviewRecipe( + "BWB", + "WaW", + "BWB", + 'B', Items.bone, + 'W', new ItemStack(Blocks.wool, 1, 0), + 'a', ModItems.adventureBackpack + ); + + Yellow = reviewRecipe(covered, + 'X', new ItemStack(Blocks.wool, 1, 4), + 'a', ModItems.adventureBackpack + ); + + Zombie = reviewRecipe( + "FSF", + "FaF", + "FFF", + 'F', Items.rotten_flesh, + 'S', new ItemStack(Items.skull, 1, 2), + 'a', ModItems.adventureBackpack + ); + } + + public final ItemStack[] Black; + public final ItemStack[] Blaze; + public final ItemStack[] Blue; + public final ItemStack[] Bookshelf; + public final ItemStack[] Brown; + public final ItemStack[] BrownMushroom; + public final ItemStack[] Cactus; + public final ItemStack[] Cake; + public final ItemStack[] Chicken; + public final ItemStack[] Chest; + public final ItemStack[] Coal; + public final ItemStack[] Cookie; + public final ItemStack[] Cow; + public final ItemStack[] Creeper; + public final ItemStack[] Cyan; + public final ItemStack[] Diamond; + public final ItemStack[] Dragon; + public final ItemStack[] Egg; + public final ItemStack[] Emerald; + public final ItemStack[] End; + public final ItemStack[] Enderman; + public final ItemStack[] Ghast; + public final ItemStack[] Glowstone; + public final ItemStack[] Gold; + public final ItemStack[] Gray; + public final ItemStack[] Green; + public final ItemStack[] Haybale; + public final ItemStack[] Iron; + public final ItemStack[] Lapis; + public final ItemStack[] Leather; + public final ItemStack[] LightBlue; + public final ItemStack[] LightGray; + public final ItemStack[] Lime; + public final ItemStack[] Magenta; + public final ItemStack[] MagmaCube; + public final ItemStack[] Melon; + public final ItemStack[] Mooshroom; + public final ItemStack[] Nether; + public final ItemStack[] Obsidian; + public final ItemStack[] Ocelot; + public final ItemStack[] Orange; + public final ItemStack[] Pig; + public final ItemStack[] Pink; + public final ItemStack[] Pumpkin; + public final ItemStack[] Purple; + public final ItemStack[] Quartz; + public final ItemStack[] Rainbow; + public final ItemStack[] Red; + public final ItemStack[] RedMushroom; + public final ItemStack[] Redstone; + public final ItemStack[] Sandstone; + public final ItemStack[] Sheep; + public final ItemStack[] Skeleton; + public final ItemStack[] Slime; + public final ItemStack[] Snow; + public final ItemStack[] Spider; + //public final ItemStack[] Sponge; + public final ItemStack[] White; + public final ItemStack[] Wither; + public final ItemStack[] WitherSkeleton; + public final ItemStack[] Wolf; + public final ItemStack[] Yellow; + public final ItemStack[] Zombie; + + + @SuppressWarnings({ "unchecked", "rawtypes" }) + public static ItemStack[] reviewRecipe(Object... objects) + { + String s = ""; + //BackpackRecipe recipe = new BackpackRecipe(); + int i = 0; + int j = 0; + int k = 0; + /*if(objects[i] instanceof String) + { + recipe.name = (String)objects[i]; + i++; + }*/ + if (objects[i] instanceof String[]) + { + String[] astring = (String[]) ((String[]) objects[i++]); + + for (int l = 0; l < astring.length; ++l) + { + String s1 = astring[l]; + ++k; + j = s1.length(); + s = s + s1; + } + } else + { + while (objects[i] instanceof String) + { + String s2 = (String) objects[i++]; + ++k; + j = s2.length(); + s = s + s2; + } + } + + HashMap hashmap; + + for (hashmap = new HashMap(); i < objects.length; i += 2) + { + Character character = (Character) objects[i]; + ItemStack itemstack1 = null; + + if (objects[i + 1] instanceof Item) + { + itemstack1 = new ItemStack((Item) objects[i + 1]); + } else if (objects[i + 1] instanceof Block) + { + itemstack1 = new ItemStack((Block) objects[i + 1], 1); + } else if (objects[i + 1] instanceof ItemStack) + { + itemstack1 = (ItemStack) objects[i + 1]; + } + + hashmap.put(character, itemstack1); + } + + ItemStack[] aitemstack = new ItemStack[j * k]; + + for (int i1 = 0; i1 < j * k; ++i1) + { + char c0 = s.charAt(i1); + + if (hashmap.containsKey(Character.valueOf(c0))) + { + aitemstack[i1] = ((ItemStack) hashmap.get(Character.valueOf(c0))).copy(); + } else + { + aitemstack[i1] = null; + } + } + //recipe.array = aitemstack; + return aitemstack; + } + +} diff --git a/init/recipes/BackpackRecipesList.java b/init/recipes/BackpackRecipesList.java new file mode 100644 index 00000000..a0d92538 --- /dev/null +++ b/init/recipes/BackpackRecipesList.java @@ -0,0 +1,688 @@ +package com.darkona.adventurebackpack.init.recipes; + +import com.darkona.adventurebackpack.init.ModItems; +import com.darkona.adventurebackpack.reference.BackpackNames; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; + +import java.util.List; + +/** + * Created on 20/10/2014 + * + * @author Darkona + */ +public class BackpackRecipesList +{ + + public List recipes; + + public BackpackRecipesList() + { + String[] covered = {"XXX", "XaX", "XXX"}; + ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), 0); + + ItemStack woolWhite = new ItemStack(Blocks.wool, 1, 0); + ItemStack woolOrange = new ItemStack(Blocks.wool, 1, 1); + ItemStack woolMagenta = new ItemStack(Blocks.wool, 1, 2); + ItemStack woolLightBlue = new ItemStack(Blocks.wool, 1, 3); + ItemStack woolYellow = new ItemStack(Blocks.wool, 1, 4); + ItemStack woolLime = new ItemStack(Blocks.wool, 1, 5); + ItemStack woolPink = new ItemStack(Blocks.wool, 1, 6); + ItemStack woolGray = new ItemStack(Blocks.wool, 1, 7); + ItemStack woolLightGray = new ItemStack(Blocks.wool, 1, 8); + ItemStack woolCyan = new ItemStack(Blocks.wool, 1, 9); + ItemStack woolPurple = new ItemStack(Blocks.wool, 1, 10); + ItemStack woolBlue = new ItemStack(Blocks.wool, 1, 11); + ItemStack woolBrown = new ItemStack(Blocks.wool, 1, 12); + ItemStack woolGreen = new ItemStack(Blocks.wool, 1, 13); + ItemStack woolRed = new ItemStack(Blocks.wool, 1, 14); + ItemStack woolBlack = new ItemStack(Blocks.wool, 1, 15); + + + Standard = reviewRecipe( + "LGL", + "TCT", + "LSL", + 'L', Items.leather, + 'G', "ingotGold", + 'T', new ItemStack(ModItems.component, 1, 2), + 'S', new ItemStack(ModItems.component, 1, 1), + 'C', Blocks.chest + ); + + Black = reviewRecipe(covered, + 'X', woolBlack, + 'a', backpack + ); + + Blaze = reviewRecipe( + "BFB", + "BaB", + "PLP", + 'B', Items.blaze_rod, + 'F', Items.fire_charge, + 'a', backpack, + 'P', Items.blaze_powder, + 'L', Items.lava_bucket + ); + + Blue = reviewRecipe(covered, + 'X', woolBlue, + 'a', backpack + ); + + Bookshelf = reviewRecipe( + "BDB", + "BaB", + "bbb", + 'B', Blocks.bookshelf, + 'a', backpack, + 'b', Items.book + ); + + Brown = reviewRecipe(covered, + 'X', woolBrown, + 'a', backpack + ); + + BrownMushroom = reviewRecipe(covered, + 'X', Blocks.brown_mushroom, + 'a', backpack + ); + + Cactus = reviewRecipe( + "CGC", + "CaC", + "SSS", + 'C', Blocks.cactus, + 'G', new ItemStack(Items.dye, 1, 2), + 'a', backpack, + 'S', Blocks.sand + ); + + Cake = reviewRecipe( + "ECE", + "WaW", + "SmS", + 'a', backpack, + 'E', Items.egg, + 'C', Items.cake, + 'W', Items.wheat, + 'S', Items.sugar, + 'm', Items.milk_bucket + ); + + Chest = reviewRecipe( + "CWC", + "WaW", + "CWC", + 'C', Blocks.chest, + 'W', "plankWood", + 'a', backpack + ); + + Chicken = reviewRecipe( + "FnF", + "FaF", + "nEn", + 'F', Items.feather, + 'n', Items.gold_nugget, + 'a', backpack, + 'E', Items.egg + ); + + Coal = reviewRecipe( + "cCc", + "CaC", + "ccc", + 'c', Items.coal, + 'C', "blockCoal", + 'a', backpack + ); + + Cookie = reviewRecipe( + "cCc", + "WaW", + "ccc", + 'c', Items.cookie, + 'C', new ItemStack(Items.dye, 1, 3),//Chocolate + 'W', Items.wheat, + 'a', backpack + ); + + Cow = reviewRecipe( + "BLB", + "BaB", + "LML", + 'B', Items.beef, + 'a', backpack, + 'L', Items.leather, + 'M', Items.milk_bucket + ); + + Creeper = reviewRecipe( + "GHG", + "GaG", + "TNT",//see what I did there? ;D + 'G', Items.gunpowder, + 'H', new ItemStack(Items.skull, 1, 4), //Creeper Skull + 'a', backpack, + 'T', Blocks.tnt, + 'N', Blocks.tnt + ); + + Cyan = reviewRecipe(covered, + 'X', woolCyan, + 'a', backpack + ); + + Diamond = reviewRecipe( + "GDG", + "GaG", + "GdG", + 'G', "blockGlass", + 'D', "blockDiamond", + 'a', backpack, + 'd', "gemDiamond" + ); + + Dragon = reviewRecipe( + "EDE", + "OaO", + "POP", + 'E', Blocks.end_stone, + 'D', new ItemStack(Blocks.dragon_egg, 1), + 'O', Blocks.obsidian, + 'a', backpack, + 'P', Items.ender_pearl + ); + + Egg = reviewRecipe(covered, + 'X', Items.egg, + 'a', backpack + ); + + Emerald = reviewRecipe( + "GEG", + "GaG", + "eGe", + 'G', Blocks.glass, + 'E', Blocks.emerald_block, + 'a', backpack, + 'e', Items.emerald + ); + + End = reviewRecipe( + "eEe", + "EaE", + "eEe", + 'E', Blocks.end_stone, + 'e', Items.ender_eye, + 'a', backpack + ); + + Enderman = reviewRecipe( + "PXP", + "XaX", + "PXP", + 'X', woolBlack, + 'P', Items.ender_pearl, + 'a', backpack + ); + + Ghast = reviewRecipe( + "GFG", + "TaT", + "GTG", + 'G', Items.ghast_tear, + 'F', Items.fire_charge, + 'T', Items.gunpowder, + 'a', backpack + ); + + Glowstone = reviewRecipe( + "GgG", + "GaG", + "GgG", + 'G', Blocks.glowstone, + 'g', "dustGlowstone", + 'a', backpack + ); + + Gold = reviewRecipe( + "FGF", + "FaF", + "gFg", + 'F', "blockGlass", + 'G', "blockGold", + 'a', backpack, + 'g', "ingotGold" + ); + + Gray = reviewRecipe(covered, + 'X', woolGray, + 'a', backpack + ); + + Green = reviewRecipe(covered, + 'X', woolGreen, + 'a', backpack + ); + + Haybale = reviewRecipe(covered, + 'X', Blocks.hay_block, + 'a', backpack + ); + + Iron = reviewRecipe( + "GIG", + "GaG", + "iGi", + 'G', "blockGlass", + 'I', "blockIron", + 'a', backpack, + 'i', Items.iron_ingot + ); + + Lapis = reviewRecipe( + "GLG", + "GaG", + "lGl", + 'G', "blockGlass", + 'L', "blockLapis", + 'l', new ItemStack(Items.dye, 1, 4), + 'a', backpack + ); + + Leather = reviewRecipe(covered, + 'X', Items.leather, + 'a', backpack + ); + + LightBlue = reviewRecipe(covered, + 'X', woolLightBlue, + 'a', backpack + ); + + LightGray = reviewRecipe(covered, + 'X', woolLightGray, + 'a', backpack + ); + + Lime = reviewRecipe(covered, + 'X', woolLime, + 'a', backpack + ); + + Magenta = reviewRecipe(covered, + 'X', woolMagenta, + 'a', backpack + ); + + MagmaCube = reviewRecipe( + "MLM", + "MaM", + "MLM", + 'M', Items.magma_cream, + 'a', backpack, + 'L', Items.lava_bucket + ); + + Melon = reviewRecipe( + "mMm", + "mam", + "msm", + 'm', Items.melon, + 'M', Blocks.melon_block, + 'a', backpack, + 's', Items.melon_seeds + ); + + Mooshroom = reviewRecipe( + "SRL", + "BaB", + "LRS", + 'R', Blocks.red_mushroom, + 'B', Blocks.brown_mushroom, + 'a', backpack, + 'S', Items.mushroom_stew, + 'L', Blocks.mycelium + ); + + Nether = reviewRecipe( + "QwQ", + "NaN", + "QLQ", + 'Q', Items.quartz, + 'N', Blocks.netherrack, + 'w', Items.nether_wart, + 'L', Items.lava_bucket, + 'a', backpack + ); + + Obsidian = reviewRecipe( + covered, + 'X', Blocks.obsidian, + 'a', backpack + ); + + Ocelot = reviewRecipe( + "FYF", + "YaY", + "FYF", + 'F', Items.fish, + 'Y', new ItemStack(Blocks.wool, 1, 4), + 'a', backpack + ); + + Orange = reviewRecipe(covered, + 'X', woolOrange, + 'a', backpack + ); + + Pig = reviewRecipe(covered, + 'X', Items.porkchop, + 'a', backpack + ); + + Pink = reviewRecipe(covered, + 'X', new ItemStack(Blocks.wool, 1, 6), + 'a', backpack + ); + + Pumpkin = reviewRecipe( + "PPP", + "PaP", + "PsP", + 'P', Blocks.pumpkin, + 'a', backpack, + 's', Items.pumpkin_seeds + ); + + Purple = reviewRecipe(covered, + 'X', woolPurple, + 'a', backpack + ); + + Quartz = reviewRecipe( + "QqQ", + "qaq", + "QqQ", + 'Q', Blocks.quartz_block, + 'q', Items.quartz, + 'a', backpack + ); + + Rainbow = reviewRecipe( + "RCP", + "OaB", + "YGF", + 'R', "dyeRed", //RED + 'O', "dyeOrange",//ORANGE + 'Y', "dyeYellow",//YELLOW + 'G', "dyeLime",//LIME + 'F', "dyeCyan",//CYAN + 'B', "dyeBlue",//BLUE + 'P', "dyePurple",//PURPLE + 'C', Items.record_cat, + 'a', backpack + ); + + Red = reviewRecipe(covered, + 'X', woolRed, + 'a', backpack + ); + + RedMushroom = reviewRecipe(covered, + 'X', Blocks.red_mushroom, + 'a', backpack + ); + + Redstone = reviewRecipe( + "rRr", + "RaR", + "rRr", + 'R', "blockRedstone", + 'r', Items.redstone, + 'a', backpack + ); + + Sandstone = reviewRecipe( + "CSC", + "SaS", + "CSC", + 'S', new ItemStack(Blocks.sandstone, 1, 0), + 'C', new ItemStack(Blocks.sandstone, 1, 1), + 'a', backpack + ); + + Sheep = reviewRecipe( + "WPW", + "WaW", + "WWW", + 'W', woolWhite, + 'P', woolPink, + 'a', backpack + ); + + Skeleton = reviewRecipe( + "BSB", + "bab", + "BAB", + 'B', Items.bone, + 'S', new ItemStack(Items.skull, 1, 0),//Skeleton skull + 'b', Items.bow, + 'A', Items.arrow, + 'a', backpack + ); + + Slime = reviewRecipe(covered, + 'X', "slimeball", + 'a', backpack + ); + + Snow = reviewRecipe( + "III", + "SaS", + "sSs", + 'I', Blocks.ice, + 'S', Blocks.snow, + 's', Items.snowball, + 'a', backpack + ); + + Spider = reviewRecipe( + "ESE", + "LaL", + "ESE", + 'E', Items.spider_eye, + 'S', Items.string, + 'L', Blocks.ladder, + 'a', backpack + ); + + White = reviewRecipe(covered, + 'X', new ItemStack(Blocks.wool, 1, 0), + 'a', backpack + ); + + Wither = reviewRecipe( + "SSS", + "sas", + "NsD", + 'S', new ItemStack(Items.skull, 1, 1),//WitherSkelleton Skull + 's', Blocks.soul_sand, + 'N', Items.nether_star, + 'D', Items.diamond, + 'a', backpack + ); + + WitherSkeleton = reviewRecipe( + "BsB", + "SaS", + "CBC", + 'B', Items.bone, + 'S', Items.stone_sword, + 'a', backpack, + 'C', Items.coal, + 's', new ItemStack(Items.skull, 1, 1) + ); + + Wolf = reviewRecipe( + "BWB", + "WaW", + "BWB", + 'B', Items.bone, + 'W', woolWhite, + 'a', backpack + ); + + Yellow = reviewRecipe(covered, + 'X', woolYellow, + 'a', backpack + ); + + Zombie = reviewRecipe( + "FSF", + "FaF", + "FFF", + 'F', Items.rotten_flesh, + 'S', new ItemStack(Items.skull, 1, 2), + 'a', backpack + ); + + Carrot = reviewRecipe(covered, + 'a', backpack, + 'X', Items.carrot + ); + + Silverfish = reviewRecipe( + "CGC", + "CaC", + "CGC", + 'a', backpack, + 'G', woolLightGray, + 'C', new ItemStack(Blocks.stonebrick, 1, 2) + ); + + Sunflower = reviewRecipe( + covered, + 'a', backpack, + 'X', new ItemStack(Blocks.double_plant, 1, 0) + ); + + Horse = reviewRecipe( + "LSL", + "XaX", + "LXL", + 'L', Items.leather, + 'S', Items.saddle, + 'X', Blocks.hay_block, + 'a', backpack); + + Overworld = reviewRecipe( + "BBB", + "GaG", + "CCC", + 'B', new ItemStack(Blocks.wool, 1, 3), + 'G', Blocks.grass, + 'a', backpack, + 'C', "cobblestone" + + ); + + Squid = reviewRecipe( + "BIB", + "IaI", + "BIB", + 'a', backpack, + 'B', woolBlue, + 'I', new ItemStack(Items.dye, 1, 0) + ); + + Sponge = reviewRecipe(covered, + 'X', Blocks.sponge, + 'a', backpack + ); + } + + public final Object[] Silverfish; + public final Object[] Squid; + public final Object[] Sunflower; + public final Object[] Horse; + public final Object[] Overworld; + public final Object[] Carrot; + public final Object[] Black; + public final Object[] Blaze; + public final Object[] Blue; + public final Object[] Bookshelf; + public final Object[] Brown; + public final Object[] BrownMushroom; + public final Object[] Cactus; + public final Object[] Cake; + public final Object[] Chicken; + public final Object[] Chest; + public final Object[] Coal; + public final Object[] Cookie; + public final Object[] Cow; + public final Object[] Creeper; + public final Object[] Cyan; + public final Object[] Diamond; + public final Object[] Dragon; + public final Object[] Egg; + public final Object[] Emerald; + public final Object[] End; + public final Object[] Enderman; + public final Object[] Ghast; + public final Object[] Glowstone; + public final Object[] Gold; + public final Object[] Gray; + public final Object[] Green; + public final Object[] Haybale; + public final Object[] Iron; + public final Object[] Lapis; + public final Object[] Leather; + public final Object[] LightBlue; + public final Object[] LightGray; + public final Object[] Lime; + public final Object[] Magenta; + public final Object[] MagmaCube; + public final Object[] Melon; + public final Object[] Mooshroom; + public final Object[] Nether; + public final Object[] Obsidian; + public final Object[] Ocelot; + public final Object[] Orange; + public final Object[] Pig; + public final Object[] Pink; + public final Object[] Pumpkin; + public final Object[] Purple; + public final Object[] Quartz; + public final Object[] Rainbow; + public final Object[] Red; + public final Object[] RedMushroom; + public final Object[] Redstone; + public final Object[] Sandstone; + public final Object[] Sheep; + public final Object[] Skeleton; + public final Object[] Slime; + public final Object[] Snow; + public final Object[] Spider; + public final Object[] Standard; + public final Object[] Sponge; + public final Object[] White; + public final Object[] Wither; + public final Object[] WitherSkeleton; + public final Object[] Wolf; + public final Object[] Yellow; + public final Object[] Zombie; + + + public static Object[] reviewRecipe(Object... objects) + { + return objects; + } + +} diff --git a/inventory/ContainerBackpack.java b/inventory/ContainerBackpack.java new file mode 100644 index 00000000..205371fc --- /dev/null +++ b/inventory/ContainerBackpack.java @@ -0,0 +1,378 @@ +package com.darkona.adventurebackpack.inventory; + +import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; +import com.darkona.adventurebackpack.item.ItemAdventureBackpack; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.*; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.CraftingManager; + +/** + * Created on 12/10/2014 + * @author Darkona + * + */ +public class ContainerBackpack extends Container implements IWearableContainer +{ + + public IInventoryAdventureBackpack inventory; + public static byte SOURCE_TILE = 0; + public static byte SOURCE_WEARING = 1; + public static byte SOURCE_HOLDING = 2; + public byte source; + public InventoryCrafting craftMatrix = new InventoryCrafting(this, 3, 3); + public IInventory craftResult = new InventoryCraftResult(); + EntityPlayer player; + + private final int + PLAYER_HOT_START = 0, + PLAYER_HOT_END = PLAYER_HOT_START + 8, + PLAYER_INV_START = PLAYER_HOT_END + 1, + PLAYER_INV_END = PLAYER_INV_START + 26, + BACK_INV_START = PLAYER_INV_END + 1, + BACK_INV_END = BACK_INV_START + 38, + TOOL_START = BACK_INV_END + 1, + TOOL_END = TOOL_START + 1, + BUCKET_LEFT = TOOL_END + 1, + BUCKET_RIGHT = BUCKET_LEFT + 2; + + public ContainerBackpack(EntityPlayer player, IInventoryAdventureBackpack backpack, byte source) + { + this.player = player; + inventory = backpack; + makeSlots(player.inventory); + inventory.openInventory(); + this.source = source; + } + + public IInventoryAdventureBackpack getInventoryBackpack() + { + return inventory; + } + + private void bindPlayerInventory(InventoryPlayer invPlayer) + { + int startX = 44; + int startY = 125; + + // Player's Hotbar + for (int x = 0; x < 9; x++) + { + addSlotToContainer(new Slot(invPlayer, x, startX + 18 * x, 183)); + } + + // Player's Inventory + for (int y = 0; y < 3; y++) + { + for (int x = 0; x < 9; x++) + { + addSlotToContainer(new Slot(invPlayer, (x + y * 9 + 9), (startX + 18 * x), (startY + y * 18))); + } + } + //Total 36 slots + } + + private void makeSlots(InventoryPlayer invPlayer) + { + + bindPlayerInventory(invPlayer); + + // Backpack Inventory + int startX = 62; + int startY = 7; + int slot = 0; + + // 24 Slots + for (int i = 0; i < 3; i++) + { + for (int j = 0; j < 8; j++) + { + int offsetX = startX + (18 * j); + int offsetY = startY + (18 * i); + addSlotToContainer(new SlotBackpack(inventory, slot++, offsetX, offsetY)); + } + } + + // 15 Slots + startY = 61; + for (int i = 0; i < 3; i++) + { + for (int j = 0; j < 5; j++) + { + int offsetX = startX + (18 * j); + int offsetY = startY + (18 * i); + addSlotToContainer(new SlotBackpack(inventory, slot++, offsetX, offsetY)); + } + } + + //Upper Tool Slot + addSlotToContainer(new SlotTool(inventory, Constants.upperTool, 44, 79));// Upper Tool 16 + //Lower Tool slot + addSlotToContainer(new SlotTool(inventory, Constants.lowerTool, 44, 97));// Lower Tool 17 + + //Bucket Slots + + // bucket in left 18 + addSlotToContainer(new SlotFluid(inventory, Constants.bucketInLeft, 6, 7)); + // bucket out left 19 + addSlotToContainer(new SlotFluid(inventory, Constants.bucketOutLeft, 6, 37)); + // bucket in right 20 + addSlotToContainer(new SlotFluid(inventory, Constants.bucketInRight, 226, 7)); + // bucket out right 21 + addSlotToContainer(new SlotFluid(inventory, Constants.bucketOutRight, 226, 37)); + + + //Craft Matrix + startX = 152; + for (int y = 0; y < 3; y++) + { + for (int x = 0; x < 3; x++) + { + int offsetX = startX + (18 * x); + int offsetY = startY + (18 * y); + addSlotToContainer(new Slot(craftMatrix, (x + y * 3), offsetX, offsetY)); + } + } + addSlotToContainer(new SlotCrafting(invPlayer.player, craftMatrix, craftResult, 0, 226, 97)); + this.onCraftMatrixChanged(craftMatrix); + } + + @Override + public boolean canInteractWith(EntityPlayer player) + { + return inventory.isUseableByPlayer(player); + } + + @Override + public void onCraftMatrixChanged(IInventory par1IInventory) + { + craftResult.setInventorySlotContents(0, CraftingManager.getInstance().findMatchingRecipe(craftMatrix, player.worldObj)); + } + + @Override + public void onContainerClosed(EntityPlayer player) + { + super.onContainerClosed(player); + if(source == SOURCE_WEARING) + { + this.crafters.remove(player); + } + if (!player.worldObj.isRemote) + { + for (int i = 0; i < inventory.getSizeInventory(); i++) + { + ItemStack itemstack = this.inventory.getStackInSlotOnClosing(i); + if (itemstack != null) + { + inventory.setInventorySlotContents(i, null); + player.dropPlayerItemWithRandomChoice(itemstack, false); + } + } + + for (int i = 0; i < 9; i++) + { + ItemStack itemstack = this.craftMatrix.getStackInSlotOnClosing(i); + + if (itemstack != null) + { + player.dropPlayerItemWithRandomChoice(itemstack, false); + } + } + } + } + + @Override + public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) + { + if (slot >= 0 && getSlot(slot) != null && getSlot(slot).getStack() == player.getHeldItem() && source == SOURCE_HOLDING) + { + return null; + } + return super.slotClick(slot, button, flag, player); + } + + @Override + protected boolean mergeItemStack(ItemStack stack, int minSlot, int maxSlot, boolean direction) + { + boolean changesMade = false; + int slotInit = minSlot; + + if (direction) + { + slotInit = maxSlot - 1; + } + + Slot slot; + ItemStack newItemStack; + + if (stack.isStackable()) + { + while (stack.stackSize > 0 && (!direction && slotInit < maxSlot || direction && slotInit >= minSlot)) + { + slot = (Slot) this.inventorySlots.get(slotInit); + newItemStack = slot.getStack(); + + if (newItemStack != null && newItemStack.getItem() == stack.getItem() && (!stack.getHasSubtypes() || stack.getItemDamage() == newItemStack.getItemDamage()) && ItemStack.areItemStackTagsEqual(stack, newItemStack)) + { + + int newStackSize = newItemStack.stackSize + stack.stackSize; + + if (newStackSize <= stack.getMaxStackSize()) + { + stack.stackSize = 0; + newItemStack.stackSize = newStackSize; + slot.onSlotChanged(); + changesMade = true; + } else if (newItemStack.stackSize < stack.getMaxStackSize()) + { + stack.stackSize -= stack.getMaxStackSize() - newItemStack.stackSize; + newItemStack.stackSize = stack.getMaxStackSize(); + slot.onSlotChanged(); + changesMade = true; + } + } + + if (direction) + { + --slotInit; + } else + { + ++slotInit; + } + } + } + + if (stack.stackSize > 0) + { + if (direction) + { + slotInit = maxSlot - 1; + } else + { + slotInit = minSlot; + } + + while (!direction && slotInit < maxSlot || direction && slotInit >= minSlot) + { + slot = (Slot) this.inventorySlots.get(slotInit); + newItemStack = slot.getStack(); + + if (newItemStack == null) + { + slot.putStack(stack.copy()); + slot.onSlotChanged(); + stack.stackSize = 0; + changesMade = true; + break; + } + + if (direction) + { + --slotInit; + } else + { + ++slotInit; + } + } + } + + return changesMade; + } + + @Override + public Slot getSlotFromInventory(IInventory inv, int slot) + { + return super.getSlotFromInventory(inv, slot); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int i) + { + if(source == SOURCE_WEARING)refresh(); + Slot slot = getSlot(i); + ItemStack result = null; + if (slot != null && slot.getHasStack()) + { + ItemStack stack = slot.getStack(); + result = stack.copy(); + if (i >= 36) + { + if (!mergeItemStack(stack, PLAYER_HOT_START, PLAYER_INV_END + 1, false)) + { + return null; + } + } + if (i < 36) + { + if (SlotTool.isValidTool(stack)) + { + if (!mergeItemStack(stack, TOOL_START, TOOL_END + 1, false)) + { + if (!mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false)) + { + return null; + } + } + } else if (SlotFluid.valid(stack)) + { + if (!mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false)) + { + if (!mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false)) + { + if (!mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false)) + { + return null; + } + } + } + + + } else if (!(stack.getItem() instanceof ItemAdventureBackpack)) + { + if (!mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false)) + { + return null; + } + } + } + if (stack.stackSize == 0) + { + slot.putStack(null); + } else + { + slot.onSlotChanged(); + } + + if (stack.stackSize == result.stackSize) + { + return null; + } + slot.onPickupFromSlot(player, stack); + } + return result; + } + + /** + * Looks for changes made in the container, sends them to every listener. + */ + @Override + public void detectAndSendChanges() + { + refresh(); + super.detectAndSendChanges(); + /* if(source == SOURCE_WEARING && player instanceof EntityPlayerMP) + { + ((EntityPlayerMP) player).sendContainerAndContentsToPlayer(this, inventoryItemStacks); + BackpackProperty.syncToNear(player); + }*/ + } + + @Override + public void refresh() + { + inventory.openInventory(); + this.onCraftMatrixChanged(craftMatrix); + } +} diff --git a/inventory/ContainerCopter.java b/inventory/ContainerCopter.java new file mode 100644 index 00000000..74560074 --- /dev/null +++ b/inventory/ContainerCopter.java @@ -0,0 +1,166 @@ +package com.darkona.adventurebackpack.inventory; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +/** + * Created on 03/01/2015 + * + * @author Darkona + */ +public class ContainerCopter extends Container implements IWearableContainer +{ + + public InventoryCopterPack inventory; + private final int + PLAYER_HOT_START = 0; + private final int PLAYER_HOT_END = PLAYER_HOT_START + 8; + private final int PLAYER_INV_START = PLAYER_HOT_END + 1; + private final int PLAYER_INV_END = PLAYER_INV_START + 26; + EntityPlayer player; + boolean wearing; + + public ContainerCopter(EntityPlayer player, InventoryCopterPack copterPack, boolean wearing) + { + this.inventory = copterPack; + makeSlots(player.inventory); + inventory.openInventory(); + this.player = player; + this.wearing = wearing; + } + + private void bindPlayerInventory(InventoryPlayer invPlayer) + { + int startX = 8; + int startY = 84; + + // Player's Hotbar + for (int x = 0; x < 9; x++) + { + addSlotToContainer(new Slot(invPlayer, x, startX + 18 * x, 142)); + } + + // Player's Inventory + for (int y = 0; y < 3; y++) + { + for (int x = 0; x < 9; x++) + { + addSlotToContainer(new Slot(invPlayer, (x + y * 9 + 9), (startX + 18 * x), (startY + y * 18))); + } + } + //Total 36 slots + } + + private void makeSlots(InventoryPlayer invPlayer) + { + + bindPlayerInventory(invPlayer); + int slot = 0; + //Bucket Slots + // bucket in + addSlotToContainer(new SlotFluid(inventory, slot++, 44, 23)); + // bucket out + addSlotToContainer(new SlotFluid(inventory, slot++, 44, 53)); + } + + @Override + public boolean canInteractWith(EntityPlayer p_75145_1_) + { + return true; + } + + @Override + public void onContainerClosed(EntityPlayer player) + { + super.onContainerClosed(player); + if (wearing) + { + this.crafters.remove(player); + } + if (!player.worldObj.isRemote) + { + for (int i = 0; i < inventory.getSizeInventory(); i++) + { + ItemStack itemstack = this.inventory.getStackInSlotOnClosing(i); + if (itemstack != null) + { + inventory.setInventorySlotContents(i, null); + player.dropPlayerItemWithRandomChoice(itemstack, false); + } + } + } + } + + @Override + public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) + { + if (slot >= 0 && getSlot(slot) != null && getSlot(slot).getStack() == player.getHeldItem() && !wearing) + { + return null; + } + return super.slotClick(slot, button, flag, player); + } + + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int i) + { + Slot slot = getSlot(i); + ItemStack result = null; + + if (slot != null && slot.getHasStack()) + { + ItemStack stack = slot.getStack(); + result = stack.copy(); + if (i >= 36) + { + if (!mergeItemStack(stack, PLAYER_HOT_START, PLAYER_INV_END + 1, false)) + { + return null; + } + } + if (i < 36) + { + if (SlotFluid.valid(stack)) + { + int COPTER_INV_START = PLAYER_INV_END + 1; + if (!mergeItemStack(stack, COPTER_INV_START, COPTER_INV_START + 1, false)) + { + return null; + } + } + } + + if (stack.stackSize == 0) + { + slot.putStack(null); + } else + { + slot.onSlotChanged(); + } + + if (stack.stackSize == result.stackSize) + { + return null; + } + slot.onPickupFromSlot(player, stack); + } + return result; + } + + @Override + public void detectAndSendChanges() + { + refresh(); + super.detectAndSendChanges(); + } + + @Override + public void refresh() + { + inventory.openInventory(); + } +} diff --git a/inventory/ContainerJetpack.java b/inventory/ContainerJetpack.java new file mode 100644 index 00000000..5e51ca7b --- /dev/null +++ b/inventory/ContainerJetpack.java @@ -0,0 +1,176 @@ +package com.darkona.adventurebackpack.inventory; + +import com.darkona.adventurebackpack.playerProperties.BackpackProperty; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +/** + * Created on 15/01/2015 + * + * @author Darkona + */ +public class ContainerJetpack extends Container implements IWearableContainer +{ + InventoryCoalJetpack inventory; + EntityPlayer player; + private final int + PLAYER_HOT_START = 0; + private final int PLAYER_HOT_END = PLAYER_HOT_START + 8; + private final int PLAYER_INV_START = PLAYER_HOT_END + 1; + private final int PLAYER_INV_END = PLAYER_INV_START + 26; + boolean wearing; + + public ContainerJetpack(EntityPlayer player, InventoryCoalJetpack inventory, boolean wearing) + { + this.player = player; + this.inventory = inventory; + makeSlots(player.inventory); + this.inventory.openInventory(); + this.wearing = wearing; + } + + private void bindPlayerInventory(InventoryPlayer invPlayer) + { + int startX = 8; + int startY = 84; + + // Player's Hotbar + for (int x = 0; x < 9; x++) + { + addSlotToContainer(new Slot(invPlayer, x, startX + 18 * x, 142)); + } + + // Player's Inventory + for (int y = 0; y < 3; y++) + { + for (int x = 0; x < 9; x++) + { + addSlotToContainer(new Slot(invPlayer, (x + y * 9 + 9), (startX + 18 * x), (startY + y * 18))); + } + } + //Total 36 slots + } + + private void makeSlots(InventoryPlayer invPlayer) + { + + bindPlayerInventory(invPlayer); + + //Bucket Slots + // bucket in + addSlotToContainer(new SlotFluid(inventory, InventoryCoalJetpack.BUCKET_IN_SLOT, 30, 22)); + // bucket out + addSlotToContainer(new SlotFluid(inventory, InventoryCoalJetpack.BUCKET_OUT_SLOT, 30, 52)); + // fuel + addSlotToContainer(new SlotFuel(inventory,InventoryCoalJetpack.FUEL_SLOT, 77, 64)); + + } + @Override + public boolean canInteractWith(EntityPlayer p_75145_1_) + { + return true; + } + + @Override + public void detectAndSendChanges() + { + if(wearing) + { + refresh(); + super.detectAndSendChanges(); + if (wearing && player instanceof EntityPlayerMP) + { + ((EntityPlayerMP) player).sendContainerAndContentsToPlayer(this, inventoryItemStacks); + BackpackProperty.syncToNear(player); + } + }else{ + super.detectAndSendChanges(); + } + } + + public void onContainerClosed(EntityPlayer player) + { + super.onContainerClosed(player); + if (wearing) + { + this.crafters.remove(player); + } + if (!player.worldObj.isRemote) + { + for (int i = 0; i < 3; i++) + { + ItemStack itemstack = this.inventory.getStackInSlotOnClosing(i); + if (itemstack != null) + { + inventory.setInventorySlotContents(i, null); + player.dropPlayerItemWithRandomChoice(itemstack, false); + } + } + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int i) + { + refresh(); + Slot slot = getSlot(i); + ItemStack result = null; + + if (slot != null && slot.getHasStack()) + { + ItemStack stack = slot.getStack(); + result = stack.copy(); + if (i >= 36) + { + if (!mergeItemStack(stack, PLAYER_HOT_START, PLAYER_INV_END + 1, false)) + { + return null; + } + } + if (i < 36) + { + if (SlotFluid.valid(stack)) + { + int JETPACK_INV_START = PLAYER_INV_END + 1; + if (!mergeItemStack(stack, JETPACK_INV_START, JETPACK_INV_START + 1, false)) + { + + } + } + else + { + int JETPACK_FUEL_START = PLAYER_INV_END + 3; + if (inventory.isFuel(stack) && !mergeItemStack(stack, JETPACK_FUEL_START, JETPACK_FUEL_START + 1, false)) + { + return null; + } + } + } + + if (stack.stackSize == 0) + { + slot.putStack(null); + } else + { + slot.onSlotChanged(); + } + + if (stack.stackSize == result.stackSize) + { + return null; + } + slot.onPickupFromSlot(player, stack); + } + return result; + } + + @Override + public void refresh() + { + inventory.openInventory(); + } +} diff --git a/inventory/IAsynchronousInventory.java b/inventory/IAsynchronousInventory.java new file mode 100644 index 00000000..49c15233 --- /dev/null +++ b/inventory/IAsynchronousInventory.java @@ -0,0 +1,16 @@ +package com.darkona.adventurebackpack.inventory; + +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; + +/** + * Created on 12/01/2015 + * + * @author Darkona + */ +public interface IAsynchronousInventory extends IInventory +{ + public void setInventorySlotContentsNoSave(int slot, ItemStack stack); + + public ItemStack decrStackSizeNoSave(int slot, int amount); +} diff --git a/inventory/IInventoryTanks.java b/inventory/IInventoryTanks.java new file mode 100644 index 00000000..8c5e30a6 --- /dev/null +++ b/inventory/IInventoryTanks.java @@ -0,0 +1,24 @@ +package com.darkona.adventurebackpack.inventory; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.fluids.FluidTank; + +/** + * Created on 12/01/2015 + * + * @author Darkona + */ +public interface IInventoryTanks extends IAsynchronousInventory +{ + public boolean updateTankSlots(); + + public void loadFromNBT(NBTTagCompound compound); + + public void saveToNBT(NBTTagCompound compound); + + public FluidTank[] getTanksArray(); + + public void dirtyInventory(); + + public void dirtyTanks(); +} diff --git a/inventory/IWearableContainer.java b/inventory/IWearableContainer.java new file mode 100644 index 00000000..5f0faaee --- /dev/null +++ b/inventory/IWearableContainer.java @@ -0,0 +1,11 @@ +package com.darkona.adventurebackpack.inventory; + +/** + * Created on 12/01/2015 + * + * @author Darkona + */ +public interface IWearableContainer +{ + public void refresh(); +} diff --git a/inventory/InventoryActions.java b/inventory/InventoryActions.java new file mode 100644 index 00000000..e4884903 --- /dev/null +++ b/inventory/InventoryActions.java @@ -0,0 +1,165 @@ +package com.darkona.adventurebackpack.inventory; + +import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; +import com.darkona.adventurebackpack.util.FluidUtils; +import net.minecraft.block.Block; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; + +/** + * Created on 16/10/2014 + * + * @author Darkona + */ +public class InventoryActions +{ + + /** + * What a complicated mess. I hated every minute of coding this. + * This code takes a fluid container item. If its filled, it empties it out into a tank. + * If its empty, it drains the tank into the item. Then it puts the resulting filled or empty item + * into a different slot, consuming the first one. If there is no empty container, such as the Forestry Cells, + * it simply fills the tank. + * + * @param inventory The inventory type thing that will have its tank updated. + * @param tank The tank that's going to be updated. + * @param slotIn The slot in which the fluid container item must be to update the tank. + * @return True if the tank was filled and the resulting filled or empty container item was placed in the other slot. + */ + public static boolean transferContainerTank(IInventoryTanks inventory, FluidTank tank, int slotIn) + { + ItemStack stackIn = inventory.getStackInSlot(slotIn); + if (tank == null || stackIn == null) return false; + + //Set slot out for whatever number the output slot should be. + int slotOut = slotIn + 1; + + //CONTAINER ===========> TANK + if (FluidContainerRegistry.isFilledContainer(stackIn)) + { + //See if the tank can accept moar fluid. + int fill = tank.fill(FluidContainerRegistry.getFluidForFilledItem(stackIn), false); + + if (fill > 0)//If can accept the fluid + { + //Get the empty container for the input, if there's any. + ItemStack stackOut = FluidContainerRegistry.drainFluidContainer(stackIn); + + if (inventory.getStackInSlot(slotOut) == null || stackOut == null) + { + + tank.fill(FluidContainerRegistry.getFluidForFilledItem(stackIn), true); + //inventory.dirtyTanks(); + inventory.decrStackSizeNoSave(slotIn, 1); + inventory.setInventorySlotContentsNoSave(slotOut, stackOut); + //inventory.dirtyInventory(); + return true; + } else if (inventory.getStackInSlot(slotOut).getItem() == stackOut.getItem()) + { + int maxStack = inventory.getStackInSlot(slotOut).getMaxStackSize(); + if (maxStack > 1 && (inventory.getStackInSlot(slotOut).stackSize + 1) <= maxStack) + { + + tank.fill(FluidContainerRegistry.getFluidForFilledItem(stackIn), true); + //inventory.dirtyTanks(); + inventory.decrStackSizeNoSave(slotIn, 1); + inventory.getStackInSlot(slotOut).stackSize++; + // inventory.dirtyInventory(); + return true; + } + } + } + } + + //TANK =====> CONTAINER + + if (tank.getFluid() != null && tank.getFluidAmount() > 0 && FluidUtils.isEmptyContainerForFluid(stackIn, tank.getFluid().getFluid())) + { + //How much fluid can this container hold. + int amount = FluidContainerRegistry.getContainerCapacity(tank.getFluid(), stackIn); + //Let's see how much can we drain this tank + FluidStack drain = tank.drain(amount, false); + + ItemStack stackOut = FluidContainerRegistry.fillFluidContainer(drain, stackIn); + + if (drain.amount == amount) + { + if (inventory.getStackInSlot(slotOut) == null) + { + tank.drain(amount, true); + //inventory.dirtyTanks(); + inventory.decrStackSizeNoSave(slotIn, 1); + inventory.setInventorySlotContentsNoSave(slotOut, stackOut); + //inventory.dirtyInventory(); + return true; + } else + if (stackOut.getItem() != null + && stackOut.getItem() == inventory.getStackInSlot(slotOut).getItem()) + { + int maxStack = inventory.getStackInSlot(slotOut).getMaxStackSize(); + if (maxStack > 1 && (inventory.getStackInSlot(slotOut).stackSize + 1) <= maxStack) + { + tank.drain(amount, true); + //inventory.dirtyTanks(); + inventory.decrStackSizeNoSave(slotIn, 1); + inventory.getStackInSlot(slotOut).stackSize++; + // inventory.dirtyInventory(); + return true; + } + } + } + } + return false; + } + + public static void consumeItemInInventory(IInventory backpack, Item item) + { + int i = -1; + for (int j = 0; j < Constants.inventorySize - 7; ++j) + { + if (backpack.getStackInSlot(j) != null && backpack.getStackInSlot(j).getItem() == item) + { + i = j; + break; + } + } + if (i >= 0) + { + backpack.decrStackSize(i,1); + } + } + + public static boolean hasItem(IInventoryAdventureBackpack backpack, Item item) + { + ItemStack[] inventory = backpack.getInventory(); + for (int i = 0; i < inventory.length; i++) + { + if (inventory[i] != null && + inventory[i].getItem().equals(item)) + { + return true; + } + } + return false; + } + + public static boolean hasBlockItem(IInventoryAdventureBackpack backpack, Block item) + { + ItemStack[] inventory = backpack.getInventory(); + for (int i = 0; i < inventory.length; i++) + { + if (inventory[i] != null && + inventory[i].getItem().equals(Item.getItemFromBlock(item))) + { + return true; + } + } + return false; + } + +} diff --git a/inventory/InventoryBackpack.java b/inventory/InventoryBackpack.java new file mode 100644 index 00000000..51e96f05 --- /dev/null +++ b/inventory/InventoryBackpack.java @@ -0,0 +1,408 @@ +package com.darkona.adventurebackpack.inventory; + + +import com.darkona.adventurebackpack.block.BlockAdventureBackpack; +import com.darkona.adventurebackpack.block.TileAdventureBackpack; +import com.darkona.adventurebackpack.common.BackpackAbilities; +import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; +import com.darkona.adventurebackpack.item.ItemAdventureBackpack; +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidTank; + +/** + * Created on 12/10/2014 + * + * @author Darkona + */ +public class InventoryBackpack implements IInventoryAdventureBackpack +{ + public ItemStack[] inventory = new ItemStack[Constants.inventorySize]; + private FluidTank leftTank = new FluidTank(Constants.basicTankCapacity); + private FluidTank rightTank = new FluidTank(Constants.basicTankCapacity); + + public ItemStack getContainerStack() + { + return containerStack; + } + + public void setContainerStack(ItemStack containerStack) + { + this.containerStack = containerStack; + } + + private ItemStack containerStack; + private String colorName = "Standard"; + private int lastTime = 0; + private boolean special = false; + public NBTTagCompound extendedProperties = new NBTTagCompound(); + + public InventoryBackpack(ItemStack backpack) + { + containerStack = backpack; + if(!backpack.hasTagCompound()) + { + backpack.stackTagCompound = new NBTTagCompound(); + saveToNBT(backpack.stackTagCompound); + } + loadFromNBT(backpack.stackTagCompound); + } + + @Override + public FluidTank getLeftTank() + { + return leftTank; + } + + @Override + public FluidTank getRightTank() + { + return rightTank; + } + + @Override + public ItemStack[] getInventory() + { + return inventory; + } + + @Override + public TileAdventureBackpack getTile() + { + return null; + } + + @Override + public ItemStack getParentItemStack() + { + return this.containerStack; + } + + @Override + public String getColorName() + { + return colorName; + } + + @Override + public int getLastTime() + { + return this.lastTime; + } + + @Override + public NBTTagCompound getExtendedProperties() + { + return extendedProperties; + } + + @Override + public void setExtendedProperties(NBTTagCompound properties) + { + this.extendedProperties = properties; + } + + @Override + public boolean isSpecial() + { + return special; + } + + @Override + public void saveTanks(NBTTagCompound compound) + { + compound.setTag("rightTank", rightTank.writeToNBT(new NBTTagCompound())); + compound.setTag("leftTank", leftTank.writeToNBT(new NBTTagCompound())); + } + + @Override + public void loadTanks(NBTTagCompound compound) + { + leftTank.readFromNBT(compound.getCompoundTag("leftTank")); + rightTank.readFromNBT(compound.getCompoundTag("rightTank")); + } + + @Override + public boolean hasItem(Item item) + { + return InventoryActions.hasItem(this, item); + } + + @Override + public void consumeInventoryItem(Item item) + { + InventoryActions.consumeItemInInventory(this, item); + } + + + @Override + public boolean isSBDeployed() + { + return false; + } + + @Override + public void setLastTime(int time) + { + this.lastTime = time; + } + + @Override + public void setInventorySlotContents(int slot, ItemStack stack) + { + if (slot > inventory.length) return; + inventory[slot] = stack; + if (stack != null && stack.stackSize > this.getInventoryStackLimit()) + { + stack.stackSize = this.getInventoryStackLimit(); + } + dirtyInventory(); + } + + @Override + public void setInventorySlotContentsNoSave(int slot, ItemStack stack) + { + if (slot > inventory.length) return; + inventory[slot] = stack; + if (stack != null && stack.stackSize > this.getInventoryStackLimit()) + { + stack.stackSize = this.getInventoryStackLimit(); + } + } + + @Override + public ItemStack decrStackSize(int slot, int quantity) + { + ItemStack itemstack = getStackInSlot(slot); + if (itemstack != null) + { + if (itemstack.stackSize <= quantity) + { + setInventorySlotContents(slot, null); + } else + { + itemstack = itemstack.splitStack(quantity); + } + } + return itemstack; + } + @Override + public ItemStack decrStackSizeNoSave(int slot, int quantity) + { + ItemStack stack = getStackInSlot(slot); + if (stack != null) + { + if (stack.stackSize <= quantity) + { + setInventorySlotContentsNoSave(slot, null); + } else + { + stack = stack.splitStack(quantity); + } + } + return stack; + } + + public boolean updateTankSlots() + { + return InventoryActions.transferContainerTank(this, getLeftTank(), Constants.bucketInLeft) || + InventoryActions.transferContainerTank(this, getRightTank(), Constants.bucketInRight); + } + + @Override + public void loadFromNBT(NBTTagCompound compound) + { + if(compound.hasKey("backpackData")) + { + NBTTagCompound backpackData = compound.getCompoundTag("backpackData"); + NBTTagList items = backpackData.getTagList("ABPItems", net.minecraftforge.common.util.Constants.NBT.TAG_COMPOUND); + for (int i = 0; i < items.tagCount(); i++) + { + NBTTagCompound item = items.getCompoundTagAt(i); + byte slot = item.getByte("Slot"); + if (slot >= 0 && slot < inventory.length) + { + inventory[slot] = ItemStack.loadItemStackFromNBT(item); + } + } + + leftTank.readFromNBT(backpackData.getCompoundTag("leftTank")); + rightTank.readFromNBT(backpackData.getCompoundTag("rightTank")); + colorName = backpackData.getString("colorName"); + lastTime = backpackData.getInteger("lastTime"); + special = backpackData.getBoolean("special"); + extendedProperties = backpackData.getCompoundTag("extendedProperties"); + } + } + + @Override + public void saveToNBT(NBTTagCompound compound) + { + // if(Utils.inServer()) + // { + NBTTagCompound backpackData = new NBTTagCompound(); + NBTTagList items = new NBTTagList(); + for (int i = 0; i < inventory.length; i++) + { + ItemStack stack = inventory[i]; + if (stack != null) + { + NBTTagCompound item = new NBTTagCompound(); + item.setByte("Slot", (byte) i); + stack.writeToNBT(item); + items.appendTag(item); + } + } + backpackData.removeTag("ABPItems"); + backpackData.setTag("ABPItems", items); + backpackData.setString("colorName", colorName); + backpackData.setInteger("lastTime", lastTime); + backpackData.setBoolean("special", BackpackAbilities.hasAbility(colorName)); + backpackData.setTag("extendedProperties", extendedProperties); + backpackData.setTag("rightTank", rightTank.writeToNBT(new NBTTagCompound())); + backpackData.setTag("leftTank", leftTank.writeToNBT(new NBTTagCompound())); + + compound.setTag("backpackData",backpackData); + //} + } + + @Override + public FluidTank[] getTanksArray() + { + FluidTank[] array = {leftTank,rightTank}; + return array; + } + + @Override + public ItemStack getStackInSlotOnClosing(int slot) + { + if (slot == Constants.bucketInLeft || slot == Constants.bucketInRight || slot == Constants.bucketOutLeft || slot == Constants.bucketOutRight) + { + return inventory[slot]; + } + return null; + } + + @Override + public String getInventoryName() + { + return "Adventure Backpack"; + } + + @Override + public boolean hasCustomInventoryName() + { + return true; + } + + @Override + public int getInventoryStackLimit() + { + return 64; + } + + @Override + public void markDirty() + { + + saveToNBT(containerStack.stackTagCompound); + } + + @Override + public boolean isUseableByPlayer(EntityPlayer player) + { + return true; + } + + @Override + public void openInventory() + { + loadFromNBT(containerStack.stackTagCompound); + } + + @Override + public void closeInventory() + { + /* if(Utils.inServer()) + {*/ + saveToNBT(containerStack.stackTagCompound); + // } + } + + @Override + public boolean isItemValidForSlot(int slot, ItemStack stack) + { + if (stack.getItem() instanceof ItemAdventureBackpack || Block.getBlockFromItem(stack.getItem()) instanceof BlockAdventureBackpack) + { + return false; + } + if (slot == Constants.bucketInRight || slot == Constants.bucketInLeft) + { + return FluidContainerRegistry.isContainer(stack); + } + + return !(slot == Constants.upperTool || slot == Constants.lowerTool) || SlotTool.isValidTool(stack); + } + + @Override + public int getSizeInventory() + { + return inventory.length; + } + + @Override + public ItemStack getStackInSlot(int slot) + { + return inventory[slot]; + } + + public void dirtyTanks() + { + containerStack.stackTagCompound.getCompoundTag("backpackData").setTag("leftTank",leftTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag("backpackData").setTag("rightTank",rightTank.writeToNBT(new NBTTagCompound())); + } + + public void dirtyTime() + { + containerStack.stackTagCompound.getCompoundTag("backpackData").setInteger("lastTime",lastTime); + } + + public void dirtyExtended() + { + containerStack.stackTagCompound.getCompoundTag("backpackData").removeTag("extendedProperties"); + containerStack.stackTagCompound.getCompoundTag("backpackData").setTag("extendedProperties",extendedProperties); + } + + public void dirtyInventory() + { + if(updateTankSlots()){ + dirtyTanks(); + } + NBTTagList items = new NBTTagList(); + for (int i = 0; i < inventory.length; i++) + { + ItemStack stack = inventory[i]; + if (stack != null) + { + NBTTagCompound item = new NBTTagCompound(); + item.setByte("Slot", (byte) i); + stack.writeToNBT(item); + items.appendTag(item); + } + } + containerStack.stackTagCompound.getCompoundTag("backpackData").removeTag("ABPItems"); + containerStack.stackTagCompound.getCompoundTag("backpackData").setTag("ABPItems", items); + } + + public boolean hasBlock(Block block) + { + return InventoryActions.hasBlockItem(this, block); + } +} + diff --git a/inventory/InventoryCoalJetpack.java b/inventory/InventoryCoalJetpack.java new file mode 100644 index 00000000..38f946a3 --- /dev/null +++ b/inventory/InventoryCoalJetpack.java @@ -0,0 +1,493 @@ +package com.darkona.adventurebackpack.inventory; + +import com.darkona.adventurebackpack.util.FluidUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.tileentity.TileEntityFurnace; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidTank; + +/** + * Created on 15/01/2015 + * + * @author Darkona + */ +public class InventoryCoalJetpack implements IInventoryTanks +{ + public static final boolean OFF = false; + public static final boolean ON = true; + private FluidTank waterTank = new FluidTank(6000); + private FluidTank CoalTank = new FluidTank(12000); + private ItemStack[] inventory = new ItemStack[3]; + private int temperature = 25; + private boolean status = OFF; + private int burnTicks = 0; + private ItemStack containerStack; + private long systemTime = 0; + private boolean Lava = false; + private boolean leaking = false; + private boolean inUse = false; + public int currentItemBurnTime = 0; + + + public static final int MAX_TEMPERATURE = 200; + public static final int BUCKET_IN_SLOT = 0; + public static final int BUCKET_OUT_SLOT = 1; + public static final int FUEL_SLOT = 2; + private int coolTicks = 5000; + + public InventoryCoalJetpack(final ItemStack jetpack) + { + this.containerStack = jetpack; + if (!containerStack.hasTagCompound()) + { + containerStack.stackTagCompound = new NBTTagCompound(); + closeInventory(); + } + openInventory(); + } + + public int getBurnTimeRemainingScaled(int scale) + { + if (this.currentItemBurnTime == 0) + { + this.currentItemBurnTime = 200; + } + + return this.burnTicks * scale / this.currentItemBurnTime; + } + + @Override + public boolean updateTankSlots() + { + return false; + } + + @Override + public void loadFromNBT(NBTTagCompound compound) + { + if(compound.hasKey("jetpackData")) + { + NBTTagCompound jetpackData = compound.getCompoundTag("jetpackData"); + waterTank.readFromNBT(jetpackData.getCompoundTag("waterTank")); + CoalTank.readFromNBT(jetpackData.getCompoundTag("CoalTank")); + temperature = jetpackData.getInteger("temperature"); + status = jetpackData.getBoolean("status"); + burnTicks = jetpackData.getInteger("burnTicks"); + coolTicks = jetpackData.getInteger("coolTicks"); + systemTime = jetpackData.getLong("systemTime"); + inUse = jetpackData.getBoolean("inUse"); + Lava = jetpackData.getBoolean("lava"); + leaking = jetpackData.getBoolean("leaking"); + currentItemBurnTime = jetpackData.getInteger("currentBurn"); + NBTTagList items = jetpackData.getTagList("inventory", net.minecraftforge.common.util.Constants.NBT.TAG_COMPOUND); + for (int i = 0; i < items.tagCount(); i++) + { + NBTTagCompound item = items.getCompoundTagAt(i); + byte slot = item.getByte("Slot"); + if (slot >= 0 && slot < inventory.length) + { + inventory[slot] = ItemStack.loadItemStackFromNBT(item); + } + } + } + } + + @Override + public void saveToNBT(NBTTagCompound compound) + { + NBTTagCompound jetpackData; + if(compound.hasKey("jetpackData")) + { + jetpackData = compound.getCompoundTag("jetpackData"); + }else + { + jetpackData = new NBTTagCompound(); + } + + jetpackData.setTag("waterTank",waterTank.writeToNBT(new NBTTagCompound())); + jetpackData.setTag("CoalTank",CoalTank.writeToNBT(new NBTTagCompound())); + jetpackData.setInteger("temperature", temperature); + jetpackData.setBoolean("status", status); + jetpackData.setInteger("burnTicks", burnTicks); + jetpackData.setInteger("coolTicks", coolTicks); + jetpackData.setLong("systemTime",systemTime); + jetpackData.setBoolean("inUse", inUse); + jetpackData.setBoolean("lava",Lava); + jetpackData.setBoolean("leaking",leaking); + jetpackData.setInteger("currentBurn",currentItemBurnTime); + NBTTagList items = new NBTTagList(); + for (int i = 0; i < inventory.length; i++) + { + ItemStack stack = inventory[i]; + if (stack != null) + { + NBTTagCompound item = new NBTTagCompound(); + item.setByte("Slot", (byte) i); + stack.writeToNBT(item); + items.appendTag(item); + } + } + jetpackData.setTag("inventory", items); + compound.setTag("jetpackData",jetpackData); + } + + @Override + public FluidTank[] getTanksArray() + { + FluidTank[] tanks = {waterTank,CoalTank}; + return tanks; + } + + @Override + public void dirtyInventory() + { + NBTTagList items = new NBTTagList(); + for (int i = 0; i < inventory.length; i++) + { + ItemStack stack = inventory[i]; + if (stack != null) + { + NBTTagCompound item = new NBTTagCompound(); + item.setByte("Slot", (byte) i); + stack.writeToNBT(item); + items.appendTag(item); + } + } + containerStack.stackTagCompound.getCompoundTag("jetpackData").setTag("inventory", items); + } + + @Override + public void dirtyTanks() + { + containerStack.stackTagCompound.getCompoundTag("jetPackData").setTag("waterTank",waterTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag("jetPackData").setTag("CoalTank",CoalTank.writeToNBT(new NBTTagCompound())); + } + + public void dirtyBoiler() + { + NBTTagCompound jetpackData = containerStack.stackTagCompound.getCompoundTag("jetPackData"); + jetpackData.setBoolean("lava", Lava); + jetpackData.setBoolean("leaking", leaking); + jetpackData.setInteger("temperature", temperature); + jetpackData.setInteger("burnTicks", burnTicks); + jetpackData.setInteger("coolTicks", coolTicks); + jetpackData.setInteger("currentBurn",currentItemBurnTime); + } + + public int consumeFuel() + { + int result = 0; + if(isFuel(inventory[FUEL_SLOT])) + { + result = TileEntityFurnace.getItemBurnTime(inventory[FUEL_SLOT]); + --inventory[FUEL_SLOT].stackSize; + if(inventory[FUEL_SLOT].stackSize == 0) + { + inventory[FUEL_SLOT] = inventory[FUEL_SLOT].getItem().getContainerItem(inventory[FUEL_SLOT]); + } + dirtyInventory(); + } + return result; + } + + public boolean isFuel(ItemStack stack) + { + return TileEntityFurnace.isItemFuel(stack); + } + + + + @Override + public void setInventorySlotContentsNoSave(int slot, ItemStack stack) + { + if (slot > inventory.length) return; + inventory[slot] = stack; + if (stack != null && stack.stackSize > this.getInventoryStackLimit()) + { + stack.stackSize = this.getInventoryStackLimit(); + } + } + + @Override + public ItemStack decrStackSizeNoSave(int slot, int amount) + { + if (slot < inventory.length && inventory[slot] != null) + { + if (inventory[slot].stackSize > amount) + { + ItemStack result = inventory[slot].splitStack(amount); + return result; + } + ItemStack stack = inventory[slot]; + setInventorySlotContentsNoSave(slot, null); + return stack; + } + return null; + } + + @Override + public int getSizeInventory() + { + return inventory.length; + } + + @Override + public ItemStack getStackInSlot(int slot) + { + return inventory[slot]; + } + + @Override + public ItemStack decrStackSize(int slot, int quantity) + { + ItemStack itemstack = getStackInSlot(slot); + + if (itemstack != null) + { + if (itemstack.stackSize <= quantity) + { + if(slot == FUEL_SLOT) + { + setInventorySlotContents(slot, itemstack.getItem().getContainerItem(itemstack)); + } + else + { + setInventorySlotContents(slot, null); + } + } else + { + itemstack = itemstack.splitStack(quantity); + } + } + return itemstack; + } + + @Override + public ItemStack getStackInSlotOnClosing(int i) + { + return (i == 0 || i== 1) ? inventory[i] : null; + } + + @Override + public void setInventorySlotContents(int slot, ItemStack stack) + { + inventory[slot] = stack; + if (stack != null && stack.stackSize > getInventoryStackLimit()) + { + stack.stackSize = getInventoryStackLimit(); + } + if(slot < FUEL_SLOT)onInventoryChanged(); + dirtyInventory(); + +} + + public void onInventoryChanged() + { + for (int i = 0; i < inventory.length; i++) + { + if (i == 0) + { + ItemStack container = getStackInSlot(i); + if(FluidContainerRegistry.isFilledContainer(container) && FluidUtils.isContainerForFluid(container, FluidRegistry.WATER)) + { + InventoryActions.transferContainerTank(this, waterTank, i); + }else + if(FluidContainerRegistry.isEmptyContainer(container) && waterTank.getFluid()!=null && FluidUtils.isContainerForFluid(container, FluidRegistry.WATER)) + { + InventoryActions.transferContainerTank(this, waterTank, i); + } + } + } + markDirty(); + } + @Override + public String getInventoryName() + { + return "Coal Jetpack"; + } + + @Override + public boolean hasCustomInventoryName() + { + return true; + } + + @Override + public int getInventoryStackLimit() + { + return 64; + } + + @Override + public void markDirty() + { + saveToNBT(containerStack.stackTagCompound); + } + + @Override + public boolean isUseableByPlayer(EntityPlayer p_70300_1_) + { + return true; + } + + @Override + public void openInventory() + { + loadFromNBT(containerStack.stackTagCompound); + } + + @Override + public void closeInventory() + { + saveToNBT(containerStack.stackTagCompound); + } + + @Override + public boolean isItemValidForSlot(int slot, ItemStack stack) + { + if(slot == BUCKET_IN_SLOT)return SlotFluid.valid(stack) && FluidUtils.isContainerForFluid(stack, FluidRegistry.WATER); + if(slot == FUEL_SLOT)return TileEntityFurnace.isItemFuel(stack); + return false; + } + + public ItemStack getParentItemStack() + { + return containerStack; + } + + public FluidTank getWaterTank() + { + return waterTank; + } + + public FluidTank getCoalTank() + { + return CoalTank; + } + + public boolean getStatus() + { + return status; + } + + public void setStatus(boolean status) + { + this.status = status; + } + + public int getTemperature() + { + return temperature; + } + + public void setTemperature(int temperature) + { + this.temperature = temperature; + } + + public boolean isInUse() + { + return inUse; + } + + public void setInUse(boolean inUse) + { + this.inUse = inUse; + } + + public boolean isLava() + { + return Lava; + } + + public void setLava(boolean Lava) + { + this.Lava = Lava; + } + + public boolean isLeaking() + { + return leaking; + } + + public void setLeaking(boolean leaking) + { + this.leaking = leaking; + } + + public long getSystemTime() + { + return systemTime; + } + + public void setSystemTime(long systemTime) + { + this.systemTime = systemTime; + } + + public int getBurnTicks() + { + return burnTicks; + } + + public void setBurnTicks(int burnTicks) + { + this.burnTicks = burnTicks; + } + + public ItemStack[] getInventory() + { + return inventory; + } + + public void setInventory(ItemStack[] inventory) + { + this.inventory = inventory; + } + + public int getIncreasingFactor() + { + if(temperature < 50)return 20; + if(temperature < 100)return 15; + if(temperature < 150)return 10; + return 5; + } + + public int getDecreasingFactor() + { + if(temperature > 150)return 40; + if(temperature > 100)return 80; + if(temperature > 50)return 120; + return 5; + } + public int getCoolTicks() + { + return coolTicks; + } + + public void setCoolTicks(int coolTicks) + { + this.coolTicks = coolTicks; + } + + public void setContainerStack(ItemStack containerStack) + { + this.containerStack = containerStack; + } + + public ItemStack getContainerStack() + { + return containerStack; + } + + public void calculateLostTime() + { + @SuppressWarnings("unused") + long elapsedTimesince = System.currentTimeMillis() - systemTime; + + } +} diff --git a/inventory/InventoryCopterPack.java b/inventory/InventoryCopterPack.java new file mode 100644 index 00000000..cea48591 --- /dev/null +++ b/inventory/InventoryCopterPack.java @@ -0,0 +1,286 @@ +package com.darkona.adventurebackpack.inventory; + +import com.darkona.adventurebackpack.item.ItemCopterPack; +import com.darkona.adventurebackpack.reference.GeneralReference; +import com.darkona.adventurebackpack.util.FluidUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidTank; + +/** + * Created on 02/01/2015 + * + * @author Darkona + */ +public class InventoryCopterPack implements IInventoryTanks +{ + private ItemStack containerStack; + public FluidTank fuelTank = new FluidTank(6000); + public int tickCounter = 0; + public byte status = ItemCopterPack.OFF_MODE; + private ItemStack[] inventory = new ItemStack[2]; + + + + public InventoryCopterPack(ItemStack copterPack) + { + status = ItemCopterPack.OFF_MODE; + containerStack = copterPack; + if(!copterPack.hasTagCompound()) + { + copterPack.stackTagCompound = new NBTTagCompound(); + saveToNBT(copterPack.stackTagCompound); + } + + openInventory(); + } + + public FluidTank getFuelTank() + { + return fuelTank; + } + + public void consumeFuel(int quantity) + { + fuelTank.drain(quantity, true); + dirtyTanks(); + } + + public boolean canConsumeFuel(int quantity) + { + return fuelTank.drain(quantity, false) != null && fuelTank.drain(quantity, false).amount > 0; + } + + @Override + public int getSizeInventory() + { + return inventory.length; + } + + @Override + public ItemStack getStackInSlot(int i) + { + return inventory[i]; + } + + @Override + public ItemStack decrStackSize(int slot, int quantity) + { + ItemStack itemstack = getStackInSlot(slot); + + if (itemstack != null) + { + if (itemstack.stackSize <= quantity) + { + setInventorySlotContents(slot, null); + } else + { + itemstack = itemstack.splitStack(quantity); + } + } + return itemstack; + } + + @Override + public ItemStack getStackInSlotOnClosing(int i) + { + return inventory[i]; + } + + @Override + public void setInventorySlotContents(int slot, ItemStack stack) + { + inventory[slot] = stack; + if (stack != null && stack.stackSize > getInventoryStackLimit()) + { + stack.stackSize = getInventoryStackLimit(); + } + if(FluidContainerRegistry.isFilledContainer(stack) && GeneralReference.isValidFuel(FluidContainerRegistry.getFluidForFilledItem(stack).getFluid())) + { + InventoryActions.transferContainerTank(this, fuelTank, 0); + }else + if(FluidContainerRegistry.isEmptyContainer(stack) && fuelTank.getFluid()!=null && FluidUtils.isContainerForFluid(stack, fuelTank.getFluid().getFluid())) + { + InventoryActions.transferContainerTank(this, fuelTank, 0); + } + dirtyTanks(); + dirtyInventory(); + } + + @Override + public String getInventoryName() + { + return "Copter Pack"; + } + + @Override + public boolean hasCustomInventoryName() + { + return true; + } + + @Override + public int getInventoryStackLimit() + { + return 64; + } + + @Override + public void markDirty() + { + containerStack.stackTagCompound.setTag("fuelTank", fuelTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.setByte("status", status); + containerStack.stackTagCompound.setInteger("tickCounter", this.tickCounter); + } + + @Override + public void dirtyTanks() + { + containerStack.stackTagCompound.setTag("fuelTank", fuelTank.writeToNBT(new NBTTagCompound())); + } + + @Override + public void dirtyInventory() + { + + } + + public void dirtyCounter() + { + containerStack.stackTagCompound.setInteger("tickCounter", this.tickCounter); + } + + @Override + public boolean isUseableByPlayer(EntityPlayer player) + { + return true; + } + + @Override + public void openInventory() + { + loadFromNBT(containerStack.stackTagCompound); + } + + @Override + public void closeInventory() + { + saveToNBT(containerStack.stackTagCompound); + } + + public void closeInventoryNoStatus() + { + containerStack.stackTagCompound.setTag("fuelTank", this.fuelTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.setInteger("tickCounter", this.tickCounter); + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack stack) + { + return false; + } + + public void onInventoryChanged() + { + + @SuppressWarnings("unused") + ItemStack container = getStackInSlot(0); + + closeInventory(); + } + + @Override + public void setInventorySlotContentsNoSave(int slot, ItemStack stack) + { + if (slot > inventory.length) return; + inventory[slot] = stack; + if (stack != null && stack.stackSize > this.getInventoryStackLimit()) + { + stack.stackSize = this.getInventoryStackLimit(); + } + } + + @Override + public ItemStack decrStackSizeNoSave(int slot, int amount) + { + if (slot < inventory.length && inventory[slot] != null) + { + if (inventory[slot].stackSize > amount) + { + ItemStack result = inventory[slot].splitStack(amount); + return result; + } + ItemStack stack = inventory[slot]; + setInventorySlotContentsNoSave(slot, null); + return stack; + } + return null; + } + + public ItemStack getParentItemStack() + { + return this.containerStack; + } + + + public int getTickCounter() + { + return tickCounter; + } + + public void setTickCounter(int ticks) + { + this.tickCounter = ticks; + } + + public byte getStatus() + { + return status; + } + + @Override + public boolean updateTankSlots() + { + return false; + } + + @Override + public void loadFromNBT(NBTTagCompound compound) + { + fuelTank.readFromNBT(compound.getCompoundTag("fuelTank")); + status = compound.getByte("status"); + tickCounter = compound.getInteger("tickCounter"); + } + + @Override + public void saveToNBT(NBTTagCompound compound) + { + compound.setTag("fuelTank", fuelTank.writeToNBT(new NBTTagCompound())); + compound.setByte("status", status); + compound.setInteger("tickCounter", this.tickCounter); + } + + @Override + public FluidTank[] getTanksArray() + { + FluidTank[] tanks = {fuelTank}; + return tanks; + } + + public void setStatus(byte status) + { + this.status = status; + } + + public void dirtyStatus() + { + containerStack.stackTagCompound.setByte("status", status); + } + + public void setContainerStack(ItemStack containerStack) + { + this.containerStack = containerStack; + } +} diff --git a/inventory/SlotAdventureBackpack.java b/inventory/SlotAdventureBackpack.java new file mode 100644 index 00000000..dfc48f5d --- /dev/null +++ b/inventory/SlotAdventureBackpack.java @@ -0,0 +1,28 @@ +package com.darkona.adventurebackpack.inventory; + +import com.darkona.adventurebackpack.util.Utils; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; + +/** + * Created on 17/01/2015 + * + * @author Darkona + */ +public abstract class SlotAdventureBackpack extends Slot +{ + public SlotAdventureBackpack(IInventory p_i1824_1_, int p_i1824_2_, int p_i1824_3_, int p_i1824_4_) + { + super(p_i1824_1_, p_i1824_2_, p_i1824_3_, p_i1824_4_); + } + + @Override + public void onSlotChanged() + { + if(Utils.inServer()) + { + if (inventory instanceof IInventoryTanks) + ((IInventoryTanks) this.inventory).dirtyInventory(); + } + } +} diff --git a/inventory/SlotBackpack.java b/inventory/SlotBackpack.java new file mode 100644 index 00000000..bcf50b24 --- /dev/null +++ b/inventory/SlotBackpack.java @@ -0,0 +1,34 @@ +package com.darkona.adventurebackpack.inventory; + +import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; +import com.darkona.adventurebackpack.init.ModBlocks; +import com.darkona.adventurebackpack.item.ItemAdventureBackpack; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +/** + * Created by Darkona on 12/10/2014. + */ +public class SlotBackpack extends SlotAdventureBackpack +{ + + public SlotBackpack(IInventoryAdventureBackpack inventory, int id, int x, int y) + { + super(inventory, id, x, y); + } + + @Override + public boolean isItemValid(ItemStack stack) + { + return (!(stack.getItem() instanceof ItemAdventureBackpack) && !(stack.getItem() == Item.getItemFromBlock(ModBlocks.blockBackpack))); + } + + @Override + public void onPickupFromSlot(EntityPlayer p_82870_1_, ItemStack p_82870_2_) + { + super.onPickupFromSlot(p_82870_1_, p_82870_2_); + } + + +} diff --git a/inventory/SlotFluid.java b/inventory/SlotFluid.java new file mode 100644 index 00000000..c8b6c397 --- /dev/null +++ b/inventory/SlotFluid.java @@ -0,0 +1,52 @@ +package com.darkona.adventurebackpack.inventory; + +import com.darkona.adventurebackpack.util.Utils; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidContainerRegistry; + +/** + * Created on 12/10/2014 + * @author Darkona + * + * + */ +public class SlotFluid extends SlotAdventureBackpack +{ + + public SlotFluid(IInventory inventory, int id, int x, int y) + { + super(inventory, id, x, y); + } + + public static boolean valid(ItemStack stack) + { + return ((stack != null) && (FluidContainerRegistry.isContainer(stack))); + } + + @Override + public boolean isItemValid(ItemStack stack) + { + return ((stack != null) && (FluidContainerRegistry.isContainer(stack))); + } + + @Override + public void onSlotChanged() + { + + if (Utils.inServer()) + { + if (inventory instanceof IInventoryTanks) + { + ((IInventoryTanks) this.inventory).updateTankSlots(); + } + } + super.onSlotChanged(); + } + + @Override + public void putStack(ItemStack par1ItemStack) + { + super.putStack(par1ItemStack); + } +} diff --git a/inventory/SlotFuel.java b/inventory/SlotFuel.java new file mode 100644 index 00000000..622d41d6 --- /dev/null +++ b/inventory/SlotFuel.java @@ -0,0 +1,19 @@ +package com.darkona.adventurebackpack.inventory; + +import net.minecraft.inventory.IInventory; + +/** + * Created on 17/01/2015 + * + * @author Darkona + */ +public class SlotFuel extends SlotAdventureBackpack +{ + public SlotFuel(IInventory p_i1824_1_, int p_i1824_2_, int p_i1824_3_, int p_i1824_4_) + { + super(p_i1824_1_, p_i1824_2_, p_i1824_3_, p_i1824_4_); + } + + + +} diff --git a/inventory/SlotTool.java b/inventory/SlotTool.java new file mode 100644 index 00000000..7e3870b4 --- /dev/null +++ b/inventory/SlotTool.java @@ -0,0 +1,114 @@ +package com.darkona.adventurebackpack.inventory; + +import com.darkona.adventurebackpack.item.ItemAdventureBackpack; +import com.darkona.adventurebackpack.item.ItemHose; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.*; + +/** + * Created on 12/10/2014 + * + * @author Darkona + */ +public class SlotTool extends SlotAdventureBackpack +{ + + public SlotTool(IInventory inventory, int id, int x, int y) + { + super(inventory, id, x, y); + } + + @Override + public boolean isItemValid(ItemStack stack) + { + return isValidTool(stack); + } + + public static boolean isValidTool(ItemStack stack) + { + + boolean valid = false; + + String[] validToolNames = { + "wrench", "hammer", "axe", "shovel", "grafter", "scoop", "crowbar", "mattock", "drill",/*"hatchet","excavator","chisel"*/ + }; + + String[] invalidToolNames = { + "bucket", "sword", "dagger", "sabre", "rapier", "shield", "cutlass", "bow", "whip" + }; + + if (stack != null && stack.getMaxStackSize() == 1) + { + Item item = stack.getItem(); + String name = item.getUnlocalizedName().toLowerCase(); + + // Vanilla + if (item instanceof ItemTool || item instanceof ItemHoe || item instanceof ItemShears || item instanceof ItemFishingRod || item instanceof ItemFlintAndSteel) + { + return true; + } + + //Adventure Backpack duh! + if (item instanceof ItemHose || item instanceof ItemAdventureBackpack) + { + return false; + } + + // Just for extra compatibility and/or security and/or less annoyance + for (String toolName : validToolNames) + { + @SuppressWarnings("unused") + String a = toolName; + if (name.contains(toolName)) return true; + } + + for (String toolName : invalidToolNames) + { + @SuppressWarnings("unused") + String a = toolName; + if (name.contains(toolName)) return false; + } + + //And also this because I'm a badass + try + { + // Tinker's Construct + if (item.getClass().getName().contains("tconstruct.items.tools")) return true; + } catch (Exception oops) + { + // oops.printStackTrace(); + } + try + { + //Buildcraft + if (java.lang.Class.forName("buildcraft.api.tools.IToolWrench").isInstance(item)) return true; + } catch (Exception oops) + { + // oops.printStackTrace(); + } + try + { + //IndustrialCraft + if (java.lang.Class.forName("ic2.api.item.IElectricItem").isInstance(item)) return true; + } catch (Exception oops) + { + // oops.printStackTrace(); + } + //Thaumcraft + try + { + //Thermal Expansion + if (java.lang.Class.forName("cofh.core.item.tool").isInstance(item)) return true; + if (java.lang.Class.forName("thermalexpansion.item.tool").isInstance(item)) return true; + } catch (Exception oops) + { + // oops.printStackTrace(); + } + + } + + return valid; + } + + +} diff --git a/item/ArmorAB.java b/item/ArmorAB.java new file mode 100644 index 00000000..7e29bb0f --- /dev/null +++ b/item/ArmorAB.java @@ -0,0 +1,66 @@ +package com.darkona.adventurebackpack.item; + +import com.darkona.adventurebackpack.CreativeTabAB; +import com.darkona.adventurebackpack.init.ModMaterials; +import com.darkona.adventurebackpack.reference.ModInfo; +import com.darkona.adventurebackpack.util.Resources; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.item.ItemArmor; +import net.minecraft.item.ItemStack; + +/** + * Created on 11/10/2014. + * @author Javier Darkona + */ +public class ArmorAB extends ItemArmor +{ + + /** + * @param type 2 Chain + * @param renderIndex 0 Helmet, 1 Plate, 2 Pants, 3 Boots + */ + public ArmorAB(int renderIndex, int type) + { + super(ModMaterials.ruggedLeather, renderIndex, type); + setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); + } + + + protected String getUnwrappedUnlocalizedName(String unlocalizedName) + { + return unlocalizedName.substring(unlocalizedName.indexOf(".") + 1); + } + + + @Override + public String getUnlocalizedName(ItemStack stack) + { + return getUnlocalizedName(); + } + + @Override + public String getUnlocalizedName() + { + return String.format("item.%s%s", ModInfo.MOD_ID.toLowerCase() + ":", getUnwrappedUnlocalizedName(super.getUnlocalizedName())); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconRegister) + { + itemIcon = iconRegister.registerIcon(this.getUnlocalizedName().substring(this.getUnlocalizedName().indexOf(".") + 1)); + } + + @Override + @SideOnly(Side.CLIENT) + public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) + { + String uName = this.getUnlocalizedName(); + return Resources.modelTextureResourceString(uName.substring(uName.indexOf(":") + 1)) + "_texture.png"; + //return Textures.modelTextureName(getUnwrappedUnlocalizedName(super.getUnlocalizedName())); + } + +} diff --git a/item/IBackWearableItem.java b/item/IBackWearableItem.java new file mode 100644 index 00000000..c9467e3b --- /dev/null +++ b/item/IBackWearableItem.java @@ -0,0 +1,32 @@ +package com.darkona.adventurebackpack.item; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +/** + * Created on 08/01/2015 + * + * @author Darkona + */ +public interface IBackWearableItem +{ + public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack); + + public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack); + + public void onEquipped(World world, EntityPlayer player, ItemStack stack); + + public void onUnequipped(World world, EntityPlayer player, ItemStack stack); + + @SideOnly(Side.CLIENT) + public ModelBiped getWearableModel(ItemStack wearable); + + @SideOnly(Side.CLIENT) + public ResourceLocation getWearableTexture(ItemStack wearable); + +} diff --git a/item/ItemAB.java b/item/ItemAB.java new file mode 100644 index 00000000..3bcf1a16 --- /dev/null +++ b/item/ItemAB.java @@ -0,0 +1,52 @@ +package com.darkona.adventurebackpack.item; + +import com.darkona.adventurebackpack.CreativeTabAB; +import com.darkona.adventurebackpack.reference.ModInfo; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +/** + * Created by Darkona on 10/10/2014. + */ +public class ItemAB extends Item +{ + + public ItemAB() + { + super(); + setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); + } + + @Override + public String getUnlocalizedName(ItemStack stack) + { + return String.format("item.%s%s", ModInfo.MOD_ID.toLowerCase() + ":", getUnwrappedUnlocalizedName(super.getUnlocalizedName())); + } + + @Override + public String getUnlocalizedName() + { + return String.format("item.%s%s", ModInfo.MOD_ID.toLowerCase() + ":", getUnwrappedUnlocalizedName(super.getUnlocalizedName())); + } + + public String getUnlocalizedName(String name) + { + return String.format("item.%s%s", ModInfo.MOD_ID.toLowerCase() + ":", name); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconRegister) + { + itemIcon = iconRegister.registerIcon(this.getUnlocalizedName().substring(this.getUnlocalizedName().indexOf(".") + 1)); + } + + + protected String getUnwrappedUnlocalizedName(String unlocalizedName) + { + return unlocalizedName.substring(unlocalizedName.indexOf(".") + 1); + } +} diff --git a/item/ItemAdventureBackpack.java b/item/ItemAdventureBackpack.java new file mode 100644 index 00000000..f9e0f9cb --- /dev/null +++ b/item/ItemAdventureBackpack.java @@ -0,0 +1,374 @@ +package com.darkona.adventurebackpack.item; + +import com.darkona.adventurebackpack.AdventureBackpack; +import com.darkona.adventurebackpack.block.BlockAdventureBackpack; +import com.darkona.adventurebackpack.block.TileAdventureBackpack; +import com.darkona.adventurebackpack.client.models.ModelBackpackArmor; +import com.darkona.adventurebackpack.common.BackpackAbilities; +import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.events.WearableEvent; +import com.darkona.adventurebackpack.init.ModBlocks; +import com.darkona.adventurebackpack.init.ModItems; +import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.network.GUIPacket; +import com.darkona.adventurebackpack.playerProperties.BackpackProperty; +import com.darkona.adventurebackpack.proxy.ClientProxy; +import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.util.BackpackUtils; +import com.darkona.adventurebackpack.util.Resources; +import com.darkona.adventurebackpack.util.Utils; +import com.darkona.adventurebackpack.util.Wearing; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ChunkCoordinates; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.util.ForgeDirection; + +import java.util.List; + +/** + * Created on 12/10/2014 + * + * @author Darkona + */ +public class ItemAdventureBackpack extends ItemAB implements IBackWearableItem +{ + + + public ItemAdventureBackpack() + { + super(); + setUnlocalizedName("adventureBackpack"); + setFull3D(); + setMaxStackSize(1); + } + + + public static Item getItemFromBlock(Block block) + { + return block instanceof BlockAdventureBackpack ? ModItems.adventureBackpack : null; + } + + /** + * Return the enchantability factor of the item, most of the timeInSeconds is based on material. + */ + @Override + public int getItemEnchantability() + { + return 0; + } + + /** + * Return whether this item is repairable in an anvil. + * + * @param p_82789_1_ + * @param p_82789_2_ + */ + @Override + public boolean getIsRepairable(ItemStack p_82789_1_, ItemStack p_82789_2_) + { + return false; + } + + /** + * Determines if the durability bar should be rendered for this item. + * Defaults to vanilla stack.isDamaged behavior. + * But modders can use this for any data they wish. + * + * @param stack The current Item Stack + * @return True if it should render the 'durability' bar. + */ + @Override + public boolean showDurabilityBar(ItemStack stack) + { + return false; + } + + /** + * Queries the percentage of the 'Durability' bar that should be drawn. + * + * @param stack The current ItemStack + * @return 1.0 for 100% 0 for 0% + */ + @Override + public double getDurabilityForDisplay(ItemStack stack) + { + return 1; + } + + @Override + public String getItemStackDisplayName(ItemStack stack) + { + return "Adventure Backpack";// + stack.getTagCompound().getString("colorName"); + } + + @Override + public void onCreated(ItemStack stack, World par2World, EntityPlayer par3EntityPlayer) + { + + super.onCreated(stack, par2World, par3EntityPlayer); + BackpackNames.setBackpackColorNameFromDamage(stack, stack.getItemDamage()); + } + + public boolean placeBackpack(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, boolean from) + { + if (!stack.hasTagCompound()) stack.setTagCompound(new NBTTagCompound()); + if (!player.canPlayerEdit(x, y, z, side, stack)) return false; + if (!stack.stackTagCompound.hasKey("colorName") || stack.stackTagCompound.getString("colorName").isEmpty()) + { + stack.stackTagCompound.setString("colorName", "Standard"); + } + + // world.spawnEntityInWorld(new EntityLightningBolt(world, x, y, z)); + BlockAdventureBackpack backpack = ModBlocks.blockBackpack; + + if (y <= 0 || y >= world.getHeight()) + { + return false; + } + if (backpack.canPlaceBlockOnSide(world, x, y, z, side)) + { + if (world.getBlock(x, y, z).getMaterial().isSolid()) + { + switch (side) + { + case 0: + --y; + break; + case 1: + ++y; + break; + case 2: + --z; + break; + case 3: + ++z; + break; + case 4: + --x; + break; + case 5: + ++x; + break; + } + } + if (y <= 0 || y >= world.getHeight()) + { + return false; + } + if (backpack.canPlaceBlockAt(world, x, y, z)) + { + if (world.setBlock(x, y, z, ModBlocks.blockBackpack)) + { + backpack.onBlockPlacedBy(world, x, y, z, player, stack); + world.playSoundAtEntity(player, BlockAdventureBackpack.soundTypeCloth.getStepResourcePath(), 0.5f, 1.0f); + ((TileAdventureBackpack) world.getTileEntity(x, y, z)).loadFromNBT(stack.stackTagCompound); + if (from) + { + player.inventory.decrStackSize(player.inventory.currentItem, 1); + } else + { + BackpackProperty.get(player).setWearable(null); + } + WearableEvent event = new WearableEvent(player, stack); + MinecraftForge.EVENT_BUS.post(event); + return true; + } + } + } + return false; + } + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) + { + return player.canPlayerEdit(x, y, z, side, stack) && placeBackpack(stack, player, world, x, y, z, side, true); + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) + { + MovingObjectPosition mop = getMovingObjectPositionFromPlayer(world, player, true); + if (mop == null || mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY) + { + if (world.isRemote) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); + } + } + return stack; + } + + + @Override + public boolean isDamageable() + { + return false; + } + + @Override + public boolean onDroppedByPlayer(ItemStack stack, EntityPlayer player) + { + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack stack, int armorSlot) + { + return new ModelBackpackArmor(); + } + + @SideOnly(Side.CLIENT) + @Override + public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) + { + String modelTexture; + if (BackpackNames.getBackpackColorName(stack).equals("Standard")) + { + modelTexture = Resources.backpackTextureFromString(AdventureBackpack.instance.Holiday).toString(); + } else + { + modelTexture = Resources.backpackTexturesStringFromColor(stack); + } + return modelTexture; + } + + @Override + @SuppressWarnings({"rawtypes", "unchecked"}) + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4) + { + NBTTagCompound backpackData = BackpackUtils.getBackpackData(stack); + if (backpackData != null) + { + if (backpackData.hasKey("colorName")) + { + list.add(backpackData.getString("colorName")); + } + } + } + + + @SuppressWarnings({"unchecked", "rawtypes"}) + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs par2CreativeTabs, List subItems) + { + for (int i = 0; i < BackpackNames.backpackNames.length; i++) + { + ItemStack bp = new ItemStack(this, 1, 0); + bp.setItemDamage(i); + NBTTagCompound c = new NBTTagCompound(); + c.setString("colorName", BackpackNames.backpackNames[i]); + BackpackUtils.setBackpackData(bp, c); + subItems.add(bp); + } + } + + @Override + public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) + { + + if (!ConfigHandler.BACKPACK_ABILITIES) return; + if (world == null || player == null || stack == null) return; + + if (BackpackAbilities.hasAbility(BackpackNames.getBackpackColorName(stack))) + { + BackpackAbilities.backpackAbilities.executeAbility(player, world, stack); + } + } + + @Override + public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) + { + if(world.isRemote)return; + + if (Wearing.isWearingTheRightBackpack(player, "Creeper")) + { + player.worldObj.createExplosion(player, player.posX, player.posY, player.posZ, 4.0F, false); + } + + if(ConfigHandler.BACKPACK_DEATH_PLACE) + { + if (!tryPlace(world, player, stack)) + { + player.dropPlayerItemWithRandomChoice(stack, false); + BackpackProperty.get(player).setWearable(null); + } + }else{ + player.dropPlayerItemWithRandomChoice(stack, false); + BackpackProperty.get(player).setWearable(null); + } + } + + private boolean tryPlace(World world, EntityPlayer player, ItemStack backpack) + { + int X = (int) player.posX; + int Z = (int) player.posZ; + int positions[] = {0,-1,1,-2,2,-3,3,-4,4,-5,5,-6,6}; + + for (int Y: positions) + { + ChunkCoordinates spawn = + Utils.getNearestEmptyChunkCoordinatesSpiral(world, X, Z, X, (int)player.posY + Y, Z, 12, true, 1, (byte) 0, false); + if (spawn != null) + { + return placeBackpack(backpack, player, world, spawn.posX, spawn.posY, spawn.posZ, ForgeDirection.UP.ordinal(), false); + } + } + return false; + } + + @Override + public void onEquipped(World world, EntityPlayer player, ItemStack stack) + { + + } + + @Override + public void onUnequipped(World world, EntityPlayer player, ItemStack stack) + { + if(BackpackAbilities.hasRemoval(BackpackNames.getBackpackColorName(stack))) + { + BackpackAbilities.backpackAbilities.executeRemoval(player, world, stack); + } + } + + @Override + @SideOnly(Side.CLIENT) + public ModelBiped getWearableModel(ItemStack wearable) + { + return ClientProxy.modelAdventureBackpack.setWearable(wearable); + } + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getWearableTexture(ItemStack wearable){ + + ResourceLocation modelTexture; + + if (BackpackNames.getBackpackColorName(wearable).equals("Standard")) + { + modelTexture = Resources.backpackTextureFromString(AdventureBackpack.instance.Holiday); + } else + { + modelTexture = Resources.backpackTextureFromString(BackpackNames.getBackpackColorName(wearable)); + } + return modelTexture; + } + + +} diff --git a/item/ItemAdventureHat.java b/item/ItemAdventureHat.java new file mode 100644 index 00000000..9e89dbe9 --- /dev/null +++ b/item/ItemAdventureHat.java @@ -0,0 +1,42 @@ +package com.darkona.adventurebackpack.item; + +import com.darkona.adventurebackpack.client.models.ModelAdventureHat; +import com.darkona.adventurebackpack.util.Resources; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; + +/** + * Created by Darkona on 11/10/2014. + */ +public class ItemAdventureHat extends ArmorAB +{ + + public ItemAdventureHat() + { + super(2, 0); + setUnlocalizedName("adventureHat"); + } + + @Override + @SideOnly(Side.CLIENT) + public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) + { + return new ModelAdventureHat(); + } + + + @SideOnly(Side.CLIENT) + @Override + public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) + { + String modelTexture; + modelTexture = Resources.modelTextures("adventureHat").toString(); + + return modelTexture; + } +} + diff --git a/item/ItemAdventureJacket.java b/item/ItemAdventureJacket.java new file mode 100644 index 00000000..a10a9ce8 --- /dev/null +++ b/item/ItemAdventureJacket.java @@ -0,0 +1,46 @@ +package com.darkona.adventurebackpack.item; + +import com.darkona.adventurebackpack.client.models.ModelFullArmor; +import com.darkona.adventurebackpack.util.Resources; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +/** + * Created on 11/10/2014 + * + * @author Darkona + */ +@SuppressWarnings("unused") +public class ItemAdventureJacket extends ArmorAB +{ + + public ItemAdventureJacket() + { + super(1, 1); + setUnlocalizedName("adventureSuit"); + } + + @Override + public boolean isValidArmor(ItemStack stack, int armorType, Entity entity) + { + return armorType == 1; + } + + @Override + public IIcon getIcon(ItemStack stack, int pass) + { + return itemIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) + { + return Resources.modelTextureResourceString("adventureSuit_texture.png"); + } +} diff --git a/item/ItemAdventurePantaloon.java b/item/ItemAdventurePantaloon.java new file mode 100644 index 00000000..cbee8b4a --- /dev/null +++ b/item/ItemAdventurePantaloon.java @@ -0,0 +1,53 @@ +package com.darkona.adventurebackpack.item; + +import com.darkona.adventurebackpack.client.models.ModelFullArmor; +import com.darkona.adventurebackpack.util.Resources; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +/** + * Created on 11/10/2014 + * + * @author Darkona + */ +public class ItemAdventurePantaloon extends ArmorAB +{ + + public ItemAdventurePantaloon() + { + super(2, 2); + setUnlocalizedName("pants"); + } + + @Override + public boolean isValidArmor(ItemStack stack, int armorType, Entity entity) + { + return armorType == 2; + } + + @Override + public IIcon getIcon(ItemStack stack, int pass) + { + return itemIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) + { + return Resources.modelTextureResourceString("adventurepants_texture.png"); + } + + @Override + @SideOnly(Side.CLIENT) + public ModelBiped getArmorModel(EntityLivingBase entity, ItemStack itemStack, int armorSlot) + { + return new ModelFullArmor(); + } + +} diff --git a/item/ItemCoalJetpack.java b/item/ItemCoalJetpack.java new file mode 100644 index 00000000..d849796d --- /dev/null +++ b/item/ItemCoalJetpack.java @@ -0,0 +1,292 @@ +package com.darkona.adventurebackpack.item; + +import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; +import com.darkona.adventurebackpack.network.GUIPacket; +import com.darkona.adventurebackpack.network.PlayerActionPacket; +import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; +import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; +import com.darkona.adventurebackpack.playerProperties.BackpackProperty; +import com.darkona.adventurebackpack.proxy.ClientProxy; +import com.darkona.adventurebackpack.util.Resources; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; +import net.minecraftforge.common.BiomeDictionary; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; + +/** + * Created on 15/01/2015 + * + * @author Darkona + */ +public class ItemCoalJetpack extends ItemAB implements IBackWearableItem +{ + + public static byte OFF_MODE = 0; + public static byte NORMAL_MODE = 1; + + public ItemCoalJetpack() + { + super(); + setUnlocalizedName("CoalJetpack"); + setFull3D(); + setMaxStackSize(1); + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) + { + if (world.isRemote) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.JETPACK_GUI, GUIPacket.FROM_HOLDING)); + } + return stack; + } + + private void runFirebox(InventoryCoalJetpack inv) + { + if (inv.getBurnTicks() <= 0) + { + inv.setBurnTicks(inv.consumeFuel()); + inv.currentItemBurnTime = inv.getBurnTicks(); + } + inv.dirtyInventory(); + } + + private void runHeater(InventoryCoalJetpack inv, World world, EntityPlayer player) + { + int temperature = inv.getTemperature(); + int burnTicks = inv.getBurnTicks() - 1; + int coolTicks = inv.getCoolTicks() - 1; + + if (burnTicks > 0) + { + if (temperature < InventoryCoalJetpack.MAX_TEMPERATURE) + { + if (burnTicks % inv.getIncreasingFactor() == 0) + { + ++temperature; + coolTicks = coolTicks < 5000 ? coolTicks + 100 : coolTicks; + } + } + } else if (burnTicks <= 0) + { + inv.currentItemBurnTime = 0; + if (coolTicks % inv.getDecreasingFactor() == 0) + { + temperature = (temperature - 1 >= getBiomeMinTemp(player, world)) ? temperature - 1 : 0; + } + } + inv.setTemperature(temperature); + inv.setCoolTicks(coolTicks); + inv.setBurnTicks(burnTicks <= 0 ? 0 : burnTicks); + } + + private int getBiomeMinTemp(EntityPlayer player, World world) + { + BiomeDictionary.Type[] thisBiomeTypes = BiomeDictionary.getTypesForBiome(world.getBiomeGenForCoords((int) player.posX, (int) player.posZ)); + for (BiomeDictionary.Type type : thisBiomeTypes) + { + if (type == BiomeDictionary.Type.COLD || type == BiomeDictionary.Type.SNOWY) + { + return 0; + } + if (type == BiomeDictionary.Type.HOT || type == BiomeDictionary.Type.BEACH) + { + return 30; + } + if (type == BiomeDictionary.Type.NETHER) + { + return 40; + } + } + return 25; + } + + @Override + public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) + { + InventoryCoalJetpack inv = new InventoryCoalJetpack(stack); + inv.openInventory(); + boolean mustFizzz = !inv.isInUse(); + int CoalConsumed = 13; + boolean canUse = inv.getCoalTank().drain(CoalConsumed,false) != null; + + if (inv.getStatus()) + { + runFirebox(inv); + } + runHeater(inv, world, player); + runLava(inv, world, player); + inv.dirtyBoiler(); + + //Suction + if(player.isInWater()) + { + inv.getWaterTank().fill(new FluidStack(FluidRegistry.WATER,2),true); + } + + //Elevation + if (world.isRemote) + { + if (inv.getStatus() && canUse && Minecraft.getMinecraft().gameSettings.keyBindJump.getIsKeyPressed()) + { + inv.setInUse(true); + ModNetwork.net.sendToServer(new PlayerActionPacket.ActionMessage(PlayerActionPacket.JETPACK_IN_USE)); + if (mustFizzz) + { + ModNetwork.net.sendToServer(new EntitySoundPacket.Message(EntitySoundPacket.JETPACK_FIZZ, player)); + } + } else + { + inv.setInUse(false); + ModNetwork.net.sendToServer(new PlayerActionPacket.ActionMessage(PlayerActionPacket.JETPACK_NOT_IN_USE)); + } + } + + if (inv.isInUse() && canUse) + { + + elevate(player); + inv.getCoalTank().drain(CoalConsumed, true); + if (inv.getCoalTank().getFluidAmount() == 0) + { + inv.setInUse(false); + } + player.moveFlying(player.moveStrafing, player.moveForward, 0.02f); + if(player.fallDistance > 1) + { + player.fallDistance -= 1; + } + if(player.motionY >= 0) + { + player.fallDistance = 0; + } + if(!world.isRemote) + ModNetwork.sendToNearby(new EntityParticlePacket.Message(EntityParticlePacket.JETPACK_PARTICLE, player), player); + + } + inv.closeInventory(); + } + + private void runLava(InventoryCoalJetpack inv, World world, EntityPlayer player) + { + int temperature = inv.getTemperature(); + boolean mustSSSSS = !inv.isLeaking(); + boolean mustBlublub = !inv.isLava(); + boolean Lava = inv.isLava(); + boolean leaking = inv.isLeaking(); + + if (temperature >= 100 && inv.getWaterTank().getFluidAmount() > 0) + { + if(!Lava)Lava = true; + + if (!world.isRemote && mustBlublub) + { + ModNetwork.net.sendTo(new EntitySoundPacket.Message(EntitySoundPacket.BOILING_BUBBLES, player), (EntityPlayerMP) player); + } + } else + { + if (Lava) + { + Lava = false; + } + } + + if (Lava) + { + if (inv.getCoalTank().getFluidAmount() < inv.getCoalTank().getCapacity()) + { + if (inv.getWaterTank().getFluid() != null) + { + int lava = inv.getWaterTank().drain((temperature / 100), true).amount; + inv.getCoalTank().fill(new FluidStack(FluidRegistry.getFluid("lava"), lava * 4), true); + inv.dirtyTanks(); + } + } + } + + if (inv.getCoalTank().getFluidAmount() < inv.getCoalTank().getCapacity() - 100) + { + if (leaking) + { + leaking = false; + } + } else + { + if (!leaking) + { + leaking = true; + if (!world.isRemote && mustSSSSS) + { + ModNetwork.net.sendTo(new EntitySoundPacket.Message(EntitySoundPacket.LEAKING_STEAM, player), (EntityPlayerMP) player); + } + } + } + inv.setLava(Lava); + inv.setLeaking(leaking); + inv.setTemperature(temperature); + } + + public static void elevate(EntityPlayer player) + { + if (player.motionY <= 0.32 && player.posY < 100) + { + player.motionY += 0.1; + } else + { + if (player.posY < 100) player.motionY = Math.max(player.motionY, 0.32); + if (player.posY > 100) player.motionY = 0.32 - ((player.posY % 100) / 100); + } + } + + @Override + public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) + { + onUnequipped(world, player, stack); + player.dropPlayerItemWithRandomChoice(stack.copy(), false); + BackpackProperty.get(player).setWearable(null); + } + + @Override + public void onEquipped(World world, EntityPlayer player, ItemStack stack) + { + InventoryCoalJetpack inv = new InventoryCoalJetpack(stack); + inv.calculateLostTime(); + if(inv.getTemperature() == 0)inv.setTemperature(getBiomeMinTemp(player, world)); + } + + @Override + public void onUnequipped(World world, EntityPlayer player, ItemStack stack) + { + InventoryCoalJetpack inv = new InventoryCoalJetpack(stack); + inv.setLava(false); + inv.setInUse(false); + inv.setLeaking(false); + inv.setStatus(false); + inv.setSystemTime(System.currentTimeMillis()); + inv.markDirty(); + } + + @Override + @SideOnly(Side.CLIENT) + public ModelBiped getWearableModel(ItemStack wearable) + { + return ClientProxy.modelCoalJetpack.setWearable(wearable); + } + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getWearableTexture(ItemStack wearable) + { + return Resources.modelTextures("CoalJetpack"); + } +} diff --git a/item/ItemComponent.java b/item/ItemComponent.java new file mode 100644 index 00000000..3eb58c02 --- /dev/null +++ b/item/ItemComponent.java @@ -0,0 +1,264 @@ +package com.darkona.adventurebackpack.item; + +import com.darkona.adventurebackpack.entity.EntityInflatableBoat; +import com.darkona.adventurebackpack.util.LogHelper; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.*; +import net.minecraft.world.World; + +import java.util.HashMap; +import java.util.List; + +/** + * Created on 11/10/2014 + * @author Darkona + * + */ +public class ItemComponent extends ItemAB +{ + private HashMap componentIcons = new HashMap(); + private String[] names = { + "sleepingBag", + "backpackTank", + "hoseHead", + "macheteHandle", + "copterEngine", + "copterBlades", + "inflatableBoat", + "inflatableBoatMotorized", + "hydroBlades", + + }; + + + public ItemComponent() + { + setNoRepair(); + setHasSubtypes(true); + setMaxStackSize(16); + this.setUnlocalizedName("backpackComponent"); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconRegister) + { + + for(String name : names){ + IIcon temporalIcon = iconRegister.registerIcon(super.getUnlocalizedName(name).substring(this.getUnlocalizedName().indexOf(".") + 1)); + componentIcons.put(name, temporalIcon); + } + + + itemIcon = iconRegister.registerIcon(super.getUnlocalizedName("sleepingBag").substring(this.getUnlocalizedName().indexOf(".") + 1)); + } + + @Override + public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) + { + return super.getIcon(stack, renderPass, player, usingItem, useRemaining); + } + + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamage(int damage) + { + return componentIcons.get(names[damage-1]); + + } + + @Override + public String getUnlocalizedName(ItemStack stack) + { + return super.getUnlocalizedName(names[getDamage(stack)-1]); + + } + + @Override + @SideOnly(Side.CLIENT) + @SuppressWarnings({ "unchecked", "rawtypes" }) + public void getSubItems(Item item, CreativeTabs creativeTabs, List list) + { + for (int i = 1; i <= names.length; i++) + { + list.add(new ItemStack(this, 1, i)); + } + } + + @Override + public boolean onItemUse(ItemStack itemStack, EntityPlayer player, World world, int x, int y, int z, int meta, float f1, float f2, float f3) + { + return false; + /*if (itemStack.getItemDamage() != 1) return true; + if (world.isRemote) + { + return true; + } else if (meta != 1) + { + return false; + } else + { + /* ++y; + BlockSleepingBag blockbed = ModBlocks.blockSleepingBag; + int i1 = MathHelper.floor_double((double) (player.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; + byte b0 = 0; + byte b1 = 0; + + if (i1 == 0) + { + b1 = 1; + } + + if (i1 == 1) + { + b0 = -1; + } + + if (i1 == 2) + { + b1 = -1; + } + + if (i1 == 3) + { + b0 = 1; + } + + if (player.canPlayerEdit(x, y, z, meta, itemStack) && player.canPlayerEdit(x + b0, y, z + b1, meta, itemStack)) + { + if (world.isAirBlock(x, y, z) && world.isAirBlock(x + b0, y, z + b1) && World.doesBlockHaveSolidTopSurface(world, x, y - 1, z) && World.doesBlockHaveSolidTopSurface(world, x + b0, y - 1, z + b1)) + { + world.setBlock(x, y, z, blockbed, i1, 3); + + if (world.getBlock(x, y, z) == blockbed) + { + world.setBlock(x + b0, y, z + b1, blockbed, i1 + 8, 3); + } + + --itemStack.stackSize; + return true; + } else + { + return false; + } + } else + { + return false; + } + }*/ + } + + + private ItemStack placeBoat(ItemStack stack, World world, EntityPlayer player, boolean motorized) + { + float f = 1.0F; + float f1 = player.prevRotationPitch + (player.rotationPitch - player.prevRotationPitch) * f; + float f2 = player.prevRotationYaw + (player.rotationYaw - player.prevRotationYaw) * f; + double d0 = player.prevPosX + (player.posX - player.prevPosX) * (double) f; + double d1 = player.prevPosY + (player.posY - player.prevPosY) * (double) f + 1.62D - (double) player.yOffset; + double d2 = player.prevPosZ + (player.posZ - player.prevPosZ) * (double) f; + Vec3 vec3 = Vec3.createVectorHelper(d0, d1, d2); + float f3 = MathHelper.cos(-f2 * 0.017453292F - (float) Math.PI); + float f4 = MathHelper.sin(-f2 * 0.017453292F - (float) Math.PI); + float f5 = -MathHelper.cos(-f1 * 0.017453292F); + float f6 = MathHelper.sin(-f1 * 0.017453292F); + float f7 = f4 * f5; + float f8 = f3 * f5; + double d3 = 5.0D; + Vec3 vec31 = vec3.addVector((double) f7 * d3, (double) f6 * d3, (double) f8 * d3); + MovingObjectPosition movingobjectposition = world.rayTraceBlocks(vec3, vec31, true); + + if (movingobjectposition == null) + { + return stack; + } else + { + Vec3 vec32 = player.getLook(f); + boolean flag = false; + float f9 = 1.0F; + @SuppressWarnings("rawtypes") + List list = world.getEntitiesWithinAABBExcludingEntity(player, player.boundingBox.addCoord(vec32.xCoord * d3, vec32.yCoord * d3, vec32.zCoord * d3).expand((double) f9, (double) f9, (double) f9)); + int i; + + for (i = 0; i < list.size(); ++i) + { + Entity entity = (Entity) list.get(i); + + if (entity.canBeCollidedWith()) + { + float f10 = entity.getCollisionBorderSize(); + AxisAlignedBB axisalignedbb = entity.boundingBox.expand((double) f10, (double) f10, (double) f10); + + if (axisalignedbb.isVecInside(vec3)) + { + flag = true; + } + } + } + + if (flag) + { + return stack; + } else + { + if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) + { + i = movingobjectposition.blockX; + int j = movingobjectposition.blockY; + int k = movingobjectposition.blockZ; + + if (world.getBlock(i, j, k) == Blocks.snow_layer) + { + --j; + } + + EntityInflatableBoat inflatableBoat = new EntityInflatableBoat(world, i + 0.5, j + 1.0, k + 0.5, motorized); + + inflatableBoat.rotationYaw = (float) (((MathHelper.floor_double((double) (player.rotationYaw * 4.0 / 360.0) + 0.5D) & 3) - 1) * 90); + if (!world.getCollidingBoundingBoxes(inflatableBoat, inflatableBoat.boundingBox.expand(-0.1, -0.1, -0.1)).isEmpty()) + { + return stack; + } + + if (!world.isRemote) + { + world.spawnEntityInWorld(inflatableBoat); + } + + if (!player.capabilities.isCreativeMode) + { + --stack.stackSize; + } + } + return stack; + } + } + } + + + + /** + * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer + * + * @param stack + * @param world + * @param player + */ + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) + { + LogHelper.info("Damage: " + stack.getItemDamage()); + if(stack.getItemDamage() == 7)return placeBoat(stack,world,player,false); + if(stack.getItemDamage() == 8)return placeBoat(stack,world,player,true); + return stack; + } +} diff --git a/item/ItemCopterPack.java b/item/ItemCopterPack.java new file mode 100644 index 00000000..a36ae594 --- /dev/null +++ b/item/ItemCopterPack.java @@ -0,0 +1,300 @@ +package com.darkona.adventurebackpack.item; + +import com.darkona.adventurebackpack.client.models.ModelCopterPack; +import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.inventory.InventoryCopterPack; +import com.darkona.adventurebackpack.network.GUIPacket; +import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; +import com.darkona.adventurebackpack.playerProperties.BackpackProperty; +import com.darkona.adventurebackpack.proxy.ClientProxy; +import com.darkona.adventurebackpack.reference.GeneralReference; +import com.darkona.adventurebackpack.util.Resources; +import com.darkona.adventurebackpack.util.Wearing; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +import java.util.List; + +/** + * Created on 31/12/2014 + * + * @author Darkona + */ +public class ItemCopterPack extends ItemAB implements IBackWearableItem +{ + + public ItemCopterPack() + { + super(); + setUnlocalizedName("copterPack"); + setFull3D(); + setMaxStackSize(1); + } + + public static byte OFF_MODE = 0; + public static byte NORMAL_MODE = 1; + public static byte HOVER_MODE = 2; + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) + { + if (world.isRemote) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.COPTER_GUI, GUIPacket.FROM_HOLDING)); + } + return stack; + } + + @Override + public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isCurrent) + { + } + + + @SuppressWarnings(value = "unchecked") + public void pushEntities(World world, EntityPlayer player, float speed) + { + double posX = player.posX; + double posY = player.posY; + double posZ = player.posZ; + List groundItems = world.getEntitiesWithinAABB( + EntityItem.class, + AxisAlignedBB.getBoundingBox(posX, posY, posZ, + posX + 1.0D, posY + 1.0D, + posZ + 1.0D).expand(4.0D, 4.0D, 4.0D)); + + for (EntityItem groundItem : groundItems) + { + if (!groundItem.isInWater()) + { + if (groundItem.posX > posX) + { + groundItem.motionX = speed; + } + if (groundItem.posX < posX) + { + groundItem.motionX = -speed; + } + + if (groundItem.posZ > posZ) + { + groundItem.motionZ = speed; + } + if (groundItem.posZ < posZ) + { + groundItem.motionZ = -speed; + } + + if (groundItem.posY < posY) + { + groundItem.motionY -= speed; + } + } + } + } + + + @SideOnly(Side.CLIENT) + public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack stack, int armorSlot) + { + return ModelCopterPack.instance.setWearable(stack); + } + + + @SideOnly(Side.CLIENT) + public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) + { + String modelTexture; + modelTexture = Resources.modelTextures("copterPack").toString(); + + return modelTexture; + } + + public static void elevate(EntityPlayer player, ItemStack copter) + { + if (player.posY < 100) player.motionY = Math.max(player.motionY, 0.18); + if (player.posY > 100) player.motionY = 0.18 - ((player.posY % 100) / 100); + } + + @Override + public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) + { + InventoryCopterPack inv = new InventoryCopterPack(Wearing.getWearingCopter(player)); + inv.openInventory(); + boolean canElevate = true; + int fuelConsumption = 0; + if (inv.getStatus() != OFF_MODE) + { + if (player.isInWater()) + { + inv.setStatus(OFF_MODE); + inv.dirtyStatus(); + if (!world.isRemote){ + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.copterpack.cantwater")); + } + return; + } + if (inv.fuelTank.getFluidAmount() == 0) + { + canElevate = false; + if (player.onGround) + { + inv.setStatus(OFF_MODE); + inv.dirtyStatus(); + if (!world.isRemote) + { + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.copterpack.off")); + } + return; + //TODO play "backpackOff" sound + } + if (inv.getStatus() == HOVER_MODE) + { + + inv.setStatus(NORMAL_MODE); + inv.dirtyStatus(); + if (!world.isRemote) + { + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.copterpack.outoffuel")); + } + return; + //TODO play "outofFuel" sound + } + } + } + + if (inv.getStatus() != OFF_MODE) + { + fuelConsumption++; + if (inv.getStatus() == NORMAL_MODE) + { + if (!player.onGround && !player.isSneaking() && player.motionY < 0.0D) + { + player.motionY = player.motionY * 0.6; + } + if (player.isSneaking()) + { + player.motionY = -0.3; + } + } + + if (inv.getStatus() == HOVER_MODE) + { + if (player.isSneaking()) + { + player.motionY = -0.3; + }else{ + fuelConsumption+=2; + player.motionY = 0.0f; + } + } + player.fallDistance = 0; + + //Smoke + if (!world.isRemote) + { + ModNetwork.sendToNearby(new EntityParticlePacket.Message(EntityParticlePacket.COPTER_PARTICLE, player), player); + } + //Sound + + + float factor = 0.05f; + if (!player.onGround) + { + //Airwave + pushEntities(world, player, 0.2f); + //movement boost + player.moveFlying(player.moveStrafing,player.moveForward,factor); + } else + { + pushEntities(world, player, factor + 0.4f); + } + + //Elevation clientside + if (world.isRemote) + { + if (Minecraft.getMinecraft().gameSettings.keyBindJump.getIsKeyPressed()) + { + if (inv.canConsumeFuel(fuelConsumption + 2) && canElevate) + { + elevate(player, stack); + } + } + } + + //Elevation serverside + if (!player.onGround && player.motionY > 0) + { + fuelConsumption += 2; + } + int ticks = inv.tickCounter - 1; + if (inv.fuelTank.getFluid() != null) + { + if(GeneralReference.isValidFuel(inv.getFuelTank().getFluid().getFluid())) + { + fuelConsumption = (int)Math.floor(fuelConsumption * GeneralReference.liquidFuels.get(inv.getFuelTank().getFluid().getFluid().getName())); + } + } + if (ticks <= 0) + { + inv.tickCounter = 3; + inv.consumeFuel(fuelConsumption); + inv.dirtyTanks(); + } else + { + inv.tickCounter = ticks; + } + } + // if(!world.isRemote)inv.closeInventory(); + inv.closeInventory(); + } + + @Override + public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) + { + onUnequipped(world,player,stack); + player.dropPlayerItemWithRandomChoice(stack.copy(),false); + BackpackProperty.get(player).setWearable(null); + } + + @Override + public void onEquipped(World world, EntityPlayer player, ItemStack stack) + { + if(!stack.hasTagCompound())stack.setTagCompound(new NBTTagCompound()); + stack.stackTagCompound.setByte("status",OFF_MODE); + } + + @Override + public void onUnequipped(World world, EntityPlayer player, ItemStack stack) + { + stack.stackTagCompound.setByte("status",OFF_MODE); + } + + @Override + @SideOnly(Side.CLIENT) + public ModelBiped getWearableModel(ItemStack wearable) + { + return ClientProxy.modelCopterPack.setWearable(wearable); + } + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getWearableTexture(ItemStack wearable) + { + return Resources.modelTextures("copterPack"); + } + + +} diff --git a/item/ItemCrossbow.java b/item/ItemCrossbow.java new file mode 100644 index 00000000..fcb50a10 --- /dev/null +++ b/item/ItemCrossbow.java @@ -0,0 +1,205 @@ +package com.darkona.adventurebackpack.item; + +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.projectile.EntityArrow; +import net.minecraft.init.Items; +import net.minecraft.item.EnumAction; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +/** + * Created on 05/01/2015 + * + * @author Darkona + */ +public class ItemCrossbow extends ItemAB +{ + + public ItemCrossbow() + { + super(); + setFull3D(); + setUnlocalizedName("clockworkCrossbow"); + setMaxStackSize(1); + } + + + /** + * Returns true if players can use this item to affect the world (e.g. placing blocks, placing ender eyes in portal) + * when not in creative + */ + @Override + public boolean canItemEditBlocks() + { + return false; + } + + @Override + public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) + { + return false; + } + + @Override + public boolean isRepairable() + { + return super.isRepairable(); + } + + @Override + public String getItemStackDisplayName(ItemStack stack) + { + return super.getItemStackDisplayName(stack); + } + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) + { + return false; + } + + @Override + public EnumAction getItemUseAction(ItemStack p_77661_1_) + { + return EnumAction.bow; + } + + /** + * Called when item is crafted/smelted. Used only by maps so far. + * + * @param stack + * @param world + * @param player + */ + @Override + public void onCreated(ItemStack stack, World world, EntityPlayer player) + { + super.onCreated(stack, world, player); + + NBTTagCompound xbowProps = new NBTTagCompound(); + + xbowProps.setBoolean("Loaded", false); + xbowProps.setShort("Magazine", (short) 0); + xbowProps.setBoolean("Charging", false); + } + + @Override + public void onUsingTick(ItemStack stack, EntityPlayer player, int count) + { + + } + + @Override + public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean current) + { + if(!stack.hasTagCompound()){ + stack.stackTagCompound = new NBTTagCompound(); + stack.stackTagCompound.setByte("Shot",(byte)0); + stack.stackTagCompound.setInteger("Reloading",0); + } + + if(current) + { + byte shot = stack.stackTagCompound.getByte("Shot"); + int reloading = stack.stackTagCompound.getInteger("Reloading"); + if(shot > 0)stack.stackTagCompound.setByte("Shot", (byte)(shot-1)); + if(reloading > 0)stack.stackTagCompound.setInteger("Reloading",reloading-1); + if(entity instanceof EntityPlayer) + { + //((EntityPlayer)entity).setItemInUse(stack,2); + } + } + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) + { + if(!stack.hasTagCompound())stack.setTagCompound(new NBTTagCompound()); + if(!stack.stackTagCompound.hasKey("Reloading"))stack.stackTagCompound.setInteger("Reloading",0); + int reloading = stack.stackTagCompound.getInteger("Reloading"); + if(reloading <= 0){ + shootArrow(stack,player.worldObj,player, 1000); + stack.stackTagCompound.setByte("Shot",(byte)4); + int reloadTime = 20; + stack.stackTagCompound.setInteger("Reloading", reloadTime); + + } + return stack; + } + + + @Override + public int getMaxItemUseDuration(ItemStack stack) + { + return Integer.MAX_VALUE; + } + + @Override + public void onPlayerStoppedUsing(ItemStack stack, World world, EntityPlayer player, int counter) + { + } + + public void shootArrow(ItemStack stack, World world, EntityPlayer player, int count) + { + int j = count; + + boolean flag = player.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; + + if (flag || player.inventory.hasItem(Items.arrow)) + { + float f = j / 20.0F; + f = (f * f + f * 2.0F) / 3.0F; + + if (f < 0.1D) + { + return; + } + + if (f > 1.0F) + { + f = 1.0F; + } + + EntityArrow entityarrow = new EntityArrow(world, player, f * 3.0F); + f = 1.0f; + + int k = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, stack); + + if (k > 0) + { + entityarrow.setDamage(entityarrow.getDamage() + k * 0.5D + 0.5D); + } + + int l = EnchantmentHelper.getEnchantmentLevel(Enchantment.punch.effectId, stack); + + if (l > 0) + { + entityarrow.setKnockbackStrength(l); + } + + if (EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId, stack) > 0) + { + entityarrow.setFire(100); + } + + world.playSoundAtEntity(player, "adventurebackpack:crossbowshot", 0.5F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F); + + if (flag) + { + entityarrow.canBePickedUp = 2; + } else + { + player.inventory.consumeInventoryItem(Items.arrow); + } + + if (!world.isRemote) + { + world.spawnEntityInWorld(entityarrow); + } + } + } +} diff --git a/item/ItemCrossbowMagazine.java b/item/ItemCrossbowMagazine.java new file mode 100644 index 00000000..d5e58560 --- /dev/null +++ b/item/ItemCrossbowMagazine.java @@ -0,0 +1,10 @@ +package com.darkona.adventurebackpack.item; + +/** + * Created on 21/01/2015 + * + * @author Darkona + */ +public class ItemCrossbowMagazine +{ +} diff --git a/item/ItemHose.java b/item/ItemHose.java new file mode 100644 index 00000000..1ea437d6 --- /dev/null +++ b/item/ItemHose.java @@ -0,0 +1,475 @@ +package com.darkona.adventurebackpack.item; + +import com.darkona.adventurebackpack.CreativeTabAB; +import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.common.ServerActions; +import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; +import com.darkona.adventurebackpack.init.ModFluids; +import com.darkona.adventurebackpack.inventory.InventoryBackpack; +import com.darkona.adventurebackpack.util.Resources; +import com.darkona.adventurebackpack.util.Utils; +import com.darkona.adventurebackpack.util.Wearing; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.passive.EntityCow; +import net.minecraft.entity.passive.EntityMooshroom; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.EnumAction; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.*; + +/** + * Created by Darkona on 12/10/2014. + */ +public class ItemHose extends ItemAB +{ + + IIcon drinkIcon; + IIcon spillIcon; + IIcon suckIcon; + final byte HOSE_SUCK_MODE = 0; + final byte HOSE_SPILL_MODE = 1; + final byte HOSE_DRINK_MODE = 2; + + public ItemHose() + { + super(); + setMaxStackSize(1); + setFull3D(); + //.setCreativeTab(CreativeTabs.tabTools) + setNoRepair(); + setUnlocalizedName("backpackHose"); + setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); + } + + + // ================================================ GETTERS =====================================================// + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(ItemStack stack, int pass) + { + switch(getHoseMode(stack)) + { + case HOSE_SUCK_MODE: + return suckIcon; + case HOSE_SPILL_MODE: + return spillIcon; + case HOSE_DRINK_MODE: + return drinkIcon; + default: + return itemIcon; + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamage(int par1) + { + return itemIcon; + } + + public static int getHoseMode(ItemStack hose) + { + return hose.stackTagCompound != null ? hose.stackTagCompound.getInteger("mode") : -1; + } + + public static int getHoseTank(ItemStack hose) + { + return hose.hasTagCompound() ? hose.getTagCompound().getInteger("tank") : -1; + } + + @Override + public EnumAction getItemUseAction(ItemStack stack) + { + if (stack.stackTagCompound != null && stack.stackTagCompound.hasKey("mode")) + { + return (stack.stackTagCompound.getInteger("mode") == 2) ? EnumAction.drink : EnumAction.none; + } + return EnumAction.none; + } + + @Override + public String getUnlocalizedName(ItemStack stack) + { + String name = "hose_" + (getHoseTank(stack) == 0 ? "leftTank" : getHoseTank(stack) == 1 ? "rightTank" : ""); + switch (getHoseMode(stack)) + { + case 0: + return super.getUnlocalizedName(name + "_suck"); + case 1: + return super.getUnlocalizedName(name + "_spill"); + case 2: + return super.getUnlocalizedName(name + "_drink"); + default: + return super.getUnlocalizedName("hoseUseless"); + } + } + + @Override + public int getMaxItemUseDuration(ItemStack stack) + { + return 24; + } + + @Override + public int getMaxDamage() + { + return 0; + } + + @Override + public int getMaxDamage(ItemStack stack) + { + return 0; + } + + // ================================================ SETTERS =====================================================// + // ================================================= ICONS ======================================================// + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconRegister) + { + drinkIcon = iconRegister.registerIcon(Resources.getIconString("hoseDrink")); + spillIcon = iconRegister.registerIcon(Resources.getIconString("hoseSpill")); + suckIcon = iconRegister.registerIcon(Resources.getIconString("hoseSuck")); + itemIcon = iconRegister.registerIcon(Resources.getIconString("hoseLeft")); + } + // ================================================ ACTIONS =====================================================// + + @Override + public void onUpdate(ItemStack stack, World world, Entity entity, int inv_slot, boolean isCurrent) + { + if (entity == null || !(entity instanceof EntityPlayer)) return; + + EntityPlayer player = (EntityPlayer) entity; + if (world.isRemote && player.getItemInUse() != null && player.getItemInUse().getItem().equals(this)) return; + + + NBTTagCompound nbt = stack.hasTagCompound() ? stack.getTagCompound() : new NBTTagCompound(); + ItemStack backpack = Wearing.getWearingBackpack(player); + if (backpack != null) + { + if (nbt.getInteger("tank") == -1) nbt.setInteger("tank", 0); + if (nbt.getInteger("mode") == -1) nbt.setInteger("mode", 0); + InventoryBackpack inv = new InventoryBackpack(backpack); + FluidTank tank = nbt.getInteger("tank") == 0 ? inv.getLeftTank() : inv.getRightTank(); + if (tank != null && tank.getFluid() != null) + { + nbt.setString("fluid", Utils.capitalize(tank.getFluid().getFluid().getName())); + nbt.setInteger("amount", tank.getFluidAmount()); + } else + { + nbt.setInteger("amount", 0); + nbt.setString("fluid", "Empty"); + } + } else + { + nbt.setInteger("amount", 0); + nbt.setString("fluid", "None"); + nbt.setInteger("mode", -1); + nbt.setInteger("tank", -1); + } + stack.setTagCompound(nbt); + } + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) + { + if(!Wearing.isWearingBackpack(player))return true; + + InventoryBackpack inv = new InventoryBackpack(Wearing.getWearingBackpack(player)); + inv.openInventory(); + FluidTank tank = getHoseTank(stack) == 0 ? inv.getLeftTank() : inv.getRightTank(); + TileEntity te = world.getTileEntity(x, y, z); + if (te != null && te instanceof IFluidHandler) + { + IFluidHandler exTank = (IFluidHandler) te; + int accepted = 0; + switch (getHoseMode(stack)) + { + case HOSE_SUCK_MODE: + + accepted = tank.fill(exTank.drain(ForgeDirection.UNKNOWN, Constants.bucket, false), false); + if (accepted > 0) + { + tank.fill(exTank.drain(ForgeDirection.UNKNOWN, accepted, true), true); + te.markDirty(); + inv.dirtyTanks(); + return true; + } + break; + + case HOSE_SPILL_MODE: + + accepted = exTank.fill(ForgeDirection.UNKNOWN, tank.drain(Constants.bucket, false), false); + if (accepted > 0) + { + exTank.fill(ForgeDirection.UNKNOWN, tank.drain(accepted, true), true); + te.markDirty(); + inv.dirtyTanks(); + return true; + } + break; + } + } + return false; + + } + + @Override + public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity) + { + return false; + } + + /** + * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer + * + * @param stack + * @param world + * @param player + */ + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) + { + if(!Wearing.isWearingBackpack(player))return stack; + InventoryBackpack inv = new InventoryBackpack(Wearing.getWearingBackpack(player)); + inv.openInventory(); + MovingObjectPosition mop = getMovingObjectPositionFromPlayer(world, player, true); + FluidTank tank = getHoseTank(stack) == 0 ? inv.getLeftTank() : inv.getRightTank(); + if (tank != null) + { + switch (getHoseMode(stack)) + { + case HOSE_SUCK_MODE: // If it's in Suck Mode + + if (mop != null && mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) + { + /* if (!world.canMineBlock(player, mop.blockX, mop.blockY, mop.blockZ)) + { + return stack; + }*/ + + if (!player.canPlayerEdit(mop.blockX, mop.blockY, mop.blockZ, mop.sideHit, null)) + { + return stack; + } + //TODO adjust for Adventure Mode + Fluid fluidBlock = FluidRegistry.lookupFluidForBlock(world.getBlock(mop.blockX, mop.blockY, mop.blockZ)); + if (fluidBlock != null) + { + FluidStack fluid = new FluidStack(fluidBlock, Constants.bucket); + if (tank.getFluid() == null || tank.getFluid().containsFluid(fluid)) + { + int accepted = tank.fill(fluid, false); + if (accepted > 0) + { + world.setBlockToAir(mop.blockX, mop.blockY, mop.blockZ); + tank.fill(new FluidStack(fluidBlock, accepted), true); + } + } + } + inv.dirtyTanks(); + } + break; + + case HOSE_SPILL_MODE: // If it's in Spill Mode + if (mop != null && mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) + { + int x = mop.blockX; + int y = mop.blockY; + int z = mop.blockZ; + if (world.getBlock(x, y, z).isBlockSolid(world, x, y, z, mop.sideHit)) + { + + switch (mop.sideHit) + { + case 0: + --y; + break; + case 1: + ++y; + break; + case 2: + --z; + break; + case 3: + ++z; + break; + case 4: + --x; + break; + case 5: + ++x; + break; + } + } + if (tank.getFluidAmount() > 0) + { + FluidStack fluid = tank.getFluid(); + if (fluid != null) + { + if (fluid.getFluid().canBePlacedInWorld()) + { + Material material = world.getBlock(x, y, z).getMaterial(); + boolean flag = !material.isSolid(); + if (!world.isAirBlock(x, y, z) && !flag) + { + return stack; + } + /* IN HELL DIMENSION No, I won't let you put water in the nether. You freak*/ + if (world.provider.isHellWorld && fluid.getFluid() == FluidRegistry.WATER) + { + tank.drain(Constants.bucket, true); + world.playSoundEffect(x + 0.5F, y + 0.5F, z + 0.5F, "random.fizz", 0.5F, + 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F); + for (int l = 0; l < 12; ++l) + { + world.spawnParticle("largesmoke", x + Math.random(), y + Math.random(), z + Math.random(), 0.0D, 0.0D, 0.0D); + } + } else + { + /* NOT IN HELL DIMENSION. */ + FluidStack drainedFluid = tank.drain(Constants.bucket, false); + if (drainedFluid != null && drainedFluid.amount >= Constants.bucket) + { + if (!world.isRemote && flag && !material.isLiquid()) + { + world.func_147480_a(x, y, z, true); + } + + if (fluid.getFluid().getBlock() == Blocks.water) + { + if (world.setBlock(x, y, z, Blocks.flowing_water, 0, 3)) + { + tank.drain(Constants.bucket, true); + } + } else if (fluid.getFluid().getBlock() == Blocks.lava) + { + if (world.setBlock(x, y, z, Blocks.flowing_lava, 0, 3)) + { + tank.drain(Constants.bucket, true); + } + } else if (world.setBlock(x, y, z, fluid.getFluid().getBlock(), 0, 3)) + { + tank.drain(Constants.bucket, true); + } + } + } + } + } + } + inv.dirtyTanks(); + } + break; + case HOSE_DRINK_MODE: + if (tank.getFluid() != null && tank.getFluidAmount() >= Constants.bucket) + { + if (FluidEffectRegistry.hasFluidEffect(tank.getFluid().getFluid())) + { + player.setItemInUse(stack, this.getMaxItemUseDuration(stack)); + } + } + break; + default: + return stack; + } + } + return stack; + } + + @Override + public boolean onBlockStartBreak(ItemStack itemstack, int X, int Y, int Z, EntityPlayer player) + { + return false; + } + + @Override + public boolean onEntitySwing(EntityLivingBase entityLiving, ItemStack stack) + { + return false; + } + + @Override + public ItemStack onEaten(ItemStack hose, World world, EntityPlayer player) + { + if(!Wearing.isWearingBackpack(player))return hose; + int mode = -1; + int tank = -1; + if (hose.stackTagCompound != null) + { + tank = getHoseTank(hose); + mode = getHoseMode(hose); + } + if (mode == HOSE_DRINK_MODE && tank > -1) + { + InventoryBackpack inv = new InventoryBackpack(Wearing.getWearingBackpack(player)); + inv.openInventory(); + FluidTank backpackTank = (tank == 0) ? inv.getLeftTank() : (tank == 1) ? inv.getRightTank() : null; + if (backpackTank != null) + { + if (ServerActions.setFluidEffect(world, player, backpackTank)) + { + backpackTank.drain(Constants.bucket, true); + inv.dirtyTanks(); + } + } + } + return hose; + } + + @Override + public boolean onDroppedByPlayer(ItemStack item, EntityPlayer player) + { + return true; + } + + // ================================================ BOOLEANS =====================================================// + @Override + public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity) + { + if(!Wearing.isWearingBackpack(player))return false; + InventoryBackpack inventory = new InventoryBackpack(Wearing.getWearingBackpack(player)); + inventory.openInventory(); + if (entity instanceof EntityCow && !(entity instanceof EntityMooshroom)) + { + + FluidTank tank = getHoseTank(stack) == 0 ? inventory.getLeftTank() : inventory.getRightTank(); + tank.fill(new FluidStack(ModFluids.milk, Constants.bucket), true); + inventory.dirtyTanks(); + + ((EntityCow) entity).faceEntity(player, 0.1f, 0.1f); + return true; + } + if (entity instanceof EntityMooshroom) + { + FluidTank tank = getHoseTank(stack) == 0 ? inventory.getLeftTank() : inventory.getRightTank(); + tank.fill(new FluidStack(ModFluids.mushroomStew, Constants.bucket), true); + inventory.dirtyTanks(); + + ((EntityMooshroom) entity).faceEntity(player, 0.1f, 0.1f); + return true; + } + + return false; + } + + @Override + public boolean canHarvestBlock(Block block, ItemStack stack) + { + return FluidRegistry.lookupFluidForBlock(block) != null; + } + +} diff --git a/item/ItemJuiceBottle.java b/item/ItemJuiceBottle.java new file mode 100644 index 00000000..a8bf3d90 --- /dev/null +++ b/item/ItemJuiceBottle.java @@ -0,0 +1,71 @@ +package com.darkona.adventurebackpack.item; + +import com.darkona.adventurebackpack.CreativeTabAB; +import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; +import com.darkona.adventurebackpack.init.ModFluids; +import com.darkona.adventurebackpack.util.Resources; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; +import net.minecraft.item.EnumAction; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +/** + * Created on 19/10/2014 + * + * @author Darkona + */ +public class ItemJuiceBottle extends ItemAB +{ + + public ItemJuiceBottle() + { + super(); + setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); + setFull3D(); + setUnlocalizedName("melonJuiceBottle"); + setMaxStackSize(1); + } + + + @Override + public ItemStack onEaten(ItemStack stack, World world, EntityPlayer player) + { + FluidEffectRegistry.executeFluidEffectsForFluid(ModFluids.melonJuice, player, world); + return new ItemStack(Items.glass_bottle, 1); + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) + { + player.setItemInUse(stack, this.getMaxItemUseDuration(stack)); + return stack; + } + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int meta, float hitX, float hitY, float hitZ) + { + return false; + } + + + @Override + public EnumAction getItemUseAction(ItemStack p_77661_1_) + { + return EnumAction.drink; + } + + + @Override + public int getMaxItemUseDuration(ItemStack p_77626_1_) + { + return 28; + } + + @Override + public void registerIcons(IIconRegister iconRegister) + { + itemIcon = iconRegister.registerIcon(Resources.getIconString("melonJuiceBottle")); + } +} diff --git a/item/ItemMachete.java b/item/ItemMachete.java new file mode 100644 index 00000000..f4fe484b --- /dev/null +++ b/item/ItemMachete.java @@ -0,0 +1,145 @@ +package com.darkona.adventurebackpack.item; + +import com.darkona.adventurebackpack.CreativeTabAB; +import com.darkona.adventurebackpack.init.ModMaterials; +import com.google.common.collect.Sets; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemShears; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraftforge.common.IShearable; +import net.minecraftforge.oredict.OreDictionary; + +import java.util.Set; + +/** + * Created on 10/10/2014 + * + * @author Darkona + */ +public class ItemMachete extends ToolAB +{ + @SuppressWarnings("rawtypes") + private static final Set breakableBlocks = Sets.newHashSet(Blocks.pumpkin, + Blocks.web, + Blocks.leaves, + Blocks.leaves2, + Blocks.melon_block, + Blocks.melon_stem, + Blocks.brown_mushroom, + Blocks.red_flower, + Blocks.red_mushroom, + Blocks.cactus, + Blocks.cocoa, + Blocks.hay_block, + Blocks.carrots, + Blocks.potatoes, + Blocks.red_mushroom_block, + Blocks.brown_mushroom_block, + Blocks.reeds, + Blocks.grass, + Blocks.tallgrass, + Blocks.yellow_flower, + Blocks.waterlily, + Blocks.wheat, + Blocks.wool); + @SuppressWarnings("unused") + private float field_150934_a; + + public ItemMachete() + { + + super(ModMaterials.ruggedIron, breakableBlocks); + setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); + setMaxDamage(Items.iron_sword.getMaxDamage() + 250); + this.field_150934_a = ModMaterials.ruggedIron.getDamageVsEntity(); + this.setUnlocalizedName("machete"); + } + + @Override + public float func_150893_a(ItemStack stack, Block block) + { + Material material = block.getMaterial(); + if (material == Material.wood) return 4F; + if (block == Blocks.melon_block) return 2F; + if (block == Blocks.web) return 10F; + for (ItemStack stacky : OreDictionary.getOres("treeLeaves")) + { + if (stacky.getItem() == Item.getItemFromBlock(block)) return 15F; + } + return material == Material.plants || material == Material.vine || material == Material.coral || material == Material.gourd || material == Material.leaves || material == Material.cloth ? 12.0F : 0.5F; + + } + + /** + * Current implementations of this method in child classes do not use the entry argument beside ev. They just raise + * the damage on the stack. + */ + @Override + public boolean hitEntity(ItemStack p_77644_1_, EntityLivingBase p_77644_2_, EntityLivingBase p_77644_3_) + { + p_77644_1_.damageItem(1, p_77644_3_); + return true; + } + + @Override + public boolean onBlockDestroyed(ItemStack stack, World world, Block block, int x, int y, int z, EntityLivingBase entityLivingBase) + { + if (block != Blocks.vine && !(block instanceof IShearable)) + { + return super.onBlockDestroyed(stack, world, block, x, y, z, entityLivingBase); + } else + { + return true; + } + } + + @Override + public boolean onBlockStartBreak(ItemStack itemstack, int x, int y, int z, EntityPlayer player) + { + /* + if (player.worldObj.isRemote) + { + return false; + } + int id = player.worldObj.getBlockId(x, y, z); + for(ItemStack stacky : OreDictionary.getOres("treeLeaves")){ + if (stacky.itemID == id) return false; + } + + if (Block.blocksList[id] instanceof IShearable ) + { + IShearable target = (IShearable)Block.blocksList[id]; + if (target.isShearable(itemstack, player.worldObj, x, y, z)) + { + ArrayList drops = target.onSheared(itemstack, player.worldObj, x, y, z, + EnchantmentHelper.getEnchantmentLevel(Enchantment.fortune.effectId, itemstack)); + Random rand = new Random(); + + for(ItemStack stack : drops) + { + float f = 0.7F; + double d = (double)(rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D; + double d1 = (double)(rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D; + double d2 = (double)(rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D; + EntityItem entityitem = new EntityItem(player.worldObj, (double)x + d, (double)y + d1, (double)z + d2, stack); + entityitem.delayBeforeCanPickup = 10; + player.worldObj.spawnEntityInWorld(entityitem); + } + + itemstack.damageItem(1, player); + player.addStat(StatList.mineBlockStatArray[id], 1); + } + } + return false; + */ + return new ItemStack(new ItemShears()).getItem().onBlockStartBreak(itemstack, x, y, z, player); + } + +} diff --git a/item/ItemPistonBoots.java b/item/ItemPistonBoots.java new file mode 100644 index 00000000..ce46c9ba --- /dev/null +++ b/item/ItemPistonBoots.java @@ -0,0 +1,34 @@ +package com.darkona.adventurebackpack.item; + + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; + +/** + * Created by Darkona on 11/10/2014. + */ +public class ItemPistonBoots extends ArmorAB +{ + + public ItemPistonBoots() + { + super(2, 3); + setUnlocalizedName("pistonBoots"); + } + + public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) + { + if (player.isSprinting()) + { + player.stepHeight = 1.001F; + player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 1)); + } else + { + player.stepHeight = 2.5001F; + } + } + +} diff --git a/item/ItemProjectile.java b/item/ItemProjectile.java new file mode 100644 index 00000000..a61ed63a --- /dev/null +++ b/item/ItemProjectile.java @@ -0,0 +1,13 @@ +package com.darkona.adventurebackpack.item; + +import net.minecraft.item.Item; + +/** + * Created on 07/01/2015 + * + * @author Darkona + */ +public class ItemProjectile extends Item +{ + +} diff --git a/item/ItemTelescope.java b/item/ItemTelescope.java new file mode 100644 index 00000000..7a29f6a1 --- /dev/null +++ b/item/ItemTelescope.java @@ -0,0 +1,12 @@ +package com.darkona.adventurebackpack.item; + +/** + * Created on 15/01/2015 + * + * @author Darkona + */ +public class ItemTelescope extends ItemAB +{ + //Make Telescope item doto list + +} diff --git a/item/ToolAB.java b/item/ToolAB.java new file mode 100644 index 00000000..1dd5d240 --- /dev/null +++ b/item/ToolAB.java @@ -0,0 +1,56 @@ +package com.darkona.adventurebackpack.item; + +import com.darkona.adventurebackpack.reference.ModInfo; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemTool; + +import java.util.Set; + +/** + * Created by Darkona on 11/10/2014. + */ +public class ToolAB extends ItemTool +{ + + public ToolAB(ToolMaterial material, @SuppressWarnings("rawtypes") Set breakableBlocks) + { + super(1f, material, breakableBlocks); + //setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); + } + + @Override + public Item setCreativeTab(CreativeTabs tab) + { + return super.setCreativeTab(tab); + } + + @Override + public String getUnlocalizedName(ItemStack stack) + { + return String.format("item.%s%s", ModInfo.MOD_ID.toLowerCase() + ":", getUnwrappedUnlocalizedName(super.getUnlocalizedName())); + } + + @Override + public String getUnlocalizedName() + { + return String.format("item.%s%s", ModInfo.MOD_ID.toLowerCase() + ":", getUnwrappedUnlocalizedName(super.getUnlocalizedName())); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconRegister) + { + itemIcon = iconRegister.registerIcon(this.getUnlocalizedName().substring(this.getUnlocalizedName().indexOf(".") + 1)); + } + + + protected String getUnwrappedUnlocalizedName(String unlocalizedName) + { + return unlocalizedName.substring(unlocalizedName.indexOf(".") + 1); + } +} From 0e31648d496fdad4c305186f931d0643d6842651 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 19:54:18 -0400 Subject: [PATCH 020/462] Upload files for new beta 13 --- common/BackpackAbilities.java | 791 ++++++++++++++++++ common/BackpackRemovals.java | 124 +++ common/Constants.java | 28 + common/IInventoryAdventureBackpack.java | 53 ++ common/ServerActions.java | 424 ++++++++++ config/ConfigHandler.java | 88 ++ config/GeneralConfig.java | 13 + config/Keybindings.java | 19 + config/ManualConfigHandler.java | 35 + develop/ChatHandler.java | 12 + develop/DeveloperJoining.java | 14 + develop/msg.java | 30 + entity/EntityBolt.java | 62 ++ entity/EntityCrossbowProjectile.java | 62 ++ entity/EntityFriendlySpider.java | 600 +++++++++++++ entity/EntityInflatableBoat.java | 636 ++++++++++++++ entity/ai/AvoidEntitySelector.java | 26 + .../ai/EntityAIAvoidPlayerWithBackpack.java | 156 ++++ entity/ai/EntityAIHorseFollowOwner.java | 107 +++ entity/fx/SteamFX.java | 87 ++ 20 files changed, 3367 insertions(+) create mode 100644 common/BackpackAbilities.java create mode 100644 common/BackpackRemovals.java create mode 100644 common/Constants.java create mode 100644 common/IInventoryAdventureBackpack.java create mode 100644 common/ServerActions.java create mode 100644 config/ConfigHandler.java create mode 100644 config/GeneralConfig.java create mode 100644 config/Keybindings.java create mode 100644 config/ManualConfigHandler.java create mode 100644 develop/ChatHandler.java create mode 100644 develop/DeveloperJoining.java create mode 100644 develop/msg.java create mode 100644 entity/EntityBolt.java create mode 100644 entity/EntityCrossbowProjectile.java create mode 100644 entity/EntityFriendlySpider.java create mode 100644 entity/EntityInflatableBoat.java create mode 100644 entity/ai/AvoidEntitySelector.java create mode 100644 entity/ai/EntityAIAvoidPlayerWithBackpack.java create mode 100644 entity/ai/EntityAIHorseFollowOwner.java create mode 100644 entity/fx/SteamFX.java diff --git a/common/BackpackAbilities.java b/common/BackpackAbilities.java new file mode 100644 index 00000000..0357f80f --- /dev/null +++ b/common/BackpackAbilities.java @@ -0,0 +1,791 @@ +package com.darkona.adventurebackpack.common; + +import com.darkona.adventurebackpack.block.TileAdventureBackpack; +import com.darkona.adventurebackpack.entity.ai.EntityAIAvoidPlayerWithBackpack; +import com.darkona.adventurebackpack.init.ModFluids; +import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.inventory.InventoryBackpack; +import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; +import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.util.LogHelper; +import com.darkona.adventurebackpack.util.Utils; +import net.minecraft.entity.Entity; +import net.minecraft.entity.ai.EntityAIBase; +import net.minecraft.entity.ai.EntityAITasks; +import net.minecraft.entity.monster.EntityCreeper; +import net.minecraft.entity.passive.EntityWolf; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; + +import java.util.Iterator; +import java.util.List; + +/** + * Created on 12/10/2014 + * + * @author Darkona + * @see com.darkona.adventurebackpack.block.TileAdventureBackpack + * @see com.darkona.adventurebackpack.item.ItemAdventureBackpack + * @see com.darkona.adventurebackpack.block.BlockAdventureBackpack + */ +public class BackpackAbilities +{ + + public static BackpackAbilities backpackAbilities = new BackpackAbilities(); + public static BackpackRemovals backpackRemovals = new BackpackRemovals(); + + /** + * + * @param colorName + * @return + */ + public static boolean hasAbility(String colorName) + { + for (String valid : validWearingBackpacks) + { + if (valid.equals(colorName)) + { + return true; + } + } + return false; + } + + public static boolean hasRemoval(String colorName) + { + for (String valid : validRemovalBackpacks) + { + if (valid.equals(colorName)) + { + return true; + } + } + return false; + } + + /** + * Executes the ability of any given backpack, be it on the ground or be it on a player. + * + * @param player An entity player, can be null in the case of the tile entity. + * @param world This is necessary, so get it from wherever you can inside the class you're calling this. + * @param backpack An object representing a backpack, either in its ItemStack form or its TileEntity form. + */ + public void executeAbility(EntityPlayer player, World world, Object backpack) + { + if (backpack instanceof ItemStack) + { + String colorName = BackpackNames.getBackpackColorName((ItemStack)backpack); + try + { + //This is black magic and shouldn't be attempted by the faint of heart. + this.getClass() + .getMethod("item" + colorName, EntityPlayer.class, World.class, ItemStack.class). + invoke(backpackAbilities, player, world, backpack); + } catch (Exception oops) + { + //NOBODY CARES + } + } + + if (backpack instanceof TileAdventureBackpack) + { + String colorName = ((TileAdventureBackpack) backpack).getColorName(); + try + { + /* + This is witchery, witchery I say! + But seriously, if you want to know how this works just pay very close attention: + invoke will execute any method of a given class, okay? so this should be obvious. + Look at the names of the methods in this class and you'll figure it out. + You have to indicate exactly the classes that the method should use as parameters so + be very careful with "getMethod". + */ + this.getClass() + .getMethod("tile" + colorName, World.class, TileAdventureBackpack.class) + .invoke(backpackAbilities, world, backpack); + } catch (Exception oops) + { + //Seriously, nobody cares if this can't work, this is just so the game won't explode. + } + } + + } + + public void executeRemoval(EntityPlayer player, World world,ItemStack backpack ) + { + + String colorName = BackpackNames.getBackpackColorName(backpack); + try + { + //This is black magic and shouldn't be attempted by the faint of heart. + backpackRemovals.getClass() + .getMethod("item" + colorName, EntityPlayer.class, World.class, ItemStack.class). + invoke(backpackRemovals, player, world, backpack); + } catch (Exception oops) + { + LogHelper.error("---Something bad happened when removing a backpack---"); + oops.printStackTrace(); + } + } + /** + * These are the colorNames of the backpacks that have abilities when being worn. + */ + private static String[] validWearingBackpacks = { + "Bat", "Squid", "Pigman", "Cactus", "Cow", "Pig", "Dragon", "Slime", "Chicken", "Wolf", "Ocelot", "Creeper", "Rainbow", "Melon", "Sunflower","Mooshroom"}; + + private static String[] validRemovalBackpacks = { + "Bat", "Squid", "Dragon", "Rainbow" + }; + /** + * These are the colorNames of the backpacks that have abilities while being blocks. Note that not all the + * backpacks that have particularities while in block form necessarily have abilities. + * + * @see com.darkona.adventurebackpack.block.BlockAdventureBackpack + */ + @SuppressWarnings("unused") + private static String[] validTileBackpacks = {"Cactus","Melon"}; + + /** + * Detects if a player is under the rain. For detecting when it is Under The Sea (maybe to sing a nice Disney tune) + * it won't work, there's a different method for that, isInWater + * + * @param player The player + * @return True if the player is outside and it's raining. + */ + private boolean isUnderRain(EntityPlayer player) + { + return player.worldObj.canLightningStrikeAt(MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY), + MathHelper.floor_double(player.posZ)) + || player.worldObj.canLightningStrikeAt(MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY + player.height), + MathHelper.floor_double(player.posZ)); + } + + /** + * This backpack will feed you while you stay in the sun, slowly. At the very least you shouldn't starve. + * @param player + * @param world + * @param backpack + */ + public void itemSunflower(EntityPlayer player, World world, ItemStack backpack) + { + InventoryBackpack inv = new InventoryBackpack(backpack); + + if (inv.getLastTime() <= 0) + { + if(world.isDaytime() && + /*!world.isRemote &&*/ + world.canBlockSeeTheSky(MathHelper.floor_double(player.posX),MathHelper.floor_double(player.posY+1),MathHelper.floor_double(player.posZ))) { + player.getFoodStats().addStats(2, 0.2f); + //LogHelper.info("OMNOMNOMNOM"); + } + inv.setLastTime(Utils.secondsToTicks(120)); + }else{ + inv.setLastTime(inv.getLastTime() - 1); + } + inv.dirtyTime(); + } + + /** + * Nana nana nana nana Bat - Batpack! See in the dark! + * @param player + * @param world + * @param backpack + */ + public void itemBat(EntityPlayer player, World world, ItemStack backpack) + { + //Shameless rip-off from Machinemuse. Thanks Claire, I don't have to reinvent the wheel thanks to you. + //I will use a different potion id to avoid conflicting with her modular suits + PotionEffect nightVision = null; + if (player.isPotionActive(Potion.nightVision.id)) { + nightVision = player.getActivePotionEffect(Potion.nightVision); + } + if (nightVision == null || nightVision.getDuration() < 40 && nightVision.getAmplifier() != -4) + { + player.addPotionEffect(new PotionEffect(Potion.nightVision.id, 5000, -4)); + } + } + + public void itemSquid(EntityPlayer player, World world, ItemStack backpack) + { + if (player.isInWater()) + { + player.addPotionEffect(new PotionEffect(Potion.waterBreathing.getId(), 1, -5)); + itemBat(player, world, backpack); + }else{ + backpackRemovals.itemSquid(player,world, backpack); + } + } + + public void itemIronGolem(EntityPlayer player, World world, ItemStack backpack) + { + + } + + public void itemPigman(EntityPlayer player, World world, ItemStack backpack) + { + PotionEffect potion = null; + if (player.isPotionActive(Potion.fireResistance.id)) { + potion = player.getActivePotionEffect(Potion.fireResistance); + } + if (potion == null || potion.getDuration() < 5 && potion.getAmplifier() != -5) + { + player.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 5000, -5)); + } + } + + /** + * Mirroring real life cactii, the Cactus Backpack fills with water slowly or rapidly depending where is the player. + * If it's raining it will fill 1milibucket of water each tick. + * If the player is in water it will fill 2milibuckets of water each tick. + * The quantities can be combined. + * + * @param player The player. No, seriously. + * @param world The world the player is in. + * @param backpack The backpack the player is wearing. This should be rechecked like 20 times by now, so + * I'm not checking. + */ + public void itemCactus(EntityPlayer player, World world, ItemStack backpack) + { + //lastTime is in ticks for this backpack. + if(world.isRemote)return; + InventoryBackpack inv = new InventoryBackpack(backpack); + int drops = 0; + if (player.isInWater()) + { + drops += 2; + } + if (isUnderRain(player)) + { + drops += 1; + } + + if (inv.getLastTime() <= 0 && drops > 0) + { + inv.setLastTime(5); + FluidStack raindrop = new FluidStack(FluidRegistry.WATER, drops); + inv.getLeftTank().fill(raindrop, true); + inv.getRightTank().fill(raindrop, true); + }else{ + inv.setLastTime(inv.getLastTime() - 1); + } + inv.dirtyTime(); + inv.dirtyTanks(); + } + + /** + * The Pig Backpack will annoy you and your friends! This beautiful design by 豚, will do as the pigs do when they + * are frolicking around in the green pastures and terrifying slaughterhouses of the Minecraft world, after a random + * number of seconds. It's not so frequent as I'd like. + * Translation for pigs: Oink oink oink Oink! squee oink oink Minecraft Oink oink. "Oink" oink oink. + * + * @param player The player + * @param world The world object + * @param backpack The backpack the player is wearing. + */ + public void itemPig(EntityPlayer player, World world, ItemStack backpack) + { + //lastTime is in seconds for this backpack. + InventoryBackpack inv = new InventoryBackpack(backpack); + int oinkTime = inv.getLastTime() - 1; + if (oinkTime <= 0) + { + world.playSoundAtEntity(player, "mob.pig.say", 0.8f, 1f); + oinkTime = Utils.secondsToTicks(world.rand.nextInt(61)); + } + inv.setLastTime(oinkTime); + inv.dirtyTime(); + } + + /** + * Squishy! The Slime Backpack has an incredibly useless "ability". Makes the player leave a slimy trail of + * particles whenever he or she is running, and make that splishy splashy squishy sound on each step as well!. + * + * @param player + * @param world + * @param backpack + */ + public void itemSlime(EntityPlayer player, World world, ItemStack backpack) + { + //lastTime is in Ticks for this backpack. + //0 is Full Moon, 1 is Waning Gibbous, 2 is Last Quarter, 3 is Waning Crescent, + // 4 is New Moon, 5 is Waxing Crescent, 6 is First Quarter and 7 is Waxing Gibbous + if (world.getMoonPhase() == 0 && !world.isDaytime()) + { + player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 100, 0)); + } + if (player.onGround) + { + + if ((player.moveForward == 0 && player.moveStrafing == 0) && (Math.abs(player.moveForward) < 3 && Math.abs(player.moveStrafing)<3) ) + { + player.addVelocity(player.motionX *= 0.828, 0, player.motionZ *= 0.828); + } + if (player.isSprinting()) + { + InventoryBackpack inv = new InventoryBackpack(backpack); + int slimeTime = inv.getLastTime() > 0 ? inv.getLastTime() - 1 : 5; + if (slimeTime <= 0) + { + if (!world.isRemote) + { + ModNetwork.sendToNearby(new EntityParticlePacket.Message(EntityParticlePacket.SLIME_PARTICLE, player), player); + } + world.playSoundAtEntity(player, "mob.slime.small", 0.6F, (world.rand.nextFloat() - world.rand.nextFloat()) * 1F); + slimeTime = 5; + } + inv.setLastTime(slimeTime); + inv.dirtyTime(); + } + } + } + + /** + * The Chicken Backpack will go and *plop* an egg for you randomly each so many seconds. It's very rare though. + * + * @param player + * @param world + * @param backpack + */ + public void itemChicken(EntityPlayer player, World world, ItemStack backpack) + { + InventoryBackpack inv = new InventoryBackpack(backpack); + int eggTime = inv.getLastTime() - 1 ; + if (eggTime <= 0) + { + player.playSound("mob.chicken.plop", 1.0F, (world.rand.nextFloat() - world.rand.nextFloat()) * 0.3F + 1.0F); + if (!world.isRemote) player.dropItem(Items.egg, 1); + eggTime = Utils.secondsToTicks(200 + 10 * world.rand.nextInt(10)); + } + inv.setLastTime(eggTime); + inv.dirtyTime(); + } + + /** + * The Melon Backpack, like his cousin the Cactus Backpack, will fill itself, but with delicious + * and refreshing Melon Juice, if the backpack is wet in any way. + * + * @param player + * @param world + * @param backpack + */ + public void itemMelon(EntityPlayer player, World world, ItemStack backpack) + { + //lastTime is in ticks for this backpack. + if(world.isRemote)return; + InventoryBackpack inv = new InventoryBackpack(backpack); + int drops = 0; + if (player.isInWater()) + { + drops += 2; + } + if (isUnderRain(player)) + { + drops += 1; + } + + if (inv.getLastTime() <= 0 && drops > 0) + { + inv.setLastTime(5); + FluidStack raindrop = new FluidStack(ModFluids.melonJuice, drops); + inv.getLeftTank().fill(raindrop, true); + inv.getRightTank().fill(raindrop, true); + }else{ + inv.setLastTime(inv.getLastTime() - 1); + } + inv.dirtyTime(); + inv.dirtyTanks(); + } + + /** + * The Dragon Backpack does something awesome. + * + * @param player + * @param world + * @param backpack + */ + public void itemDragon(EntityPlayer player, World world, ItemStack backpack) + { + itemPigman(player,world,backpack); + itemSquid(player, world, backpack); + PotionEffect potion = null; + if (player.isPotionActive(Potion.regeneration.id)) { + potion = player.getActivePotionEffect(Potion.regeneration); + } + if (potion == null || potion.getDuration() < 40 && potion.getAmplifier() != -5) + { + player.addPotionEffect(new PotionEffect(Potion.regeneration.getId(), 5000, -5)); + } + potion = null; + if (player.isPotionActive(Potion.damageBoost.id)) { + potion = player.getActivePotionEffect(Potion.damageBoost); + } + if (potion == null || potion.getDuration() < 40 && potion.getAmplifier() != -5) { + player.addPotionEffect(new PotionEffect(Potion.damageBoost.getId(), 5000, -5)); + } + } + + /** + * Sneaky! Scare your friends! Or your enemies! + * Sneak on another player to make them jump in confusion as they think one of those green bastards is behind him/her. + * You can only do it once every so often. A couple of minutes. Remember, you must be sneaking. + * + * @param player + * @param world + * @param backpack + * @see com.darkona.adventurebackpack.handlers.PlayerEventHandler + */ + @SuppressWarnings("unchecked") + public void itemCreeper(EntityPlayer player, World world, ItemStack backpack) + { + //lastTime is in seconds for this ability + InventoryBackpack inv = new InventoryBackpack(backpack); + int pssstTime = inv.getLastTime() - 1; + + if (pssstTime <= 0) + { + pssstTime = 20; + if (player.isSneaking()) + { + List entities = player.worldObj.getEntitiesWithinAABBExcludingEntity(player, + AxisAlignedBB.getBoundingBox(player.posX, player.posY, player.posZ, + player.posX + 1.0D, player.posY + 1.0D, + player.posZ + 1.0D).expand(5.0D, 1.0D, 5.0D)); + if (entities.isEmpty()) + { + pssstTime -= 1; + return; + } + + for (Entity entity : entities) + { + if (entity instanceof EntityPlayer) + { + if (player.getDistanceToEntity(entity) <= 3) + { + world.playSoundAtEntity(player, "creeper.primed", 1.2F, 0.5F); + pssstTime = Utils.secondsToTicks(120); + } + } + } + } + } + inv.setLastTime(pssstTime); + inv.markDirty(); + } + + private FluidStack milkStack = new FluidStack(FluidRegistry.getFluid("milk"), 1); + private FluidStack soupStack = new FluidStack(FluidRegistry.getFluid("mushroomstew"), 1); + @SuppressWarnings("unused") + private FluidStack lavaStack = new FluidStack(FluidRegistry.LAVA, 1); + + /** + * The Cow Backpack fills itself with milk when there is wheat in the backpack's inventory, but it will do so slowly + * and will eat the wheat. It's like having a cow in your backpack. Each 16 wheat makes a bucket. It only happens + * when it is being worn. For not-player related milk generation go get a cow. Moo! + * + * @param player + * @param world + * @param backpack + */ + public void itemCow(EntityPlayer player, World world, ItemStack backpack) + { + if (world.isRemote) return; + InventoryBackpack inv = new InventoryBackpack(backpack); + inv.openInventory(); + + if (inv.getLeftTank().fill(milkStack, false) <= 0 && inv.getRightTank().fill(milkStack, false) <= 0) + { + return; + } + //Set Cow Properties + int wheatConsumed = 0; + int milkTime = -1; + if (inv.getExtendedProperties() != null) + { + if (inv.extendedProperties.hasKey("wheatConsumed")) + { + wheatConsumed = inv.extendedProperties.getInteger("wheatConsumed"); + milkTime = inv.extendedProperties.getInteger("milkTime") - 1; + } + } + + int eatTime = (inv.getLastTime() - 1 >= 0) ? inv.getLastTime() - 1 : 0; + if (inv.hasItem(Items.wheat) && eatTime <= 0 && milkTime <= 0) + { + eatTime = 20; + //LogHelper.info("Consuming Wheat in " + ((world.isRemote) ? "Client" : "Server")); + inv.consumeInventoryItem(Items.wheat); + wheatConsumed++; + inv.dirtyInventory(); + } + + int factor = 1; + if (wheatConsumed == 16) + { + wheatConsumed = 0; + milkTime = (1000 * factor) - factor; + world.playSoundAtEntity(player, "mob.cow.say", 1f, 1f); + } + + if (milkTime >= 0 && (milkTime % factor == 0)) + { + if (inv.getLeftTank().fill(milkStack, true) <= 0) + { + inv.getRightTank().fill(milkStack, true); + } + inv.dirtyTanks(); + } + if (milkTime < -1) milkTime = -1; + inv.extendedProperties.setInteger("wheatConsumed", wheatConsumed); + inv.extendedProperties.setInteger("milkTime", milkTime); + inv.setLastTime(eatTime); + // inv.setLastTime(eatTime); + inv.dirtyExtended(); + //inv.dirtyTanks(); + inv.dirtyTime(); + //inv.dirtyInventory(); + + //So naughty!!! + } + + public void itemMooshroom(EntityPlayer player, World world, ItemStack backpack) + { + if (world.isRemote) return; + InventoryBackpack inv = new InventoryBackpack(backpack); + inv.openInventory(); + + if (inv.getLeftTank().fill(soupStack, false) <= 0 && inv.getRightTank().fill(soupStack, false) <= 0) + { + return; + } + //Set Cow Properties + int wheatConsumed = 0; + int milkTime = -1; + if (inv.getExtendedProperties() != null) + { + if (inv.extendedProperties.hasKey("wheatConsumed")) + { + wheatConsumed = inv.extendedProperties.getInteger("wheatConsumed"); + milkTime = inv.extendedProperties.getInteger("milkTime") - 1; + } + } + + int eatTime = (inv.getLastTime() - 1 >= 0) ? inv.getLastTime() - 1 : 0; + if (inv.hasItem(Items.wheat) && eatTime <= 0 && milkTime <= 0) + { + eatTime = 20; + //LogHelper.info("Consuming Wheat in " + ((world.isRemote) ? "Client" : "Server")); + inv.consumeInventoryItem(Items.wheat); + wheatConsumed++; + inv.dirtyInventory(); + } + + int factor = 1; + if (wheatConsumed == 16) + { + wheatConsumed = 0; + milkTime = (1000 * factor) - factor; + world.playSoundAtEntity(player, "mob.cow.say", 1f, 1f); + } + + if (milkTime >= 0 && (milkTime % factor == 0)) + { + if (inv.getLeftTank().fill(soupStack, true) <= 0) + { + inv.getRightTank().fill(soupStack, true); + } + inv.dirtyTanks(); + } + if (milkTime < -1) milkTime = -1; + inv.extendedProperties.setInteger("wheatConsumed", wheatConsumed); + inv.extendedProperties.setInteger("milkTime", milkTime); + inv.setLastTime(eatTime); + // inv.setLastTime(eatTime); + inv.dirtyExtended(); + //inv.dirtyTanks(); + inv.dirtyTime(); + //inv.dirtyInventory(); + + //So naughty!!! + } + + /** + * The Wolf Backpack is a handy one if you're out in the wild. It checks around for any wolves that may lurk around. + * If any of them gets mad at you, it will smell the scent of it's kin on you and promptly forget about the whole + * deal. Smelling like dog is awesome. + * + * @param player the player + * @param world the world + * @param backpack the backpack + */ + @SuppressWarnings("unchecked") + public void itemWolf(EntityPlayer player, World world, ItemStack backpack) + { + //lastTime is in Ticks for this backpack + InventoryBackpack inv = new InventoryBackpack(backpack); + int lastCheckTime = inv.getLastTime() - 1; + + if (lastCheckTime <= 0) + { + lastCheckTime = 20; + List wolves = world.getEntitiesWithinAABB( + EntityWolf.class, + AxisAlignedBB.getBoundingBox(player.posX, player.posY, player.posZ, + player.posX + 1.0D, player.posY + 1.0D, + player.posZ + 1.0D).expand(16.0D, 4.0D, 16.0D)); + if (wolves.isEmpty()) return; + + for (EntityWolf wolf : wolves) + { + if (wolf.isAngry() && wolf.getAttackTarget() == player) + { + wolf.setAngry(false); + wolf.setAttackTarget(null); + wolf.setRevengeTarget(null); + Iterator i2 = wolf.targetTasks.taskEntries.iterator(); + while (i2.hasNext()) + { + ((EntityAIBase) i2.next()).resetTask(); + } + } + } + } + inv.setLastTime(lastCheckTime); + inv.dirtyTime(); + } + + /** + * The Blaze Backpack will make you inmune to fire and lava and burning and heat and... not really. You're supposed + * to die a fiery death if you are not careful, but this backpack will protect you against those burning fire + * elemental inhabitants of the Nether. Any blast of fire directed your way will be stopped, deflected or whatever. + * + * @param player + * @param world + * @param backpack + */ + public void itemBlaze(EntityPlayer player, World world, ItemStack backpack) + { + + } + + /** + * Like actual Ocelots and Cats, the Ocelot Backpack will scare the hell out of Creepers, so they won't creep on you + * while you're busy doing something else, paying no attention whatsoever at your surroundings like a mindless chicken. + * + * @param player + * @param world + * @param backpack + */ + @SuppressWarnings("unchecked") + public void itemOcelot(EntityPlayer player, World world, ItemStack backpack) + { + //lastTime in this backpack is in Ticks. + InventoryBackpack inv = new InventoryBackpack(backpack); + int lastCheckTime = inv.getLastTime() - 1; + if (lastCheckTime <= 0) + { + lastCheckTime = 20; + List creepers = player.worldObj.getEntitiesWithinAABB( + EntityCreeper.class, + AxisAlignedBB.getBoundingBox(player.posX, player.posY, player.posZ, + player.posX + 1.0D, player.posY + 1.0D, + player.posZ + 1.0D).expand(16.0D, 4.0D, 16.0D)); + + for (EntityCreeper creeper : creepers) + { + boolean set = true; + EntityAIAvoidPlayerWithBackpack task = new EntityAIAvoidPlayerWithBackpack(creeper, EntityPlayer.class, 10.0F, 1.0, 1.3, "Ocelot"); + + for (Object entry : creeper.tasks.taskEntries) + { + if (((EntityAITasks.EntityAITaskEntry) entry).action instanceof EntityAIAvoidPlayerWithBackpack) + { + set = false; + break; + } + } + + if (set) + { + //System.out.println("Found creeper who doesn't know to fear the backpack, making it a pussy now"); + creeper.tasks.addTask(3, task); + } + } + } + inv.setLastTime(lastCheckTime); + inv.markDirty(); + } + + + public void itemRainbow(EntityPlayer player, World world, ItemStack backpack) + { + InventoryBackpack inv = new InventoryBackpack(backpack); + int noteTime = inv.getLastTime() - 1; + if (noteTime >= 0 && noteTime < Utils.secondsToTicks(147)) + { + player.setSprinting(true); + player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 100, 0)); + player.addPotionEffect((new PotionEffect(Potion.jump.getId(), 100, 0))); + if (noteTime % 2 == 0) + { + //Visuals.NyanParticles(player, world); + if (!world.isRemote) + { + ModNetwork.sendToNearby(new EntityParticlePacket.Message(EntityParticlePacket.NYAN_PARTICLE, player), player); + } + } + } + PotionEffect potion = null; + if (player.isPotionActive(Potion.moveSpeed.id)) { + potion = player.getActivePotionEffect(Potion.moveSpeed); + } + if (potion == null || potion.getDuration() < 40 && potion.getAmplifier() != -5) { + player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 500, -5)); + } + inv.setLastTime(noteTime); + inv.markDirty(); + } + /* ==================================== TILE ABILITIES ==========================================*/ + + private void fillWithRain(World world, TileAdventureBackpack backpack, FluidStack fluid, int time) + { + if (world.isRaining() && world.canBlockSeeTheSky(backpack.xCoord, backpack.yCoord, backpack.zCoord)) + { + int dropTime = backpack.getLastTime() - 1; + if (dropTime <= 0) + { + backpack.getRightTank().fill(fluid, true); + backpack.getLeftTank().fill(fluid, true); + dropTime = time; + backpack.markDirty(); + } + backpack.setLastTime(dropTime); + } + } + + /** + * Like real life cactii, this backpack will fill slowly while it's raining with refreshing water. + * + * @param world + * @param backpack + */ + public void tileCactus(World world, TileAdventureBackpack backpack) + { + fillWithRain(world, backpack, new FluidStack(FluidRegistry.WATER, 2), 5); + } + + + public void tileMelon(World world, TileAdventureBackpack backpack) + { + fillWithRain(world, backpack, new FluidStack(ModFluids.melonJuice, 2), 5); + } + +} diff --git a/common/BackpackRemovals.java b/common/BackpackRemovals.java new file mode 100644 index 00000000..f899b331 --- /dev/null +++ b/common/BackpackRemovals.java @@ -0,0 +1,124 @@ +package com.darkona.adventurebackpack.common; + +import com.darkona.adventurebackpack.inventory.InventoryBackpack; +import com.darkona.adventurebackpack.util.Wearing; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; + +/** + * Created on 09/01/2015 + * + * @author Darkona + */ +public class BackpackRemovals +{ + public void itemBat(EntityPlayer player, World world, ItemStack backpack) + { + PotionEffect potion = null; + if (player.isPotionActive(Potion.nightVision.id)) { + potion = player.getActivePotionEffect(Potion.nightVision); + + if (potion != null && potion.getAmplifier() == -4) { + if (player.worldObj.isRemote) { + player.removePotionEffectClient(Potion.nightVision.id); + } else { + player.removePotionEffect(Potion.nightVision.id); + } + } + } + } + + public void itemSquid(EntityPlayer player, World world, ItemStack backpack) + { + itemBat(player, world, backpack); + PotionEffect potion = null; + if (player.isPotionActive(Potion.waterBreathing.id)) { + potion = player.getActivePotionEffect(Potion.waterBreathing); + + if (potion != null && potion.getAmplifier() == -5) { + if (player.worldObj.isRemote) { + player.removePotionEffectClient(Potion.waterBreathing.id); + } else { + player.removePotionEffect(Potion.waterBreathing.id); + } + } + } + } + + public void itemPigman(EntityPlayer player, World world, ItemStack backpack) + { + PotionEffect potion = null; + if (player.isPotionActive(Potion.fireResistance.id)) { + potion = player.getActivePotionEffect(Potion.fireResistance); + + if (potion != null && potion.getAmplifier() == -5) { + if (player.worldObj.isRemote) { + player.removePotionEffectClient(Potion.fireResistance.id); + } else { + player.removePotionEffect(Potion.fireResistance.id); + } + } + } + } + public void itemDragon(EntityPlayer player, World world, ItemStack backpack) + { + itemBat(player, world, backpack); + itemPigman(player,world,backpack); + PotionEffect potion = null; + if (player.isPotionActive(Potion.damageBoost.id)) { + potion = player.getActivePotionEffect(Potion.damageBoost); + if (potion != null && potion.getAmplifier() == -5) { + if (player.worldObj.isRemote) { + player.removePotionEffectClient(Potion.damageBoost.id); + } else { + player.removePotionEffect(Potion.damageBoost.id); + } + } + } + potion = null; + if (player.isPotionActive(Potion.regeneration.id)) { + potion = player.getActivePotionEffect(Potion.regeneration); + + if (potion != null && potion.getAmplifier() == -5) { + if (player.worldObj.isRemote) { + player.removePotionEffectClient(Potion.regeneration.id); + } else { + player.removePotionEffect(Potion.regeneration.id); + } + } + } + } + + public void itemRainbow(EntityPlayer player, World world, ItemStack backpack) + { + InventoryBackpack inv = new InventoryBackpack(Wearing.getWearingBackpack(player)); + if (inv.getLastTime() > 0) return; + inv.setLastTime(0); + inv.dirtyTime(); + PotionEffect potion = null; + if (player.isPotionActive(Potion.moveSpeed.id)) { + potion = player.getActivePotionEffect(Potion.moveSpeed); + if (potion != null && potion.getAmplifier() == 2) { + if (player.worldObj.isRemote) { + player.removePotionEffectClient(Potion.moveSpeed.id); + } else { + player.removePotionEffect(Potion.moveSpeed.id); + } + } + } + potion = null; + if (player.isPotionActive(Potion.jump.id)) { + potion = player.getActivePotionEffect(Potion.jump); + if (potion != null && potion.getAmplifier() == 2) { + if (player.worldObj.isRemote) { + player.removePotionEffectClient(Potion.jump.id); + } else { + player.removePotionEffect(Potion.jump.id); + } + } + } + } +} diff --git a/common/Constants.java b/common/Constants.java new file mode 100644 index 00000000..ab583709 --- /dev/null +++ b/common/Constants.java @@ -0,0 +1,28 @@ +package com.darkona.adventurebackpack.common; + +import net.minecraftforge.fluids.FluidContainerRegistry; + +/** + * Created on 11/10/2014. + * @author Javier Darkona + */ +public class Constants +{ + + public static final int inventorySize = 45; + public static final int bucket = FluidContainerRegistry.BUCKET_VOLUME; + public static final int basicTankCapacity = bucket * 4; + public static final int advancedTankCapacity = bucket * 8; + public static final int heroicTankCapacity = bucket * 12; + + //Inventory Special Slots + private static final int endOfInventory = inventorySize - 7; + public static final int upperTool = endOfInventory + 1; + public static final int lowerTool = upperTool + 1; + + public static final int bucketInLeft = lowerTool + 1; + public static final int bucketOutLeft = bucketInLeft + 1; + public static final int bucketInRight = bucketOutLeft + 1; + public static final int bucketOutRight = bucketInRight + 1; + +} diff --git a/common/IInventoryAdventureBackpack.java b/common/IInventoryAdventureBackpack.java new file mode 100644 index 00000000..9d058966 --- /dev/null +++ b/common/IInventoryAdventureBackpack.java @@ -0,0 +1,53 @@ +package com.darkona.adventurebackpack.common; + +import com.darkona.adventurebackpack.block.TileAdventureBackpack; +import com.darkona.adventurebackpack.inventory.IInventoryTanks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.fluids.FluidTank; + +/** + * Created by Darkona on 12/10/2014. + */ +public interface IInventoryAdventureBackpack extends IInventoryTanks +{ + + public FluidTank getLeftTank(); + + public FluidTank getRightTank(); + + public ItemStack[] getInventory(); + + public TileAdventureBackpack getTile(); + + public ItemStack getParentItemStack(); + + public String getColorName(); + + public int getLastTime(); + + public NBTTagCompound getExtendedProperties(); + + public void setExtendedProperties(NBTTagCompound properties); + + public boolean isSpecial(); + + public void saveTanks(NBTTagCompound compound); + + public void loadTanks(NBTTagCompound compound); + + public boolean hasItem(Item item); + + void consumeInventoryItem(Item item); + + boolean isSBDeployed(); + + void setLastTime(int time); + + + public void dirtyTime(); + + public void dirtyExtended(); + +} diff --git a/common/ServerActions.java b/common/ServerActions.java new file mode 100644 index 00000000..f4eb3e9e --- /dev/null +++ b/common/ServerActions.java @@ -0,0 +1,424 @@ +package com.darkona.adventurebackpack.common; + +import com.darkona.adventurebackpack.block.TileAdventureBackpack; +import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; +import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.inventory.InventoryBackpack; +import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; +import com.darkona.adventurebackpack.item.ItemCopterPack; +import com.darkona.adventurebackpack.item.ItemHose; +import com.darkona.adventurebackpack.network.WearableModePacket; +import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; +import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.util.LogHelper; +import com.darkona.adventurebackpack.util.Wearing; +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.projectile.EntityArrow; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.world.World; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; + +import java.util.Random; + +/** + * Created on 23/12/2014 + * + * @author Darkona + */ +public class ServerActions +{ + public static final boolean HOSE_SWITCH = false; + public static final boolean HOSE_TOGGLE = true; + + /** + * Cycles tools. In a cycle. The tool in your hand with the tools in the special tool slots of the backpack, to be precise. + * + * @param player - Duh + * @param direction - An integer indicating the direction of the switch. Nobody likes to swith always inthe same + * direction all the timeInSeconds. That's stupid. + * @param slot The slot that will be switched with the backpack. + */ + public static void cycleTool(EntityPlayer player, int direction, int slot) + { + try + { + InventoryBackpack backpack = Wearing.getBackpackInv(player, true); + ItemStack current = player.getCurrentEquippedItem(); + backpack.openInventory(); + if (direction < 0) + { + //LogHelper.info("Item of class " + backpack.getStackInSlot(Constants.lowerTool).getItem().getClass().getName()); + player.inventory.mainInventory[slot] = backpack.getStackInSlot(Constants.upperTool); + backpack.setInventorySlotContentsNoSave(Constants.upperTool, backpack.getStackInSlot(Constants.lowerTool)); + backpack.setInventorySlotContentsNoSave(Constants.lowerTool, current); + + } else + { + if (direction > 0) + { + player.inventory.mainInventory[slot] = backpack.getStackInSlot(Constants.lowerTool); + backpack.setInventorySlotContentsNoSave(Constants.lowerTool, backpack.getStackInSlot(Constants.upperTool)); + backpack.setInventorySlotContentsNoSave(Constants.upperTool, current); + } + } + backpack.markDirty(); + player.inventory.closeInventory(); + } catch (Exception oops) + { + LogHelper.debug("Exception trying to cycle tools."); + oops.printStackTrace(); + } + } + + /** + * @param world The world. Like, the WHOLE world. That's a lot of stuff. Do stuff with it, like detecting biomes + * or whatever. + * @param player Is a player. To whom the nice or evil effects you're going to apply will affect. + * See? I know the proper use of the words "effect" & "affect". + * @param tank The tank that holds the fluid, whose effect will affect the player that's in the world. + * @return If the effect can be applied, and it is actually applied, returns true. + */ + public static boolean setFluidEffect(World world, EntityPlayer player, FluidTank tank) + { + FluidStack drained = tank.drain(Constants.bucket, false); + boolean done = false; + if (drained != null && drained.amount >= Constants.bucket && FluidEffectRegistry.hasFluidEffect(drained.getFluid())) + { + done = FluidEffectRegistry.executeFluidEffectsForFluid(drained.getFluid(), player, world); + } + return done; + } + + /** + * @param player Duh! + * @param direction The direction in which the hose modes will switch. + * @param action The type of the action to be performed on the hose. + * Can be HOSE_SWITCH for mode or HOSE_TOGGLE for tank + * @param slot The slot in which the hose gleefully frolicks in the inventory. + */ + public static void switchHose(EntityPlayer player, boolean action, int direction, int slot) + { + + ItemStack hose = player.inventory.mainInventory[slot]; + if (hose != null && hose.getItem() instanceof ItemHose) + { + NBTTagCompound tag = hose.hasTagCompound() ? hose.stackTagCompound : new NBTTagCompound(); + if (!action) + { + int mode = ItemHose.getHoseMode(hose); + if (direction > 0) + { + mode = (mode + 1) % 3; + } else if (direction < 0) + { + mode = (mode - 1 < 0) ? 2 : mode - 1; + } + tag.setInteger("mode", mode); + } + + if (action) + { + int tank = ItemHose.getHoseTank(hose); + tank = (tank + 1) % 2; + tag.setInteger("tank", tank); + } + hose.setTagCompound(tag); + } + } + + /** + * Electrifying! Transforms a backpack into its electrified version. Shhh this is kinda secret, ok? + * + * @param player The player wearing the backpack. + */ + public static void electrify(EntityPlayer player) + { + ItemStack backpack = Wearing.getWearingBackpack(player); + if (BackpackNames.getBackpackColorName(backpack).equals("Pig")) + { + BackpackNames.setBackpackColorName(backpack, "Pigman"); + } + if (BackpackNames.getBackpackColorName(backpack).equals("Diamond")) + { + BackpackNames.setBackpackColorName(backpack, "Electric"); + } + } + + /** + * @param player + * @param bow + * @param charge + */ + public static void leakArrow(EntityPlayer player, ItemStack bow, int charge) + { + World world = player.worldObj; + Random itemRand = new Random(); + InventoryBackpack backpack = new InventoryBackpack(Wearing.getWearingBackpack(player)); + + //this is all vanilla code for the bow + boolean flag = player.capabilities.isCreativeMode + || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, bow) > 0; + + if (flag || backpack.hasItem(Items.arrow)) + { + float f = (float) charge / 20.0F; + f = (f * f + f * 2.0F) / 3.0F; + if ((double) f < 0.1D) + { + return; + } + if (f > 1.0F) + { + f = 1.0F; + } + EntityArrow entityarrow = new EntityArrow(world, player, f * 2.0F); + if (f == 1.0F) + { + entityarrow.setIsCritical(true); + } + int power = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, bow); + if (power > 0) + { + entityarrow.setDamage(entityarrow.getDamage() + (double) power * 0.5D + 0.5D); + } + int punch = EnchantmentHelper.getEnchantmentLevel(Enchantment.punch.effectId, bow); + if (punch > 0) + { + entityarrow.setKnockbackStrength(punch); + } + if (EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId, bow) > 0) + { + entityarrow.setFire(100); + } + + bow.damageItem(1, player); + world.playSoundAtEntity(player, "random.bow", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F); + + if (flag) + { + entityarrow.canBePickedUp = 2; + } else + { + /* + * From here, instead of leaking an arrow to the player inventory, which may be full and then it would be + * pointless, leak an arrow straight from the backpack ^_^ + * + * It could be possible to switch a whole stack with the player inventory, fire the arrow, and then + * switch back, but that's stupid. + * + * That's how you make a quiver (for vanilla bows at least, or anything that uses the events and vanilla + * arrows) Until we have an event that fires when a player consumes items in his/her inventory. + * + * I should make a pull request. Too lazy, though. + * */ + backpack.consumeInventoryItem(Items.arrow); + backpack.dirtyInventory(); + } + + if (!world.isRemote) + { + world.spawnEntityInWorld(entityarrow); + } + } + } + + /** + * @param player + * @param coordX + * @param coordY + * @param coordZ + */ + public static void toggleSleepingBag(EntityPlayer player, int coordX, int coordY, int coordZ) + { + World world = player.worldObj; + if (world.getTileEntity(coordX, coordY, coordZ) instanceof TileAdventureBackpack) + { + TileAdventureBackpack te = (TileAdventureBackpack) world.getTileEntity(coordX, coordY, coordZ); + if (!te.isSBDeployed()) + { + int can[] = canDeploySleepingBag(world, coordX, coordY, coordZ); + if (can[0] > -1) + { + if (te.deploySleepingBag(player, world, can[1], can[2], can[3], can[0])) + { + player.closeScreen(); + } + } else if (world.isRemote) + { + player.addChatComponentMessage(new ChatComponentText("Can't deploy the sleeping bag! Check the surrounding area.")); + } + } else + { + te.removeSleepingBag(world); + } + player.closeScreen(); + } + + } + + public static int[] canDeploySleepingBag(World world, int coordX, int coordY, int coordZ) + { + TileAdventureBackpack te = (TileAdventureBackpack) world.getTileEntity(coordX, coordY, coordZ); + int newMeta = -1; + + if (!te.isSBDeployed()) + { + int meta = world.getBlockMetadata(coordX, coordY, coordZ); + switch (meta & 3) + { + case 0: + --coordZ; + if (world.isAirBlock(coordX, coordY, coordZ) && world.getBlock(coordX, coordY - 1, coordZ).getMaterial().isSolid()) + { + if (world.isAirBlock(coordX, coordY, coordZ - 1) && world.getBlock(coordX, coordY - 1, coordZ - 1).getMaterial().isSolid()) + { + newMeta = 2; + } + } + break; + case 1: + ++coordX; + if (world.isAirBlock(coordX, coordY, coordZ) && world.getBlock(coordX, coordY - 1, coordZ).getMaterial().isSolid()) + { + if (world.isAirBlock(coordX + 1, coordY, coordZ) && world.getBlock(coordX + 1, coordY - 1, coordZ).getMaterial().isSolid()) + { + newMeta = 3; + } + } + break; + case 2: + ++coordZ; + if (world.isAirBlock(coordX, coordY, coordZ) && world.getBlock(coordX, coordY - 1, coordZ).getMaterial().isSolid()) + { + if (world.isAirBlock(coordX, coordY, coordZ + 1) && world.getBlock(coordX, coordY - 1, coordZ + 1).getMaterial().isSolid()) + { + newMeta = 0; + } + } + break; + case 3: + --coordX; + if (world.isAirBlock(coordX, coordY, coordZ) && world.getBlock(coordX, coordY - 1, coordZ).getMaterial().isSolid()) + { + if (world.isAirBlock(coordX - 1, coordY, coordZ) && world.getBlock(coordX - 1, coordY - 1, coordZ).getMaterial().isSolid()) + { + newMeta = 1; + } + } + break; + default: + break; + } + } + int result[] = {newMeta, coordX, coordY, coordZ}; + return result; + } + + /** + * Adds vertical inertia to the movement in the Y axis of the player, and makes Newton's Laws cry. + * In other words, makes you jump higher. + * Also it plays a nice sound effect that will probably get annoying after a while. + * + * @param player - The player performing the jump. + */ + public static void pistonBootsJump(EntityPlayer player) + { + //TODO add configuration for the playing of the sound effect. + //TODO Maybe configurable jump height too, because why not. + player.playSound("tile.piston.out", 0.5F, player.getRNG().nextFloat() * 0.25F + 0.6F); + player.motionY += 0.30; + player.jumpMovementFactor += 0.3; + } + + public static void toggleCopterPack(EntityPlayer player, ItemStack copter, byte type) + { + String message = ""; + boolean actionPerformed = false; + + if (!copter.hasTagCompound()) + { + copter.stackTagCompound = new NBTTagCompound(); + } + if (!copter.stackTagCompound.hasKey("status")) + { + copter.stackTagCompound.setByte("status", ItemCopterPack.OFF_MODE); + } + + byte mode = copter.stackTagCompound.getByte("status"); + byte newMode = ItemCopterPack.OFF_MODE; + + if (type == WearableModePacket.COPTER_ON_OFF) + { + if (mode == ItemCopterPack.OFF_MODE) + { + newMode = ItemCopterPack.NORMAL_MODE; + message = "adventurebackpack:messages.copterpack.normal"; + actionPerformed = true; + if (!player.worldObj.isRemote) + { + ModNetwork.sendToNearby(new EntitySoundPacket.Message(EntitySoundPacket.COPTER_SOUND,player), player); + + } + } else + { + newMode = ItemCopterPack.OFF_MODE; + message = "adventurebackpack:messages.copterpack.off"; + actionPerformed = true; + } + } + + if (type == WearableModePacket.COPTER_TOGGLE && mode != ItemCopterPack.OFF_MODE) + { + if (mode == ItemCopterPack.NORMAL_MODE) + { + newMode = ItemCopterPack.HOVER_MODE; + message = "adventurebackpack:messages.copterpack.hover"; + actionPerformed = true; + } + if (mode == ItemCopterPack.HOVER_MODE) + { + newMode = ItemCopterPack.NORMAL_MODE; + message = "adventurebackpack:messages.copterpack.normal"; + actionPerformed = true; + } + } + + if (actionPerformed) + { + copter.stackTagCompound.setByte("status", newMode); + if (player.worldObj.isRemote) + { + player.addChatComponentMessage(new ChatComponentTranslation(message)); + } + + } + } + + public static void toggleSteamJetpack(EntityPlayer player, ItemStack jetpack, byte on_off) + { + InventoryCoalJetpack inv = new InventoryCoalJetpack(jetpack); + if(inv.getStatus()) + { + inv.setStatus(false); + inv.markDirty(); + if (player.worldObj.isRemote) + { + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.jetpack.off")); + } + }else{ + inv.setStatus(true); + inv.markDirty(); + if (player.worldObj.isRemote) + { + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.jetpack.on")); + } + } + } +} diff --git a/config/ConfigHandler.java b/config/ConfigHandler.java new file mode 100644 index 00000000..b9fec03a --- /dev/null +++ b/config/ConfigHandler.java @@ -0,0 +1,88 @@ +package com.darkona.adventurebackpack.config; + +import com.darkona.adventurebackpack.reference.ModInfo; +import cpw.mods.fml.client.event.ConfigChangedEvent; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.common.config.Configuration; + +import java.io.File; + +/** + * Created on 10/10/2014. + * @author Javier Darkona + */ +public class ConfigHandler +{ + + + public static Configuration config; + + public static boolean IS_BUILDCRAFT = false; + public static boolean IS_BAUBLES = false; + public static boolean IS_TINKERS = false; + public static boolean IS_THAUM = false; + public static boolean IS_TWILIGHT = false; + public static boolean IS_ENVIROMINE = false; + public static boolean IS_RAILCRAFT = false; + + public static int GUI_TANK_RENDER = 2; + public static boolean BONUS_CHEST_ALLOWED = false; + public static boolean PIGMAN_ALLOWED = false; + + public static boolean BACKPACK_DEATH_PLACE = true; + public static boolean BACKPACK_ABILITIES = true; + + public static boolean ALLOW_COPTER_SOUND = true; + public static boolean ALLOW_JETPACK_SOUNDS = true; + + + public static boolean STATUS_OVERLAY = true; + public static boolean TANKS_OVERLAY = true; + public static boolean HOVERING_TEXT_TANKS = false; + public static boolean SADDLE_RECIPE = true; + public static boolean FIX_LEAD = true; + + + public static void init(File configFile) + { + if (config == null) + { + config = new Configuration(configFile); + loadConfiguration(); + } + } + + + @SuppressWarnings("static-access") + private static void loadConfiguration() + { + GUI_TANK_RENDER = config.getInt("TankRenderType", config.CATEGORY_GENERAL, 3, 1, 3, "1,2 or 3 for different rendering of fluids in the Backpack GUI"); + BONUS_CHEST_ALLOWED = config.getBoolean("BonusBackpack", config.CATEGORY_GENERAL, false, "Include a Standard Adventure Backpack in bonus chest?"); + PIGMAN_ALLOWED = config.getBoolean("PigmanBackpacks", config.CATEGORY_GENERAL, false, "Allow generation of Pigman Backpacks in dungeon loot and villager trades"); + ALLOW_COPTER_SOUND = config.getBoolean("CopterPackSound", config.CATEGORY_GENERAL, true, "Allow playing the CopterPack sound (Client Only, other players may hear it)"); + BACKPACK_ABILITIES = config.getBoolean("BackpackAbilities", config.CATEGORY_GENERAL, true, "Allow the backpacks to execute their special abilities, or be only cosmetic (Doesn't affect lightning transformation) Must be " + + "disabled in both Client and Server to work properly"); + STATUS_OVERLAY = config.getBoolean("StatusOverlay", config.CATEGORY_GENERAL,true, "Show player status effects on screen?"); + TANKS_OVERLAY = config.getBoolean("BackpackOverlay", config.CATEGORY_GENERAL,true, "Show the different wearable overlays on screen?"); + HOVERING_TEXT_TANKS = config.getBoolean("HoveringText", config.CATEGORY_GENERAL,false, "Show hovering text on fluid tanks?"); + FIX_LEAD = config.getBoolean("FixVanillaLead", config.CATEGORY_GENERAL,true, "Fix the vanilla Lead? (Checks mobs falling on a leash to not die of fall damage if they're not falling so fast)"); + BACKPACK_DEATH_PLACE = config.getBoolean("BackpackDeathPlace", config.CATEGORY_GENERAL,true,"Place backpacks as a block when you die?"); + //RECIPES + SADDLE_RECIPE = config.getBoolean("SaddleRecipe", config.CATEGORY_GENERAL,true, "Add recipe for saddle?"); + if (config.hasChanged()) + { + config.save(); + } + } + + @SubscribeEvent + public void onConfigChangeEvent(ConfigChangedEvent.OnConfigChangedEvent event) + { + if (event.modID.equalsIgnoreCase(ModInfo.MOD_ID)) + { + loadConfiguration(); + } + } + + +} diff --git a/config/GeneralConfig.java b/config/GeneralConfig.java new file mode 100644 index 00000000..4d86a968 --- /dev/null +++ b/config/GeneralConfig.java @@ -0,0 +1,13 @@ +package com.darkona.adventurebackpack.config; + +/** + * Created by Darkona on 12/10/2014. + */ +public class GeneralConfig +{ + + + public static final String GUI_TANK_KEY = "Tank_GUI_Resolution"; + public static final String GUI_TANK_COMMENT = "Resolution can take values of 1,2,4,8 or 16, other values will bork your game. The higher the value the smaller the fluids will look in your GUI"; +} + diff --git a/config/Keybindings.java b/config/Keybindings.java new file mode 100644 index 00000000..a8af9db1 --- /dev/null +++ b/config/Keybindings.java @@ -0,0 +1,19 @@ +package com.darkona.adventurebackpack.config; + +import com.darkona.adventurebackpack.reference.Names; +import net.minecraft.client.settings.KeyBinding; +import org.lwjgl.input.Keyboard; + +/** + * Created on 14/10/2014 + * + * @author Darkona + */ +public class Keybindings +{ + public static KeyBinding openBackpack = new KeyBinding(Names.keys.OPEN_BACKPACK_INVENTORY, Keyboard.KEY_B, Names.keys.CATEGORY); + public static KeyBinding toggleHose = new KeyBinding(Names.keys.TOGGLE_HOSE_TANK, Keyboard.KEY_N, Names.keys.CATEGORY); +// public static KeyBinding jumpKey = +} + + diff --git a/config/ManualConfigHandler.java b/config/ManualConfigHandler.java new file mode 100644 index 00000000..43530cc6 --- /dev/null +++ b/config/ManualConfigHandler.java @@ -0,0 +1,35 @@ +package com.darkona.adventurebackpack.config; + +import net.minecraftforge.common.config.Configuration; + +import java.io.File; + +/** + * Created on 04/01/2015 + * + * @author Darkona + */ +public class ManualConfigHandler +{ + + public static Configuration config; + + public static void init(File configFile) + { + if (config == null) + { + config = new Configuration(configFile); + loadConfiguration(); + } + } + + private static void loadConfiguration() + { + + if (config.hasChanged()) + { + config.save(); + } + } + +} diff --git a/develop/ChatHandler.java b/develop/ChatHandler.java new file mode 100644 index 00000000..4e6cb600 --- /dev/null +++ b/develop/ChatHandler.java @@ -0,0 +1,12 @@ +package com.darkona.adventurebackpack.develop; + +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.ChatComponentTranslation; +public class ChatHandler +{ + public static void sendServerMessage(String string) + { + ChatComponentTranslation translation = new ChatComponentTranslation(string, new Object[0]); + MinecraftServer.getServer().getConfigurationManager().sendChatMsg(translation); + } + } diff --git a/develop/DeveloperJoining.java b/develop/DeveloperJoining.java new file mode 100644 index 00000000..a0b85d7c --- /dev/null +++ b/develop/DeveloperJoining.java @@ -0,0 +1,14 @@ +package com.darkona.adventurebackpack.develop; + +import net.minecraft.entity.player.EntityPlayerMP; +import com.darkona.adventurebackpack.develop.msg; + +public class DeveloperJoining +{ + private EntityPlayerMP player; + + public void onPlayerLogin() + { + msg.handleJoin(player); + } + } diff --git a/develop/msg.java b/develop/msg.java new file mode 100644 index 00000000..f54170a9 --- /dev/null +++ b/develop/msg.java @@ -0,0 +1,30 @@ +package com.darkona.adventurebackpack.develop; + +import java.util.ArrayList; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.EnumChatFormatting; +import com.darkona.adventurebackpack.develop.ChatHandler; + +public class msg { + public static void loadDev() { + } + private static ArrayList devUUID = new ArrayList(); + static + { + //add uuid to list Developers who had work with this mod + devUUID.add("e23b034b-c2d2-4ae5-ba7a-93fb08de9c69"); + devUUID.add("9932b533-00b3-4d05-bac8-288500df7c9d"); + } + + public static boolean isDev(String uuid) + { + return devUUID.contains(uuid); + } + + public static void handleJoin(EntityPlayer player) + { + if (isDev(player.getUniqueID().toString())) { + ChatHandler.sendServerMessage("" + EnumChatFormatting.AQUA + "~~AdventureBackPack Mod Dev~~ " + EnumChatFormatting.UNDERLINE + player.getDisplayName() + EnumChatFormatting.AQUA + " has joined."); + } + } + } diff --git a/entity/EntityBolt.java b/entity/EntityBolt.java new file mode 100644 index 00000000..2679a751 --- /dev/null +++ b/entity/EntityBolt.java @@ -0,0 +1,62 @@ +package com.darkona.adventurebackpack.entity; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.IProjectile; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +/** + * Created on 07/01/2015 + * + * @author Darkona + */ +public class EntityBolt extends Entity implements IProjectile +{ + public EntityBolt(World world) + { + super(world); + } + + @Override + protected void entityInit() + { + + } + + /** + * (abstract) Protected helper method to read subclass entity data from NBT. + * + * @param compound + */ + @Override + protected void readEntityFromNBT(NBTTagCompound compound) + { + + } + + /** + * (abstract) Protected helper method to write subclass entity data to NBT. + * + * @param compound + */ + @Override + protected void writeEntityToNBT(NBTTagCompound compound) + { + + } + + /** + * Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction. + * + * @param x + * @param y + * @param z + * @param speedMultiplier + * @param whatever + */ + @Override + public void setThrowableHeading(double x, double y, double z, float speedMultiplier, float whatever) + { + + } +} diff --git a/entity/EntityCrossbowProjectile.java b/entity/EntityCrossbowProjectile.java new file mode 100644 index 00000000..38ac208a --- /dev/null +++ b/entity/EntityCrossbowProjectile.java @@ -0,0 +1,62 @@ +package com.darkona.adventurebackpack.entity; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.IProjectile; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +/** + * Created on 09/01/2015 + * + * @author Darkona + */ +public class EntityCrossbowProjectile extends Entity implements IProjectile +{ + public EntityCrossbowProjectile(World p_i1776_1_) + { + super(p_i1776_1_); + } + + @Override + protected void entityInit() + { + + } + + /** + * (abstract) Protected helper method to read subclass entity data from NBT. + * + * @param p_70037_1_ + */ + @Override + protected void readEntityFromNBT(NBTTagCompound p_70037_1_) + { + + } + + /** + * (abstract) Protected helper method to write subclass entity data to NBT. + * + * @param p_70014_1_ + */ + @Override + protected void writeEntityToNBT(NBTTagCompound p_70014_1_) + { + + } + + /** + * Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction. + * + * @param p_70186_1_ + * @param p_70186_3_ + * @param p_70186_5_ + * @param p_70186_7_ + * @param p_70186_8_ + */ + @Override + public void setThrowableHeading(double p_70186_1_, double p_70186_3_, double p_70186_5_, float p_70186_7_, float p_70186_8_) + { + + } +} diff --git a/entity/EntityFriendlySpider.java b/entity/EntityFriendlySpider.java new file mode 100644 index 00000000..80c73fa0 --- /dev/null +++ b/entity/EntityFriendlySpider.java @@ -0,0 +1,600 @@ +package com.darkona.adventurebackpack.entity; + +import com.darkona.adventurebackpack.util.Wearing; +import net.minecraft.block.Block; +import net.minecraft.entity.*; +import net.minecraft.entity.ai.*; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +import java.util.Random; + +/** + * Created on 11/01/2015 + * + * @author Darkona + */ +public class EntityFriendlySpider extends EntityCreature +{ + + private float prevRearingAmount; + private int jumpTicks; + @SuppressWarnings("unused") + private EntityPlayer owner; + @SuppressWarnings("unused") + private boolean tamed = false; + @SuppressWarnings("unused") + private final EntityAIControlledByPlayer aiControlledByPlayer; + + @Override + protected void entityInit() { + super.entityInit(); + this.dataWatcher.addObject(16, (byte)0); + } + + @Override + protected void applyEntityAttributes() + { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(20.0D); + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.15D); + this.getEntityAttribute(SharedMonsterAttributes.followRange).setBaseValue(40.0D); + } + + public EntityFriendlySpider(World world) { + super(world); + this.setSize(1.4F, 0.9F); + this.tasks.addTask(0, new EntityAISwimming(this)); + this.tasks.addTask(2, this.aiControlledByPlayer = new EntityAIControlledByPlayer(this, 0.3F)); + this.tasks.addTask(6, new EntityAIWander(this, 0.7D)); + this.tasks.addTask(7, new EntityAIWatchClosest(this, EntityPlayer.class, 6.0F)); + this.tasks.addTask(8, new EntityAILookIdle(this)); + } + @Override + protected boolean isAIEnabled() + { + return true; + } + @Override + public int getTalkInterval() + { + return 300; + } + /** + * Returns the sound this mob makes while it's alive. + */ + @Override + protected String getLivingSound() + { + return "mob.spider.say"; + } + + /** + * Returns the sound this mob makes when it is hurt. + */ + @Override + protected String getHurtSound() + { + return "mob.spider.say"; + } + + /** + * Returns the sound this mob makes on death. + */ + @Override + protected String getDeathSound() + { + return "mob.spider.death"; + } + + @Override + protected void func_145780_a(int x, int y, int z, Block block) + { + this.playSound("mob.spider.step", 0.15F, 1.0F); + } + + @Override + protected String getSwimSound() + { + return "game.hostile.swim"; + } + + @Override + protected String getSplashSound() + { + return "game.hostile.swim.splash"; + } + + @Override + public boolean attackEntityFrom(DamageSource damageSource, float amount) + { + if (this.isEntityInvulnerable()) + { + return false; + } + else if (super.attackEntityFrom(damageSource, amount)) + { + Entity entity = damageSource.getEntity(); + + if (this.riddenByEntity != entity && this.ridingEntity != entity) + { + if (entity != this) + { + this.entityToAttack = entity; + } + + return true; + } + else + { + return true; + } + } + else + { + return false; + } + } + + /** + * Takes a coordinate in and returns a weight to determine how likely this creature will try to path to the block. + * Args: x, y, z + */ + @Override + public float getBlockPathWeight(int p_70783_1_, int p_70783_2_, int p_70783_3_) + { + return 0.5F - this.worldObj.getLightBrightness(p_70783_1_, p_70783_2_, p_70783_3_); + } + + /** + * Checks if the entity's current position is a valid location to spawn this entity. + */ + @Override + public boolean getCanSpawnHere() + { + return false; + } + + @Override + protected boolean func_146066_aG() + { + return true; + } + /** + * Returns the item that this EntityLiving is holding, if any. + */ + @Override + public ItemStack getHeldItem() + { + return null; + } + + /** + * 0: Tool in Hand; 1-4: Armor + * */ + @Override + public ItemStack getEquipmentInSlot(int slot) + { + return null; + } + + /** + * Sets the held item, or an armor slot. Slot 0 is held item. Slot 1-4 is armor. Params: Item, slot + * + * @param slot + * @param stack + */ + @Override + public void setCurrentItemOrArmor(int slot, ItemStack stack) + { + + } + + @Override + public ItemStack[] getLastActiveItems() + { + return new ItemStack[0]; + } + + @Override + public boolean canRiderInteract() { + return false; + } + + @Override + protected boolean interact(EntityPlayer player) { + + try + { + if (!this.worldObj.isRemote && Wearing.isWearingTheRightBackpack(player, "Spider")) + { + player.mountEntity(this); + return true; + } + } catch (Exception oops) + { + return false; + } + return false; + } + + @Override + public boolean canBeSteered() { + return true; + } + + @Override + protected Entity findPlayerToAttack() { + if (this.riddenByEntity != null) + return null; + float f = this.getBrightness(1.0F); + + if (f < 0.5F) + { + double d0 = 16.0D; + return this.worldObj.getClosestVulnerablePlayerToEntity(this, d0); + } else + { + return null; + } + } + + @Override + public boolean canBeCollidedWith() { + return !isDead; + } + + @Override + public boolean shouldRiderFaceForward(EntityPlayer player) { + return true; + } + public boolean isBesideClimbableBlock() + { + return (this.dataWatcher.getWatchableObjectByte(16) & 1) != 0; + } + + /** + * Updates the WatchableObject (Byte) created in entityInit(), setting it to 0x01 if par1 is true or 0x00 if it is + * false. + */ + public void setBesideClimbableBlock(boolean p_70839_1_) + { + byte b0 = this.dataWatcher.getWatchableObjectByte(16); + + if (p_70839_1_) + { + b0 = (byte)(b0 | 1); + } + else + { + b0 &= -2; + } + + this.dataWatcher.updateObject(16, Byte.valueOf(b0)); + } + + @Override + public void onUpdate() { + super.onUpdate(); + if (this.worldObj.isRemote && this.dataWatcher.hasChanges()) + { + this.dataWatcher.func_111144_e(); + } + if (this.riddenByEntity instanceof EntityPlayer) + { + + } + if (this.riddenByEntity != null && this.riddenByEntity.isDead) + { + this.riddenByEntity = null; + } + if (!this.worldObj.isRemote) + { + this.setBesideClimbableBlock(this.isCollidedHorizontally); + } + } + + private void normalLivingUpdateWithNoAI(){ + if (this.jumpTicks > 0) + { + --this.jumpTicks; + } + + if (this.newPosRotationIncrements > 0) + { + double d0 = this.posX + (this.newPosX - this.posX) / (double)this.newPosRotationIncrements; + double d1 = this.posY + (this.newPosY - this.posY) / (double)this.newPosRotationIncrements; + double d2 = this.posZ + (this.newPosZ - this.posZ) / (double)this.newPosRotationIncrements; + double d3 = MathHelper.wrapAngleTo180_double(this.newRotationYaw - (double) this.rotationYaw); + this.rotationYaw = (float)((double)this.rotationYaw + d3 / (double)this.newPosRotationIncrements); + this.rotationPitch = (float)((double)this.rotationPitch + (this.newRotationPitch - (double)this.rotationPitch) / (double)this.newPosRotationIncrements); + --this.newPosRotationIncrements; + this.setPosition(d0, d1, d2); + this.setRotation(this.rotationYaw, this.rotationPitch); + } + else if (!this.isClientWorld()) + { + this.motionX *= 0.98D; + this.motionY *= 0.98D; + this.motionZ *= 0.98D; + } + + if (Math.abs(this.motionX) < 0.005D) + { + this.motionX = 0.0D; + } + + if (Math.abs(this.motionY) < 0.005D) + { + this.motionY = 0.0D; + } + + if (Math.abs(this.motionZ) < 0.005D) + { + this.motionZ = 0.0D; + } + + this.worldObj.theProfiler.startSection("ai"); + + if (this.isMovementBlocked()) + { + this.isJumping = false; + this.moveStrafing = 0.0F; + this.moveForward = 0.0F; + this.randomYawVelocity = 0.0F; + } + else if (this.isClientWorld()) + { + + } + + this.worldObj.theProfiler.endSection(); + this.worldObj.theProfiler.startSection("jump"); + + if (this.isJumping) + { + if (!this.isInWater() && !this.handleLavaMovement()) + { + if (this.onGround && this.jumpTicks == 0) + { + this.jump(); + this.jumpTicks = 10; + } + } + else + { + this.motionY += 0.03999999910593033D; + } + } + else + { + this.jumpTicks = 0; + } + this.setJumping(false); + this.worldObj.theProfiler.endSection(); + this.worldObj.theProfiler.startSection("travel"); + this.moveStrafing *= 0.98F; + this.moveForward *= 0.98F; + this.randomYawVelocity *= 0.9F; + this.moveEntityWithHeading(this.moveStrafing, this.moveForward); + this.worldObj.theProfiler.endSection(); + this.worldObj.theProfiler.startSection("push"); + + if (!this.worldObj.isRemote) + { + this.collideWithNearbyEntities(); + } + + this.worldObj.theProfiler.endSection(); + } + + @Override + public void onLivingUpdate() { + if (this.riddenByEntity != null) + { + normalLivingUpdateWithNoAI(); + } else + { + super.onLivingUpdate(); + } + this.updateArmSwingProgress(); + } + + @Override + public double getMountedYOffset() { + return super.getMountedYOffset(); + } + + @Override + public void moveEntityWithHeading(float strafe, float forward) { + if (this.riddenByEntity != null) + { + this.prevRotationYaw = this.rotationYaw = this.riddenByEntity.rotationYaw; + this.rotationPitch = this.riddenByEntity.rotationPitch * 0.5F; + this.setRotation(this.rotationYaw, this.rotationPitch); + this.rotationYawHead = this.renderYawOffset = this.rotationYaw; + strafe = ((EntityLivingBase)this.riddenByEntity).moveStrafing * 0.5F; + forward = ((EntityLivingBase)this.riddenByEntity).moveForward; + + if (forward <= 0.0F) + { + forward *= 0.25F; + } + this.stepHeight = 1.0F; + this.jumpMovementFactor = this.getAIMoveSpeed() * 0.2F; + + if (!this.worldObj.isRemote) + { + this.setAIMoveSpeed((float)this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).getAttributeValue()); + super.moveEntityWithHeading(strafe, forward); + } + + this.prevLimbSwingAmount = this.limbSwingAmount; + double d0 = this.posX - this.prevPosX; + double d1 = this.posZ - this.prevPosZ; + float f4 = MathHelper.sqrt_double(d0 * d0 + d1 * d1) * 4.0F; + + if (f4 > 1.0F) + { + f4 = 1.0F; + } + + this.limbSwingAmount += (f4 - this.limbSwingAmount) * 0.4F; + this.limbSwing += this.limbSwingAmount; + } + else + { + this.stepHeight = 0.5F; + this.jumpMovementFactor = 0.02F; + super.moveEntityWithHeading(strafe, forward); + } + } + + @Override + public void updateRiderPosition() { + super.updateRiderPosition(); + + if (this.prevRearingAmount > 0.0F) + { + float f = MathHelper.sin(this.renderYawOffset * (float) Math.PI / 180.0F); + float f1 = MathHelper.cos(this.renderYawOffset * (float) Math.PI / 180.0F); + float f2 = 0.7F * this.prevRearingAmount; + float f3 = 0.15F * this.prevRearingAmount; + this.riddenByEntity.setPosition(this.posX + (f2 * f), this.posY + this.getMountedYOffset() + this.riddenByEntity.getYOffset() + + f3, this.posZ - (f2 * f1)); + + if (this.riddenByEntity instanceof EntityLivingBase) + { + ((EntityLivingBase) this.riddenByEntity).renderYawOffset = this.renderYawOffset; + } + } + } + + + public void spiderJump() + { + this.getJumpHelper().setJumping(); + //this.getJumpHelper().doJump(); + } + + public static class GroupData implements IEntityLivingData + { + public int field_111105_a; + @SuppressWarnings("unused") + private static final String __OBFID = "CL_00001700"; + + public void func_111104_a(Random p_111104_1_) + { + int i = p_111104_1_.nextInt(5); + + if (i <= 1) + { + this.field_111105_a = Potion.moveSpeed.id; + } + else if (i <= 2) + { + this.field_111105_a = Potion.damageBoost.id; + } + else if (i <= 3) + { + this.field_111105_a = Potion.regeneration.id; + } + else if (i <= 4) + { + this.field_111105_a = Potion.invisibility.id; + } + } + } + + /** + * Basic mob attack. Default to touch of death in EntityCreature. Overridden by each mob to define their attack. + */ + @Override + protected void attackEntity(Entity p_70785_1_, float p_70785_2_) + { + float f1 = this.getBrightness(1.0F); + + if (f1 > 0.5F && this.rand.nextInt(100) == 0) + { + this.entityToAttack = null; + } + else + { + if (p_70785_2_ > 2.0F && p_70785_2_ < 6.0F && this.rand.nextInt(10) == 0) + { + if (this.onGround) + { + double d0 = p_70785_1_.posX - this.posX; + double d1 = p_70785_1_.posZ - this.posZ; + float f2 = MathHelper.sqrt_double(d0 * d0 + d1 * d1); + this.motionX = d0 / (double)f2 * 0.5D * 0.800000011920929D + this.motionX * 0.20000000298023224D; + this.motionZ = d1 / (double)f2 * 0.5D * 0.800000011920929D + this.motionZ * 0.20000000298023224D; + this.motionY = 0.4000000059604645D; + } + } + else + { + super.attackEntity(p_70785_1_, p_70785_2_); + } + } + } + + @Override + protected Item getDropItem() + { + return Items.string; + } + + /** + * Drop 0-2 items of this living's type. @param par1 - Whether this entity has recently been hit by a player. @param + * par2 - Level of Looting used to kill this mob. + */ + @Override + protected void dropFewItems(boolean p_70628_1_, int p_70628_2_) + { + super.dropFewItems(p_70628_1_, p_70628_2_); + + if (p_70628_1_ && (this.rand.nextInt(3) == 0 || this.rand.nextInt(1 + p_70628_2_) > 0)) + { + this.dropItem(Items.spider_eye, 1); + } + } + + /** + * returns true if this entity is by a ladder, false otherwise + */ + @Override + public boolean isOnLadder() + { + return this.isBesideClimbableBlock(); + } + + /** + * Sets the Entity inside a web block. + */ + @Override + public void setInWeb() {} + + /** + * Get this Entity's EnumCreatureAttribute + */ + @Override + public EnumCreatureAttribute getCreatureAttribute() + { + return EnumCreatureAttribute.ARTHROPOD; + } + + @Override + public boolean isPotionApplicable(PotionEffect p_70687_1_) + { + return p_70687_1_.getPotionID() == Potion.poison.id ? false : super.isPotionApplicable(p_70687_1_); + } +} + diff --git a/entity/EntityInflatableBoat.java b/entity/EntityInflatableBoat.java new file mode 100644 index 00000000..85648fc7 --- /dev/null +++ b/entity/EntityInflatableBoat.java @@ -0,0 +1,636 @@ +package com.darkona.adventurebackpack.entity; + +import com.darkona.adventurebackpack.init.ModItems; +import com.darkona.adventurebackpack.inventory.IInventoryTanks; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityBoat; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; +import net.minecraftforge.fluids.FluidTank; + +import java.util.List; + +/** + * Created on 05/01/2015 + * + * @author Darkona + */ +public class EntityInflatableBoat extends EntityBoat implements IInventoryTanks +{ + @SuppressWarnings("unused") + private FluidTank fuelTank; + private boolean isBoatEmpty; + private double speedMultiplier; + private int boatPosRotationIncrements; + private double boatX; + private double boatY; + private double boatZ; + private double boatYaw; + private double boatPitch; + @SideOnly(Side.CLIENT) + private double velocityX; + @SideOnly(Side.CLIENT) + private double velocityY; + @SideOnly(Side.CLIENT) + private double velocityZ; + private boolean inflated = false; + public float inflation = 0.25f; + + public boolean isMotorized() + { + return motorized; + } + + private boolean motorized; + + public EntityInflatableBoat(World world) + { + super(world); + } + + public EntityInflatableBoat(World world, double posX, double posY, double posZ, boolean motorized) + { + super(world, posX, posY, posZ); + setMotorized(motorized); + fuelTank = new FluidTank(6000); + } + + public boolean isInflated() + { + return inflated; + } + + /** + * Called to update the entity's position/logic. + */ + @Override + public void onUpdate() + { + if(!inflated) + { + inflation += 0.025; + if (inflation >= 1.0f) + { + inflation = 1; + inflated = true; + } + }else{ + inflation = 1; + } + + if (this.getTimeSinceHit() > 0) + { + this.setTimeSinceHit(this.getTimeSinceHit() - 1); + } + + if (this.getDamageTaken() > 0.0F) + { + this.setDamageTaken(this.getDamageTaken() - 1.0F); + } + + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + byte b0 = 5; + double d0 = 0.0D; + + for (int i = 0; i < b0; ++i) + { + double d1 = this.boundingBox.minY + (this.boundingBox.maxY - this.boundingBox.minY) * (i + 0) / b0 - 0.125D; + double d3 = this.boundingBox.minY + (this.boundingBox.maxY - this.boundingBox.minY) * (i + 1) / b0 - 0.125D; + AxisAlignedBB axisalignedbb = AxisAlignedBB.getBoundingBox(this.boundingBox.minX, d1, this.boundingBox.minZ, this.boundingBox.maxX, d3, this.boundingBox.maxZ); + + if (this.worldObj.isAABBInMaterial(axisalignedbb, Material.water)) + { + d0 += 1.0D / (double) b0; + } + } + + double horizontalMotion = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ); + double d2; + double d4; + int j; + + if (horizontalMotion > 0.26249999999999996D) + { + d2 = Math.cos((double) this.rotationYaw * Math.PI / 180.0D); + d4 = Math.sin((double) this.rotationYaw * Math.PI / 180.0D); + + for (j = 0; (double) j < 1.0D + horizontalMotion * 60.0D; ++j) + { + double d5 = (double) (this.rand.nextFloat() * 2.0F - 1.0F); + double d6 = (double) (this.rand.nextInt(2) * 2 - 1) * 0.7D; + double d8; + double d9; + + if (this.rand.nextBoolean()) + { + d8 = this.posX - d2 * d5 * 0.8D + d4 * d6; + d9 = this.posZ - d4 * d5 * 0.8D - d2 * d6; + this.worldObj.spawnParticle("splash", d8, this.posY - 0.125D, d9, this.motionX, this.motionY, this.motionZ); + } else + { + d8 = this.posX + d2 + d4 * d5 * 0.7D; + d9 = this.posZ + d4 - d2 * d5 * 0.7D; + this.worldObj.spawnParticle("splash", d8, this.posY - 0.125D, d9, this.motionX, this.motionY, this.motionZ); + } + } + } + + double d11; + double d12; + + if (this.worldObj.isRemote && this.isBoatEmpty) + { + if (this.boatPosRotationIncrements > 0) + { + d2 = this.posX + (this.boatX - this.posX) / (double) this.boatPosRotationIncrements; + d4 = this.posY + (this.boatY - this.posY) / (double) this.boatPosRotationIncrements; + d11 = this.posZ + (this.boatZ - this.posZ) / (double) this.boatPosRotationIncrements; + d12 = MathHelper.wrapAngleTo180_double(this.boatYaw - (double) this.rotationYaw); + this.rotationYaw = (float) ((double) this.rotationYaw + d12 / (double) this.boatPosRotationIncrements); + this.rotationPitch = (float) ((double) this.rotationPitch + (this.boatPitch - (double) this.rotationPitch) / (double) this.boatPosRotationIncrements); + --this.boatPosRotationIncrements; + this.setPosition(d2, d4, d11); + this.setRotation(this.rotationYaw, this.rotationPitch); + } else + { + d2 = this.posX + this.motionX; + d4 = this.posY + this.motionY; + d11 = this.posZ + this.motionZ; + this.setPosition(d2, d4, d11); + + if (this.onGround) + { + this.motionX *= 0.5D; + this.motionY *= 0.5D; + this.motionZ *= 0.5D; + } + + this.motionX *= 0.9900000095367432D; + this.motionY *= 0.949999988079071D; + this.motionZ *= 0.9900000095367432D; + } + } else + { + if (d0 < 1.0D) + { + d2 = d0 * 2.0D - 1.0D; + this.motionY += 0.03999999910593033D * d2; + } else + { + if (this.motionY < 0.0D) + { + this.motionY /= 2.0D; + } + + this.motionY += 0.007000000216066837D; + } + + if (this.riddenByEntity != null && this.riddenByEntity instanceof EntityLivingBase) + { + EntityLivingBase entitylivingbase = (EntityLivingBase) this.riddenByEntity; + float f = this.riddenByEntity.rotationYaw + -entitylivingbase.moveStrafing * 90.0F; + this.motionX += -Math.sin((double) (f * (float) Math.PI / 180.0F)) * this.speedMultiplier * (double) entitylivingbase.moveForward * 0.05000000074505806D; + this.motionZ += Math.cos((double) (f * (float) Math.PI / 180.0F)) * this.speedMultiplier * (double) entitylivingbase.moveForward * 0.05000000074505806D; + } + + d2 = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ); + + if (d2 > 0.35D) + { + d4 = 0.35D / d2; + this.motionX *= d4; + this.motionZ *= d4; + d2 = 0.35D; + } + + if (d2 > horizontalMotion && this.speedMultiplier < 0.35D) + { + this.speedMultiplier += (0.35D - this.speedMultiplier) / 35.0D; + + if (this.speedMultiplier > 0.35D) + { + this.speedMultiplier = 0.35D; + } + } else + { + this.speedMultiplier -= (this.speedMultiplier - 0.07D) / 35.0D; + + if (this.speedMultiplier < 0.07D) + { + this.speedMultiplier = 0.07D; + } + } + + int l; + + for (l = 0; l < 4; ++l) + { + int i1 = MathHelper.floor_double(this.posX + ((double) (l % 2) - 0.5D) * 0.8D); + j = MathHelper.floor_double(this.posZ + ((double) (l / 2) - 0.5D) * 0.8D); + + for (int j1 = 0; j1 < 2; ++j1) + { + int k = MathHelper.floor_double(this.posY) + j1; + Block block = this.worldObj.getBlock(i1, k, j); + + if (block == Blocks.snow_layer) + { + this.worldObj.setBlockToAir(i1, k, j); + this.isCollidedHorizontally = false; + } else if (block == Blocks.waterlily) + { + this.worldObj.func_147480_a(i1, k, j, true); + this.isCollidedHorizontally = false; + } + } + } + + if (this.onGround) + { + this.motionX *= 0.5D; + this.motionY *= 0.5D; + this.motionZ *= 0.5D; + } + + this.moveEntity(this.motionX, this.motionY, this.motionZ); + + /* if (this.isCollidedHorizontally && d10 > 0.2D) + { + if (!this.worldObj.isRemote && !this.isDead) + { + this.setDead(); + + for (l = 0; l < 3; ++l) + { + this.func_145778_a(Item.getItemFromBlock(Blocks.planks), 1, 0.0F); + } + + for (l = 0; l < 2; ++l) + { + this.func_145778_a(Items.stick, 1, 0.0F); + } + } + } + else + { + this.motionX *= 0.9900000095367432D; + this.motionY *= 0.949999988079071D; + this.motionZ *= 0.9900000095367432D; + }*/ + + this.rotationPitch = 0.0F; + d4 = (double) this.rotationYaw; + d11 = this.prevPosX - this.posX; + d12 = this.prevPosZ - this.posZ; + + if (d11 * d11 + d12 * d12 > 0.001D) + { + d4 = (double) ((float) (Math.atan2(d12, d11) * 180.0D / Math.PI)); + } + + double d7 = MathHelper.wrapAngleTo180_double(d4 - (double) this.rotationYaw); + + if (d7 > 20.0D) + { + d7 = 20.0D; + } + + if (d7 < -20.0D) + { + d7 = -20.0D; + } + + this.rotationYaw = (float) ((double) this.rotationYaw + d7); + this.setRotation(this.rotationYaw, this.rotationPitch); + + if (!this.worldObj.isRemote) + { + @SuppressWarnings("rawtypes") + List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.expand(0.20000000298023224D, 0.0D, 0.20000000298023224D)); + + if (list != null && !list.isEmpty()) + { + for (int k1 = 0; k1 < list.size(); ++k1) + { + Entity entity = (Entity) list.get(k1); + + if (entity != this.riddenByEntity && entity.canBePushed() && entity instanceof EntityBoat) + { + entity.applyEntityCollision(this); + } + } + } + + if (this.riddenByEntity != null && this.riddenByEntity.isDead) + { + this.riddenByEntity = null; + } + } + } + } + + @Override + public boolean attackEntityFrom(DamageSource damageSource, float damage) + { + if (this.isEntityInvulnerable()) + { + return false; + } else if (!this.worldObj.isRemote && !this.isDead) + { + this.setForwardDirection(-this.getForwardDirection()); + this.setTimeSinceHit(10); + this.setDamageTaken(this.getDamageTaken() + damage * 10.0F); + this.setBeenAttacked(); + boolean flag = damageSource.getEntity() instanceof EntityPlayer && ((EntityPlayer) damageSource.getEntity()).capabilities.isCreativeMode; + + if (flag || this.getDamageTaken() > 40.0F) + { + if (this.riddenByEntity != null) + { + this.riddenByEntity.mountEntity(this); + } + + if (!flag) + { + this.entityDropItem(new ItemStack(ModItems.component, 1, motorized ? 8:7), 0.0f); + } + + this.setDead(); + } + + return true; + } else + { + return true; + } + } + + @Override + public EntityItem func_145778_a(Item item, int quantity, float someFloat) + { + return this.entityDropItem(new ItemStack(item, quantity, 0), someFloat); + } + + @Override + public boolean interactFirst(EntityPlayer p_130002_1_) + { + if(inflation < 1.0f) return false; + if (this.riddenByEntity != null && this.riddenByEntity instanceof EntityPlayer && this.riddenByEntity != p_130002_1_) + { + return true; + } + else + { + if (!this.worldObj.isRemote) + { + p_130002_1_.mountEntity(this); + } + + return true; + } + } + + /** + * Save the entity to NBT (calls an abstract helper method to write extra data) + * + * @param compound + */ + @Override + public void writeToNBT(NBTTagCompound compound) + { + super.writeToNBT(compound); + writeEntityToNBT(compound); + } + + /** + * Reads the entity from NBT (calls an abstract helper method to read specialized data) + * + * @param compound + */ + @Override + public void readFromNBT(NBTTagCompound compound) + { + super.readFromNBT(compound); + readEntityFromNBT(compound); + } + + @Override + protected void writeEntityToNBT(NBTTagCompound compound) { + compound.setFloat("Inflation",inflation); + compound.setBoolean("Motorized",motorized); + compound.setBoolean("Inflated",inflated); + } + + @Override + protected void readEntityFromNBT(NBTTagCompound compound) { + if (compound.hasKey("Inflation")) + { + inflation = compound.getFloat("Inflation"); + } + if(compound.hasKey("Motorized")) + { + motorized = compound.getBoolean("Motorized"); + } + if (compound.hasKey("Inflated")) + { + inflated = compound.getBoolean("Inflated"); + } + } + + public void setMotorized(boolean motorized) + { + this.motorized = motorized; + } + + @Override + public boolean updateTankSlots() + { + return false; + } + + @Override + public void loadFromNBT(NBTTagCompound compound) + { + + } + + @Override + public void saveToNBT(NBTTagCompound compound) + { + + } + + @Override + public FluidTank[] getTanksArray() + { + return new FluidTank[0]; + } + + @Override + public void dirtyInventory() + { + + } + + @Override + public void dirtyTanks() + { + + } + + @Override + public void setInventorySlotContentsNoSave(int slot, ItemStack stack) + { + + } + + @Override + public ItemStack decrStackSizeNoSave(int slot, int amount) + { + return null; + } + + /** + * Returns the number of slots in the inventory. + */ + @Override + public int getSizeInventory() + { + return 0; + } + + /** + * Returns the stack in slot i + * + * @param p_70301_1_ + */ + @Override + public ItemStack getStackInSlot(int p_70301_1_) + { + return null; + } + + /** + * Removes from an inventory slot (first arg) up to a specified number (second arg) of items and returns them in a + * new stack. + * + * @param p_70298_1_ + * @param p_70298_2_ + */ + @Override + public ItemStack decrStackSize(int p_70298_1_, int p_70298_2_) + { + return null; + } + + /** + * When some containers are closed they call this on each slot, then drop whatever it returns as an EntityItem - + * like when you close a workbench GUI. + * + * @param p_70304_1_ + */ + @Override + public ItemStack getStackInSlotOnClosing(int p_70304_1_) + { + return null; + } + + /** + * Sets the given item stack to the specified slot in the inventory (can be crafting or armor sections). + * + * @param p_70299_1_ + * @param p_70299_2_ + */ + @Override + public void setInventorySlotContents(int p_70299_1_, ItemStack p_70299_2_) + { + + } + + /** + * Returns the name of the inventory + */ + @Override + public String getInventoryName() + { + return null; + } + + /** + * Returns if the inventory is named + */ + @Override + public boolean hasCustomInventoryName() + { + return false; + } + + /** + * Returns the maximum stack size for a inventory slot. + */ + @Override + public int getInventoryStackLimit() + { + return 0; + } + + /** + * For tile entities, ensures the chunk containing the tile entity is saved to disk later - the game won't think it + * hasn't changed and skip it. + */ + @Override + public void markDirty() + { + + } + + /** + * Do not make give this method the name canInteractWith because it clashes with Container + * + * @param p_70300_1_ + */ + @Override + public boolean isUseableByPlayer(EntityPlayer p_70300_1_) + { + return false; + } + + @Override + public void openInventory() + { + + } + + @Override + public void closeInventory() + { + + } + + /** + * Returns true if automation is allowed to insert the given stack (ignoring stack size) into the given slot. + * + * @param p_94041_1_ + * @param p_94041_2_ + */ + @Override + public boolean isItemValidForSlot(int p_94041_1_, ItemStack p_94041_2_) + { + return false; + } +} diff --git a/entity/ai/AvoidEntitySelector.java b/entity/ai/AvoidEntitySelector.java new file mode 100644 index 00000000..5c066815 --- /dev/null +++ b/entity/ai/AvoidEntitySelector.java @@ -0,0 +1,26 @@ +package com.darkona.adventurebackpack.entity.ai; + +import net.minecraft.command.IEntitySelector; +import net.minecraft.entity.Entity; + +public class AvoidEntitySelector implements IEntitySelector +{ + + + final EntityAIAvoidPlayerWithBackpack entityAvoiderAI; + + AvoidEntitySelector(EntityAIAvoidPlayerWithBackpack par1EntityAIAvoidEntity) + { + this.entityAvoiderAI = par1EntityAIAvoidEntity; + } + + + /** + * Return whether the specified com.darkona.adventurebackpack.entity is applicable to this filter. + */ + public boolean isEntityApplicable(Entity par1Entity) + { + return par1Entity.isEntityAlive() && EntityAIAvoidPlayerWithBackpack.func_98217_a(this.entityAvoiderAI).getEntitySenses().canSee(par1Entity); + } + +} diff --git a/entity/ai/EntityAIAvoidPlayerWithBackpack.java b/entity/ai/EntityAIAvoidPlayerWithBackpack.java new file mode 100644 index 00000000..0e4b4959 --- /dev/null +++ b/entity/ai/EntityAIAvoidPlayerWithBackpack.java @@ -0,0 +1,156 @@ +package com.darkona.adventurebackpack.entity.ai; + +import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.util.Wearing; +import net.minecraft.command.IEntitySelector; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityCreature; +import net.minecraft.entity.ai.EntityAIBase; +import net.minecraft.entity.ai.RandomPositionGenerator; +import net.minecraft.entity.passive.EntityTameable; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.pathfinding.PathEntity; +import net.minecraft.pathfinding.PathNavigate; +import net.minecraft.util.Vec3; + +import java.util.List; + +/** + * Created by Darkona on 12/10/2014. + */ +public class EntityAIAvoidPlayerWithBackpack extends EntityAIBase +{ + private String backpackName; + + public final IEntitySelector field_98218_a = new AvoidEntitySelector(this); + + /** + * The com.darkona.adventurebackpack.entity we are attached to + */ + public EntityCreature theEntity; + private double farSpeed; + private double nearSpeed; + private Entity closestLivingEntity; + private float distanceFromEntity; + + /** + * The PathEntity of our com.darkona.adventurebackpack.entity + */ + private PathEntity entityPathEntity; + + /** + * The PathNavigate of our com.darkona.adventurebackpack.entity + */ + private PathNavigate entityPathNavigate; + + /** + * The class of the com.darkona.adventurebackpack.entity we should avoid + */ + @SuppressWarnings("rawtypes") + private Class targetEntityClass; + + public EntityAIAvoidPlayerWithBackpack(EntityCreature par1EntityCreature, @SuppressWarnings("rawtypes") Class par2Class, float par3, double par4, double par6, String colorName) + { + this.theEntity = par1EntityCreature; + this.targetEntityClass = par2Class; + this.distanceFromEntity = par3; + this.farSpeed = par4; + this.nearSpeed = par6; + this.entityPathNavigate = par1EntityCreature.getNavigator(); + this.setMutexBits(1); + this.backpackName = colorName; + } + + /** + * Returns whether the EntityAIBase should begin execution. + */ + public boolean shouldExecute() + { + if (this.targetEntityClass == EntityPlayer.class) + { + if (this.theEntity instanceof EntityTameable && ((EntityTameable) this.theEntity).isTamed()) + { + return false; + } + + List list = this.theEntity.worldObj.selectEntitiesWithinAABB(this.targetEntityClass, this.theEntity.boundingBox.expand(this.distanceFromEntity, 3.0D, this.distanceFromEntity), this.field_98218_a); + + if (list.isEmpty()) + { + return false; + } + + for (Object player : list) + { + if (BackpackNames.getBackpackColorName(Wearing.getWearingBackpack((EntityPlayer) player)).equals(backpackName)) + { + this.closestLivingEntity = (Entity) player; + } + } + + if (this.closestLivingEntity == null) + { + return false; + } + + + Vec3 vec3 = RandomPositionGenerator.findRandomTargetBlockAwayFrom(this.theEntity, 16, 7, Vec3.createVectorHelper(this.closestLivingEntity.posX, this.closestLivingEntity.posY, this.closestLivingEntity.posZ)); + + if (vec3 == null) + { + return false; + } else if (this.closestLivingEntity.getDistanceSq(vec3.xCoord, vec3.yCoord, vec3.zCoord) < this.closestLivingEntity.getDistanceSqToEntity(this.theEntity)) + { + return false; + } else + { + this.entityPathEntity = this.entityPathNavigate.getPathToXYZ(vec3.xCoord, vec3.yCoord, vec3.zCoord); + return this.entityPathEntity != null && this.entityPathEntity.isDestinationSame(vec3); + } + } + return false; + } + + /** + * Returns whether an in-progress EntityAIBase should continue executing + */ + public boolean continueExecuting() + { + return !this.entityPathNavigate.noPath(); + } + + /** + * Execute a one shot task or start executing a continuous task + */ + public void startExecuting() + { + this.entityPathNavigate.setPath(this.entityPathEntity, this.farSpeed); + } + + /** + * Resets the task + */ + public void resetTask() + { + this.closestLivingEntity = null; + } + + /** + * Updates the task + */ + public void updateTask() + { + if (this.theEntity.getDistanceSqToEntity(this.closestLivingEntity) < 49.0D) + { + this.theEntity.getNavigator().setSpeed(this.nearSpeed); + } else + { + this.theEntity.getNavigator().setSpeed(this.farSpeed); + } + } + + static EntityCreature func_98217_a(EntityAIAvoidPlayerWithBackpack par0EntityAIAvoidEntity) + { + return par0EntityAIAvoidEntity.theEntity; + } +} diff --git a/entity/ai/EntityAIHorseFollowOwner.java b/entity/ai/EntityAIHorseFollowOwner.java new file mode 100644 index 00000000..8cbe2825 --- /dev/null +++ b/entity/ai/EntityAIHorseFollowOwner.java @@ -0,0 +1,107 @@ +package com.darkona.adventurebackpack.entity.ai; + +import com.darkona.adventurebackpack.util.Wearing; +import net.minecraft.entity.ai.EntityAIBase; +import net.minecraft.entity.passive.EntityHorse; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.pathfinding.PathNavigate; +import net.minecraft.world.World; + +import java.util.UUID; + +/** + * Created on 09/01/2015 + * + * @author Darkona + */ +public class EntityAIHorseFollowOwner extends EntityAIBase +{ + private EntityHorse theHorse; + private EntityPlayer theOwner; + World theWorld; + private double speed; + private PathNavigate petPathfinder; + private int tickCounter; + float maxDist; + float minDist; + private boolean avoidWater; + @SuppressWarnings("unused") + private static final String __OBFID = "CL_00001585"; + + public EntityAIHorseFollowOwner(EntityHorse horse, double speed, float minDist, float maxDist) + { + theHorse = horse; + theWorld = horse.worldObj; + theOwner = theWorld.func_152378_a(UUID.fromString(theHorse.func_152119_ch())); + this.speed = speed * 2; + petPathfinder = horse.getNavigator(); + this.minDist = minDist; + this.maxDist = maxDist; + } + + + public double getDistanceSquaredToOwner() + { + double relX = theHorse.posX - theOwner.posX; + double relY = theHorse.posY - theOwner.posY; + double relZ = theHorse.posZ - theOwner.posZ; + return relX * relX + relY * relY + relZ * relZ; + } + + + + public boolean shouldExecute() + { + if(!theHorse.isTame() || theHorse.getLeashed() || !theHorse.hasCustomNameTag())return false; + if (theOwner == null) { + theOwner = theWorld.func_152378_a(UUID.fromString(theHorse.func_152119_ch())); + if (theOwner == null) + { + return false; + } + } + if(!Wearing.isWearingTheRightBackpack(theOwner, "Horse"))return false; + if (theHorse.getDistanceSqToEntity(theOwner) < minDist * minDist * 20) { + return false; + } + return true; + } + + public boolean continueExecuting() + { + return (Wearing.isWearingTheRightBackpack(theOwner,"Horse") && !this.petPathfinder.noPath() && theHorse.getDistanceSqToEntity(theOwner) > this.maxDist * this.maxDist * 2); + } + + public void startExecuting() + { + tickCounter = 0; + avoidWater = this.theHorse.getNavigator().getAvoidsWater(); + petPathfinder = theHorse.getNavigator(); + } + + public void resetTask() + { + theOwner = null; + petPathfinder.clearPathEntity(); + theHorse.getNavigator().setAvoidsWater(this.avoidWater); + } + + + public void updateTask() + { + //theHorse.getLookHelper().setLookPositionWithEntity(theOwner, 10.0F, this.theHorse.getVerticalFaceSpeed()); + if (--tickCounter <= 0) + { + tickCounter = 10; + if (!theHorse.getLeashed()) + { + if (!petPathfinder.tryMoveToEntityLiving(theOwner, speed)) + { + return; + } + } + } + } + + +} diff --git a/entity/fx/SteamFX.java b/entity/fx/SteamFX.java new file mode 100644 index 00000000..cab49e21 --- /dev/null +++ b/entity/fx/SteamFX.java @@ -0,0 +1,87 @@ +package com.darkona.adventurebackpack.entity.fx; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.particle.EntityFX; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.World; + +/** + * Created on 19/01/2015 + * + * @author Darkona + */ + +@SideOnly(Side.CLIENT) +public class SteamFX + extends EntityFX +{ + private float smokeParticleScale; + + public SteamFX(World world, double x, double y, double z, double velX, double velY, double velZ) + { + this(world, x, y, z, velX, velY, velZ, 1.0F); + } + + public SteamFX(World world, double x, double y, double z, double velX, double velY, double velZ, float scale) + { + super(world, x, y, z, 0.0D, 0.0D, 0.0D); + this.motionX *= 0.1D; + this.motionY *= 0.1D; + this.motionZ *= 0.1D; + this.motionX += velX; + this.motionY += velY; + this.motionZ += velZ; + this.particleRed = 206; + this.particleGreen = 206; + this.particleBlue = 206; + this.particleScale *= 0.75F; + this.particleScale *= scale; + this.smokeParticleScale = this.particleScale; + this.particleMaxAge = ((int) (8.0D / (Math.random() * 0.8D + 0.2D))); + this.particleMaxAge = ((int) (this.particleMaxAge * scale)); + this.noClip = true; + } + + public void renderParticle(Tessellator par1Tessellator, float par2, float par3, float par4, float par5, float par6, float par7) + { + float age = (this.particleAge + par2) / this.particleMaxAge * 32.0F; + if (age < 0.0F) + { + age = 0.0F; + } + if (age > 1.0F) + { + age = 1.0F; + } + this.particleScale = (this.smokeParticleScale * age); + super.renderParticle(par1Tessellator, par2, par3, par4, par5, par6, par7); + } + + public void onUpdate() + { + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + if (this.particleAge++ >= this.particleMaxAge) + { + setDead(); + } + setParticleTextureIndex(7 - this.particleAge * 8 / this.particleMaxAge); + this.motionY += 0.003; + moveEntity(this.motionX, this.motionY, this.motionZ); + if (this.posY == this.prevPosY) + { + this.motionX *= 1.1D; + this.motionZ *= 1.1D; + } + this.motionX *= 0.9599999785423279D; + this.motionY *= 0.9599999785423279D; + this.motionZ *= 0.9599999785423279D; + if (this.onGround) + { + this.motionX *= 0.699999988079071D; + this.motionZ *= 0.699999988079071D; + } + } +} From 0051f7b9b614343f8e38fff28129455b01e72efb Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 19:58:46 -0400 Subject: [PATCH 021/462] changelog is on release tab --- block/BackpackMaterial.java | 167 +++++ block/BlockAdventureBackpack.java | 468 ++++++++++++++ block/BlockCampFire.java | 236 +++++++ block/BlockSleepingBag.java | 446 +++++++++++++ block/TileAdventureBackpack.java | 607 ++++++++++++++++++ block/TileCampfire.java | 21 + client/ClientActions.java | 80 +++ client/Icons.java | 19 + client/Visuals.java | 129 ++++ client/audio/BoilingBoilerSound.java | 103 +++ client/audio/CopterPackSound.java | 130 ++++ client/audio/JetpackSoundOn.java | 102 +++ client/audio/LeakingBoilerSound.java | 102 +++ client/audio/NyanMovingSound.java | 119 ++++ client/gui/GuiAdvBackpack.java | 247 +++++++ client/gui/GuiCoalJetpack.java | 202 ++++++ client/gui/GuiCopterPack.java | 163 +++++ client/gui/GuiFactory.java | 39 ++ client/gui/GuiImageButtonNormal.java | 34 + client/gui/GuiOverlay.java | 223 +++++++ client/gui/GuiTank.java | 252 ++++++++ client/gui/GuiWithTanks.java | 30 + client/gui/IBackpackGui.java | 22 + client/gui/ModGuiConfig.java | 26 + client/models/ModelAdventureHat.java | 77 +++ client/models/ModelBackpackArmor.java | 361 +++++++++++ client/models/ModelBackpackBlock.java | 428 ++++++++++++ client/models/ModelCampFire.java | 150 +++++ client/models/ModelClockworkCrossbow.java | 282 ++++++++ client/models/ModelCoalJetpack.java | 200 ++++++ client/models/ModelCopterPack.java | 280 ++++++++ client/models/ModelFullArmor.java | 42 ++ client/models/ModelInflatableBoat.java | 172 +++++ client/models/ModelSleepingBag.java | 71 ++ client/models/ModelWearable.java | 70 ++ client/render/RenderRideableSpider.java | 81 +++ .../RendererAdventureBackpackBlock.java | 86 +++ client/render/RendererCampFire.java | 46 ++ client/render/RendererHose.java | 84 +++ client/render/RendererInflatableBoat.java | 73 +++ .../render/RendererItemAdventureBackpack.java | 197 ++++++ client/render/RendererItemAdventureHat.java | 176 +++++ .../render/RendererItemClockworkCrossbow.java | 143 +++++ client/render/RendererStack.java | 63 ++ client/render/RendererWearableEquipped.java | 98 +++ 45 files changed, 7147 insertions(+) create mode 100644 block/BackpackMaterial.java create mode 100644 block/BlockAdventureBackpack.java create mode 100644 block/BlockCampFire.java create mode 100644 block/BlockSleepingBag.java create mode 100644 block/TileAdventureBackpack.java create mode 100644 block/TileCampfire.java create mode 100644 client/ClientActions.java create mode 100644 client/Icons.java create mode 100644 client/Visuals.java create mode 100644 client/audio/BoilingBoilerSound.java create mode 100644 client/audio/CopterPackSound.java create mode 100644 client/audio/JetpackSoundOn.java create mode 100644 client/audio/LeakingBoilerSound.java create mode 100644 client/audio/NyanMovingSound.java create mode 100644 client/gui/GuiAdvBackpack.java create mode 100644 client/gui/GuiCoalJetpack.java create mode 100644 client/gui/GuiCopterPack.java create mode 100644 client/gui/GuiFactory.java create mode 100644 client/gui/GuiImageButtonNormal.java create mode 100644 client/gui/GuiOverlay.java create mode 100644 client/gui/GuiTank.java create mode 100644 client/gui/GuiWithTanks.java create mode 100644 client/gui/IBackpackGui.java create mode 100644 client/gui/ModGuiConfig.java create mode 100644 client/models/ModelAdventureHat.java create mode 100644 client/models/ModelBackpackArmor.java create mode 100644 client/models/ModelBackpackBlock.java create mode 100644 client/models/ModelCampFire.java create mode 100644 client/models/ModelClockworkCrossbow.java create mode 100644 client/models/ModelCoalJetpack.java create mode 100644 client/models/ModelCopterPack.java create mode 100644 client/models/ModelFullArmor.java create mode 100644 client/models/ModelInflatableBoat.java create mode 100644 client/models/ModelSleepingBag.java create mode 100644 client/models/ModelWearable.java create mode 100644 client/render/RenderRideableSpider.java create mode 100644 client/render/RendererAdventureBackpackBlock.java create mode 100644 client/render/RendererCampFire.java create mode 100644 client/render/RendererHose.java create mode 100644 client/render/RendererInflatableBoat.java create mode 100644 client/render/RendererItemAdventureBackpack.java create mode 100644 client/render/RendererItemAdventureHat.java create mode 100644 client/render/RendererItemClockworkCrossbow.java create mode 100644 client/render/RendererStack.java create mode 100644 client/render/RendererWearableEquipped.java diff --git a/block/BackpackMaterial.java b/block/BackpackMaterial.java new file mode 100644 index 00000000..3b5159e8 --- /dev/null +++ b/block/BackpackMaterial.java @@ -0,0 +1,167 @@ +package com.darkona.adventurebackpack.block; + +import net.minecraft.block.material.MapColor; +import net.minecraft.block.material.Material; + +/** + * Created on 24/12/2014 + * + * @author Darkona + */ +public class BackpackMaterial extends Material +{ + + + public BackpackMaterial() + { + super(MapColor.brownColor); + } + + /** + * Returns if blocks of these materials are liquids. + */ + @Override + public boolean isLiquid() + { + return false; + } + + @Override + public boolean isSolid() + { + return true; + } + + /** + * Will prevent grass from growing on dirt underneath and kill any grass below it if it returns true + */ + @Override + public boolean getCanBlockGrass() + { + return false; + } + + /** + * Returns if this material is considered solid or not + */ + @Override + public boolean blocksMovement() + { + return super.blocksMovement(); + } + + /** + * Makes blocks with this material require the correct tool to be harvested. + */ + @Override + protected Material setRequiresTool() + { + return super.setRequiresTool(); + } + + /** + * Set the canBurn bool to True and return the current object. + */ + @Override + protected Material setBurning() + { + return this; + } + + /** + * Returns if the block can burn or not. + */ + @Override + public boolean getCanBurn() + { + return false; + } + + /** + * Sets {@link #replaceable} to true. + */ + @Override + public Material setReplaceable() + { + return super.setReplaceable(); + } + + /** + * Returns whether the material can be replaced by other blocks when placed - eg snow, vines and tall grass. + */ + @Override + public boolean isReplaceable() + { + return false; + } + + /** + * Returns true if the material can be harvested without a tool (or with the wrong tool) + */ + @Override + public boolean isToolNotRequired() + { + return true; + } + + /** + * This type of material can't be pushed, but pistons can move over it. + */ + @Override + protected Material setNoPushMobility() + { + return super.setNoPushMobility(); + } + + /** + * @see #isAdventureModeExempt() + */ + @Override + protected Material setAdventureModeExempt() + { + return super.setAdventureModeExempt(); + } + + @Override + public MapColor getMaterialMapColor() + { + return super.getMaterialMapColor(); + } + + /** + * Returns true if blocks with this material can always be mined in adventure mode. + */ + @Override + public boolean isAdventureModeExempt() + { + return true; + } + + /** + * This type of material can't be pushed, and pistons are blocked to move. + */ + @Override + protected Material setImmovableMobility() + { + return super.setImmovableMobility(); + } + + /** + * Returns the mobility information of the material, 0 = free, 1 = can't push but can move over, 2 = total + * immobility and stop pistons. + */ + @Override + public int getMaterialMobility() + { + return super.getMaterialMobility(); + } + + /** + * Indicate if the material is opaque + */ + @Override + public boolean isOpaque() + { + return super.isOpaque(); + } +} diff --git a/block/BlockAdventureBackpack.java b/block/BlockAdventureBackpack.java new file mode 100644 index 00000000..d77fc87d --- /dev/null +++ b/block/BlockAdventureBackpack.java @@ -0,0 +1,468 @@ +package com.darkona.adventurebackpack.block; + +import com.darkona.adventurebackpack.AdventureBackpack; +import com.darkona.adventurebackpack.client.Icons; +import com.darkona.adventurebackpack.handlers.GuiHandler; +import com.darkona.adventurebackpack.init.ModItems; +import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.reference.ModInfo; +import com.darkona.adventurebackpack.util.LogHelper; +import com.darkona.adventurebackpack.util.Utils; +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.EnumCreatureType; +import net.minecraft.entity.boss.EntityDragon; +import net.minecraft.entity.boss.EntityWither; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.*; +import net.minecraft.world.Explosion; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +import java.util.Random; + +/** + * Created on 12/10/2014. + * @author Javier Darkona + */ +@SuppressWarnings("unused") +public class BlockAdventureBackpack extends BlockContainer +{ + + public BlockAdventureBackpack() + { + super(new BackpackMaterial()); + setHardness(1.0f); + setStepSound(soundTypeCloth); + setResistance(2000f); + } + + /** + * Pretty effects for the bookshelf ;) + * + * @param world + * @param x + * @param y + * @param z + * @param random + */ + @Override + @SideOnly(Side.CLIENT) + public void randomDisplayTick(World world, int x, int y, int z, Random random) + { + if (getAssociatedTileColorName(world, x, y, z).equals("Bookshelf")) + { + ChunkCoordinates enchTable = Utils.findBlock3D(world, x, y, z, Blocks.enchanting_table, 2, 2); + if(enchTable !=null) + { + if (!world.isAirBlock((enchTable.posX - x) / 2 + x, enchTable.posY, (enchTable.posZ - z) / 2 + z)) + { + return; + } + for (int o = 0; o < 4; o++) + { + world.spawnParticle("enchantmenttable",enchTable.posX + 0.5D,enchTable.posY + 2.0D,enchTable.posZ + 0.5D, + ((x - enchTable.posX) + random.nextFloat()) - 0.5D, + ((y - enchTable.posY) - random.nextFloat() - 1.0F), + ((z - enchTable.posZ) + random.nextFloat()) - 0.5D); + } + } + } + } + + public int getMobilityFlag() + { + return 0; + } + + @Override + public String getHarvestTool(int metadata) + { + return null; + } + + @Override + public int getHarvestLevel(int metadata) + { + return 0; + } + + @Override + public boolean isToolEffective(String type, int metadata) + { + return true; + } + + private String getAssociatedTileColorName(IBlockAccess world, int x, int y, int z) + { + return ((TileAdventureBackpack) world.getTileEntity(x, y, z)).getColorName(); + } + @Override + public boolean canRenderInPass(int pass) + { + return true; + } + + @Override + public boolean canEntityDestroy(IBlockAccess world, int x, int y, int z, Entity entity) + { + return false; + } + + @Override + public float getEnchantPowerBonus(World world, int x, int y, int z) + { + return getAssociatedTileColorName(world, x, y, z).equals("Bookshelf") ? 10 : 0; + } + + @Override + public boolean canBeReplacedByLeaves(IBlockAccess world, int x, int y, int z) + { + return false; + } + + @Override + public boolean isWood(IBlockAccess world, int x, int y, int z) + { + return false; + } + + @Override + public boolean isLeaves(IBlockAccess world, int x, int y, int z) + { + return false; + } + + @Override + public boolean canCreatureSpawn(EnumCreatureType type, IBlockAccess world, int x, int y, int z) + { + return false; + } + + @Override + public int getFlammability(IBlockAccess world, int x, int y, int z, ForgeDirection face) + { + return 0; + } + + @Override + public boolean canHarvestBlock(EntityPlayer player, int meta) + { + return true; + } + + @Override + public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) + { + if (getAssociatedTileColorName(world, x, y, z).equals("Cactus")) + { + entity.attackEntityFrom(DamageSource.cactus, 1.0F); + } + } + + /** + * Called when a player hits the block. Args: world, x, y, z, player + * + * @param p_149699_1_ + * @param p_149699_2_ + * @param p_149699_3_ + * @param p_149699_4_ + * @param p_149699_5_ + */ + @Override + public void onBlockClicked(World p_149699_1_, int p_149699_2_, int p_149699_3_, int p_149699_4_, EntityPlayer p_149699_5_) + { + super.onBlockClicked(p_149699_1_, p_149699_2_, p_149699_3_, p_149699_4_, p_149699_5_); + } + + /** + * Called when a block is placed using its ItemBlock. Args: World, X, Y, Z, side, hitX, hitY, hitZ, block metadata + * + * @param world + * @param x + * @param y + * @param z + * @param side + * @param hitX + * @param hitY + * @param hitZ + * @param meta + */ + @Override + public int onBlockPlaced(World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int meta) + { + return super.onBlockPlaced(world, x, y, z, side, hitX, hitY, hitZ, meta); + } + + + @Override + public boolean isFlammable(IBlockAccess world, int x, int y, int z, ForgeDirection face) + { + return false; + } + + @Override + public String getUnlocalizedName() + { + return "blockAdventureBackpack"; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) + { + Icons.milkStill = iconRegister.registerIcon(ModInfo.MOD_ID + ":fluid.milk"); + Icons.melonJuiceStill = iconRegister.registerIcon(ModInfo.MOD_ID + ":fluid.melonJuiceStill"); + Icons.melonJuiceFlowing = iconRegister.registerIcon(ModInfo.MOD_ID + ":fluid.melonJuiceFlowing"); + Icons.mushRoomStewStill = iconRegister.registerIcon(ModInfo.MOD_ID + ":fluid.mushroomStewStill"); + Icons.mushRoomStewFlowing = iconRegister.registerIcon(ModInfo.MOD_ID + ":fluid.mushroomStewFlowing"); + } + + @Override + public int getLightValue(IBlockAccess world, int x, int y, int z) + { + if (getAssociatedTileColorName(world, x, y, z).equals("Glowstone")) + { + return 15; + } else if (world.getTileEntity(x, y, z) != null && world.getTileEntity(x, y, z) instanceof TileAdventureBackpack) + { + return ((TileAdventureBackpack) world.getTileEntity(x, y, z)).getLuminosity(); + } else + { + return 0; + } + } + + public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int meta) + { + return getAssociatedTileColorName(world, x, y, z).equals("Redstone") ? 15 : 0; + } + + @Override + public boolean canConnectRedstone(IBlockAccess world, int x, int y, int z, int side) + { + return getAssociatedTileColorName(world, x, y, z).equals("Redstone"); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) + { + + FMLNetworkHandler.openGui(player, AdventureBackpack.instance, GuiHandler.BACKPACK_TILE, world, x, y, z); + return true; + } + + + @Override + public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z, EntityPlayer player) + { + ItemStack backpack = new ItemStack(ModItems.adventureBackpack, 1); + BackpackNames.setBackpackColorNameFromDamage(backpack, BackpackNames.getBackpackDamageFromName(getAssociatedTileColorName(world, x, y, z))); + return backpack; + } + + @Override + public boolean hasTileEntity(int meta) + { + return true; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess blockAccess, int x, int y, int z) + { + int meta = blockAccess.getBlockMetadata(x, y, z); + meta = (meta & 8) >= 8 ? meta - 8 : meta; + meta = (meta & 4) >= 4 ? meta - 4 : meta; + switch (meta) + { + case 0: + case 2: + setBlockBounds(0.0F, 0.0F, 0.4F, 1.0F, 0.6F, 0.6F); + break; + case 1: + case 3: + setBlockBounds(0.4F, 0.0F, 0.0F, 0.6F, 0.6F, 1.0F); + break; + } + } + + @Override + public int getRenderType() + { + return -1; + } + + @Override + public boolean isOpaqueCube() + { + return false; + } + + @Override + public boolean renderAsNormalBlock() + { + return false; + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) + { + int dir = MathHelper.floor_double((player.rotationYaw * 4F) / 360F + 0.5D) & 3; + if (stack != null && stack.stackTagCompound != null && stack.stackTagCompound.hasKey("color")) + { + if (stack.stackTagCompound.getString("color").contains("BlockRedstone")) + { + dir = dir | 8; + } + if (stack.stackTagCompound.getString("color").contains("Lightgem")) + { + dir = dir | 4; + } + } + world.setBlockMetadataWithNotify(x, y, z, dir, 3); + createNewTileEntity(world, world.getBlockMetadata(x, y, z)); + + } + + @Override + public boolean canPlaceBlockOnSide(World par1World, int par2, int par3, int par4, int side) + { + return (ForgeDirection.getOrientation(side) == ForgeDirection.UP); + } + + @Override + public int quantityDropped(int meta, int fortune, Random random) + { + return 0; + } + + @Override + @SideOnly(Side.CLIENT) + public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) + { + setBlockBoundsBasedOnState(world, x, y, z); + return super.getSelectedBoundingBoxFromPool(world, x, y, z); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int par1, int par2) + { + return Blocks.wool.getIcon(par1,par2); + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) + { + setBlockBoundsBasedOnState(world, x, y, z); + return super.getCollisionBoundingBoxFromPool(world, x, y, z); + } + + @Override + public MovingObjectPosition collisionRayTrace(World world, int x, int y, int z, Vec3 start, Vec3 end) + { + setBlockBoundsBasedOnState(world, x, y, z); + return super.collisionRayTrace(world, x, y, z, start, end); + } + + @Override + public boolean canReplace(World p_149705_1_, int p_149705_2_, int p_149705_3_, int p_149705_4_, int p_149705_5_, ItemStack p_149705_6_) + { + return false; + } + + @Override + public boolean removedByPlayer(World world, EntityPlayer player, int x, int y, int z, boolean harvest) + { + TileEntity tile = world.getTileEntity(x, y, z); + + if (tile instanceof TileAdventureBackpack && !world.isRemote && player != null) + { + if ((player.isSneaking()) ? + ((TileAdventureBackpack) tile).equip(world, player, x, y, z) : + ((TileAdventureBackpack) tile).drop(world, player, x, y, z)) + { + return world.func_147480_a(x, y, z, false); + } + } else + { + return world.func_147480_a(x, y, z, false); + } + return false; + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int meta) + { + TileEntity te = world.getTileEntity(x, y, z); + if (te != null && te instanceof IInventory) + { + IInventory inventory = (IInventory) te; + + for (int i = 0; i < inventory.getSizeInventory(); i++) + { + ItemStack stack = inventory.getStackInSlotOnClosing(i); + + if (stack != null) + { + float spawnX = x + world.rand.nextFloat(); + float spawnY = y + world.rand.nextFloat(); + float spawnZ = z + world.rand.nextFloat(); + float mult = 0.05F; + + EntityItem droppedItem = new EntityItem(world, spawnX, spawnY, spawnZ, stack); + + droppedItem.motionX = -0.5F + world.rand.nextFloat() * mult; + droppedItem.motionY = 4 + world.rand.nextFloat() * mult; + droppedItem.motionZ = -0.5 + world.rand.nextFloat() * mult; + + world.spawnEntityInWorld(droppedItem); + } + } + + + } + + super.breakBlock(world, x, y, z, world.getBlock(x, y, z), meta); + } + + @Override + public TileEntity createTileEntity(World world, int metadata) + { + return new TileAdventureBackpack(); + } + + @Override + public TileEntity createNewTileEntity(World world, int metadata) + { + return createTileEntity(world, metadata); + } + + @Override + public boolean canDropFromExplosion(Explosion p_149659_1_) + { + return false; + } + + @Override + public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion explosion) { + world.func_147480_a(x, y, z, false); + } + + @Override + public void onBlockExploded(World world, int x, int y, int z, Explosion explosion) { + //DO NOTHING + } +} diff --git a/block/BlockCampFire.java b/block/BlockCampFire.java new file mode 100644 index 00000000..1c0eee39 --- /dev/null +++ b/block/BlockCampFire.java @@ -0,0 +1,236 @@ +package com.darkona.adventurebackpack.block; + +import com.darkona.adventurebackpack.CreativeTabAB; +import com.darkona.adventurebackpack.reference.ModInfo; +import com.darkona.adventurebackpack.util.Utils; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.ChunkCoordinates; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +import java.util.Random; + +/** + * Created on 05/01/2015 + * + * @author Darkona + */ +public class BlockCampFire extends BlockContainer +{ + private IIcon icon; + + public BlockCampFire() + { + super(Material.rock); + this.setTickRandomly(true); + this.setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); + + } + + private void func_149978_e() + { + this.setBlockBounds(0.2F, 0.0F, 0.2F, 0.8F, 0.15F, 0.8F); + } + + @SuppressWarnings("unused") + private void blockBoundsForRender() + { + this.func_149978_e(); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) + { + icon = iconRegister.registerIcon(ModInfo.MOD_ID + ":campFire"); + } + + @Override + public String getUnlocalizedName() + { + return "blockCampFire"; + } + + @Override + public TileEntity createNewTileEntity(World world, int p_149915_2_) + { + return new TileCampfire(); + } + + @Override + public int tickRate(World p_149738_1_) + { + return 30; + } + + @Override + public boolean isOpaqueCube() + { + return false; + } + + /** + * If this block doesn't render as an ordinary block it will return False (examples: signs, buttons, stairs, etc) + */ + @Override + public boolean renderAsNormalBlock() + { + return false; + } + + @Override + public int getRenderType() + { + return -1; + } + + @Override + public boolean isNormalCube() + { + return false; + } + + /** + * Indicate if a material is a normal solid opaque cube + */ + @Override + public boolean isBlockNormalCube() + { + return false; + } + + /** + * A randomly called display update to be able to add particles or other items for display + */ + @SideOnly(Side.CLIENT) + @Override + public void randomDisplayTick(World world, int posX, int posY, int posZ, Random rnd) + { + float rndX = posX + rnd.nextFloat(); + float rndY = (posY + 1) - rnd.nextFloat() * 0.1F; + float rndZ = posZ + rnd.nextFloat(); + world.spawnParticle("largesmoke", rndX, rndY, rndZ, 0.0D, 0.0D, 0.0D); + for (int i = 0; i < 4; i++) + { + rndX = posX + 0.5f - (float) rnd.nextGaussian() * 0.08f; + rndY = (float) (posY + 1f - Math.cos((float) rnd.nextGaussian() * 0.1f)); + rndZ = posZ + 0.5f - (float) rnd.nextGaussian() * 0.08f; + //world.spawnParticle("flame", posX+Math.sin(i/4), posY, posZ+Math.cos(i/4), 0.0D, 0.0D, 0.0D); + world.spawnParticle("flame", rndX, rndY + 0.16, rndZ, 0.0D, 0.0D, 0.0D); + } + + } + + @Override + public TileEntity createTileEntity(World world, int metadata) + { + return new TileCampfire(); + } + + @Override + public boolean hasTileEntity(int meta) + { + return true; + } + + @Override + public int getLightValue(IBlockAccess world, int x, int y, int z) + { + return 11; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess blockAccess, int x, int y, int z) + { + this.setBlockBounds(0.2F, 0.0F, 0.2F, 0.8F, 0.15F, 0.8F); + } + + /** + * Returns a bounding box from the pool of bounding boxes (this means this box can change after the pool has been + * cleared to be reused) + * + * @param p_149668_1_ + * @param p_149668_2_ + * @param p_149668_3_ + * @param p_149668_4_ + */ + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_149668_2_, int p_149668_3_, int p_149668_4_) + { + return super.getCollisionBoundingBoxFromPool(p_149668_1_, p_149668_2_, p_149668_3_, p_149668_4_); + } + + /** + * Returns the bounding box of the wired rectangular prism to render. + * + * @param p_149633_1_ + * @param p_149633_2_ + * @param p_149633_3_ + * @param p_149633_4_ + */ + @Override + public AxisAlignedBB getSelectedBoundingBoxFromPool(World p_149633_1_, int p_149633_2_, int p_149633_3_, int p_149633_4_) + { + return super.getSelectedBoundingBoxFromPool(p_149633_1_, p_149633_2_, p_149633_3_, p_149633_4_); + } + + @Override + public IIcon getIcon(IBlockAccess p_149673_1_, int p_149673_2_, int p_149673_3_, int p_149673_4_, int p_149673_5_) + { + return icon; + } + + /** + * Gets the block's texture. Args: side, meta + * + * @param p_149691_1_ + * @param p_149691_2_ + */ + @Override + public IIcon getIcon(int p_149691_1_, int p_149691_2_) + { + return icon; + } + + /** + * Determines if this block is classified as a Bed, Allowing + * players to sleep in it, though the block has to specifically + * perform the sleeping functionality in it's activated event. + * + * @param world The current world + * @param x X Position + * @param y Y Position + * @param z Z Position + * @param player The player or camera entity, null in some cases. + * @return True to treat this as a bed + */ + @Override + public boolean isBed(IBlockAccess world, int x, int y, int z, EntityLivingBase player) + { + return true; + } + + @Override + public ChunkCoordinates getBedSpawnPosition(IBlockAccess world, int x, int y, int z, EntityPlayer player) + { + for (int i = y - 5; i <= y + 5; i++) + { + ChunkCoordinates spawn = Utils.getNearestEmptyChunkCoordinatesSpiral(world, x, z, x, i, z, 8, true, 1, (byte) 0, true); + + if (spawn != null) + { + return spawn; + } + } + return null; + } +} diff --git a/block/BlockSleepingBag.java b/block/BlockSleepingBag.java new file mode 100644 index 00000000..62c1ede3 --- /dev/null +++ b/block/BlockSleepingBag.java @@ -0,0 +1,446 @@ +package com.darkona.adventurebackpack.block; + +import com.darkona.adventurebackpack.init.ModBlocks; +import com.darkona.adventurebackpack.playerProperties.BackpackProperty; +import com.darkona.adventurebackpack.util.LogHelper; +import com.darkona.adventurebackpack.util.Resources; +import com.darkona.adventurebackpack.util.Utils; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockDirectional; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChunkCoordinates; +import net.minecraft.util.Direction; +import net.minecraft.util.IIcon; +import net.minecraft.world.Explosion; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.chunk.IChunkProvider; + +import java.util.Iterator; +import java.util.Random; + +/** + * Created on 14/10/2014 + * + * @author Darkona + */ +public class BlockSleepingBag extends BlockDirectional +{ + + public static final int[][] footBlockToHeadBlockMap = new int[][]{{0, 1}, {-1, 0}, {0, -1}, {1, 0}}; + + @SideOnly(Side.CLIENT) + private IIcon[] endIcons; + @SideOnly(Side.CLIENT) + private IIcon[] sideIcons; + @SideOnly(Side.CLIENT) + private IIcon[] topIcons; + + public BlockSleepingBag() + { + super(Material.cloth); + this.func_149978_e(); + setBlockName(getUnlocalizedName()); + } + + + @SideOnly(Side.CLIENT) + protected String getTextureName() + { + return this.textureName == null ? "MISSING_ICON_BLOCK_" + getIdFromBlock(this) + "_" + getUnlocalizedName() : this.textureName; + } + + /** + * Returns the unlocalized name of the block with "tile." appended to the front. + */ + @Override + public String getUnlocalizedName() + { + return "blockSleepingBag"; + } + + + private void func_149978_e() + { + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.1F, 1.0F); + } + + /** + * Returns whether or not this bed block is the head of the bed. + */ + + public static boolean isBlockHeadOfBed(int meta) + { + return (meta & 8) != 0; + } + + public static ChunkCoordinates verifyRespawnCoordinatesOnBlock(World world, ChunkCoordinates chunkCoordinates, boolean forced) + { + IChunkProvider ichunkprovider = world.getChunkProvider(); + ichunkprovider.loadChunk(chunkCoordinates.posX - 3 >> 4, chunkCoordinates.posZ - 3 >> 4); + ichunkprovider.loadChunk(chunkCoordinates.posX + 3 >> 4, chunkCoordinates.posZ - 3 >> 4); + ichunkprovider.loadChunk(chunkCoordinates.posX - 3 >> 4, chunkCoordinates.posZ + 3 >> 4); + ichunkprovider.loadChunk(chunkCoordinates.posX + 3 >> 4, chunkCoordinates.posZ + 3 >> 4); + + if (world.getBlock(chunkCoordinates.posX, chunkCoordinates.posY, chunkCoordinates.posZ).isBed(world, chunkCoordinates.posX, chunkCoordinates.posY, chunkCoordinates.posZ, null)) + { + ChunkCoordinates newChunkCoords = world.getBlock(chunkCoordinates.posX, chunkCoordinates.posY, chunkCoordinates.posZ).getBedSpawnPosition(world, chunkCoordinates.posX, chunkCoordinates.posY, chunkCoordinates.posZ, null); + return newChunkCoords; + } + + Material material = world.getBlock(chunkCoordinates.posX, chunkCoordinates.posY, chunkCoordinates.posZ).getMaterial(); + Material material1 = world.getBlock(chunkCoordinates.posX, chunkCoordinates.posY + 1, chunkCoordinates.posZ).getMaterial(); + boolean flag1 = (!material.isSolid()) && (!material.isLiquid()); + boolean flag2 = (!material1.isSolid()) && (!material1.isLiquid()); + return (forced) && (flag1) && (flag2) ? chunkCoordinates : null; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int id, float f1, float f2, float f3) + { + if (world.isRemote) + { + return true; + } else + { + int meta = world.getBlockMetadata(x, y, z); + + if (!isBlockHeadOfBed(meta)) + { + int dir = getDirection(meta); + x += footBlockToHeadBlockMap[dir][0]; + z += footBlockToHeadBlockMap[dir][1]; + + if (world.getBlock(x, y, z) != this) + { + return true; + } + + meta = world.getBlockMetadata(x, y, z); + } + + if (world.provider.canRespawnHere() && world.getBiomeGenForCoords(x, z) != BiomeGenBase.hell) + { + if (isBedOccupied(meta)) + { + EntityPlayer entityplayer1 = null; + @SuppressWarnings("rawtypes") + Iterator iterator = world.playerEntities.iterator(); + + while (iterator.hasNext()) + { + EntityPlayer entityplayer2 = (EntityPlayer) iterator.next(); + + if (entityplayer2.isPlayerSleeping()) + { + ChunkCoordinates chunkcoordinates = entityplayer2.playerLocation; + + if (chunkcoordinates.posX == x && chunkcoordinates.posY == y && chunkcoordinates.posZ == z) + { + entityplayer1 = entityplayer2; + } + } + } + + if (entityplayer1 != null) + { + player.addChatComponentMessage(new ChatComponentTranslation("tile.bed.occupied", new Object[0])); + return true; + } + + setBedOccupied(world, x, y, z, false); + } + + EntityPlayer.EnumStatus enumstatus = player.sleepInBedAt(x, y, z); + + if (enumstatus == EntityPlayer.EnumStatus.OK) + { + setBedOccupied(world, x, y, z, true); + //This is so the wake up event can detect it. It fires before the player wakes up. + //and the bed location isn't set until then, normally. + player.setSpawnChunk(new ChunkCoordinates(x,y,z),true,player.dimension); + LogHelper.info("Looking for a campfire nearby..."); + ChunkCoordinates campfire = Utils.findBlock3D(world, x, y, z, ModBlocks.blockCampFire, 8, 2); + if (campfire != null) + { + LogHelper.info("Campfire Found, saving coordinates. " + LogHelper.print3DCoords(campfire)); + BackpackProperty.get(player).setCampFire(campfire); + } + return true; + } else + { + if (enumstatus == EntityPlayer.EnumStatus.NOT_POSSIBLE_NOW) + { + player.addChatComponentMessage(new ChatComponentTranslation("tile.bed.noSleep", new Object[0])); + } else if (enumstatus == EntityPlayer.EnumStatus.NOT_SAFE) + { + player.addChatComponentMessage(new ChatComponentTranslation("tile.bed.notSafe", new Object[0])); + } + + return true; + } + } else + { + double d2 = (double) x + 0.5D; + double d0 = (double) y + 0.5D; + double d1 = (double) z + 0.5D; + world.setBlockToAir(x, y, z); + int k1 = getDirection(meta); + x += footBlockToHeadBlockMap[k1][0]; + z += footBlockToHeadBlockMap[k1][1]; + + if (world.getBlock(x, y, z) == this) + { + world.setBlockToAir(x, y, z); + d2 = (d2 + (double) x + 0.5D) / 2.0D; + d0 = (d0 + (double) y + 0.5D) / 2.0D; + d1 = (d1 + (double) z + 0.5D) / 2.0D; + } + + world.newExplosion((Entity) null, (double) ((float) x + 0.5F), (double) ((float) y + 0.5F), (double) ((float) z + 0.5F), 5.0F, true, true); + return true; + } + } + } + + public static void setBedOccupied(World world, int x, int y, int z, boolean flag) + { + int l = world.getBlockMetadata(x, y, z); + + if (flag) + { + l |= 4; + } else + { + l &= -5; + } + + world.setBlockMetadataWithNotify(x, y, z, l, 4); + } + + public static boolean isBedOccupied(int meta) + { + return (meta & 4) != 0; + } + + public void onNeighborBlockChange(World world, int x, int y, int z, Block block) + { + int meta = world.getBlockMetadata(x, y, z); + int dir = getDirection(meta); + + if (isBlockHeadOfBed(meta)) + { + if (world.getBlock(x - footBlockToHeadBlockMap[dir][0], y, z - footBlockToHeadBlockMap[dir][1]) != this) + { + world.setBlockToAir(x, y, z); + } + } else if (world.getBlock(x + footBlockToHeadBlockMap[dir][0], y, z + footBlockToHeadBlockMap[dir][1]) != this) + { + world.setBlockToAir(x, y, z); + + if (!world.isRemote) + { + this.dropBlockAsItem(world, x, y, z, meta, 0); + } + } + } + + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) + { + this.blockBoundsForRender(); + } + + private void blockBoundsForRender() + { + this.func_149978_e(); + } + + public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) + { + return null; + } + + public static ChunkCoordinates func_149977_a(World world, int x, int y, int z, int whatever) + { + int meta = world.getBlockMetadata(x, y, z); + int dir = BlockDirectional.getDirection(meta); + + for (int k1 = 0; k1 <= 1; ++k1) + { + int l1 = x - footBlockToHeadBlockMap[dir][0] * k1 - 1; + int i2 = z - footBlockToHeadBlockMap[dir][1] * k1 - 1; + int j2 = l1 + 2; + int k2 = i2 + 2; + + for (int l2 = l1; l2 <= j2; ++l2) + { + for (int i3 = i2; i3 <= k2; ++i3) + { + if (World.doesBlockHaveSolidTopSurface(world, l2, y - 1, i3) && !world.getBlock(l2, y, i3).getMaterial().isOpaque() && !world.getBlock(l2, y + 1, i3).getMaterial().isOpaque()) + { + if (whatever <= 0) + { + return new ChunkCoordinates(l2, y, i3); + } + + --whatever; + } + } + } + } + + return null; + } + + @Override + public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) + { + int direction = getDirection(meta); + if (player.capabilities.isCreativeMode && isBlockHeadOfBed(meta)) + { + x -= footBlockToHeadBlockMap[direction][0]; + z -= footBlockToHeadBlockMap[direction][1]; + + if (world.getBlock(x, y, z) == this) + { + world.setBlockToAir(x, y, z); + } + } + } + + + @Override + public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion boom) + { + this.onBlockDestroyedByPlayer(world, x, y, z, world.getBlockMetadata(x, y, z)); + } + + @Override + public void onBlockDestroyedByPlayer(World world, int x, int y, int z, int meta) + { + //LogHelper.info("onBlockDestroyedByPlayer() : BlockSleepingBag"); + @SuppressWarnings("unused") + int direction = getDirection(meta); + int tileZ = z; + int tileX = x; + switch (meta) + { + case 0: + tileZ--; + break; + case 1: + tileX++; + break; + case 2: + tileZ++; + break; + case 3: + tileX--; + break; + } + //LogHelper.info("onBlockDestroyedByPlayer() Looking for tile entity in x=" +tileX+" y="+y+" z="+tileZ+" while breaking the block in x= "+x+" y="+y+" z="+z); + if (world.getTileEntity(tileX, y, tileZ) != null && world.getTileEntity(tileX, y, tileZ) instanceof TileAdventureBackpack) + { + // LogHelper.info("onBlockDestroyedByPlayer() Found the tile entity in x=" +tileX+" y="+y+" z="+z+" while breaking the block in x= "+x+" y="+y+" z="+z+" ...removing."); + ((TileAdventureBackpack) world.getTileEntity(tileX, y, tileZ)).setSleepingBagDeployed(false); + } + } + + @Override + public boolean isBed(IBlockAccess world, int x, int y, int z, EntityLivingBase player) + { + return true; + } + + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) + { + if (side == 0) + { + return Blocks.planks.getBlockTextureFromSide(side); + } else + { + int k = getDirection(meta); + int l = Direction.bedDirection[k][side]; + int isHead = isBlockHeadOfBed(meta) ? 1 : 0; + return (isHead != 1 || l != 2) && (isHead != 0 || l != 3) ? (l != 5 && l != 4 ? this.topIcons[isHead] : this.sideIcons[isHead]) : this.endIcons[isHead]; + } + } + + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) + { + this.topIcons = new IIcon[]{ + iconRegister.registerIcon(Resources.blockTextures("sleepingBag_feet_top").toString()), + iconRegister.registerIcon(Resources.blockTextures("sleepingBag_head_top").toString()) + }; + + this.endIcons = new IIcon[]{ + iconRegister.registerIcon(Resources.blockTextures("sleepingBag_feet_end").toString()), + iconRegister.registerIcon(Resources.blockTextures("sleepingBag_head_end").toString()) + }; + + this.sideIcons = new IIcon[]{ + iconRegister.registerIcon(Resources.blockTextures("sleepingBag_feet_side").toString()), + iconRegister.registerIcon(Resources.blockTextures("sleepingBag_head_side").toString()) + }; + } + + public int getRenderType() + { + return 14; + } + + @Override + public boolean isNormalCube() + { + return false; + } + + /** + * Indicate if a material is a normal solid opaque cube + */ + @Override + public boolean isBlockNormalCube() + { + return false; + } + + /** + * If this block doesn't render as an ordinary block it will return False (examples: signs, buttons, stairs, etc) + */ + @Override + public boolean renderAsNormalBlock() + { + return false; + } + + /** + * Is this block (a) opaque and (b) a full 1m cube? This determines whether or not to render the shared face of two + * adjacent blocks and also whether the player can attach torches, redstone wire, etc to this block. + */ + @Override + public boolean isOpaqueCube() + { + return false; + } + + /** + * Returns if this block is collidable (only used by Fire). Args: x, y, z + */ + @Override + public boolean isCollidable() + { + return super.isCollidable(); + } +} diff --git a/block/TileAdventureBackpack.java b/block/TileAdventureBackpack.java new file mode 100644 index 00000000..0ef77b14 --- /dev/null +++ b/block/TileAdventureBackpack.java @@ -0,0 +1,607 @@ +package com.darkona.adventurebackpack.block; + +import com.darkona.adventurebackpack.common.BackpackAbilities; +import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; +import com.darkona.adventurebackpack.init.ModBlocks; +import com.darkona.adventurebackpack.init.ModItems; +import com.darkona.adventurebackpack.inventory.InventoryActions; +import com.darkona.adventurebackpack.inventory.SlotTool; +import com.darkona.adventurebackpack.item.ItemAdventureBackpack; +import com.darkona.adventurebackpack.util.BackpackUtils; +import net.minecraft.block.Block; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.world.EnumSkyBlock; +import net.minecraft.world.World; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidTank; + +/** + * Created by Darkona on 12/10/2014. + */ +public class TileAdventureBackpack extends TileEntity implements IInventoryAdventureBackpack +{ + + public ItemStack[] inventory; + private FluidTank leftTank; + private FluidTank rightTank; + public boolean sleepingBagDeployed; + private boolean special; + private int sbdir; + private int sbx; + private int sby; + private int sbz; + private int checkTime = 0; + private String colorName; + private int lastTime; + private int luminosity; + private NBTTagCompound extendedProperties; + + public int getLuminosity() + { + return luminosity; + } + + public int getLastTime() + { + return lastTime; + } + + public void setLastTime(int lastTime) + { + this.lastTime = lastTime; + } + + public NBTTagCompound getExtendedProperties() + { + return extendedProperties; + } + + public void setExtendedProperties(NBTTagCompound extendedProperties) + { + this.extendedProperties = extendedProperties; + } + + public TileAdventureBackpack() + { + leftTank = new FluidTank(Constants.basicTankCapacity); + rightTank = new FluidTank(Constants.basicTankCapacity); + inventory = new ItemStack[Constants.inventorySize]; + sleepingBagDeployed = false; + setColorName("Standard"); + luminosity = 0; + lastTime = 0; + checkTime = 0; + extendedProperties = new NBTTagCompound(); + } + + public boolean deploySleepingBag(EntityPlayer player, World world, int x, int y, int z, int meta) + { + if (world.isRemote) return false; + Block sleepingBag = ModBlocks.blockSleepingBag; + if (world.setBlock(x, y, z, sleepingBag, meta, 3)) + { + world.playSoundAtEntity(player, Block.soundTypeCloth.func_150496_b(), 0.5f, 1.0f); + sbx = x; + sby = y; + sbz = z; + sbdir = meta; + switch (meta & 3) + { + case 0: + ++z; + break; + case 1: + --x; + break; + case 2: + --z; + break; + case 3: + ++x; + break; + } + sleepingBagDeployed = world.setBlock(x, y, z, sleepingBag, meta + 8, 3); + //LogHelper.info("deploySleepingBag() => SleepingBagDeployed is: " + sleepingBagDeployed); + world.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); + return sleepingBagDeployed; + } + return false; + } + + public void setSleepingBagDeployed(boolean state) + { + this.sleepingBagDeployed = state; + } + + public boolean removeSleepingBag(World world) + { + if (sleepingBagDeployed) + { + if (world.getBlock(sbx, sby, sbz) == ModBlocks.blockSleepingBag) + { + world.func_147480_a(sbx, sby, sbz, false); + this.sleepingBagDeployed = false; + markDirty(); + return true; + } + } else + { + this.sleepingBagDeployed = false; + markDirty(); + } + return false; + } + + //=====================================================GETTERS====================================================// + + public String getColorName() + { + return colorName; + } + + @Override + public ItemStack[] getInventory() + { + return this.inventory; + } + + @Override + public int getSizeInventory() + { + return inventory.length; + } + + @Override + public ItemStack getStackInSlot(int slot) + { + return inventory[slot]; + } + + @Override + public String getInventoryName() + { + return null; + } + + @Override + public int getInventoryStackLimit() + { + return 64; + } + + @Override + public FluidTank getLeftTank() + { + return leftTank; + } + + @Override + public FluidTank getRightTank() + { + return rightTank; + } + + //=====================================================SETTERS====================================================// + + + public void setColorName(String string) + { + this.colorName = string; + } + + //=====================================================BOOLEANS===================================================// + @Override + public boolean hasCustomInventoryName() + { + return false; + } + + @Override + public boolean isUseableByPlayer(EntityPlayer player) + { + return worldObj.getTileEntity(xCoord, yCoord, zCoord) == this && player.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) <= 64; + } + + public boolean isSBDeployed() + { + return this.sleepingBagDeployed; + } + + public boolean isSpecial() + { + return special; + } + + //=======================================================NBT======================================================// + @Override + public void readFromNBT(NBTTagCompound compound) + { + super.readFromNBT(compound); + loadFromNBT(compound); + sleepingBagDeployed = compound.getBoolean("sleepingbag"); + sbx = compound.getInteger("sbx"); + sby = compound.getInteger("sby"); + sbz = compound.getInteger("sbz"); + sbdir = compound.getInteger("sbdir"); + luminosity = compound.getInteger("lumen"); + } + + @Override + public void writeToNBT(NBTTagCompound compound) + { + super.writeToNBT(compound); + saveToNBT(compound); + compound.setBoolean("sleepingbag", sleepingBagDeployed); + compound.setInteger("sbx", sbx); + compound.setInteger("sby", sby); + compound.setInteger("sbz", sbz); + compound.setInteger("lumen", luminosity); + compound.setInteger("sbdir", sbdir); + } + + @Override + public void loadFromNBT(NBTTagCompound compound) + { + if(compound.hasKey("backpackData")) + { + NBTTagCompound backpackData = compound.getCompoundTag("backpackData"); + NBTTagList items = backpackData.getTagList("ABPItems", net.minecraftforge.common.util.Constants.NBT.TAG_COMPOUND); + for (int i = 0; i < items.tagCount(); i++) + { + NBTTagCompound item = items.getCompoundTagAt(i); + byte slot = item.getByte("Slot"); + if (slot >= 0 && slot < inventory.length) + { + inventory[slot] = ItemStack.loadItemStackFromNBT(item); + } + } + leftTank.readFromNBT(backpackData.getCompoundTag("leftTank")); + rightTank.readFromNBT(backpackData.getCompoundTag("rightTank")); + colorName = backpackData.getString("colorName"); + lastTime = backpackData.getInteger("lastTime"); + special = backpackData.getBoolean("special"); + extendedProperties = backpackData.getCompoundTag("extended"); + } + } + + @Override + public void saveToNBT(NBTTagCompound compound) + { + NBTTagCompound backpackData = new NBTTagCompound(); + NBTTagList items = new NBTTagList(); + for (int i = 0; i < inventory.length; i++) + { + ItemStack stack = inventory[i]; + if (stack != null) + { + NBTTagCompound item = new NBTTagCompound(); + item.setByte("Slot", (byte) i); + stack.writeToNBT(item); + items.appendTag(item); + } + } + backpackData.setTag("ABPItems", items); + backpackData.setString("colorName", colorName); + backpackData.setInteger("lastTime", lastTime); + backpackData.setBoolean("special", BackpackAbilities.hasAbility(colorName)); + backpackData.setTag("extended", extendedProperties); + backpackData.setTag("rightTank", rightTank.writeToNBT(new NBTTagCompound())); + backpackData.setTag("leftTank", leftTank.writeToNBT(new NBTTagCompound())); + + compound.setTag("backpackData",backpackData); + } + + @Override + public FluidTank[] getTanksArray() + { + FluidTank[] tanks = {leftTank,rightTank}; + return tanks; + } + + //====================================================INVENTORY===================================================// + @Override + public void openInventory() + { + } + + @Override + public void closeInventory() + { + markDirty(); + } + + @Override + public boolean isItemValidForSlot(int slot, ItemStack stack) + { + if (stack.getItem() instanceof ItemAdventureBackpack || Block.getBlockFromItem(stack.getItem()) instanceof BlockAdventureBackpack) + { + return false; + } + if (slot == 6 || slot == 8) + { + return FluidContainerRegistry.isContainer(stack); + } + + return !(slot == 0 || slot == 3) || SlotTool.isValidTool(stack); + } + + @Override + public ItemStack decrStackSize(int i, int count) + { + ItemStack itemstack = getStackInSlot(i); + + if (itemstack != null) + { + if (itemstack.stackSize <= count) + { + setInventorySlotContents(i, null); + } else + { + itemstack = itemstack.splitStack(count); + } + } + markDirty(); + return itemstack; + } + + @Override + public ItemStack getStackInSlotOnClosing(int slot) + { + if (slot == Constants.bucketInLeft || slot == Constants.bucketInRight || slot == Constants.bucketOutLeft || slot == Constants.bucketOutRight) + { + return inventory[slot]; + } + return null; + } + + @Override + public void setInventorySlotContents(int i, ItemStack itemstack) + { + + inventory[i] = itemstack; + if (itemstack != null && itemstack.stackSize > getInventoryStackLimit()) + { + itemstack.stackSize = getInventoryStackLimit(); + } + markDirty(); + } + + @Override + public void markDirty() + { + for (int i = 0; i < inventory.length; i++) + { + if (i == Constants.bucketInLeft && inventory[i] != null) + { + updateTankSlots(getLeftTank(), i); + } + + if (i == Constants.bucketInRight && inventory[i] != null) + { + updateTankSlots(getRightTank(), i); + } + } + super.markDirty(); + } + + @Override + public void setInventorySlotContentsNoSave(int slot, ItemStack itemstack) + { + if (slot > inventory.length) return; + inventory[slot] = itemstack; + if (itemstack != null && itemstack.stackSize > getInventoryStackLimit()) + { + itemstack.stackSize = getInventoryStackLimit(); + } + } + + @Override + public ItemStack decrStackSizeNoSave(int slot, int amount) + { + ItemStack stack = getStackInSlot(slot); + + if (stack != null) + { + if (stack.stackSize <= amount) + { + setInventorySlotContentsNoSave(slot, null); + } else + { + stack = stack.splitStack(amount); + } + } + return stack; + } + + @Override + public boolean hasItem(Item item) + { + return InventoryActions.hasItem(this, item); + } + + @Override + public void consumeInventoryItem(Item item) + { + InventoryActions.consumeItemInInventory(this, item); + } + + //===================================================TILE ENTITY==================================================// + + //SEND SYNC PACKET + @Override + public Packet getDescriptionPacket() + { + NBTTagCompound compound = new NBTTagCompound(); + writeToNBT(compound); + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, compound); + } + + //RECEIV SYNC PACKET - This is necessary for the TileEntity to load the nbt as soon as it is loaded and be rendered + //properly when the custom renderer reads it + @Override + public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) + { + super.onDataPacket(net, pkt); + readFromNBT(pkt.func_148857_g()); + } + + @Override + public void updateEntity() + { + //Execute this backpack's ability. No, seriously. You might not infer that from the code. Just sayin' + if (isSpecial() && !colorName.isEmpty()) + { + BackpackAbilities.backpackAbilities.executeAbility(null, this.worldObj, this); + } + + //Check for backpack luminosity and a deployed sleeping bag, just in case because i'm super paranoid. + if (checkTime == 0) + { + int lastLumen = luminosity; + int left = (leftTank.getFluid() != null) ? leftTank.getFluid().getFluid().getLuminosity() : 0; + int right = (rightTank.getFluid() != null) ? rightTank.getFluid().getFluid().getLuminosity() : 0; + luminosity = Math.max(left, right); + if (luminosity != lastLumen) + { + int meta = worldObj.getBlockMetadata(xCoord, yCoord, zCoord); + worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.blockBackpack, meta, 3); + worldObj.setLightValue(EnumSkyBlock.Block, xCoord, yCoord, zCoord, luminosity); + } + if (worldObj.getBlock(sbx, sby, sbz) != ModBlocks.blockSleepingBag) + { + sleepingBagDeployed = false; + } + checkTime = 20; + } else + { + checkTime--; + } + } + + public void updateTankSlots(FluidTank tank, int slotIn) + { + InventoryActions.transferContainerTank(this, tank, slotIn); + } + + @Override + public void saveTanks(NBTTagCompound compound) + { + NBTTagCompound backpackData; + if(compound.hasKey("backpackData")) + { + backpackData = compound.getCompoundTag("backpackData"); + }else{ + backpackData = new NBTTagCompound(); + } + backpackData.setTag("rightTank", rightTank.writeToNBT(new NBTTagCompound())); + backpackData.setTag("leftTank", leftTank.writeToNBT(new NBTTagCompound())); + compound.setTag("backpackData",backpackData); + } + + @Override + public void loadTanks(NBTTagCompound compound) + { + if(compound.hasKey("backpackData")) + { + NBTTagCompound backpackData = compound.getCompoundTag("backpackData"); + leftTank.readFromNBT(backpackData.getCompoundTag("leftTank")); + rightTank.readFromNBT(backpackData.getCompoundTag("rightTank")); + } + } + + @Override + public TileAdventureBackpack getTile() + { + return this; + } + + @Override + public ItemStack getParentItemStack() + { + return null; + } + + + private ItemStack transferToItemStack(ItemStack stack) + { + NBTTagCompound compound = new NBTTagCompound(); + saveToNBT(compound); + stack.setTagCompound(compound); + return stack; + } + + //=====================================================BACKPACK===================================================// + public boolean equip(World world, EntityPlayer player, int x, int y, int z) + { + ItemStack stacky = new ItemStack(ModItems.adventureBackpack, 1); + transferToItemStack(stacky); + removeSleepingBag(world); + if (BackpackUtils.equipWearable(stacky, player) != BackpackUtils.reasons.SUCCESFUL) + { + player.addChatComponentMessage(new ChatComponentTranslation("You already have a adventurebackpack on your back please take it off if you want to equip this one")); + if (!player.inventory.addItemStackToInventory(stacky)) + { + return drop(world, player, x, y, z); + } + } + return true; + } + + public boolean drop(World world, EntityPlayer player, int x, int y, int z) + { + removeSleepingBag(world); + if (player.capabilities.isCreativeMode) return true; + ItemStack stacky = new ItemStack(ModItems.adventureBackpack, 1); + transferToItemStack(stacky); + float spawnX = x + world.rand.nextFloat(); + float spawnY = y + world.rand.nextFloat(); + float spawnZ = z + world.rand.nextFloat(); + + EntityItem droppedItem = new EntityItem(world, spawnX, spawnY, spawnZ, stacky); + + float mult = 0.05F; + + droppedItem.motionX = (-0.5F + world.rand.nextFloat()) * mult; + droppedItem.motionY = (4 + world.rand.nextFloat()) * mult; + droppedItem.motionZ = (-0.5F + world.rand.nextFloat()) * mult; + + return world.spawnEntityInWorld(droppedItem); + } + + + @Override + public boolean updateTankSlots() + { + return false; + } + + public void dirtyTanks() + { + + } + + public void dirtyTime() + { + } + + public void dirtyExtended() + { + + } + + public void dirtyInventory() + { + + } +} diff --git a/block/TileCampfire.java b/block/TileCampfire.java new file mode 100644 index 00000000..8ac595b7 --- /dev/null +++ b/block/TileCampfire.java @@ -0,0 +1,21 @@ +package com.darkona.adventurebackpack.block; + +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; + +/** + * Created on 08/01/2015 + * + * @author Darkona + */ +public class TileCampfire extends TileEntity +{ + public TileCampfire() + { + } + + @SuppressWarnings("unused") + private int burnTicks; + @SuppressWarnings("unused") + private ItemStack[] foodCooking = new ItemStack[4]; +} diff --git a/client/ClientActions.java b/client/ClientActions.java new file mode 100644 index 00000000..5f342344 --- /dev/null +++ b/client/ClientActions.java @@ -0,0 +1,80 @@ +package com.darkona.adventurebackpack.client; + +import com.darkona.adventurebackpack.client.audio.*; +import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; +import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; +import cpw.mods.fml.client.FMLClientHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.audio.SoundHandler; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; + +/** + * Created on 11/10/2014 + * + * @author Darkona + * @see com.darkona.adventurebackpack.handlers.PlayerEventHandler + * @see com.darkona.adventurebackpack.fluids.FluidEffectRegistry + * @see com.darkona.adventurebackpack.common.BackpackAbilities + */ +public class ClientActions +{ + + @SideOnly(Side.CLIENT) + public static void showParticlesAtEntity(Entity entity, byte particleCode) + { + if (entity instanceof EntityPlayer) + { + EntityPlayer player = (EntityPlayer) entity; + switch (particleCode) + { + case EntityParticlePacket.COPTER_PARTICLE: + Visuals.CopterParticles(player, player.worldObj); + break; + case EntityParticlePacket.NYAN_PARTICLE: + Visuals.NyanParticles(player, player.worldObj); + break; + case EntityParticlePacket.SLIME_PARTICLE: + Visuals.SlimeParticles(player, player.worldObj); + break; + case EntityParticlePacket.JETPACK_PARTICLE: + Visuals.JetpackParticles(player, player.worldObj); + break; + } + } + } + + @SideOnly(Side.CLIENT) + public static void playSoundAtEntity(Entity entity, byte soundCode) + { + SoundHandler snd = FMLClientHandler.instance().getClient().getSoundHandler(); + if (entity instanceof EntityPlayer) + { + EntityPlayer player = (EntityPlayer) entity; + switch (soundCode) + { + case EntitySoundPacket.COPTER_SOUND: + if (ConfigHandler.ALLOW_COPTER_SOUND) + { + snd.playSound(new CopterPackSound(player)); + } + break; + case EntitySoundPacket.NYAN_SOUND: + snd.playSound(new NyanMovingSound(player)); + break; + case EntitySoundPacket.JETPACK_FIZZ: + snd.playSound(new JetpackSoundOn(player)); + break; + case EntitySoundPacket.BOILING_BUBBLES: + snd.playSound(new BoilingBoilerSound(player)); + break; + case EntitySoundPacket.LEAKING_STEAM: + snd.playSound(new LeakingBoilerSound(player)); + break; + } + } + } + +} diff --git a/client/Icons.java b/client/Icons.java new file mode 100644 index 00000000..20284492 --- /dev/null +++ b/client/Icons.java @@ -0,0 +1,19 @@ +package com.darkona.adventurebackpack.client; + +import net.minecraft.util.IIcon; + +/** + * Created on 14/10/2014 + * + * @author Darkona + */ +public class Icons +{ + public static IIcon milkFlowing; + public static IIcon milkStill; + + public static IIcon melonJuiceFlowing; + public static IIcon melonJuiceStill; + public static IIcon mushRoomStewStill; + public static IIcon mushRoomStewFlowing; +} diff --git a/client/Visuals.java b/client/Visuals.java new file mode 100644 index 00000000..92407568 --- /dev/null +++ b/client/Visuals.java @@ -0,0 +1,129 @@ +package com.darkona.adventurebackpack.client; + +import com.darkona.adventurebackpack.entity.fx.SteamFX; +import net.minecraft.client.Minecraft; +import net.minecraft.client.particle.EntityFX; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +/** + * Created on 17/10/2014 + * + * @author Darkona + */ +public class Visuals +{ + + public static void NyanParticles(EntityPlayer player, World world) + { + // World world = player.worldObj; + int i = 2; + for (int j = 0; j < i * 3; ++j) + { + float f = world.rand.nextFloat() * (float) Math.PI * 2.0F; + float f1 = world.rand.nextFloat() * 0.5F + 0.5F; + float f2 = MathHelper.sin(f) * i * 0.5F * f1; + float f3 = MathHelper.cos(f) * i * 0.5F * f1; + world.spawnParticle("note", + player.posX + f2, + player.boundingBox.minY + 0.8f, + player.posZ + f3, + (double) (float) Math.pow(2.0D, (world.rand.nextInt(169) - 12) / 12.0D) / 24.0D, + -1.0D, + 0.0D); + } + } + + public static void SlimeParticles(EntityPlayer player, World world) + { + int i = 3; + for (int j = 0; j < i * 2; ++j) + { + float f = world.rand.nextFloat() * (float) Math.PI * 2.0F; + float f1 = world.rand.nextFloat() * 0.5F + 0.5F; + float f2 = MathHelper.sin(f) * i * 0.5F * f1; + float f3 = MathHelper.cos(f) * i * 0.5F * f1; + world.spawnParticle("slime", player.posX + f2, player.boundingBox.minY, player.posZ + f3, 0.0D, 0.0625D, 0.0D); + } + } + + public static void CopterParticles(EntityPlayer player, World world) + { + Vec3 playerPosition = Vec3.createVectorHelper(player.posX, player.posY, player.posZ); + Vec3 victor = Vec3.createVectorHelper(-0.25D, -0.19D, -0.40D); + victor.rotateAroundY(-player.renderYawOffset * 3.141593F / 180.0F); + Vec3 finalPosition = playerPosition.addVector(victor.xCoord, victor.yCoord, victor.zCoord); + world.spawnParticle("smoke", finalPosition.xCoord, finalPosition.yCoord, finalPosition.zCoord, 0, -0.4, 0); + } + + public static void JetpackParticles(EntityPlayer player, World world) + { + Vec3 playerPosition = Vec3.createVectorHelper(player.posX, player.posY, player.posZ); + Vec3 victor = Vec3.createVectorHelper(-0.5D, -0.5D, -0.5D); + Vec3 victoria = Vec3.createVectorHelper(0.5D, -0.5D, -0.5D); + victor.rotateAroundY(-player.renderYawOffset * 3.141593F / 180.0F); + victoria.rotateAroundY(-player.renderYawOffset * 3.141593F / 180.0F); + Vec3 leftPosition = victor.addVector(playerPosition.xCoord, playerPosition.yCoord, playerPosition.zCoord); + Vec3 rightPosition = victoria.addVector(playerPosition.xCoord, playerPosition.yCoord, playerPosition.zCoord); + for(int i = 0; i< 4; i++) + { + spawnParticle("steam", leftPosition.xCoord, leftPosition.yCoord, leftPosition.zCoord, 0.04*world.rand.nextGaussian(), -0.8, 0.04 * world.rand.nextGaussian()); + spawnParticle("steam", rightPosition.xCoord, rightPosition.yCoord, rightPosition.zCoord, 0.04 * world.rand.nextGaussian(), -0.8, 0.04 * world.rand.nextGaussian()); + } + } + + + private static Minecraft mc = Minecraft.getMinecraft(); + private static World theWorld = mc.theWorld; + + public static EntityFX spawnParticle(String particleName, double x, double y, double z, double motionX, double motionY, double motionZ) + { + if (mc != null && mc.renderViewEntity != null && mc.effectRenderer != null) + { + int particleSetting = mc.gameSettings.particleSetting; + + if (particleSetting == 1 && theWorld.rand.nextInt(3) == 0) + { + particleSetting = 2; + } + + double renderX = mc.renderViewEntity.posX - x; + double renderY = mc.renderViewEntity.posY - y; + double renderZ = mc.renderViewEntity.posZ - z; + EntityFX entityFX = null; + double var22 = 16.0D; + + if (renderX * renderX + renderY * renderY + renderZ * renderZ > var22 * var22) + { + return null; + } + else if (particleSetting > 1) + { + return null; + } + else + { + if (particleName.equals("steam")) + { + entityFX = new SteamFX(theWorld, x, y, z, (float) motionX, (float) motionY, (float) motionZ); + /* + try + { + entityFX = (EntityFX) Class.forName("mods.railcraft.client.particles.EntitySteamFX") + .getConstructor(World.class,int.class,int.class,int.class,float.class,float.class,float.class) + .newInstance(theWorld, x, y, z, (float) motionX, (float) motionY, (float) motionZ); + }catch(Exception ex) + { + entityFX = new SteamFX(theWorld, x, y, z, (float) motionX, (float) motionY, (float) motionZ); + } + */ + } + mc.effectRenderer.addEffect(entityFX); + return entityFX; + } + } + return null; + } +} diff --git a/client/audio/BoilingBoilerSound.java b/client/audio/BoilingBoilerSound.java new file mode 100644 index 00000000..5a8b5c8d --- /dev/null +++ b/client/audio/BoilingBoilerSound.java @@ -0,0 +1,103 @@ +package com.darkona.adventurebackpack.client.audio; + +import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; +import com.darkona.adventurebackpack.reference.ModInfo; +import com.darkona.adventurebackpack.util.Wearing; +import net.minecraft.client.audio.MovingSound; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ResourceLocation; + +/** + * Created on 16/01/2015 + * + * @author Darkona + */ +public class BoilingBoilerSound extends MovingSound +{ + + public EntityPlayer thePlayer; + protected boolean repeat = true; + protected int repeatDelay = 0; + + protected float pitch; + + public BoilingBoilerSound(EntityPlayer player) + { + super(new ResourceLocation(ModInfo.MOD_ID, "s_boiling")); + volume = 0.25f; + pitch = 0.4F; + thePlayer = player; + } + + public EntityPlayer getThePlayer() + { + return thePlayer; + } + + public void setThePlayer(EntityPlayer player){ + thePlayer = player; + } + + public void setDonePlaying() + { + repeat = false; + donePlaying = true; + repeatDelay = 0; + } + + @Override + public boolean isDonePlaying() + { + return this.donePlaying; + } + + @Override + public void update() + { + + if (thePlayer == null || thePlayer.isDead || thePlayer.worldObj == null || !Wearing.isWearingSteam(thePlayer)) + { + setDonePlaying(); + return; + } + + InventoryCoalJetpack inv = new InventoryCoalJetpack(Wearing.getWearingSteam(thePlayer)); + if(inv.isLava() && inv.getWaterTank().getFluidAmount() > 0) + { + xPosF = (float)thePlayer.posX; + yPosF = (float)thePlayer.posY; + zPosF = (float)thePlayer.posZ; + }else + { + setDonePlaying(); + } + } + + @Override + public boolean canRepeat() + { + return this.repeat; + } + + @Override + public float getVolume() + { + return this.volume; + } + + @Override + public float getPitch() + { + return this.pitch; + } + + @Override + public int getRepeatDelay(){ return this.repeatDelay; } + + @Override + public AttenuationType getAttenuationType() + { + return AttenuationType.LINEAR; + } + +} diff --git a/client/audio/CopterPackSound.java b/client/audio/CopterPackSound.java new file mode 100644 index 00000000..6c1a4787 --- /dev/null +++ b/client/audio/CopterPackSound.java @@ -0,0 +1,130 @@ +package com.darkona.adventurebackpack.client.audio; + +import com.darkona.adventurebackpack.item.ItemCopterPack; +import com.darkona.adventurebackpack.reference.ModInfo; +import com.darkona.adventurebackpack.util.LogHelper; +import com.darkona.adventurebackpack.util.Wearing; +import net.minecraft.client.audio.MovingSound; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +/** + * Created on 16/10/2014 + * + * @author Darkona + */ +public class CopterPackSound extends MovingSound +{ + + public EntityPlayer thePlayer; + protected boolean repeat = true; + protected int repeatDelay = 0; + + protected float pitch; + + + public CopterPackSound(EntityPlayer player) + { + super(new ResourceLocation(ModInfo.MOD_ID, "helicopter")); + volume = 0.6f; + pitch = 1.0F; + thePlayer = player; + } + + public EntityPlayer getThePlayer() + { + return thePlayer; + } + + public void setThePlayer(EntityPlayer player){ + thePlayer = player; + } + + public void setRepeat(boolean newRepeat){ + LogHelper.info("Setting sound repeat"); + repeat = newRepeat; + } + + + public void setDonePlaying() + { + this.repeat = false; + this.donePlaying = true; + this.repeatDelay = 0; + } + + @Override + public boolean isDonePlaying() + { + return this.donePlaying; + } + + @Override + public void update() + { + ItemStack copter = Wearing.getWearingCopter(thePlayer); + byte status = 0; + if(thePlayer == null || thePlayer.worldObj == null || copter ==null || !(copter.getItem() instanceof ItemCopterPack)) + { + setDonePlaying(); + return; + } + if (copter.hasTagCompound() && copter.getTagCompound().hasKey("status")) + { + status = copter.getTagCompound().getByte("status"); + if (status == ItemCopterPack.OFF_MODE) + { + setDonePlaying(); + }else{ + if(status == ItemCopterPack.HOVER_MODE) + { + pitch = (thePlayer.motionY > 0) ? 1.2f : (thePlayer.motionY < -0.1) ? 0.8f : 1.0f; + } + if(status == ItemCopterPack.NORMAL_MODE) + { + if(thePlayer.onGround) + { + pitch = 0.8f; + }else + { + pitch = (thePlayer.motionY > 0) ? 1.2f : (thePlayer.isSneaking()) ? 0.8f : 1.0f; + } + } + } + }else{ + setDonePlaying(); + } + xPosF = (float)thePlayer.posX; + yPosF = (float)thePlayer.posY; + zPosF = (float)thePlayer.posZ; + } + + @Override + public boolean canRepeat() + { + return this.repeat; + } + + @Override + public float getVolume() + { + return this.volume; + } + + @Override + public float getPitch() + { + return this.pitch; + } + + @Override + public int getRepeatDelay(){ return this.repeatDelay; } + + @Override + public AttenuationType getAttenuationType() + { + return AttenuationType.LINEAR; + } + +} diff --git a/client/audio/JetpackSoundOn.java b/client/audio/JetpackSoundOn.java new file mode 100644 index 00000000..689aae64 --- /dev/null +++ b/client/audio/JetpackSoundOn.java @@ -0,0 +1,102 @@ +package com.darkona.adventurebackpack.client.audio; + +import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; +import com.darkona.adventurebackpack.reference.ModInfo; +import com.darkona.adventurebackpack.util.Wearing; +import net.minecraft.client.audio.MovingSound; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ResourceLocation; + +/** + * Created on 16/01/2015 + * + * @author Darkona + */ +public class JetpackSoundOn extends MovingSound +{ + + public EntityPlayer thePlayer; + protected boolean repeat = true; + protected int repeatDelay = 0; + + protected float pitch; + + public JetpackSoundOn(EntityPlayer player) + { + super(new ResourceLocation(ModInfo.MOD_ID, "s_jetpackon")); + volume = 0.9f; + pitch = 1.0F; + thePlayer = player; + } + + public EntityPlayer getThePlayer() + { + return thePlayer; + } + + public void setThePlayer(EntityPlayer player){ + thePlayer = player; + } + + public void setDonePlaying() + { + repeat = false; + donePlaying = true; + repeatDelay = 0; + } + + @Override + public boolean isDonePlaying() + { + return this.donePlaying; + } + + @Override + public void update() + { + if (thePlayer == null || thePlayer.isDead || thePlayer.worldObj == null || !Wearing.isWearingSteam(thePlayer)) + { + setDonePlaying(); + return; + } + + InventoryCoalJetpack inv = new InventoryCoalJetpack(Wearing.getWearingSteam(thePlayer)); + if(inv.isInUse()) + { + xPosF = (float)thePlayer.posX; + yPosF = (float)thePlayer.posY; + zPosF = (float)thePlayer.posZ; + }else + { + setDonePlaying(); + } + } + + @Override + public boolean canRepeat() + { + return this.repeat; + } + + @Override + public float getVolume() + { + return this.volume; + } + + @Override + public float getPitch() + { + return this.pitch; + } + + @Override + public int getRepeatDelay(){ return this.repeatDelay; } + + @Override + public AttenuationType getAttenuationType() + { + return AttenuationType.LINEAR; + } + +} diff --git a/client/audio/LeakingBoilerSound.java b/client/audio/LeakingBoilerSound.java new file mode 100644 index 00000000..b544ba41 --- /dev/null +++ b/client/audio/LeakingBoilerSound.java @@ -0,0 +1,102 @@ +package com.darkona.adventurebackpack.client.audio; + +import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; +import com.darkona.adventurebackpack.reference.ModInfo; +import com.darkona.adventurebackpack.util.Wearing; +import net.minecraft.client.audio.MovingSound; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ResourceLocation; + +/** + * Created on 16/01/2015 + * + * @author Darkona + */ +public class LeakingBoilerSound extends MovingSound +{ + + public EntityPlayer thePlayer; + protected boolean repeat = true; + protected int repeatDelay = 0; + + protected float pitch; + + public LeakingBoilerSound(EntityPlayer player) + { + super(new ResourceLocation(ModInfo.MOD_ID, "s_background2")); + volume = 0.2f; + pitch = 1.2F; + thePlayer = player; + } + + public EntityPlayer getThePlayer() + { + return thePlayer; + } + + public void setThePlayer(EntityPlayer player){ + thePlayer = player; + } + + public void setDonePlaying() + { + repeat = false; + donePlaying = true; + repeatDelay = 0; + } + + @Override + public boolean isDonePlaying() + { + return this.donePlaying; + } + + @Override + public void update() + { + if (thePlayer == null || thePlayer.isDead || thePlayer.worldObj == null || !Wearing.isWearingSteam(thePlayer)) + { + setDonePlaying(); + return; + } + + InventoryCoalJetpack inv = new InventoryCoalJetpack(Wearing.getWearingSteam(thePlayer)); + if(inv.isLeaking()) + { + xPosF = (float)thePlayer.posX; + yPosF = (float)thePlayer.posY; + zPosF = (float)thePlayer.posZ; + }else + { + setDonePlaying(); + } + } + + @Override + public boolean canRepeat() + { + return this.repeat; + } + + @Override + public float getVolume() + { + return this.volume; + } + + @Override + public float getPitch() + { + return this.pitch; + } + + @Override + public int getRepeatDelay(){ return this.repeatDelay; } + + @Override + public AttenuationType getAttenuationType() + { + return AttenuationType.LINEAR; + } + +} diff --git a/client/audio/NyanMovingSound.java b/client/audio/NyanMovingSound.java new file mode 100644 index 00000000..c4329e25 --- /dev/null +++ b/client/audio/NyanMovingSound.java @@ -0,0 +1,119 @@ +package com.darkona.adventurebackpack.client.audio; + +import com.darkona.adventurebackpack.reference.ModInfo; +import com.darkona.adventurebackpack.util.Wearing; +import net.minecraft.client.audio.MovingSound; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ResourceLocation; + +/** + * Created on 16/10/2014 + * + * @author Darkona + */ +public class NyanMovingSound extends MovingSound +{ + + public static NyanMovingSound instance = new NyanMovingSound(); + + public EntityPlayer getPlayer() + { + return player; + } + + public NyanMovingSound setPlayer(EntityPlayer p) + { + this.player = p; + return this; + } + + private EntityPlayer player; + + public NyanMovingSound(EntityPlayer player) + { + super(new ResourceLocation(ModInfo.MOD_ID, "nyan")); + this.volume = 0.8f; + this.player = player; + } + + public NyanMovingSound() + { + super(new ResourceLocation(ModInfo.MOD_ID, "nyan")); + } + + public void setDonePlaying() + { + this.donePlaying = true; + } + + @Override + public void update() + { + if (player == null || player.isDead) + { + this.donePlaying = true; + } else + { + if (Wearing.isWearingTheRightBackpack(player, "Rainbow")) + { + this.volume = 0.8f; + } else + { + this.donePlaying = true; + // this.volume = 0.0f; + } + + this.xPosF = (float) this.player.posX; + this.yPosF = (float) this.player.posY; + this.zPosF = (float) this.player.posZ; + } + } + + @Override + public boolean canRepeat() + { + return false; + } + + @Override + public int getRepeatDelay() + { + return super.getRepeatDelay(); + } + + @Override + public float getVolume() + { + return super.getVolume(); + } + + @Override + public float getPitch() + { + return super.getPitch(); + } + + @Override + public float getXPosF() + { + return super.getXPosF(); + } + + @Override + public float getYPosF() + { + return super.getYPosF(); + } + + @Override + public float getZPosF() + { + return super.getZPosF(); + } + + @Override + public AttenuationType getAttenuationType() + { + return AttenuationType.LINEAR; + } +} diff --git a/client/gui/GuiAdvBackpack.java b/client/gui/GuiAdvBackpack.java new file mode 100644 index 00000000..fc511525 --- /dev/null +++ b/client/gui/GuiAdvBackpack.java @@ -0,0 +1,247 @@ +package com.darkona.adventurebackpack.client.gui; + +import com.darkona.adventurebackpack.block.TileAdventureBackpack; +import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; +import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.config.Keybindings; +import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.inventory.ContainerBackpack; +import com.darkona.adventurebackpack.inventory.InventoryBackpack; +import com.darkona.adventurebackpack.network.EquipUnequipBackWearablePacket; +import com.darkona.adventurebackpack.network.SleepingBagPacket; +import com.darkona.adventurebackpack.util.Resources; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fluids.FluidTank; +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; + +/** + * Created on 12/10/2014 + * + * @author Darkona + */ +@SideOnly(Side.CLIENT) +public class GuiAdvBackpack extends GuiWithTanks +{ + + protected IInventoryAdventureBackpack inventory; + protected boolean isTile; + protected boolean wearing; + protected int X; + protected int Y; + protected int Z; + private EntityPlayer player; + private static final ResourceLocation texture = Resources.guiTextures("guiBackpackNew"); + private static GuiImageButtonNormal bedButton = new GuiImageButtonNormal(5, 91, 18, 18); + private static GuiImageButtonNormal equipButton = new GuiImageButtonNormal(5, 91, 18, 18); + private static GuiImageButtonNormal unequipButton = new GuiImageButtonNormal(5, 91, 18, 18); + private static GuiTank tankLeft = new GuiTank(25, 7, 100, 16, ConfigHandler.GUI_TANK_RENDER); + private static GuiTank tankRight = new GuiTank(207, 7, 100, 16, ConfigHandler.GUI_TANK_RENDER); + private FluidTank lft; + private FluidTank rgt; + public int lefties; + public int topsies; + + public GuiAdvBackpack(EntityPlayer player, TileAdventureBackpack tileBackpack) + { + super(new ContainerBackpack(player, tileBackpack, ContainerBackpack.SOURCE_TILE)); + this.inventory = tileBackpack; + this.isTile = true; + xSize = 248; + ySize = 207; + this.X = tileBackpack.xCoord; + this.Y = tileBackpack.yCoord; + this.Z = tileBackpack.zCoord; + this.player = player; + this.lefties = guiLeft; + this.topsies = guiTop; + } + + public GuiAdvBackpack(EntityPlayer player, InventoryBackpack inventoryBackpack, boolean wearing) + { + super(new ContainerBackpack(player, inventoryBackpack, wearing ? ContainerBackpack.SOURCE_WEARING : ContainerBackpack.SOURCE_HOLDING)); + this.inventory = inventoryBackpack; + this.wearing = wearing; + this.isTile = false; + xSize = 248; + ySize = 207; + this.player = player; + this.lefties = guiLeft; + this.topsies = guiTop; + } + + @Override + public void onGuiClosed() + { + if (inventory != null) + { + inventory.closeInventory(); + } + super.onGuiClosed(); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) + { + GL11.glColor4f(1, 1, 1, 1); + + this.mc.renderEngine.bindTexture(texture); + + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + // Buttons and button highlight + if (isTile) + { + if (bedButton.inButton(this, mouseX, mouseY)) + { + bedButton.draw(this, 20, 227); + } else + { + bedButton.draw(this, 1, 227); + } + }else + { + if(wearing) + { + if(unequipButton.inButton(this,mouseX,mouseY)) + { + unequipButton.draw(this,96,227); + }else + { + unequipButton.draw(this,77,227); + } + }else + { + if(equipButton.inButton(this,mouseX,mouseY)) + { + equipButton.draw(this,96,208); + }else + { + equipButton.draw(this,77,208); + } + } + } + //zLevel +=1; + if(ConfigHandler.HOVERING_TEXT_TANKS) + { + if (tankLeft.inTank(this, mouseX, mouseY)) + { + drawHoveringText(tankLeft.getTankTooltip(), mouseX, mouseY, fontRendererObj); + } + + if (tankRight.inTank(this, mouseX, mouseY)) + { + drawHoveringText(tankRight.getTankTooltip(), mouseX, mouseY, fontRendererObj); + } + } + } + + @Override + protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) + { + + inventory.openInventory(); + lft = inventory.getLeftTank(); + rgt = inventory.getRightTank(); + tankLeft.draw(this, lft); + tankRight.draw(this, rgt); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_BLEND); + /* + if(!ConfigHandler.HOVERING_TEXT_TANKS){ + GL11.glPushMatrix(); + //GL11.glTranslatef(8f,64f,0f); + GL11.glScalef(0.6f, 0.6f, 0.6f); + String name = (lft.getFluid() != null) ? lft.getFluid().getLocalizedName() : "None"; + String amount = (lft.getFluid() != null ? lft.getFluid().amount : "Empty").toString(); + String capacity = Integer.toString(inventory.getLeftTank().getCapacity()); + int offsetY = 32; + int offsetX = 8; + fontRendererObj.drawString(Utils.getFirstWord(name), 1 + offsetX, 64 + offsetY, 0x373737, false); + fontRendererObj.drawString(amount, 1 + offsetX, 79 + offsetY, 0x373737, false); + fontRendererObj.drawString(capacity, 1 + offsetX, 94 + offsetY, 0x373737, false); + + name = (rgt.getFluid() != null) ? rgt.getFluid().getLocalizedName() : "None"; + amount = (rgt.getFluid() != null ? rgt.getFluid().amount : "Empty").toString(); + fontRendererObj.drawString(Utils.getFirstWord(name), 369 + offsetX, 64 + offsetY, 0x373737, false); + fontRendererObj.drawString(amount, 369 + offsetX, 79 + offsetY, 0x373737, false); + fontRendererObj.drawString(capacity, 369 + offsetX, 94 + offsetY, 0x373737, false); + + GL11.glPopMatrix(); + } + */ + } + + @Override + public float getZLevel() + { + return this.zLevel; + } + + @Override + public void initGui() + { + super.initGui(); + + } + + @Override + public int getLeft() + { + return guiLeft; + } + + @Override + public int getTop() + { + return guiTop; + } + + @Override + protected void mouseClicked(int mouseX, int mouseY, int button) + { + int sneakKey = Minecraft.getMinecraft().gameSettings.keyBindSneak.getKeyCode(); + if(isTile) + { + if (bedButton.inButton(this, mouseX, mouseY)) + { + TileAdventureBackpack te = (TileAdventureBackpack) inventory; + ModNetwork.net.sendToServer(new SleepingBagPacket.SleepingBagMessage(te.xCoord, te.yCoord, te.zCoord)); + } + }else + { + if(wearing) + { + if(unequipButton.inButton(this,mouseX,mouseY)) + { + ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.UNEQUIP_WEARABLE,false)); + player.closeScreen(); + } + } else + { + if(equipButton.inButton(this,mouseX,mouseY)) + { + ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, Keyboard.isKeyDown(sneakKey))); + player.closeScreen(); + } + + } + } + super.mouseClicked(mouseX, mouseY, button); + } + + @Override + protected void keyTyped(char key, int keycode) + { + if (keycode == Keybindings.openBackpack.getKeyCode()) + { + player.closeScreen(); + } + super.keyTyped(key, keycode); + } +} + diff --git a/client/gui/GuiCoalJetpack.java b/client/gui/GuiCoalJetpack.java new file mode 100644 index 00000000..d0e5f193 --- /dev/null +++ b/client/gui/GuiCoalJetpack.java @@ -0,0 +1,202 @@ +package com.darkona.adventurebackpack.client.gui; + +import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.config.Keybindings; +import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.inventory.ContainerJetpack; +import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; +import com.darkona.adventurebackpack.network.EquipUnequipBackWearablePacket; +import com.darkona.adventurebackpack.util.Resources; +import com.darkona.adventurebackpack.util.Utils; +import com.darkona.adventurebackpack.util.Wearing; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidTank; +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; + +/** + * Created on 15/01/2015 + * + * @author Darkona + */ +public class GuiCoalJetpack extends GuiWithTanks +{ + private static final ResourceLocation texture = Resources.guiTextures("guiSteamJetpack"); + private static GuiTank waterTank = new GuiTank(8, 8,72, 16, ConfigHandler.GUI_TANK_RENDER); + private static GuiTank steamTank = new GuiTank(116, 8,72, 16, ConfigHandler.GUI_TANK_RENDER); + private static GuiImageButtonNormal equipButton = new GuiImageButtonNormal(150, 64, 18, 18); + private static GuiImageButtonNormal unequipButton = new GuiImageButtonNormal(150, 64, 18, 18); + private boolean wearing; + EntityPlayer player; + InventoryCoalJetpack inventory; + int boiling = 0; + public GuiCoalJetpack(EntityPlayer player, InventoryCoalJetpack inventory, boolean wearing) + { + super(new ContainerJetpack(player, inventory,wearing)); + this.wearing = wearing; + this.player = player; + this.inventory = inventory; + xSize = 176; + ySize = 166; + } + + + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int mouseX, int mouseY) + { + inventory.openInventory(); + this.mc.renderEngine.bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(wearing) + { + if(unequipButton.inButton(this,mouseX,mouseY)) + { + unequipButton.draw(this,20,186); + }else + { + unequipButton.draw(this,1,186); + } + }else + { + if(equipButton.inButton(this,mouseX,mouseY)) + { + equipButton.draw(this,20,167); + }else + { + equipButton.draw(this,1,167); + } + } + + + + + + // if(wearing) inventory = new InventorySteamJetpack(Wearing.getWearingSteam(player)); + + + + } + + @Override + protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) + { + this.mc.renderEngine.bindTexture(texture); + if(wearing) inventory = new InventoryCoalJetpack(Wearing.getWearingSteam(player)); + FluidTank water = inventory.getWaterTank(); + FluidTank steam = inventory.getCoalTank(); + GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + if( inventory.isLava() + && steam.getFluidAmount() < steam.getCapacity() + && water.getFluidAmount() > 0) + { + if(boiling < 83) + { + drawTexturedModalRect(28,40,50,172,boiling++,37); + }else boiling = 0; + } + if(inventory.getBurnTicks() > 0) + { + int i1 =inventory.getBurnTimeRemainingScaled(13); + this.drawTexturedModalRect(78, 48 + 12 - i1, 176, 12 - i1, 14, i1 + 1); + } + + int H = Math.round(((float)72 / (float)InventoryCoalJetpack.MAX_TEMPERATURE) * (float)inventory.getTemperature()); + drawTexturedModalRect( 139, 8 + (72- H), 40, 167 + (72 - H), 5, H); + + GL11.glDisable(GL11.GL_BLEND); + GL11.glPopMatrix(); + GL11.glDisable(GL11.GL_LIGHTING); + + + waterTank.draw(this, water); + steamTank.draw(this,steam); + + float factor = 0.7f; + + String show = ((water.getFluidAmount() > 0) ? Utils.capitalize(FluidRegistry.getFluidName(water.getFluid())) : "None")+ "-" + water.getFluidAmount(); + + GL11.glPushMatrix(); + GL11.glTranslatef(70, 10, 0); + GL11.glScalef(factor, factor, factor); + fontRendererObj.drawString(show, 0, 0, 0x373737, false); + GL11.glScalef(1, 1, 1); + GL11.glPopMatrix(); + + show = ((steam.getFluidAmount() > 0) ? Utils.capitalize(FluidRegistry.getFluidName(steam.getFluid())) : "None") + "-" + steam.getFluidAmount(); + + GL11.glPushMatrix(); + GL11.glTranslatef(70, 20, 0); + GL11.glScalef(factor, factor, factor); + fontRendererObj.drawString(show, 0, 0, 0x373737, false); + GL11.glScalef(1, 1, 1); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslatef(145,8,0); + GL11.glScalef(0.9f, 0.9f, 0.9f); + fontRendererObj.drawString((inventory.getTemperature()) + " C", 0, 0, 0x373737, false); + GL11.glScalef(1, 1, 1); + GL11.glPopMatrix(); + + + + + } + + @Override + protected void mouseClicked(int mouseX, int mouseY, int mouseButton) + { + int sneakKey = Minecraft.getMinecraft().gameSettings.keyBindSneak.getKeyCode(); + if(wearing) + { + if(unequipButton.inButton(this,mouseX,mouseY)) + { + ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.UNEQUIP_WEARABLE,false)); + player.closeScreen(); + } + } else + { + if(equipButton.inButton(this,mouseX,mouseY)) + { + ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, Keyboard.isKeyDown(sneakKey))); + player.closeScreen(); + } + } + super.mouseClicked(mouseX, mouseY, mouseButton); + } + + @Override + public int getLeft() + { + return guiLeft; + } + + @Override + public int getTop() + { + return guiTop; + } + + @Override + public float getZLevel() + { + return zLevel; + } + + @Override + protected void keyTyped(char key, int keycode) + { + if (keycode == Keybindings.openBackpack.getKeyCode()) + { + player.closeScreen(); + } + super.keyTyped(key, keycode); + } +} diff --git a/client/gui/GuiCopterPack.java b/client/gui/GuiCopterPack.java new file mode 100644 index 00000000..639c1f3c --- /dev/null +++ b/client/gui/GuiCopterPack.java @@ -0,0 +1,163 @@ +package com.darkona.adventurebackpack.client.gui; + +import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.config.Keybindings; +import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.inventory.ContainerCopter; +import com.darkona.adventurebackpack.inventory.InventoryCopterPack; +import com.darkona.adventurebackpack.network.EquipUnequipBackWearablePacket; +import com.darkona.adventurebackpack.reference.GeneralReference; +import com.darkona.adventurebackpack.util.Resources; +import com.darkona.adventurebackpack.util.Utils; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fluids.FluidTank; +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; + +/** + * Created on 03/01/2015 + * + * @author Darkona + */ +public class GuiCopterPack extends GuiWithTanks +{ + private InventoryCopterPack inventory; + private static final ResourceLocation texture = Resources.guiTextures("guiCopterPack"); + private static GuiTank fuelTank = new GuiTank(8, 8,72, 32, ConfigHandler.GUI_TANK_RENDER); + private static GuiImageButtonNormal equipButton = new GuiImageButtonNormal(150, 64, 18, 18); + private static GuiImageButtonNormal unequipButton = new GuiImageButtonNormal(150, 64, 18, 18); + + private boolean wearing; + EntityPlayer player; + + public GuiCopterPack(EntityPlayer player, InventoryCopterPack inv, boolean wearing) + { + super(new ContainerCopter(player, inv, wearing)); + this.inventory = inv; + xSize = 176; + ySize = 166; + this.wearing = wearing; + this.player = player; + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int mouseX, int mouseY) + { + GL11.glColor4f(1, 1, 1, 1); + this.mc.renderEngine.bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(wearing) + { + if(unequipButton.inButton(this,mouseX,mouseY)) + { + unequipButton.draw(this,20,186); + }else + { + unequipButton.draw(this,1,186); + } + }else + { + if(equipButton.inButton(this,mouseX,mouseY)) + { + equipButton.draw(this,20,167); + }else + { + equipButton.draw(this,1,167); + } + } + + + } + + @Override + protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) + { + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_BLEND); + inventory.openInventory(); + FluidTank fuel = inventory.getFuelTank(); + fuelTank.draw(this, fuel); + + GL11.glPushMatrix(); + String name = (fuel.getFluid() != null) ? Utils.capitalize(fuel.getFluid().getFluid().getName()) : "None"; + String amount = (fuel.getFluid() != null) ? ""+ fuel.getFluid().amount : "0"; + String capacity = Integer.toString(fuel.getCapacity()); + int offsetY = 8; + int offsetX = 83; + fontRendererObj.drawString(name, 1 + offsetX, offsetY, 0x373737, false); + fontRendererObj.drawString(amount, 1 + offsetX, 10 + offsetY, 0x373737, false); + fontRendererObj.drawString(capacity, 1 + offsetX, 20 + offsetY, 0x373737, false); + + if(fuel.getFluid()!=null) + { + Float f = GeneralReference.liquidFuels.get(name); + String conLev = (f != null) ? f.toString() : "0"; + if(conLev != null && !conLev.isEmpty()) + fontRendererObj.drawString("Consumption: " + conLev , 1 + offsetX, 40 + offsetY, 0x373737, false); + } + GL11.glPopMatrix(); + } + + @Override + public int getLeft() + { + return guiLeft; + } + + @Override + public int getTop() + { + return guiTop; + } + + @Override + public float getZLevel() + { + return zLevel; + } + + @Override + protected void mouseClicked(int mouseX, int mouseY, int mouseButton) + { + int sneakKey = Minecraft.getMinecraft().gameSettings.keyBindSneak.getKeyCode(); + if(wearing) + { + if(unequipButton.inButton(this,mouseX,mouseY)) + { + ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.UNEQUIP_WEARABLE,false)); + player.closeScreen(); + } + } else + { + if(equipButton.inButton(this,mouseX,mouseY)) + { + ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, Keyboard.isKeyDown(sneakKey))); + player.closeScreen(); + } + } + super.mouseClicked(mouseX, mouseY, mouseButton); + } + + @Override + protected void keyTyped(char key, int keycode) + { + if (keycode == Keybindings.openBackpack.getKeyCode()) + { + player.closeScreen(); + } + super.keyTyped(key, keycode); + } + + @Override + public void onGuiClosed() + { + if (inventory != null) + { + inventory.closeInventory(); + } + super.onGuiClosed(); + } +} diff --git a/client/gui/GuiFactory.java b/client/gui/GuiFactory.java new file mode 100644 index 00000000..de9d38fc --- /dev/null +++ b/client/gui/GuiFactory.java @@ -0,0 +1,39 @@ +package com.darkona.adventurebackpack.client.gui; + +import cpw.mods.fml.client.IModGuiFactory; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; + +import java.util.Set; + +/** + * Created on 10/10/2014 + * + * @author Darkona + */ +public class GuiFactory implements IModGuiFactory +{ + @Override + public void initialize(Minecraft minecraftInstance) + { + + } + + @Override + public Class mainConfigGuiClass() + { + return ModGuiConfig.class; + } + + @Override + public Set runtimeGuiCategories() + { + return null; + } + + @Override + public RuntimeOptionGuiHandler getHandlerFor(RuntimeOptionCategoryElement element) + { + return null; + } +} \ No newline at end of file diff --git a/client/gui/GuiImageButtonNormal.java b/client/gui/GuiImageButtonNormal.java new file mode 100644 index 00000000..f904de36 --- /dev/null +++ b/client/gui/GuiImageButtonNormal.java @@ -0,0 +1,34 @@ +package com.darkona.adventurebackpack.client.gui; + +/** + * Created on 12/10/2014 + * + * @author Darkona + */ +public class GuiImageButtonNormal +{ + private int X; + private int Y; + private int W; + private int H; + + public GuiImageButtonNormal(int U, int V, int W, int H) + { + this.X = U; + this.Y = V; + this.W = W; + this.H = H; + } + + public void draw(GuiWithTanks gui, int U, int V) + { + gui.drawTexturedModalRect(gui.getLeft() + X, gui.getTop() + Y, U, V, W, H); + } + + public boolean inButton(GuiWithTanks gui, int mouseX, int mouseY) + { + mouseX -= gui.getLeft(); + mouseY -= gui.getTop(); + return X <= mouseX && mouseX <= X + W && Y <= mouseY && mouseY <= Y + H; + } +} diff --git a/client/gui/GuiOverlay.java b/client/gui/GuiOverlay.java new file mode 100644 index 00000000..d3b9093e --- /dev/null +++ b/client/gui/GuiOverlay.java @@ -0,0 +1,223 @@ +package com.darkona.adventurebackpack.client.gui; + +import codechicken.lib.render.TextureUtils; +import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.inventory.IInventoryTanks; +import com.darkona.adventurebackpack.item.ItemHose; +import com.darkona.adventurebackpack.reference.ModInfo; +import com.darkona.adventurebackpack.util.LogHelper; +import com.darkona.adventurebackpack.util.Wearing; +import cpw.mods.fml.common.eventhandler.EventPriority; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.ScaledResolution; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.IIcon; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.event.RenderGameOverlayEvent; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + +import java.util.Collection; +import java.util.Iterator; + +/** + * Created on 09/01/2015 + * + * @author Darkona + */ +public class GuiOverlay extends Gui +{ + private Minecraft mc; + private int screenWidth; + private int screenHeight; + protected static RenderItem itemRender = new RenderItem(); + protected FontRenderer fontRendererObj; + ScaledResolution resolution; + @SuppressWarnings("static-access") + public GuiOverlay(Minecraft mc) + { + super(); + + // We need this to invoke the render engine. + this.mc = mc; + this.itemRender.renderWithColor = false; + this.fontRendererObj = mc.fontRenderer; + } + + private static final int BUFF_ICON_SIZE = 18; + private static final int BUFF_ICON_SPACING = BUFF_ICON_SIZE + 2; // 2 pixels between buff icons + private static final int BUFF_ICON_BASE_U_OFFSET = 0; + private static final int BUFF_ICON_BASE_V_OFFSET = 198; + private static final int BUFF_ICONS_PER_ROW = 8; + + + @SubscribeEvent(priority = EventPriority.NORMAL) + public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) + { + if(event.type != RenderGameOverlayEvent.ElementType.EXPERIENCE) + { + return; + } + resolution = new ScaledResolution(this.mc, this.mc.displayWidth, this.mc.displayHeight); + screenWidth = resolution.getScaledWidth(); + screenHeight = resolution.getScaledHeight(); + if(ConfigHandler.STATUS_OVERLAY) + { + int xPos = 2; + int yPos = 2; + @SuppressWarnings("rawtypes") + Collection collection = this.mc.thePlayer.getActivePotionEffects(); + if (!collection.isEmpty()) + { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glDisable(GL11.GL_LIGHTING); + this.mc.renderEngine.bindTexture(new ResourceLocation("textures/gui/container/inventory.png")); + + for (@SuppressWarnings("rawtypes") + Iterator iterator = this.mc.thePlayer.getActivePotionEffects() + .iterator(); iterator.hasNext(); xPos += BUFF_ICON_SPACING) + { + PotionEffect potioneffect = (PotionEffect) iterator.next(); + Potion potion = Potion.potionTypes[potioneffect.getPotionID()]; + + if (potion.hasStatusIcon()) + { + int iconIndex = potion.getStatusIconIndex(); + this.drawTexturedModalRect( + xPos, yPos, + BUFF_ICON_BASE_U_OFFSET + iconIndex % BUFF_ICONS_PER_ROW * BUFF_ICON_SIZE, BUFF_ICON_BASE_V_OFFSET + iconIndex / BUFF_ICONS_PER_ROW * BUFF_ICON_SIZE, + BUFF_ICON_SIZE, BUFF_ICON_SIZE); + } + } + } + } + + if(ConfigHandler.TANKS_OVERLAY) + { + EntityPlayer player= mc.thePlayer; + if(Wearing.isWearingWearable(player)) + { + IInventoryTanks inv = Wearing.getWearableInv(player); + assert inv != null; + inv.openInventory(); + + int textureHeight = 23; + int textureWidth = 10; + + int xPos = screenWidth - (textureWidth*3) - 4 ; + //int yPos = ((screenHeight / 3) * 2) - textureHeight - 2; + int yPos = (screenHeight) - textureHeight - 2; + + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glDisable(GL11.GL_LIGHTING); + + int tankX = xPos; + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + for (FluidTank tank : inv.getTanksArray()) + { + + mc.renderEngine.bindTexture(new ResourceLocation(ModInfo.MOD_ID.toLowerCase(), "textures/gui/overlay.png")); + drawTexturedModalRect(tankX, yPos, 10, 0, textureWidth, textureHeight); + drawTank(tank, tankX + 1, yPos + 1, textureHeight - 2, textureWidth - 2); + ++tankX; + tankX += textureWidth; + } + if (Wearing.isWearingBackpack(player)) + { + int u[] = {10, 10}; + int v[] = {0, 0}; + int[] xStart = {xPos, xPos + textureWidth + 1}; + int[] yStart = {yPos, yPos}; + short tank = -1; + if (player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemHose) + { + tank = (short) (ItemHose.getHoseTank(player.getHeldItem())); + } + if (tank > -1) + { + u[0] = (tank == 0) ? 0 : 10; + u[1] = (tank == 1) ? 0 : 10; + } + mc.renderEngine.bindTexture(new ResourceLocation(ModInfo.MOD_ID.toLowerCase(), "textures/gui/overlay.png")); + + //Left Tank + drawTexturedModalRect(xStart[0], yStart[0], u[0], v[0], textureWidth, textureHeight); + //Right Tank + drawTexturedModalRect(xStart[1], yStart[0], u[1], v[1], textureWidth, textureHeight); + RenderHelper.enableStandardItemLighting(); + RenderHelper.enableGUIStandardItemLighting(); + GL11.glPushMatrix(); + GL11.glTranslatef(xStart[1] + textureWidth + 2, yStart[0], 0); + GL11.glScalef(0.5f, 0.5f, 0.5f); + drawItemStack(inv.getStackInSlot(Constants.upperTool), 0, 0); + drawItemStack(inv.getStackInSlot(Constants.lowerTool), 0, 16); + GL11.glPopMatrix(); + RenderHelper.disableStandardItemLighting(); + + } + GL11.glDisable(GL12.GL_RESCALE_NORMAL); + GL11.glDisable(GL11.GL_BLEND); + } + } + } + + private void drawTank(FluidTank tank, int startX, int startY, int height, int width) + { + int liquidPerPixel = tank.getCapacity() / height; + FluidStack fluid = tank.getFluid(); + if (fluid != null) + { + try + { + IIcon icon = fluid.getFluid().getStillIcon(); + TextureUtils.bindAtlas(fluid.getFluid().getSpriteNumber()); + int top = startY + height - (fluid.amount / liquidPerPixel); + for (int j = startY + height - 1; j >= top; j--) + { + for (int i = startX; i <= startX + width - 1; i++) + { + GL11.glPushMatrix(); + if (j >= top + 5) + { + GL11.glColor4f(0.9f, 0.9f, 0.9f, 1); + } else + { + GL11.glColor4f(1, 1, 1, 1); + } + GuiTank.drawFluidPixelFromIcon(i, j, icon, 1, 1, 0, 0, 0, 0,1); + GL11.glPopMatrix(); + } + } + } catch (Exception oops) + { + LogHelper.error("Exception while trying to render the fluid in the GUI"); + } + } + } + + private void drawItemStack(ItemStack stack, int x, int y) + { + if(stack == null)return; + GL11.glTranslatef(0.0F, 0.0F, 32.0F); + this.zLevel = 200.0F; + itemRender.zLevel = 200.0F; + FontRenderer font = null; + font = stack.getItem().getFontRenderer(stack); + if (font == null) font = fontRendererObj; + itemRender.renderItemIntoGUI(font,mc.getTextureManager(),stack,x,y); + this.zLevel = 0.0F; + itemRender.zLevel = 0.0F; + } +} diff --git a/client/gui/GuiTank.java b/client/gui/GuiTank.java new file mode 100644 index 00000000..0f79b777 --- /dev/null +++ b/client/gui/GuiTank.java @@ -0,0 +1,252 @@ +package com.darkona.adventurebackpack.client.gui; + +import codechicken.lib.render.TextureUtils; +import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.util.LogHelper; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.util.IIcon; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; +import org.lwjgl.opengl.GL11; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Darkona on 12/10/2014. + */ +public class GuiTank +{ + private int height; + private int width; + private int startX; + private int startY; + private int offsetX = 0; + private int offsetY = 0; + private int resolution; + private int liquidPerPixel; + private float zLevel; + private FluidTank tank; + + /** + * Draws the fluid from a fluidTank in a GUI. + * + * @param X The startX coordinate to start drawing from. + * @param Y The startY coordinate to start drawing from. + * @param H The height in pixels of the tank. + * @param W The width in pixels of the tank. + * @param resolution The resolution of the fluid painted in the tank. Higher values + * mean smaller and more numerous boxes. Values can be 1, 2, 4, + * 8, 16. Other values are untested, but i guess they should + * always be integer divisors of the width, with modulus 0; + */ + public GuiTank(int X, int Y, int H, int W, int resolution) + { + this.startX = X; + this.startY = Y; + this.height = H; + this.width = W; + this.resolution = resolution > 0 ? W / resolution : W; + + } + + public List getTankTooltip() + { + FluidStack fluid = tank.getFluid(); + String fluidName = (fluid != null) ? fluid.getLocalizedName() : "None"; + String fluidAmount = (fluid != null) ? fluid.amount + "/" + Constants.basicTankCapacity : "Empty"; + ArrayList tankTips = new ArrayList(); + tankTips.add(fluidName); + tankTips.add(fluidAmount); + return tankTips; + } + + /** + * @param gui + * @param theFluid + */ + public void draw(GuiWithTanks gui, FluidTank theFluid) + { + + tank = theFluid; + liquidPerPixel = tank.getCapacity() / this.height; + this.zLevel = gui.getZLevel()+1; + switch (ConfigHandler.GUI_TANK_RENDER) + { + case 1: + drawMethodOne(gui); + break; + case 2: + drawMethodTwo(); + break; + case 3: + drawMethodThree(); + break; + default: + drawMethodThree(); + break; + } + + } + + public void draw(GuiWithTanks gui, FluidTank theFluid, int X, int Y) + { + offsetX = X; + offsetY = Y; + draw(gui, theFluid); + } + + /** + * @param gui + * @param + */ + private void drawMethodOne(GuiWithTanks gui) + { + if(tank.getFluid() != null) + { + FluidStack fluid = tank.getFluid(); + + IIcon icon = fluid.getFluid().getStillIcon(); + int pixelsY = fluid.amount / liquidPerPixel; + Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.locationBlocksTexture); + int maxY = (startY + offsetY) + height; + for (int i = (startX + offsetX); i < (startX + offsetX) + width; i += resolution) + { + for (int j = maxY - resolution; j >= maxY - pixelsY; j -= resolution) + { + GL11.glPushMatrix(); + GL11.glColor4f(1, 1, 1, 1); + gui.drawTexturedModelRectFromIcon(i, j, icon, resolution, resolution); + GL11.glPopMatrix(); + } + } + } + } + + /** + * @param + */ + private void drawMethodTwo() + { + if(tank.getFluid() != null) + { + FluidStack fluid = tank.getFluid(); + + IIcon icon = fluid.getFluid().getStillIcon(); + int pixelsY = fluid.amount / liquidPerPixel; + Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.locationBlocksTexture); + int top = (startY + offsetY) + height - pixelsY; + int maxY = (startY + offsetY) + height - 1; + for (int i = (startX + offsetX); i < (startX + offsetX) + width; i += resolution) + { + int iconY = 7; + for (int j = maxY; j >= top; j--) + { + GL11.glPushMatrix(); + GL11.glColor4f(1, 1, 1, 1); + drawFluidPixelFromIcon(i, j, icon, resolution, 1, 0, iconY, resolution, 0, zLevel); + iconY = (iconY == 0) ? 7 : iconY - 1; + GL11.glPopMatrix(); + } + } + } + } + + /** + * @param + */ + private void drawMethodThree() + { + if(tank.getFluid() != null) + { + FluidStack fluid = tank.getFluid(); + + try + { + IIcon icon = fluid.getFluid().getStillIcon(); + TextureUtils.bindAtlas(fluid.getFluid().getSpriteNumber()); + int top = (startY + offsetY) + height - (fluid.amount / liquidPerPixel); + for (int j = (startY + offsetY) + height - 1; j >= top; j--) + { + for (int i = (startX + offsetX); i <= (startX + offsetX) + width - 1; i++) + { + GL11.glPushMatrix(); + if (j >= top + 5) + { + GL11.glColor4f(0.9f, 0.9f, 0.9f, 1); + } else + { + GL11.glColor4f(1, 1, 1, 1); + } + drawFluidPixelFromIcon(i, j, icon, 1, 1, 0, 0, 0, 0, zLevel); + GL11.glPopMatrix(); + } + } + } catch (Exception oops) + { + LogHelper.error("Exception while trying to render the fluid in the GUI"); + //oops.printStackTrace(); + } + } + } + + /** + * @param gui + * @param mouseX + * @param mouseY + * @return + */ + public boolean inTank(GuiWithTanks gui, int mouseX, int mouseY) + { + mouseX -= gui.getLeft(); + mouseY -= gui.getTop(); + return startX <= mouseX && mouseX <= (startX + offsetX) + width && (startY + offsetY) <= mouseY && mouseY <= (startY + offsetY) + height; + } + + /** + * Draws a box textured with the selected box of an icon. + * + * @param x The startX coordinate where to start drawing the box. + * @param y The startY coordinate where to start drawing the box. + * @param icon The icon to draw from. + * @param w The Width of the drawed box. + * @param h The height of the drawed box. + * @param srcX The startX coordinate from the icon to start drawing from. Starts + * at 0. + * @param srcY The startY coordinate from the icon to start drawing from. Starts + * at 0. + * @param srcW The width of the selection in the icon to draw from. Starts at + * 0. + * @param srcH The height of the selection in the icon to draw from. Starts + * at 0. + */ + public static void drawFluidPixelFromIcon(int x, int y, IIcon icon, int w, int h, int srcX, int srcY, int srcW, int srcH, float zLevel) + { + double minU = icon.getMinU(); + double maxU = icon.getMaxU(); + double minV = icon.getMinV(); + double maxV = icon.getMaxV(); + + double singleU = (maxU - minU) / icon.getIconHeight(); + double singleV = (maxV - minV) / icon.getIconWidth(); + + double newMinU = minU + (singleU * srcX); + double newMinV = minV + (singleV * srcY); + + double newMaxU = newMinU + (singleU * srcW); + double newMaxV = newMinV + (singleV * srcH); + + Tessellator tessellator = Tessellator.instance; + tessellator.startDrawingQuads(); + tessellator.addVertexWithUV(x, y + h, zLevel, newMinU, newMaxV); + tessellator.addVertexWithUV(x + w, y + h, zLevel, newMaxU, newMaxV); + tessellator.addVertexWithUV(x + w, y, zLevel, newMaxU, newMinV); + tessellator.addVertexWithUV(x, y, zLevel, newMinU, newMinV); + tessellator.draw(); + + + } +} diff --git a/client/gui/GuiWithTanks.java b/client/gui/GuiWithTanks.java new file mode 100644 index 00000000..4e2b1b2f --- /dev/null +++ b/client/gui/GuiWithTanks.java @@ -0,0 +1,30 @@ +package com.darkona.adventurebackpack.client.gui; + +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.inventory.Container; + +/** + * Created on 06/01/2015 + * + * @author Darkona + */ +public abstract class GuiWithTanks extends GuiContainer +{ + public GuiWithTanks(Container p_i1072_1_) + { + super(p_i1072_1_); + } + + public int getLeft() + { + return guiLeft; + } + + public int getTop() + { + return guiTop; + } + + public float getZLevel() {return zLevel;} + +} diff --git a/client/gui/IBackpackGui.java b/client/gui/IBackpackGui.java new file mode 100644 index 00000000..682d1254 --- /dev/null +++ b/client/gui/IBackpackGui.java @@ -0,0 +1,22 @@ +package com.darkona.adventurebackpack.client.gui; + +import net.minecraft.util.IIcon; + +/** + * Created on 12/10/2014 + * + * @author Darkona + */ +public interface IBackpackGui +{ + + public void drawTexturedModelRectFromIcon(int i, int j, IIcon icon, int h, int w); + + public int getLeft(); + + public int getTop(); + + //public void drawTexturedModalRect(int i, int j, int srcX, int srcY, int w, int h); + + public float getZLevel(); +} diff --git a/client/gui/ModGuiConfig.java b/client/gui/ModGuiConfig.java new file mode 100644 index 00000000..d69d137a --- /dev/null +++ b/client/gui/ModGuiConfig.java @@ -0,0 +1,26 @@ +package com.darkona.adventurebackpack.client.gui; + +import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.reference.ModInfo; +import cpw.mods.fml.client.config.GuiConfig; +import net.minecraft.client.gui.GuiScreen; +import net.minecraftforge.common.config.ConfigElement; +import net.minecraftforge.common.config.Configuration; + +/** + * Created by Darkona on 10/10/2014. + */ +public class ModGuiConfig extends GuiConfig +{ + + @SuppressWarnings({ "rawtypes", "unchecked" }) + public ModGuiConfig(GuiScreen guiScreen) + { + super(guiScreen, + new ConfigElement(ConfigHandler.config.getCategory(Configuration.CATEGORY_GENERAL)).getChildElements(), + ModInfo.MOD_ID, + false, + false, + GuiConfig.getAbridgedConfigPath(ConfigHandler.config.toString())); + } +} diff --git a/client/models/ModelAdventureHat.java b/client/models/ModelAdventureHat.java new file mode 100644 index 00000000..57b91b43 --- /dev/null +++ b/client/models/ModelAdventureHat.java @@ -0,0 +1,77 @@ +package com.darkona.adventurebackpack.client.models; + +import net.minecraft.client.model.ModelBiped; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelAdventureHat extends ModelBiped +{ + //fields + ModelRenderer wing; + ModelRenderer top; + ModelRenderer thing; + + public static ModelAdventureHat instance = new ModelAdventureHat(); + + public ModelAdventureHat() + { + textureWidth = 64; + textureHeight = 32; + + wing = new ModelRenderer(this, 0, 0); + wing.addBox(-6F, -8.5F, -6F, 12, 1, 12); + wing.setRotationPoint(0F, 0F, 0F); + wing.setTextureSize(64, 32); + wing.mirror = true; + setRotation(wing, 0F, 0F, 0.0523599F); + + thing = new ModelRenderer(this, 32, 21); + thing.addBox(4F, -9F, -1F, 1, 1, 2); + thing.setRotationPoint(0F, 0F, 0F); + thing.setTextureSize(64, 32); + thing.mirror = true; + setRotation(thing, 0F, 0F, 0F); + + top = new ModelRenderer(this, 0, 21); + top.addBox(-4F, -11F, -4F, 8, 3, 8); + top.setRotationPoint(0F, 0F, 0F); + top.setTextureSize(64, 32); + top.mirror = true; + setRotation(top, 0F, 0F, 0F); + + this.bipedHead.addChild(top); + this.bipedHead.addChild(wing); + this.bipedHead.addChild(thing); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + setRotationAngles(entity, f, f1, f2, f3, f4, f5); + + for (Object part : this.boxList) + { + ((ModelRenderer) part).rotateAngleX = bipedHead.rotateAngleX; + ((ModelRenderer) part).rotateAngleY = bipedHead.rotateAngleY; + ((ModelRenderer) part).rotateAngleZ = bipedHead.rotateAngleZ; + } + /*GL11.glPushMatrix(); + GL11.glScalef(1.2f, 1.2f, 1.2f);*/ + wing.render(f5); + thing.render(f5); + top.render(f5); + /* GL11.glPopMatrix();*/ + } + + private void setRotation(ModelRenderer model, float x, float y, float z) + { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + } + +} \ No newline at end of file diff --git a/client/models/ModelBackpackArmor.java b/client/models/ModelBackpackArmor.java new file mode 100644 index 00000000..ba8162c7 --- /dev/null +++ b/client/models/ModelBackpackArmor.java @@ -0,0 +1,361 @@ +package com.darkona.adventurebackpack.client.models; + +import codechicken.lib.vec.Vector3; +import com.darkona.adventurebackpack.client.render.RendererStack; +import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.inventory.InventoryBackpack; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.item.ItemStack; +import org.lwjgl.opengl.GL11; + +import java.util.List; + +/** + * Created on 17/12/2014 + * + * @author Darkona + */ +public class ModelBackpackArmor extends ModelWearable +{ + public static final ModelBackpackArmor instance = new ModelBackpackArmor(); + + public ModelRenderer mainBody; + public ModelRenderer tankLeftTop; + public ModelRenderer tankRightTop; + public ModelRenderer bed; + public ModelRenderer villagerNose; + public ModelRenderer pigNose; + public ModelRenderer ocelotNose; + public ModelRenderer leftStrap; + public ModelRenderer rightStrap; + public ModelRenderer top; + public ModelRenderer bottom; + public ModelRenderer pocketFace; + public ModelRenderer tankLeftBottom; + public ModelRenderer tankLeftWall4; + public ModelRenderer tankLeftWall3; + public ModelRenderer tankLeftWall2; + public ModelRenderer tankLeftWall1; + public ModelRenderer tankRightBottom; + public ModelRenderer tankRightWall2; + public ModelRenderer tankRightWall1; + public ModelRenderer tankRightWall3; + public ModelRenderer tankRightWall4; + public ModelRenderer bedStrapLeftMid; + public ModelRenderer bedStrapRightBottom; + public ModelRenderer bedStrapLeftBottom; + public ModelRenderer bedStrapRightMid; + public ModelRenderer bedStrapRightTop; + public ModelRenderer bedStrapLeftTop; + RendererStack lowerTool; + RendererStack upperTool; + public ItemStack backpack; + + @SuppressWarnings("unchecked") + private void init() + { + this.textureWidth = 128; + this.textureHeight = 64; + + //Main Backpack + + this.mainBody = new ModelRenderer(this, 0, 9); + this.mainBody.addBox(-5.0F, 0.0F, -3.0F, 10, 9, 5); + this.mainBody.setRotationPoint(0.0F, 0.0F, 0.0F); + + this.leftStrap = new ModelRenderer(this, 21, 24); + this.leftStrap.setRotationPoint(3.0F, 0.0F, -3.0F); + this.leftStrap.addBox(0.0F, 0.0F, -1.0F, 1, 8, 1); + this.mainBody.addChild(this.leftStrap); + + this.rightStrap = new ModelRenderer(this, 26, 24); + this.rightStrap.setRotationPoint(-4.0F, 0.0F, -3.0F); + this.rightStrap.addBox(0.0F, 0.0F, -1.0F, 1, 8, 1); + this.mainBody.addChild(this.rightStrap); + + this.top = new ModelRenderer(this, 0, 0); + this.top.setRotationPoint(0.0F, 0.0F, -3.0F); + this.top.addBox(-5.0F, -3.0F, 0.0F, 10, 3, 5); + this.mainBody.addChild(this.top); + + this.bottom = new ModelRenderer(this, 0, 34); + this.bottom.setRotationPoint(-5.0F, 9.0F, -3.0F); + this.bottom.addBox(0.0F, 0.0F, 0.0F, 10, 1, 4); + this.mainBody.addChild(this.bottom); + + this.pocketFace = new ModelRenderer(this, 0, 24); + this.pocketFace.setRotationPoint(0.0F, 6.9F, 2.0F); + this.pocketFace.addBox(-4.0F, -6.0F, 0.0F, 8, 6, 2); + this.mainBody.addChild(this.pocketFace); + + //Left Tank + + this.tankLeftTop = new ModelRenderer(this, 0, 40); + this.tankLeftTop.setRotationPoint(5.0F, -1.0F, -2.5F); + this.tankLeftTop.addBox(0.0F, 0.0F, 0.0F, 4, 1, 4); + + this.tankLeftBottom = new ModelRenderer(this, 0, 46); + this.tankLeftBottom.setRotationPoint(0.0F, 9.0F, 0.0F); + this.tankLeftBottom.addBox(0.0F, 0.0F, 0.0F, 4, 1, 4); + this.tankLeftTop.addChild(this.tankLeftBottom); + + this.tankLeftWall1 = new ModelRenderer(this, 0, 52); + this.tankLeftWall1.setRotationPoint(3.0F, -8.0F, 0.0F); + this.tankLeftWall1.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.tankLeftBottom.addChild(this.tankLeftWall1); + + this.tankLeftWall2 = new ModelRenderer(this, 5, 52); + this.tankLeftWall2.setRotationPoint(0.0F, -8.0F, 0.0F); + this.tankLeftWall2.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.tankLeftBottom.addChild(this.tankLeftWall2); + + this.tankLeftWall3 = new ModelRenderer(this, 10, 52); + this.tankLeftWall3.setRotationPoint(0.0F, -8.0F, 3.0F); + this.tankLeftWall3.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.tankLeftBottom.addChild(this.tankLeftWall3); + + this.tankLeftWall4 = new ModelRenderer(this, 15, 52); + this.tankLeftWall4.setRotationPoint(3.0F, -8.0F, 3.0F); + this.tankLeftWall4.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.tankLeftBottom.addChild(this.tankLeftWall4); + + //Right Tank + + this.tankRightTop = new ModelRenderer(this, 17, 40); + this.tankRightTop.setRotationPoint(-9.0F, -1.0F, -2.5F); + this.tankRightTop.addBox(0.0F, 0.0F, 0.0F, 4, 1, 4); + + this.tankRightBottom = new ModelRenderer(this, 17, 46); + this.tankRightBottom.setRotationPoint(0.0F, 9.0F, 0.0F); + this.tankRightBottom.addBox(0.0F, 0.0F, 0.0F, 4, 1, 4); + this.tankRightTop.addChild(this.tankRightBottom); + + this.tankRightWall1 = new ModelRenderer(this, 22, 52); + this.tankRightWall1.setRotationPoint(3.0F, -8.0F, 3.0F); + this.tankRightWall1.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.tankRightBottom.addChild(this.tankRightWall1); + + this.tankRightWall2 = new ModelRenderer(this, 27, 52); + this.tankRightWall2.setRotationPoint(3.0F, -8.0F, 0.0F); + this.tankRightWall2.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.tankRightBottom.addChild(this.tankRightWall2); + + this.tankRightWall3 = new ModelRenderer(this, 32, 52); + this.tankRightWall3.setRotationPoint(0.0F, -8.0F, 3.0F); + this.tankRightWall3.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.tankRightBottom.addChild(this.tankRightWall3); + + this.tankRightWall4 = new ModelRenderer(this, 37, 52); + this.tankRightWall4.setRotationPoint(0.0F, -8.0F, 0.0F); + this.tankRightWall4.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.tankRightBottom.addChild(this.tankRightWall4); + + //Bed + + this.bed = new ModelRenderer(this, 31, 0); + this.bed.setRotationPoint(-7.0F, 7.0F, 2.0F); + this.bed.addBox(0.0F, 0.0F, 0.0F, 14, 2, 2); + + this.bedStrapRightTop = new ModelRenderer(this, 40, 5); + this.bedStrapRightTop.setRotationPoint(2.0F, -1.0F, 0.0F); + this.bedStrapRightTop.addBox(0.0F, 0.0F, 0.0F, 1, 1, 3); + this.bed.addChild(this.bedStrapRightTop); + + this.bedStrapRightMid = new ModelRenderer(this, 38, 10); + this.bedStrapRightMid.setRotationPoint(2.0F, 0.0F, 2.0F); + this.bedStrapRightMid.addBox(0.0F, 0.0F, 0.0F, 2, 3, 1); + this.bed.addChild(this.bedStrapRightMid); + + this.bedStrapRightBottom = new ModelRenderer(this, 42, 15); + this.bedStrapRightBottom.setRotationPoint(2.0F, 2.0F, -1.0F); + this.bedStrapRightBottom.addBox(0.0F, 0.0F, 0.0F, 2, 1, 3); + this.bed.addChild(this.bedStrapRightBottom); + + this.bedStrapLeftTop = new ModelRenderer(this, 31, 5); + this.bedStrapLeftTop.setRotationPoint(11.0F, -1.0F, 0.0F); + this.bedStrapLeftTop.addBox(0.0F, 0.0F, 0.0F, 1, 1, 3); + this.bed.addChild(this.bedStrapLeftTop); + + this.bedStrapLeftMid = new ModelRenderer(this, 31, 10); + this.bedStrapLeftMid.setRotationPoint(10.0F, 0.0F, 2.0F); + this.bedStrapLeftMid.addBox(0.0F, 0.0F, 0.0F, 2, 3, 1); + this.bed.addChild(this.bedStrapLeftMid); + + this.bedStrapLeftBottom = new ModelRenderer(this, 31, 15); + this.bedStrapLeftBottom.setRotationPoint(10.0F, 2.0F, -1.0F); + this.bedStrapLeftBottom.addBox(0.0F, 0.0F, 0.0F, 2, 1, 3); + this.bed.addChild(this.bedStrapLeftBottom); + + //Noses + + this.villagerNose = new ModelRenderer(this, 64, 0); + this.villagerNose.setRotationPoint(-1.0F, 4.0F, 4.0F); + this.villagerNose.addBox(0.0F, 0.0F, 0.0F, 2, 4, 2); + + ocelotNose = new ModelRenderer(this, 74, 0); + ocelotNose.setRotationPoint(-1.0F, 4.0F, 4.0F); + ocelotNose.addBox(0.0F, 0.0F, 0.0F, 3, 2, 1); + + pigNose = new ModelRenderer(this, 74, 0); + pigNose.setRotationPoint(-2.0F, 4.0F, 4.0F); + pigNose.addBox(0.0F, 0.0F, 0.0F, 4, 3, 1); + + lowerTool = new RendererStack(this, true); + upperTool = new RendererStack(this, false); + + + bipedBody.addChild(mainBody); + bipedBody.addChild(bed); + bipedBody.addChild(tankLeftTop); + bipedBody.addChild(tankRightTop); + bipedBody.addChild(villagerNose); + bipedBody.addChild(ocelotNose); + bipedBody.addChild(pigNose); + mainBody.addChild(lowerTool); + mainBody.addChild(upperTool); + + + float offsetZ = 0.4F; + float offsetY = 0.2F; + + + for (ModelRenderer part : (List) bipedBody.childModels) + { + setOffset(part, part.offsetX + 0, part.offsetY + offsetY, part.offsetZ + offsetZ); + } + + } + + public ModelBackpackArmor setWearable(ItemStack wearable) + { + this.backpack = wearable; + return this; + } + public ModelBackpackArmor() + { + init(); + } + + public ModelBackpackArmor(ItemStack backpack) + { + init(); + this.backpack = backpack; + } + @SuppressWarnings("unchecked") + private void renderBackpack(Float scale) + { + InventoryBackpack backpack = new InventoryBackpack(this.backpack); + backpack.openInventory(); + String color = backpack.getColorName(); + for (ModelRenderer model : (List) bipedBody.childModels) + { + model.mirror = false; + } + + lowerTool.setRotationPoint(-.5F, .10F, .3F); + setOffset(lowerTool, -.28F, 0.8F, -.1F); + setOffset(upperTool, 0.0f, 0.04f, 0.25f); + + lowerTool.stack = backpack.getStackInSlot(Constants.lowerTool); + upperTool.stack = backpack.getStackInSlot(Constants.upperTool); + + if (color.equals("Quartz") || color.equals("Slime") || color.equals("Snow")) + { + startBlending(); + this.mainBody.render(scale); + stopBlending(); + } else + { + this.mainBody.render(scale); + } + + GL11.glPushMatrix(); + + tankLeftTop.render(scale); + tankRightTop.render(scale); + + bed.render(scale); + if (color.equals("Pig") || color.equals("Horse")) + { + pigNose.render(scale); + } + if (color.equals("Villager") || color.equals("IronGolem")) + { + villagerNose.render(scale); + } + if (color.equals("Ocelot")) + { + ocelotNose.render(scale); + } + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslatef(bipedBody.offsetX + 0, bipedBody.offsetY + 0.2F, bipedBody.offsetZ + 0.3f); + + renderFluidInTank(backpack.getLeftTank(), new Vector3(0f,.5f,0f), new Vector3(.17f,0,.17f), new Vector3(-.17f, .05f, .2f), tankLeftTop); + + renderFluidInTank(backpack.getRightTank(), new Vector3(0f,.5f,0f), new Vector3(.17f,0,.17f), new Vector3(.41f, .05f, .2f), tankRightTop); + GL11.glPopMatrix(); + } + + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + + isSneak = ((entity != null) && (entity).isSneaking()); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + @SuppressWarnings("unused") + float oV = (isSneak) ? 0 : .3F; + + float scale = f5 * 0.9f; + + GL11.glPushMatrix(); + + GL11.glTranslatef(bipedBody.offsetX, bipedBody.offsetY, bipedBody.offsetZ); + GL11.glColor4f(1, 1, 1, 1); + + if (bipedBody.rotateAngleX == 0.0F && bipedBody.rotateAngleY == 0.0F && bipedBody.rotateAngleZ == 0.0F) + { + if (bipedBody.rotationPointX == 0.0F && bipedBody.rotationPointY == 0.0F && bipedBody.rotationPointZ == 0.0F) + { + renderBackpack(scale); + } else + { + GL11.glTranslatef(bipedBody.rotationPointX * f5, bipedBody.rotationPointY * f5, bipedBody.rotationPointZ * f5); + renderBackpack(scale); + GL11.glTranslatef(-bipedBody.rotationPointX * f5, -bipedBody.rotationPointY * f5, -bipedBody.rotationPointZ * f5); + } + } else + { + GL11.glPushMatrix(); + GL11.glTranslatef(bipedBody.rotationPointX * f5, bipedBody.rotationPointY * f5, bipedBody.rotationPointZ * f5); + + if (bipedBody.rotateAngleZ != 0.0F) + { + GL11.glRotatef(bipedBody.rotateAngleZ * (180F / (float) Math.PI), 0.0F, 0.0F, 1.0F); + } + + if (bipedBody.rotateAngleY != 0.0F) + { + GL11.glRotatef(bipedBody.rotateAngleY * (180F / (float) Math.PI), 0.0F, 1.0F, 0.0F); + } + + if (bipedBody.rotateAngleX != 0.0F) + { + GL11.glRotatef(bipedBody.rotateAngleX * (180F / (float) Math.PI), 1.0F, 0.0F, 0.0F); + } + renderBackpack(scale); + GL11.glPopMatrix(); + } + GL11.glTranslatef(-bipedBody.offsetX, -bipedBody.offsetY, -(bipedBody.offsetZ)); + GL11.glPopMatrix(); + } + + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack stack) + { + this.backpack = stack; + render(entity, f, f1,f2,f3,f4,f5); + } +} diff --git a/client/models/ModelBackpackBlock.java b/client/models/ModelBackpackBlock.java new file mode 100644 index 00000000..061141b1 --- /dev/null +++ b/client/models/ModelBackpackBlock.java @@ -0,0 +1,428 @@ +package com.darkona.adventurebackpack.client.models; + +import codechicken.lib.render.CCRenderState; +import codechicken.lib.render.RenderUtils; +import codechicken.lib.vec.Cuboid6; +import codechicken.lib.vec.Vector3; +import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraftforge.fluids.FluidTank; +import org.lwjgl.opengl.GL11; + +/** + * Created on 17/12/2014 + * + * @author Darkona + */ +public class ModelBackpackBlock extends ModelBase +{ + public ModelRenderer mainBody; + public ModelRenderer lampLight; + public ModelRenderer tankLeftTop; + public ModelRenderer tankRightTop; + public ModelRenderer bed; + public ModelRenderer lampPole1; + public ModelRenderer kitchenBase; + public ModelRenderer villagerNose; + public ModelRenderer pigNose; + public ModelRenderer ocelotNose; + public ModelRenderer leftStrap; + public ModelRenderer rightStrap; + public ModelRenderer top; + public ModelRenderer bottom; + public ModelRenderer pocketFace; + public ModelRenderer tankLeftBottom; + public ModelRenderer tankLeftWall4; + public ModelRenderer tankLeftWall3; + public ModelRenderer tankLeftWall2; + public ModelRenderer tankLeftWall1; + public ModelRenderer tankRightBottom; + public ModelRenderer tankRightWall2; + public ModelRenderer tankRightWall1; + public ModelRenderer tankRightWall3; + public ModelRenderer tankRightWall4; + public ModelRenderer bedStrapLeftMid; + public ModelRenderer bedStrapRightBottom; + public ModelRenderer bedStrapLeftBottom; + public ModelRenderer bedStrapRightMid; + public ModelRenderer bedStrapRightTop; + public ModelRenderer bedStrapLeftTop; + public ModelRenderer lampPole2; + public ModelRenderer lampTop; + public ModelRenderer lampPole3; + public ModelRenderer lampBottom; + public ModelRenderer lampGlassLeft; + public ModelRenderer lampGlassRight; + public ModelRenderer lampGlassBack; + public ModelRenderer lampGlassFront; + public ModelRenderer kitchen; + + public ModelBackpackBlock() + { + this.textureWidth = 128; + this.textureHeight = 64; + + //Main Backpack + + this.mainBody = new ModelRenderer(this, 0, 9); + this.mainBody.setRotationPoint(0.0F, 0.0F, 0.0F); + this.mainBody.addBox(-5.0F, 0.0F, -3.0F, 10, 9, 5); + + this.leftStrap = new ModelRenderer(this, 21, 24); + this.leftStrap.setRotationPoint(3.0F, 0.0F, -3.0F); + this.leftStrap.addBox(0.0F, 0.0F, -1.0F, 1, 8, 1); + this.mainBody.addChild(this.leftStrap); + + this.rightStrap = new ModelRenderer(this, 26, 24); + this.rightStrap.setRotationPoint(-4.0F, 0.0F, -3.0F); + this.rightStrap.addBox(0.0F, 0.0F, -1.0F, 1, 8, 1); + this.mainBody.addChild(this.rightStrap); + + this.top = new ModelRenderer(this, 0, 0); + this.top.setRotationPoint(0.0F, 0.0F, -3.0F); + this.top.addBox(-5.0F, -3.0F, 0.0F, 10, 3, 5); + this.mainBody.addChild(this.top); + + this.bottom = new ModelRenderer(this, 0, 34); + this.bottom.setRotationPoint(-5.0F, 9.0F, -3.0F); + this.bottom.addBox(0.0F, 0.0F, 0.0F, 10, 1, 4); + this.mainBody.addChild(this.bottom); + + this.pocketFace = new ModelRenderer(this, 0, 24); + this.pocketFace.setRotationPoint(0.0F, 6.9F, 2.0F); + this.pocketFace.addBox(-4.0F, -6.0F, 0.0F, 8, 6, 2); + this.mainBody.addChild(this.pocketFace); + + //Left Tank + + this.tankLeftTop = new ModelRenderer(this, 0, 40); + this.tankLeftTop.setRotationPoint(5.0F, 0.0F, -2.5F); + this.tankLeftTop.addBox(0.0F, 0.0F, 0.0F, 4, 1, 4); + + this.tankLeftBottom = new ModelRenderer(this, 0, 46); + this.tankLeftBottom.setRotationPoint(0.0F, 9.0F, 0.0F); + this.tankLeftBottom.addBox(0.0F, 0.0F, 0.0F, 4, 1, 4); + this.tankLeftTop.addChild(this.tankLeftBottom); + + this.tankLeftWall1 = new ModelRenderer(this, 0, 52); + this.tankLeftWall1.setRotationPoint(3.0F, -8.0F, 0.0F); + this.tankLeftWall1.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.tankLeftBottom.addChild(this.tankLeftWall1); + + this.tankLeftWall2 = new ModelRenderer(this, 5, 52); + this.tankLeftWall2.setRotationPoint(0.0F, -8.0F, 0.0F); + this.tankLeftWall2.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.tankLeftBottom.addChild(this.tankLeftWall2); + + this.tankLeftWall3 = new ModelRenderer(this, 10, 52); + this.tankLeftWall3.setRotationPoint(0.0F, -8.0F, 3.0F); + this.tankLeftWall3.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.tankLeftBottom.addChild(this.tankLeftWall3); + + this.tankLeftWall4 = new ModelRenderer(this, 15, 52); + this.tankLeftWall4.setRotationPoint(3.0F, -8.0F, 3.0F); + this.tankLeftWall4.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.tankLeftBottom.addChild(this.tankLeftWall4); + + //Right Tank + + this.tankRightTop = new ModelRenderer(this, 17, 40); + this.tankRightTop.setRotationPoint(-9.0F, 0.0F, -2.5F); + this.tankRightTop.addBox(0.0F, 0.0F, 0.0F, 4, 1, 4); + + this.tankRightBottom = new ModelRenderer(this, 17, 46); + this.tankRightBottom.setRotationPoint(0.0F, 9.0F, 0.0F); + this.tankRightBottom.addBox(0.0F, 0.0F, 0.0F, 4, 1, 4); + this.tankRightTop.addChild(this.tankRightBottom); + + this.tankRightWall1 = new ModelRenderer(this, 22, 52); + this.tankRightWall1.setRotationPoint(3.0F, -8.0F, 3.0F); + this.tankRightWall1.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.tankRightBottom.addChild(this.tankRightWall1); + + this.tankRightWall2 = new ModelRenderer(this, 27, 52); + this.tankRightWall2.setRotationPoint(3.0F, -8.0F, 0.0F); + this.tankRightWall2.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.tankRightBottom.addChild(this.tankRightWall2); + + this.tankRightWall3 = new ModelRenderer(this, 32, 52); + this.tankRightWall3.setRotationPoint(0.0F, -8.0F, 3.0F); + this.tankRightWall3.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.tankRightBottom.addChild(this.tankRightWall3); + + this.tankRightWall4 = new ModelRenderer(this, 37, 52); + this.tankRightWall4.setRotationPoint(0.0F, -8.0F, 0.0F); + this.tankRightWall4.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.tankRightBottom.addChild(this.tankRightWall4); + + //Bed + + this.bed = new ModelRenderer(this, 31, 0); + this.bed.setRotationPoint(-7.0F, 7.0F, 2.0F); + this.bed.addBox(0.0F, 0.0F, 0.0F, 14, 2, 2); + + this.bedStrapRightTop = new ModelRenderer(this, 40, 5); + this.bedStrapRightTop.setRotationPoint(2.0F, -1.0F, 0.0F); + this.bedStrapRightTop.addBox(0.0F, 0.0F, 0.0F, 1, 1, 3); + this.bed.addChild(this.bedStrapRightTop); + + this.bedStrapRightMid = new ModelRenderer(this, 38, 10); + this.bedStrapRightMid.setRotationPoint(2.0F, 0.0F, 2.0F); + this.bedStrapRightMid.addBox(0.0F, 0.0F, 0.0F, 2, 3, 1); + this.bed.addChild(this.bedStrapRightMid); + + this.bedStrapRightBottom = new ModelRenderer(this, 42, 15); + this.bedStrapRightBottom.setRotationPoint(2.0F, 2.0F, -1.0F); + this.bedStrapRightBottom.addBox(0.0F, 0.0F, 0.0F, 2, 1, 3); + this.bed.addChild(this.bedStrapRightBottom); + + this.bedStrapLeftTop = new ModelRenderer(this, 31, 5); + this.bedStrapLeftTop.setRotationPoint(11.0F, -1.0F, 0.0F); + this.bedStrapLeftTop.addBox(0.0F, 0.0F, 0.0F, 1, 1, 3); + this.bed.addChild(this.bedStrapLeftTop); + + this.bedStrapLeftMid = new ModelRenderer(this, 31, 10); + this.bedStrapLeftMid.setRotationPoint(10.0F, 0.0F, 2.0F); + this.bedStrapLeftMid.addBox(0.0F, 0.0F, 0.0F, 2, 3, 1); + this.bed.addChild(this.bedStrapLeftMid); + + this.bedStrapLeftBottom = new ModelRenderer(this, 31, 15); + this.bedStrapLeftBottom.setRotationPoint(10.0F, 2.0F, -1.0F); + this.bedStrapLeftBottom.addBox(0.0F, 0.0F, 0.0F, 2, 1, 3); + this.bed.addChild(this.bedStrapLeftBottom); + + //Lamp + + this.lampPole1 = new ModelRenderer(this, 32, 24); + this.lampPole1.setRotationPoint(5.0F, -10.0F, -1.0F); + this.lampPole1.addBox(0.0F, 0.0F, 0.0F, 1, 10, 1); + + this.lampPole2 = new ModelRenderer(this, 37, 25); + this.lampPole2.setRotationPoint(1.0F, 0.0F, 0.0F); + this.lampPole2.addBox(0.0F, 0.0F, 0.0F, 4, 1, 1); + this.lampPole1.addChild(this.lampPole2); + + this.lampPole3 = new ModelRenderer(this, 40, 28); + this.lampPole3.setRotationPoint(3.0F, 1.0F, 0.0F); + this.lampPole3.addBox(0.0F, 0.0F, 0.0F, 1, 1, 1); + this.lampPole2.addChild(this.lampPole3); + + this.lampTop = new ModelRenderer(this, 53, 8); + this.lampTop.setRotationPoint(3.5F, 2.0F, 0.5F); + this.lampTop.addBox(-2.5F, 0.0F, -2.5F, 5, 1, 5); + this.lampPole2.addChild(this.lampTop); + + this.lampGlassRight = new ModelRenderer(this, 41, 30); + this.lampGlassRight.setRotationPoint(-2.5F, 1.0F, -2.5F); + this.lampGlassRight.addBox(0.0F, 0.0F, 0.0F, 1, 4, 5); + this.lampTop.addChild(this.lampGlassRight); + + this.lampGlassFront = new ModelRenderer(this, 40, 40); + this.lampGlassFront.setRotationPoint(-1.5F, 1.0F, -2.5F); + this.lampGlassFront.addBox(0.0F, 0.0F, 0.0F, 3, 4, 1); + this.lampTop.addChild(this.lampGlassFront); + + this.lampGlassBack = new ModelRenderer(this, 40, 40); + this.lampGlassBack.setRotationPoint(-1.5F, 1.0F, 1.5F); + this.lampGlassBack.addBox(0.0F, 0.0F, 0.0F, 3, 4, 1); + this.lampTop.addChild(this.lampGlassBack); + + this.lampGlassLeft = new ModelRenderer(this, 41, 30); + this.lampGlassLeft.setRotationPoint(1.5F, 1.0F, -2.5F); + this.lampGlassLeft.addBox(0.0F, 0.0F, 0.0F, 1, 4, 5); + this.lampTop.addChild(this.lampGlassLeft); + + this.lampBottom = new ModelRenderer(this, 53, 23); + this.lampBottom.setRotationPoint(-2.5F, 5.0F, -0.5F); + this.lampBottom.addBox(0.0F, 0.0F, -2.0F, 5, 1, 5); + this.lampTop.addChild(this.lampBottom); + + this.lampLight = new ModelRenderer(this, 57, 15); + this.lampLight.setRotationPoint(8.0F, -7.0F, -2.0F); + this.lampLight.addBox(0.0F, 0.0F, 0.0F, 3, 4, 3); + + //Kitchen + + this.kitchenBase = new ModelRenderer(this, 49, 46); + this.kitchenBase.setRotationPoint(-9.0F, -1.0F, -1.5F); + this.kitchenBase.addBox(0.0F, 0.0F, 0.0F, 3, 1, 2); + + this.kitchen = new ModelRenderer(this, 49, 37); + this.kitchen.setRotationPoint(-3.0F, -2.0F, -1.5F); + this.kitchen.addBox(0.0F, 0.0F, 0.0F, 5, 2, 6); + this.kitchenBase.addChild(this.kitchen); + + //Noses + + this.villagerNose = new ModelRenderer(this, 64, 0); + this.villagerNose.setRotationPoint(-1.0F, 4.0F, 4.0F); + this.villagerNose.addBox(0.0F, 0.0F, 0.0F, 2, 4, 2); + + this.ocelotNose = new ModelRenderer(this, 74, 0); + this.ocelotNose.setRotationPoint(-1.0F, 4.0F, 4.0F); + this.ocelotNose.addBox(0.0F, 0.0F, 0.0F, 3, 2, 1); + + this.pigNose = new ModelRenderer(this, 74, 0); + this.pigNose.setRotationPoint(-2.0F, 4.0F, 4.0F); + this.pigNose.addBox(0.0F, 0.0F, 0.0F, 4, 3, 1); + + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float scale, IInventoryAdventureBackpack backpack) + { + + //scale*=0.9; + @SuppressWarnings("unused") + boolean sleepingbag = backpack.isSBDeployed(); + FluidTank tankLeft = backpack.getLeftTank(); + FluidTank tankRight = backpack.getRightTank(); + setRotationAngles(f, f1, f2, f3, f4, scale, entity); + + GL11.glPushMatrix(); + renderBackpack(backpack, scale); + //renderFluidsInTanks(backpack.getLeftTank(),backpack.getRightTank(),scale); + GL11.glPopMatrix(); + + if (tankLeft != null && tankLeft.getFluid() != null && tankLeft.getFluid().getFluid().getIcon() != null) + { + Vector3 victor = new Vector3((tankLeftTop.rotationPointX * 0.1f - 0.22f), (tankLeftTop.rotationPointY * 0.1f + 0.05f), + (tankLeftTop.rotationPointZ * 0.1f + 0.15f)); + GL11.glPushMatrix(); + CCRenderState.reset(); + CCRenderState.pullLightmap(); + CCRenderState.useNormals = true; + RenderUtils.renderFluidCuboid(tankLeft.getFluid(), new Cuboid6(0f, 0.39f, 0f, 0.15f, 0f, 0.15f).add(victor), + ((1.0F * tankLeft.getFluidAmount()) / (1.0F * tankLeft.getCapacity())), 0.8); + GL11.glPopMatrix(); + + } + + if (tankRight != null && tankRight.getFluid() != null && tankRight.getFluid().getFluid().getIcon() != null) + { + Vector3 victor = new Vector3((tankRightTop.rotationPointX * 0.1f + 0.48f), (tankRightTop.rotationPointY * 0.1f + 0.05f), + (tankRightTop.rotationPointZ * 0.1f + 0.15f)); + GL11.glPushMatrix(); + CCRenderState.reset(); + CCRenderState.pullLightmap(); + CCRenderState.useNormals = true; + RenderUtils.renderFluidCuboid(tankRight.getFluid(), new Cuboid6(0, 0.39, 0, 0.15, 0, 0.15).add(victor), + ((1.0F * tankRight.getFluidAmount()) / (1.0F * tankRight.getCapacity())), 0.8); + GL11.glPopMatrix(); + } + } + + @SuppressWarnings("unused") + private void renderFluidsInTanks(FluidTank tankLeft, FluidTank tankRight, float scale) + { + //Size of the cuboid + //Y-- is up, Y++ is down + float minX = 0f; + float minY = 0.5f; + float minZ = 0f; + + float maxX = 0.17f; + float maxY = 0f; + float maxZ = 0.17f; + + if (tankLeft != null && tankLeft.getFluid() != null && tankLeft.getFluid().getFluid().getIcon() != null) + { + //0.5F, -0.1F, -0.25F - Rotation Points of the top + //X++ to the right, X-- to the left + //Z-- to the front, Z++ to the back + Vector3 victor = new Vector3( + (tankLeftTop.rotationPointX * 0.1f - 0.17f), // + (tankLeftTop.rotationPointY * 0.1f + 0.1f), + (tankLeftTop.rotationPointZ * 0.1f + 0.13f)); + //ChickenStuff + CCRenderState.reset(); + CCRenderState.pullLightmap(); + CCRenderState.useNormals = true; + + Cuboid6 left = new Cuboid6(minX, minY, minZ, maxX, maxY, maxZ); + //Thanks Chickenbones! + RenderUtils.renderFluidCuboid(tankLeft.getFluid(), left.add(victor), ((1.0F * tankLeft.getFluidAmount()) / (1.0F * Constants.basicTankCapacity)), 0.2); + } + + if (tankRight != null && tankRight.getFluid() != null && tankRight.getFluid().getFluid().getIcon() != null) + { + //-0.9F, -0.1F, -0.25F - Rotation points of the top + //X-- to the right, X++ to the left + //Z-- to the front, Z++ to the back + Vector3 victor = new Vector3( + (tankRightTop.rotationPointX * 0.1f + 0.41f), // + (tankRightTop.rotationPointY * 0.1f + 0.1f), + (tankRightTop.rotationPointZ * 0.1f + 0.13f)); + //ChickenStuff + CCRenderState.reset(); + CCRenderState.pullLightmap(); + CCRenderState.useNormals = true; + + Cuboid6 right = new Cuboid6(minX, minY, minZ, maxX, maxY, maxZ); + RenderUtils.renderFluidCuboid(tankRight.getFluid(), right.add(victor), ((1.0F * tankRight.getFluidAmount()) / (1.0F * Constants.basicTankCapacity)), 0.2); + } + + } + + private void renderBackpack(IInventoryAdventureBackpack backpack, float scale) + { + String color = backpack.getColorName(); + + if (color.equals("Quartz") || color.equals("Slime") || color.equals("Snow")) + { + GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + //GL11.glEnable(GL11.GL_CULL_FACE); + + this.mainBody.render(scale); + + GL11.glPopMatrix(); + //GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_BLEND); + + } else + { + this.mainBody.render(scale); + } + tankLeftTop.render(scale); + tankRightTop.render(scale); + + if (!backpack.isSBDeployed()) bed.render(scale); + + if (color.equals("Pig") || color.equals("Horse")) + { + pigNose.render(scale); + } + if (color.equals("Villager") || color.equals("IronGolem")) + { + villagerNose.render(scale); + } + if (color.equals("Ocelot")) + { + ocelotNose.render(scale); + } + + /*if(color.equals("Standard")) + { + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + GL11.glEnable(GL11.GL_CULL_FACE); + this.lampPole1.render(scale); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_BLEND); + }*/ + } + + /** + * This is a helper function from Tabula to set the rotation of model parts + */ + public void setRotateAngle(ModelRenderer modelRenderer, float x, float y, float z) + { + modelRenderer.rotateAngleX = x; + modelRenderer.rotateAngleY = y; + modelRenderer.rotateAngleZ = z; + } +} diff --git a/client/models/ModelCampFire.java b/client/models/ModelCampFire.java new file mode 100644 index 00000000..f04fd5de --- /dev/null +++ b/client/models/ModelCampFire.java @@ -0,0 +1,150 @@ +package com.darkona.adventurebackpack.client.models; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +/** + * campFire - Darkona + * Created using Tabula 4.1.0 + */ +public class ModelCampFire extends ModelBase +{ + public ModelRenderer rock1; + public ModelRenderer rock2; + public ModelRenderer rock3; + public ModelRenderer rock4; + public ModelRenderer rock5; + public ModelRenderer rock6; + public ModelRenderer rock7; + public ModelRenderer rock8; + public ModelRenderer rock9; + public ModelRenderer rock10; + public ModelRenderer rock11; + public ModelRenderer rock12; + public ModelRenderer rock13; + public ModelRenderer rock14; + public ModelRenderer rock15; + public ModelRenderer rock16; + public ModelRenderer rock17; + public ModelRenderer stick1; + public ModelRenderer stick2; + public ModelRenderer stick3; + public ModelRenderer stick4; + public ModelRenderer log; + + public ModelCampFire() + { + this.textureWidth = 32; + this.textureHeight = 32; + this.rock1 = new ModelRenderer(this, 0, 8); + this.rock1.setRotationPoint(0.0F, 24.0F, 0.0F); + this.rock1.addBox(-1.0F, -2.0F, 4.0F, 2, 2, 2, 0.0F); + this.rock8 = new ModelRenderer(this, 0, 8); + this.rock8.setRotationPoint(0.0F, 24.0F, 0.0F); + this.rock8.addBox(-2.0F, -2.0F, -6.0F, 2, 2, 2, 0.0F); + this.log = new ModelRenderer(this, 6, 19); + this.log.setRotationPoint(0.0F, 23.0F, 0.0F); + this.log.addBox(0.0F, -3.0F, -2.0F, 3, 3, 10, 0.0F); + this.setRotateAngle(log, 0.36425021489121656F, 0.0F, 0.0F); + this.rock4 = new ModelRenderer(this, 0, 8); + this.rock4.setRotationPoint(1.0F, 23.0F, 1.0F); + this.rock4.addBox(4.0F, -1.0F, -2.0F, 2, 2, 2, 0.0F); + this.stick4 = new ModelRenderer(this, 0, 17); + this.stick4.setRotationPoint(-5.0F, 24.0F, -1.0F); + this.stick4.addBox(-0.5F, -14.0F, -0.5F, 1, 14, 1, 0.0F); + this.setRotateAngle(stick4, 0.5009094953223726F, -1.9123572614101867F, 0.0F); + this.rock15 = new ModelRenderer(this, 0, 0); + this.rock15.setRotationPoint(0.0F, 24.0F, 0.0F); + this.rock15.addBox(6.0F, -3.0F, 1.0F, 1, 1, 1, 0.0F); + this.stick2 = new ModelRenderer(this, 0, 17); + this.stick2.setRotationPoint(6.0F, 22.0F, 1.0F); + this.stick2.addBox(-0.5F, -14.0F, -0.5F, 1, 14, 1, 0.0F); + this.setRotateAngle(stick2, 0.40980330836826856F, 1.5481070465189704F, 0.0F); + this.rock7 = new ModelRenderer(this, 10, 7); + this.rock7.setRotationPoint(0.0F, 23.0F, 0.0F); + this.rock7.addBox(-5.0F, -2.0F, -5.0F, 3, 3, 3, 0.0F); + this.rock16 = new ModelRenderer(this, 0, 0); + this.rock16.setRotationPoint(0.0F, 24.0F, 0.0F); + this.rock16.addBox(-5.0F, -1.0F, -2.0F, 1, 1, 1, 0.0F); + this.rock5 = new ModelRenderer(this, 0, 8); + this.rock5.setRotationPoint(0.0F, 24.0F, 0.0F); + this.rock5.addBox(-6.0F, -2.0F, -1.0F, 2, 2, 2, 0.0F); + this.rock13 = new ModelRenderer(this, 0, 8); + this.rock13.setRotationPoint(0.0F, 24.0F, 0.0F); + this.rock13.addBox(3.0F, -2.0F, -5.0F, 2, 2, 2, 0.0F); + this.rock6 = new ModelRenderer(this, 0, 0); + this.rock6.setRotationPoint(0.0F, 24.0F, 0.0F); + this.rock6.addBox(2.0F, -1.0F, -6.0F, 1, 1, 1, 0.0F); + this.stick1 = new ModelRenderer(this, 0, 17); + this.stick1.setRotationPoint(-3.0F, 24.0F, 5.0F); + this.stick1.addBox(-0.5F, -14.0F, -0.5F, 1, 14, 1, 0.0F); + this.setRotateAngle(stick1, 0.40980330836826856F, 0.7285004297824331F, 0.6373942428283291F); + this.rock3 = new ModelRenderer(this, 0, 8); + this.rock3.setRotationPoint(0.0F, 24.0F, 0.0F); + this.rock3.addBox(-3.0F, -2.0F, 2.0F, 2, 2, 2, 0.0F); + this.rock10 = new ModelRenderer(this, 0, 8); + this.rock10.setRotationPoint(0.0F, 24.0F, 0.0F); + this.rock10.addBox(0.0F, -2.0F, -7.0F, 2, 2, 2, 0.0F); + this.rock11 = new ModelRenderer(this, 0, 8); + this.rock11.setRotationPoint(0.0F, 24.0F, 0.0F); + this.rock11.addBox(4.0F, -2.0F, 1.0F, 2, 2, 2, 0.0F); + this.rock12 = new ModelRenderer(this, 10, 7); + this.rock12.setRotationPoint(0.0F, 24.0F, 0.0F); + this.rock12.addBox(1.0F, -3.0F, 3.0F, 3, 3, 3, 0.0F); + this.stick3 = new ModelRenderer(this, 0, 17); + this.stick3.setRotationPoint(4.0F, 24.0F, -6.0F); + this.stick3.addBox(-0.5F, -14.0F, -0.5F, 1, 14, 1, 0.0F); + this.setRotateAngle(stick3, -0.5462880558742251F, -0.36425021489121656F, 0.0F); + this.rock17 = new ModelRenderer(this, 0, 0); + this.rock17.setRotationPoint(0.0F, 24.0F, 0.0F); + this.rock17.addBox(4.0F, -1.0F, 3.0F, 1, 1, 1, 0.0F); + this.rock9 = new ModelRenderer(this, 0, 8); + this.rock9.setRotationPoint(-1.0F, 24.0F, 1.0F); + this.rock9.addBox(-4.0F, -2.0F, 0.0F, 2, 2, 2, 0.0F); + this.rock14 = new ModelRenderer(this, 0, 8); + this.rock14.setRotationPoint(0.0F, 24.0F, 0.0F); + this.rock14.addBox(4.0F, -2.0F, -3.0F, 2, 2, 2, 0.0F); + this.rock2 = new ModelRenderer(this, 0, 0); + this.rock2.setRotationPoint(0.0F, 24.0F, 0.0F); + this.rock2.addBox(-2.0F, -1.0F, 4.0F, 1, 1, 1, 0.0F); + } + + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + this.rock1.render(f5); + this.rock8.render(f5); + this.log.render(f5); + this.rock4.render(f5); + this.stick4.render(f5); + this.rock15.render(f5); + this.stick2.render(f5); + this.rock7.render(f5); + this.rock16.render(f5); + this.rock5.render(f5); + this.rock13.render(f5); + this.rock6.render(f5); + this.stick1.render(f5); + this.rock3.render(f5); + this.rock10.render(f5); + this.rock11.render(f5); + this.rock12.render(f5); + this.stick3.render(f5); + this.rock17.render(f5); + this.rock9.render(f5); + this.rock14.render(f5); + this.rock2.render(f5); + } + + /** + * This is a helper function from Tabula to set the rotation of model parts + */ + public void setRotateAngle(ModelRenderer modelRenderer, float x, float y, float z) + { + modelRenderer.rotateAngleX = x; + modelRenderer.rotateAngleY = y; + modelRenderer.rotateAngleZ = z; + } + +} diff --git a/client/models/ModelClockworkCrossbow.java b/client/models/ModelClockworkCrossbow.java new file mode 100644 index 00000000..0580c0d8 --- /dev/null +++ b/client/models/ModelClockworkCrossbow.java @@ -0,0 +1,282 @@ +package com.darkona.adventurebackpack.client.models; + +import com.darkona.adventurebackpack.client.render.RendererStack; +import com.darkona.adventurebackpack.util.Utils; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import org.lwjgl.opengl.GL11; + +/** + * clockworkCrossbow - Darkona + * Created using Tabula 4.1.0 + */ +public class ModelClockworkCrossbow extends ModelBase +{ + public ModelRenderer xbowBody; + public ModelRenderer leftArc1; + public ModelRenderer rightArc1; + public ModelRenderer magazine; + public ModelRenderer handle; + public ModelRenderer trigger; + public ModelRenderer handle2; + public ModelRenderer reloader1; + public ModelRenderer wheel; + public ModelRenderer point; + public ModelRenderer sniperLeg1; + public ModelRenderer sniperLeg1_1; + public ModelRenderer hookBolt; + public ModelRenderer leftArc2; + public ModelRenderer leftArc3; + public ModelRenderer stringLeft; + public ModelRenderer rightArc2; + public ModelRenderer rightArc3; + public ModelRenderer stringRight; + public ModelRenderer arrow1; + public ModelRenderer arrow2; + public ModelRenderer arrow3; + public ModelRenderer reloader2; + public ModelRenderer reloader3; + public ModelRenderer shape37; + public ModelRenderer shape38; + public ModelRenderer hookHead; + public ModelRenderer hookTooth1; + public ModelRenderer hookTooth2; + public ModelRenderer hookTooth3; + public ModelRenderer hookTooth4; + public RendererStack arrow; + private ItemStack xbow; + + public ModelClockworkCrossbow() + { + this.textureWidth = 64; + this.textureHeight = 64; + this.hookTooth1 = new ModelRenderer(this, 0, 0); + this.hookTooth1.setRotationPoint(0.0F, -1.0F, 3.0F); + this.hookTooth1.addBox(0.0F, 0.0F, 0.0F, 3, 1, 1, 0.0F); + this.reloader3 = new ModelRenderer(this, 5, 45); + this.reloader3.setRotationPoint(1.0F, 3.0F, 0.0F); + this.reloader3.addBox(0.0F, -1.0F, -1.0F, 5, 2, 2, 0.0F); + this.shape38 = new ModelRenderer(this, 0, 50); + this.shape38.setRotationPoint(-0.7F, 7.3F, -0.5F); + this.shape38.addBox(0.0F, 0.0F, 0.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(shape38, 0.0F, 0.0F, -1.1344640137963142F); + this.hookTooth4 = new ModelRenderer(this, 0, 0); + this.hookTooth4.setRotationPoint(0.0F, 3.0F, -1.0F); + this.hookTooth4.addBox(0.0F, 0.0F, 0.0F, 3, 1, 1, 0.0F); + + this.stringLeft = new ModelRenderer(this, 56, 36); + this.stringLeft.setRotationPoint(7.3F, 0.3F, 2.0F); + this.stringLeft.addBox(-0.5F, 0.0F, -0.5F, 1, 22, 1, 0.0F); + this.setRotateAngle(stringLeft, 1.5707963267948966F, -0.5235987755982988F, 0.0F); + this.stringRight = new ModelRenderer(this, 56, 36); + this.stringRight.setRotationPoint(7.3F, 0.3F, -2.0F); + this.stringRight.addBox(-0.5F, 0.0F, -0.5F, 1, 22, 1, 0.0F); + this.setRotateAngle(stringRight, -1.5707963267948966F, 0.5235987755982988F, 0.0F); + + this.wheel = new ModelRenderer(this, 32, 17); + this.wheel.setRotationPoint(-4.0F, 4.0F, 9.0F); + this.wheel.addBox(0.0F, -2.5F, -2.5F, 1, 5, 5, 0.0F); + this.reloader1 = new ModelRenderer(this, 0, 41); + this.reloader1.setRotationPoint(3.0F, 3.0F, 11.0F); + this.reloader1.addBox(0.0F, -0.5F, -0.5F, 7, 1, 1, 0.0F); + this.sniperLeg1 = new ModelRenderer(this, 0, 50); + this.sniperLeg1.setRotationPoint(-2.0F, 3.0F, -12.0F); + this.sniperLeg1.addBox(-0.5F, 0.0F, -0.5F, 1, 7, 1, 0.0F); + this.setRotateAngle(sniperLeg1, 0.0F, 0.0F, 0.4363323129985824F); + this.trigger = new ModelRenderer(this, 0, 20); + this.trigger.setRotationPoint(-1.0F, 4.0F, 9.0F); + this.trigger.addBox(0.0F, 0.0F, 0.0F, 2, 4, 3, 0.0F); + + this.shape37 = new ModelRenderer(this, 0, 50); + this.shape37.setRotationPoint(0.3F, 6.6F, -0.5F); + this.shape37.addBox(0.0F, 0.0F, 0.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(shape37, 0.0F, 0.0F, 1.1344640137963142F); + this.sniperLeg1_1 = new ModelRenderer(this, 0, 50); + this.sniperLeg1_1.setRotationPoint(2.0F, 3.0F, -12.0F); + this.sniperLeg1_1.addBox(-0.5F, 0.0F, -0.5F, 1, 7, 1, 0.0F); + this.setRotateAngle(sniperLeg1_1, 0.0F, 0.0F, -0.4363323129985824F); + + + + this.hookTooth2 = new ModelRenderer(this, 0, 0); + this.hookTooth2.setRotationPoint(0.0F, -1.0F, -1.0F); + this.hookTooth2.addBox(0.0F, 0.0F, 0.0F, 3, 1, 1, 0.0F); + + this.arrow1 = new ModelRenderer(this, 0, 0); + this.arrow1.setRotationPoint(10.0F, 1.0F, 3.0F); + this.arrow1.addBox(0.0F, 0.0F, 0.0F, 0, 0, 0, 0.0F); + this.arrow2 = new ModelRenderer(this, 0, 0); + this.arrow2.setRotationPoint(10.0F, 4.0F, 3.0F); + this.arrow2.addBox(0.0F, 0.0F, 0.0F, 0, 0, 0, 0.0F); + this.arrow3 = new ModelRenderer(this, 0, 0); + this.arrow3.setRotationPoint(10.0F, 7.0F, 3.0F); + this.arrow3.addBox(0.0F, 0.0F, 0.0F, 0, 0, 0, 0.0F); + + this.hookHead = new ModelRenderer(this, 0, 0); + this.hookHead.setRotationPoint(-0.5F, -1.0F, -1.0F); + this.hookHead.addBox(0.0F, 0.0F, 0.0F, 1, 3, 3, 0.0F); + this.xbowBody = new ModelRenderer(this, 0, 35); + this.xbowBody.setRotationPoint(0.0F, 0.0F, 0.0F); + this.xbowBody.addBox(-3.0F, 0.0F, -13.0F, 6, 4, 25, 0.0F); + this.hookBolt = new ModelRenderer(this, 18, 12); + this.hookBolt.setRotationPoint(0.5F, -1.0F, -20.0F); + this.hookBolt.addBox(0.0F, 0.0F, 0.0F, 22, 1, 1, 0.0F); + this.setRotateAngle(hookBolt, 0.0F, -1.5707963267948966F, 0.0F); + this.point = new ModelRenderer(this, 45, 16); + this.point.setRotationPoint(-2.0F, 0.0F, -16.0F); + this.point.addBox(0.0F, 0.0F, 0.0F, 4, 2, 3, 0.0F); + + this.rightArc1 = new ModelRenderer(this, 0, 36); + this.rightArc1.setRotationPoint(-2.0F, 0.1F, -13.0F); + this.rightArc1.addBox(-8.0F, 0.0F, 0.0F, 8, 2, 2, 0.0F); + this.setRotateAngle(rightArc1, 0.0F, -0.5235987755982988F, 0.0F); + this.rightArc2 = new ModelRenderer(this, 0, 36); + this.rightArc2.setRotationPoint(-8.0F, 0.0F, 0.0F); + this.rightArc2.addBox(0.0F, 0.0F, -2.0F, 8, 2, 2, 0.0F); + this.setRotateAngle(rightArc2, 0.0F, -2.367539130330308F, 0.0F); + this.rightArc3 = new ModelRenderer(this, 0, 36); + this.rightArc3.setRotationPoint(8.0F, 0.0F, 0.0F); + this.rightArc3.addBox(0.0F, 0.0F, -2.0F, 8, 2, 2, 0.0F); + this.setRotateAngle(rightArc3, 0.0F, 0.7853981633974483F, 0.0F); + + this.leftArc1 = new ModelRenderer(this, 0, 36); + this.leftArc1.setRotationPoint(2.0F, 0.1F, -13.0F); + this.leftArc1.addBox(0.0F, 0.0F, 0.0F, 8, 2, 2, 0.0F); + this.setRotateAngle(leftArc1, 0.0F, 0.5235987755982988F, 0.0F); + this.leftArc2 = new ModelRenderer(this, 0, 36); + this.leftArc2.setRotationPoint(8.0F, 0.0F, 0.0F); + this.leftArc2.addBox(0.0F, 0.0F, 0.0F, 8, 2, 2, 0.0F); + this.setRotateAngle(leftArc2, 0.0F, -0.7853981633974483F, 0.0F); + this.leftArc3 = new ModelRenderer(this, 0, 36); + this.leftArc3.setRotationPoint(8.0F, 0.0F, 0.0F); + this.leftArc3.addBox(0.0F, 0.0F, 0.0F, 8, 2, 2, 0.0F); + this.setRotateAngle(leftArc3, 0.0F, -0.7853981633974483F, 0.0F); + + + this.reloader2 = new ModelRenderer(this, 0, 44); + this.reloader2.setRotationPoint(6.0F, 1.0F, 0.0F); + this.reloader2.addBox(0.0F, -0.5F, -0.5F, 1, 4, 1, 0.0F); + this.handle2 = new ModelRenderer(this, 39, 53); + this.handle2.setRotationPoint(-1.0F, 0.0F, 12.0F); + this.handle2.addBox(0.0F, 0.0F, 0.0F, 2, 4, 3, 0.0F); + this.handle = new ModelRenderer(this, 39, 40); + this.handle.setRotationPoint(-1.0F, 5.0F, 14.0F); + this.handle.addBox(0.0F, -3.0F, 1.0F, 2, 10, 3, 0.0F); + this.setRotateAngle(handle, 1.0016444577195458F, 0.0F, 0.0F); + this.magazine = new ModelRenderer(this, 0, 16); + this.magazine.setRotationPoint(-5.0F, 1.0F, -7.0F); + this.magazine.addBox(0.0F, 0.0F, 0.0F, 10, 6, 12, 0.0F); + this.hookTooth3 = new ModelRenderer(this, 0, 0); + this.hookTooth3.setRotationPoint(0.0F, 3.0F, 3.0F); + this.hookTooth3.addBox(0.0F, 0.0F, 0.0F, 3, 1, 1, 0.0F); + + + this.hookHead.addChild(this.hookTooth1); + this.reloader2.addChild(this.reloader3); + this.sniperLeg1_1.addChild(this.shape38); + this.hookHead.addChild(this.hookTooth4); + this.leftArc3.addChild(this.stringLeft); + this.sniperLeg1.addChild(this.shape37); + this.leftArc1.addChild(this.leftArc2); + this.rightArc3.addChild(this.stringRight); + this.magazine.addChild(this.arrow3); + this.hookHead.addChild(this.hookTooth2); + this.magazine.addChild(this.arrow2); + this.hookBolt.addChild(this.hookHead); + this.rightArc1.addChild(this.rightArc2); + this.rightArc2.addChild(this.rightArc3); + this.magazine.addChild(this.arrow1); + this.leftArc2.addChild(this.leftArc3); + this.reloader1.addChild(this.reloader2); + this.hookHead.addChild(this.hookTooth3); + + arrow = new RendererStack(this, true); + arrow.stack = new ItemStack(Items.arrow, 1); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack xbow) + { + this.xbow = xbow; + render(entity,f,f1,f2,f3,f4,f5); + } + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + + this.wheel.render(f5); + this.reloader1.render(f5); + this.sniperLeg1.render(f5); + this.trigger.render(f5); + + this.sniperLeg1_1.render(f5); + this.xbowBody.render(f5); + //this.hookBolt.render(f5); + this.point.render(f5); + + this.handle2.render(f5); + this.handle.render(1/18f); + this.magazine.render(f5); + + + ModelRenderer[] arrows = {arrow1, arrow2, arrow3}; + + + setRotateAngle(arrow, Utils.degreesToRadians(-90), Utils.degreesToRadians(0), Utils.degreesToRadians(0)); + for (ModelRenderer model : arrows) + { + arrow.setRotationPoint(model.rotationPointX, model.rotationPointY, model.rotationPointZ); + setOffset(arrow, -.25f, .1f, -.2f); + arrow.render(f5); + setOffset(arrow, -.75f, .1f, -.2f); + arrow.render(f5); + } + if(xbow != null && xbow.hasTagCompound() && xbow.stackTagCompound.hasKey("Shot")) + { + if((xbow.stackTagCompound.getByte("Shot")>0)) + { + setRotateAngle(stringLeft, 1.5707963267948966F, -0.5235987755982988F, 0.0F); + setRotateAngle(stringRight, -1.5707963267948966F, 0.5235987755982988F, 0.0F); + }else + { + renderNormal(); + } + }else{ + renderNormal(); + } + this.leftArc1.render(f5); + this.rightArc1.render(f5); + } + + private void renderNormal() + { + setRotateAngle(stringLeft, 1.5707963267948966F, 0.0F, 0.0F); + setRotateAngle(stringRight, -1.5707963267948966F, 0.0F, 0.0F); + setOffset(arrow, -.0f, -.0f, -.2f); + setRotateAngle(arrow, Utils.degreesToRadians(-90), Utils.degreesToRadians(0), Utils.degreesToRadians(90)); + arrow.setRotationPoint(xbowBody.rotationPointX, xbowBody.rotationPointY, xbowBody.rotationPointZ); + GL11.glPushMatrix(); + GL11.glScalef(1.0f,1.0f,2f); + arrow.render(1 / 14); + GL11.glPopMatrix(); + } + + /** + * This is a helper function from Tabula to set the rotation of model parts + */ + public void setRotateAngle(ModelRenderer modelRenderer, float x, float y, float z) + { + modelRenderer.rotateAngleX = x; + modelRenderer.rotateAngleY = y; + modelRenderer.rotateAngleZ = z; + } + + public void setOffset(ModelRenderer modelRenderer, float x, float y, float z) + { + modelRenderer.offsetX = x; + modelRenderer.offsetY = y; + modelRenderer.offsetZ = z; + } +} diff --git a/client/models/ModelCoalJetpack.java b/client/models/ModelCoalJetpack.java new file mode 100644 index 00000000..d0af05d2 --- /dev/null +++ b/client/models/ModelCoalJetpack.java @@ -0,0 +1,200 @@ +package com.darkona.adventurebackpack.client.models; + +import codechicken.lib.vec.Vector3; +import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import org.lwjgl.opengl.GL11; + +import java.util.List; + + +public class ModelCoalJetpack extends ModelWearable { + public ModelRenderer Base; + public ModelRenderer tubeStraightLeft; + public ModelRenderer tubeStraightRight; + public ModelRenderer tubeEndLeft; + public ModelRenderer tubeEndRight; + public ModelRenderer tankWallLeft; + public ModelRenderer tankWallRight; + public ModelRenderer fireBox; + public ModelRenderer tankTop; + public ModelRenderer tankBottom; + public ModelRenderer pressureTank; + public ModelRenderer waterTube1; + public ModelRenderer waterTube2; + public ModelRenderer tubeBendLeft; + public ModelRenderer tubeBendRight; + private ItemStack jetpack; + + @SuppressWarnings("unchecked") + public ModelCoalJetpack() { + this.textureWidth = 64; + this.textureHeight = 32; + + this.tubeStraightRight = new ModelRenderer(this, 0, 14); + this.tubeStraightRight.setRotationPoint(-3.0F, 1.0F, 8.3F); + this.tubeStraightRight.addBox(-5.8F, 0.0F, 0.0F, 6, 1, 1, 0.0F); + + this.tubeEndLeft = new ModelRenderer(this, 0, 17); + this.tubeEndLeft.setRotationPoint(7.6F, 1.7F, 8.3F); + this.tubeEndLeft.addBox(0.0F, 0.0F, 0.0F, 1, 4, 1, -0.1F); + + this.setRotateAngle(tubeEndLeft, 0.0F, 0.0F, -0.2617993877991494F); + this.tankBottom = new ModelRenderer(this, 10, 20); + this.tankBottom.setRotationPoint(-1.0F, 8.0F, 3.0F); + this.tankBottom.addBox(-3.0F, 1.0F, 0.0F, 3, 1, 3, 0.0F); + this.tubeBendLeft = new ModelRenderer(this, 0, 14); + this.tubeBendLeft.setRotationPoint(-2.0F, 1.0F, 2.0F); + this.tubeBendLeft.addBox(0.0F, 0.0F, 0.0F, 5, 1, 1, 0.0F); + this.setRotateAngle(tubeBendLeft, 0.0F, -0.8080874436733745F, 0.0F); + this.waterTube2 = new ModelRenderer(this, 10, 17); + this.waterTube2.setRotationPoint(0.0F, 1.0F, 0.0F); + this.waterTube2.addBox(-2.0F, 1.0F, 1.0F, 2, 1, 1, 0.0F); + this.tubeEndRight = new ModelRenderer(this, 0, 17); + this.tubeEndRight.setRotationPoint(-7.7F, 1.6F, 8.3F); + this.tubeEndRight.addBox(-1.0F, 0.0F, 0.0F, 1, 4, 1, -0.1F); + this.setRotateAngle(tubeEndRight, 0.0F, 0.0F, 0.2617993877991494F); + this.Base = new ModelRenderer(this, 0, 0); + this.Base.setRotationPoint(0.0F, 0.0F, 0.0F); + this.Base.addBox(-4.0F, 0.0F, 2.0F, 8, 12, 1, 0.0F); + this.waterTube1 = new ModelRenderer(this, 10, 17); + this.waterTube1.setRotationPoint(0.0F, 1.0F, 0.0F); + this.waterTube1.addBox(-2.0F, 1.0F, 1.0F, 1, 1, 1, 0.0F); + this.tubeBendRight = new ModelRenderer(this, 0, 14); + this.tubeBendRight.setRotationPoint(-2.0F, 1.0F, 2.0F); + this.tubeBendRight.addBox(-5.0F, 0.0F, 0.0F, 5, 1, 1, 0.0F); + this.setRotateAngle(tubeBendRight, 0.0F, 0.7976154681614086F, 0.0F); + this.tankWallLeft = new ModelRenderer(this, 3, 23); + this.tankWallLeft.setRotationPoint(-1.0F, 1.0F, 1.0F); + this.tankWallLeft.addBox(0.0F, 6.0F, 2.0F, 1, 1, 3, 0.0F); + this.tankWallRight = new ModelRenderer(this, 5, 17); + this.tankWallRight.setRotationPoint(-1.0F, 1.0F, 3.0F); + this.tankWallRight.addBox(-3.0F, 0.0F, 2.0F, 1, 8, 1, 0.0F); + this.pressureTank = new ModelRenderer(this, 19, 0); + this.pressureTank.setRotationPoint(2.0F, 0.0F, 3.0F); + this.pressureTank.addBox(-3.0F, 0.0F, 0.0F, 5, 7, 3, 0.0F); + this.fireBox = new ModelRenderer(this, 26, 25); + this.fireBox.setRotationPoint(2.0F, 8.0F, 3.0F); + this.fireBox.addBox(-3.0F, 0.0F, 0.0F, 5, 4, 3, 0.0F); + this.tankTop = new ModelRenderer(this, 10, 20); + this.tankTop.setRotationPoint(-4.0F, 0.0F, 3.0F); + this.tankTop.addBox(0.0F, 0.0F, 0.0F, 3, 1, 3, 0.0F); + this.tubeStraightLeft = new ModelRenderer(this, 0, 14); + this.tubeStraightLeft.setRotationPoint(2.7F, 1.0F, 8.3F); + this.tubeStraightLeft.addBox(0.0F, 0.0F, 0.0F, 6, 1, 1, 0.0F); + + this.Base.addChild(this.tankBottom); + this.pressureTank.addChild(this.tubeBendLeft); + this.waterTube1.addChild(this.waterTube2); + this.tankBottom.addChild(this.waterTube1); + this.pressureTank.addChild(this.tubeBendRight); + this.Base.addChild(this.pressureTank); + this.Base.addChild(this.fireBox); + this.Base.addChild(this.tankTop); + + bipedBody.addChild(Base); + bipedBody.addChild(tubeStraightLeft); + bipedBody.addChild(tubeStraightRight); + bipedBody.addChild(tubeEndLeft); + bipedBody.addChild(tubeEndRight); + bipedBody.addChild(tankWallLeft); + bipedBody.addChild(tankWallRight); + + + float offsetZ = 0.08F; + float offsetY = 0.0F; + for (ModelRenderer part : (List) bipedBody.childModels) + { + setOffset(part, part.offsetX + 0, part.offsetY + offsetY, part.offsetZ + offsetZ); + } + } + + public ModelCoalJetpack setWearable(ItemStack wearable) + { + this.jetpack = wearable; + return this; + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack stack) + { + this.jetpack = stack; + render(entity, f, f1,f2,f3,f4,f5); + } + + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + isSneak = (entity != null && entity.isSneaking()); + + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + + if (entity != null && entity instanceof EntityPlayer) + { + GL11.glPushMatrix(); + + GL11.glTranslatef(bipedBody.offsetX, bipedBody.offsetY, bipedBody.offsetZ); + GL11.glColor4f(1, 1, 1, 1); + + if (bipedBody.rotateAngleX == 0.0F && bipedBody.rotateAngleY == 0.0F && bipedBody.rotateAngleZ == 0.0F) + { + if (bipedBody.rotationPointX == 0.0F && bipedBody.rotationPointY == 0.0F && bipedBody.rotationPointZ == 0.0F) + { + renderSteamPack(f5); + } else + { + GL11.glTranslatef(bipedBody.rotationPointX * f5, bipedBody.rotationPointY * f5, bipedBody.rotationPointZ * f5); + renderSteamPack(f5); + GL11.glTranslatef(-bipedBody.rotationPointX * f5, -bipedBody.rotationPointY * f5, -bipedBody.rotationPointZ * f5); + } + } else + { + GL11.glPushMatrix(); + GL11.glTranslatef(bipedBody.rotationPointX * f5, bipedBody.rotationPointY * f5, bipedBody.rotationPointZ * f5); + + if (bipedBody.rotateAngleZ != 0.0F) + { + GL11.glRotatef(bipedBody.rotateAngleZ * (180F / (float) Math.PI), 0.0F, 0.0F, 1.0F); + } + + if (bipedBody.rotateAngleY != 0.0F) + { + GL11.glRotatef(bipedBody.rotateAngleY * (180F / (float) Math.PI), 0.0F, 1.0F, 0.0F); + } + + if (bipedBody.rotateAngleX != 0.0F) + { + GL11.glRotatef(bipedBody.rotateAngleX * (180F / (float) Math.PI), 1.0F, 0.0F, 0.0F); + } + renderSteamPack(f5); + GL11.glPopMatrix(); + } + GL11.glTranslatef(-bipedBody.offsetX, -bipedBody.offsetY, -(bipedBody.offsetZ)); + GL11.glPopMatrix(); + } + + } + + public void renderSteamPack(float f5) + { + InventoryCoalJetpack inv = new InventoryCoalJetpack(jetpack); + + this.fireBox.setTextureOffset((inv.getBurnTicks() > 0) ? 9 : 26, 25); + + tubeStraightRight.render(f5); + tubeEndLeft.render(f5); + tubeEndRight.render(f5); + Base.render(f5); + tankWallLeft.render(f5); + tankWallRight.render(f5); + tubeStraightLeft.render(f5); + + GL11.glPushMatrix(); + renderFluidInTank(inv.getWaterTank(), new Vector3(0, .5f, 0), new Vector3(.155f, 0, .135f), new Vector3(0.18f, 0.0625f, -0.045f), tankTop); + GL11.glPopMatrix(); + + } + +} diff --git a/client/models/ModelCopterPack.java b/client/models/ModelCopterPack.java new file mode 100644 index 00000000..27f3c147 --- /dev/null +++ b/client/models/ModelCopterPack.java @@ -0,0 +1,280 @@ +package com.darkona.adventurebackpack.client.models; + +import codechicken.lib.vec.Vector3; +import com.darkona.adventurebackpack.inventory.InventoryCopterPack; +import com.darkona.adventurebackpack.item.ItemCopterPack; +import com.darkona.adventurebackpack.util.Utils; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import org.lwjgl.opengl.GL11; + +import java.util.List; + +/** + * Created on 31/12/2014 + * + * @author Darkona + */ +public class ModelCopterPack extends ModelWearable +{ + + public static ModelCopterPack instance = new ModelCopterPack(); + public ModelRenderer Base; + public ModelRenderer EngineBody; + public ModelRenderer TankTop; + + public ModelRenderer EnginePistonLeft; + public ModelRenderer EnginePistonRight; + public ModelRenderer Axis; + public ModelRenderer Blade1; + public ModelRenderer Blade2; + public ModelRenderer Blade3; + public ModelRenderer Blade4; + public ModelRenderer TankWallLeftBack; + public ModelRenderer TankWallRightBack; + public ModelRenderer TankWallLeftFront; + public ModelRenderer TankWallRightFront; + public ModelRenderer TankBottom; + public ModelRenderer FuelLine1; + public ModelRenderer FuelLine2; + public ModelRenderer Escape1; + public ModelRenderer Escape2; + public ModelRenderer Escape3; + public ModelRenderer EscapeFilter; + private ItemStack copterPack; + + @SuppressWarnings("unchecked") + private void init() + { + this.textureWidth = 64; + this.textureHeight = 64; + + this.Base = new ModelRenderer(this, 0, 0); + this.Base.setRotationPoint(0.0F, 0.0F, 0.0F); + this.Base.addBox(-4.0F, 0.0F, 2.0F, 8, 12, 1); + + + //TANK + + this.TankTop = new ModelRenderer(this, 0, 33); + this.TankTop.setRotationPoint(1.0F, 0.0F, 3.0F); + this.TankTop.addBox(0.0F, 0.0F, 0.0F, 5, 1, 5, 0.0F); + this.Base.addChild(this.TankTop); + + this.TankWallLeftFront = new ModelRenderer(this, 0, 40); + this.TankWallLeftFront.setRotationPoint(0.0F, 0.0F, 0.0F); + this.TankWallLeftFront.addBox(4.0F, 1.0F, 0.0F, 1, 4, 1, 0.0F); + this.TankTop.addChild(this.TankWallLeftFront); + + this.TankWallLeftBack = new ModelRenderer(this, 0, 32); + this.TankWallLeftBack.setRotationPoint(0.0F, 0.0F, 0.0F); + this.TankWallLeftBack.addBox(4.0F, 1.0F, 4.0F, 1, 4, 1, 0.0F); + this.TankTop.addChild(this.TankWallLeftBack); + + this.TankWallRightFront = new ModelRenderer(this, 16, 40); + this.TankWallRightFront.setRotationPoint(0.0F, 0.0F, 0.0F); + this.TankWallRightFront.addBox(0.0F, 1.0F, 0.0F, 1, 4, 1, 0.0F); + this.TankTop.addChild(this.TankWallRightFront); + + this.TankWallRightBack = new ModelRenderer(this, 16, 32); + this.TankWallRightBack.setRotationPoint(0.0F, 0.0F, 0.0F); + this.TankWallRightBack.addBox(0.0F, 1.0F, 4.0F, 1, 4, 1, 0.0F); + this.TankTop.addChild(this.TankWallRightBack); + + this.TankBottom = new ModelRenderer(this, 0, 41); + this.TankBottom.setRotationPoint(0.0F, 0.0F, 0.0F); + this.TankBottom.addBox(0.0F, 5.0F, 0.0F, 5, 1, 5, 0.0F); + this.TankTop.addChild(this.TankBottom); + + this.FuelLine1 = new ModelRenderer(this, 15, 48); + this.FuelLine1.setRotationPoint(0.0F, 5.0F, 0.0F); + this.FuelLine1.addBox(2.0F, 1.0F, 2.0F, 1, 4, 1, 0.0F); + this.TankBottom.addChild(this.FuelLine1); + + this.FuelLine2 = new ModelRenderer(this, 0, 48); + this.FuelLine2.setRotationPoint(0.0F, 8.0F, 0.0F); + this.FuelLine2.addBox(1.0F, 1.0F, 2.0F, 1, 1, 1, 0.0F); + this.TankBottom.addChild(this.FuelLine2); + + + //ENGINE + this.EngineBody = new ModelRenderer(this, 0, 23); + this.EngineBody.setRotationPoint(0.0F, 0.0F, 0.0F); + this.EngineBody.addBox(-2.0F, 8.0F, 3.0F, 4, 4, 4); + this.Base.addChild(this.EngineBody); + + this.EnginePistonLeft = new ModelRenderer(this, 0, 18); + this.EnginePistonLeft.setRotationPoint(0.0F, 8.0F, 5.0F); + this.EnginePistonLeft.addBox(1.7F, 1.0F, -1.0F, 4, 2, 2); + this.setRotateAngle(EnginePistonLeft, 0.0F, -0.7853981633974483F, 0.0F); + this.EngineBody.addChild(this.EnginePistonLeft); + + this.EnginePistonRight = new ModelRenderer(this, 13, 18); + this.EnginePistonRight.setRotationPoint(0.0F, 8.0F, 5.0F); + this.EnginePistonRight.addBox(1.7F, 1.0F, -1.0F, 4, 2, 2); + this.setRotateAngle(EnginePistonRight, 0.0F, -2.356194490192345F, 0.0F); + this.EngineBody.addChild(this.EnginePistonRight); + + this.Axis = new ModelRenderer(this, 25, 22); + this.Axis.setRotationPoint(0.0F, 8.0F, 5.75F); + this.Axis.addBox(-0.5F, -25.0F, -0.5F, 1, 25, 1); + //this.EngineBody.addChild(this.Axis); + + this.Blade1 = new ModelRenderer(this, 29, 0); + this.Blade1.setRotationPoint(0.0F, -25.0F, 0.0F); + this.Blade1.addBox(0.0F, -0.5F, -1.0F, 15, 1, 2); + this.Axis.addChild(this.Blade1); + + this.Blade2 = new ModelRenderer(this, 30, 4); + this.Blade2.setRotationPoint(0.0F, -25.0F, 0.0F); + this.Blade2.addBox(-1.0F, -0.5F, 0.0F, 2, 1, 15); + this.Axis.addChild(this.Blade2); + + this.Blade3 = new ModelRenderer(this, 29, 0); + this.Blade3.setRotationPoint(0.0F, -25.0F, 0.0F); + this.Blade3.addBox(0.0F, -0.5F, -1.0F, 15, 1, 2); + this.setRotateAngle(Blade3, 0.0F, 0.0F, 3.141592653589793F); + this.Axis.addChild(this.Blade3); + + this.Blade4 = new ModelRenderer(this, 30, 4); + this.Blade4.setRotationPoint(0.0F, -25.0F, 0.0F); + this.Blade4.addBox(-1.0F, -0.5F, 0.0F, 2, 1, 15); + this.setRotateAngle(Blade4, -3.141592653589793F, 0.0F, 0.0F); + this.Axis.addChild(this.Blade4); + + //ESCAPE + + this.Escape1 = new ModelRenderer(this, 9, 35); + this.Escape1.setRotationPoint(-4.0F, 9.0F, 4.0F); + this.Escape1.addBox(0.0F, 0.0F, 0.0F, 2, 1, 1); + this.Base.addChild(this.Escape1); + + this.Escape2 = new ModelRenderer(this, 38, 40); + this.Escape2.setRotationPoint(-4.0F, 0.0F, 4.0F); + this.Escape2.addBox(0.0F, 0.0F, 0.0F, 1, 9, 1); + this.Base.addChild(this.Escape2); + + this.Escape3 = new ModelRenderer(this, 6, 24); + this.Escape3.setRotationPoint(-4.0F, 0.0F, 5.0F); + this.Escape3.addBox(0.0F, 0.0F, 0.0F, 1, 1, 2); + this.Base.addChild(this.Escape3); + + this.EscapeFilter = new ModelRenderer(this, 35, 28); + this.EscapeFilter.setRotationPoint(-4.4F, 2.0F, 3.5F); + this.EscapeFilter.addBox(0.0F, 0.0F, 0.0F, 2, 5, 2); + this.Base.addChild(this.EscapeFilter); + + this.bipedBody.addChild(this.Base); + + float offsetZ = 0.1F; + float offsetY = 0.0F; + for (ModelRenderer part : (List) bipedBody.childModels) + { + setOffset(part, part.offsetX + 0, part.offsetY + offsetY, part.offsetZ + offsetZ); + } + } + + public ModelCopterPack setWearable(ItemStack wearable) + { + this.copterPack = wearable; + return this; + } + public ModelCopterPack(ItemStack wearable) + { + this.copterPack = wearable; + init(); + } + + public ModelCopterPack() + { + init(); + } + + private void renderCopterPack(Entity entity, float scale) + { + InventoryCopterPack copterInv = new InventoryCopterPack(this.copterPack); + copterInv.openInventory(); + Axis.isHidden = true; + if (copterPack != null && copterPack.stackTagCompound != null && copterPack.stackTagCompound.hasKey("status")) + { + if (copterPack.stackTagCompound.getByte("status") != ItemCopterPack.OFF_MODE) + { + Axis.isHidden = false; + int degrees; + if (entity.onGround || (entity.isSneaking())) + { + degrees = 16; + } else + { + degrees = entity.motionY > 0 ? 36 : 28; + } + float deg = Utils.radiansToDegrees(this.Axis.rotateAngleY); + this.Axis.rotateAngleY = (deg <= 360 + degrees) ? Utils.degreesToRadians(deg + degrees) : 0; + } + } + this.Base.render(scale); + this.Axis.render(scale); + renderFluidInTank(copterInv.getFuelTank(), new Vector3(0, .25f, 0), new Vector3(.25f, 0, .25f), new Vector3(0f, 0.0625f, 0.0f), TankTop); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack stack) + { + this.copterPack = stack; + render(entity, f, f1,f2,f3,f4,f5); + } + + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + isSneak = (entity != null && entity.isSneaking()); + + if (entity == null) Axis.isHidden = true; + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + if (entity != null && entity instanceof EntityPlayer) + { + GL11.glPushMatrix(); + + GL11.glTranslatef(bipedBody.offsetX, bipedBody.offsetY, bipedBody.offsetZ); + GL11.glColor4f(1, 1, 1, 1); + + if (bipedBody.rotateAngleX == 0.0F && bipedBody.rotateAngleY == 0.0F && bipedBody.rotateAngleZ == 0.0F) + { + if (bipedBody.rotationPointX == 0.0F && bipedBody.rotationPointY == 0.0F && bipedBody.rotationPointZ == 0.0F) + { + renderCopterPack(entity, f5); + + } else + { + GL11.glTranslatef(bipedBody.rotationPointX * f5, bipedBody.rotationPointY * f5, bipedBody.rotationPointZ * f5); + renderCopterPack(entity, f5); + GL11.glTranslatef(-bipedBody.rotationPointX * f5, -bipedBody.rotationPointY * f5, -bipedBody.rotationPointZ * f5); + } + } else + { + GL11.glPushMatrix(); + GL11.glTranslatef(bipedBody.rotationPointX * f5, bipedBody.rotationPointY * f5, bipedBody.rotationPointZ * f5); + + if (bipedBody.rotateAngleZ != 0.0F) + { + GL11.glRotatef(bipedBody.rotateAngleZ * (180F / (float) Math.PI), 0.0F, 0.0F, 1.0F); + } + + if (bipedBody.rotateAngleY != 0.0F) + { + GL11.glRotatef(bipedBody.rotateAngleY * (180F / (float) Math.PI), 0.0F, 1.0F, 0.0F); + } + + if (bipedBody.rotateAngleX != 0.0F) + { + GL11.glRotatef(bipedBody.rotateAngleX * (180F / (float) Math.PI), 1.0F, 0.0F, 0.0F); + } + renderCopterPack(entity, f5); + GL11.glPopMatrix(); + } + GL11.glTranslatef(-bipedBody.offsetX, -bipedBody.offsetY, -(bipedBody.offsetZ)); + GL11.glPopMatrix(); + } + } +} \ No newline at end of file diff --git a/client/models/ModelFullArmor.java b/client/models/ModelFullArmor.java new file mode 100644 index 00000000..d769fabf --- /dev/null +++ b/client/models/ModelFullArmor.java @@ -0,0 +1,42 @@ +package com.darkona.adventurebackpack.client.models; + +import net.minecraft.client.model.ModelBiped; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumAction; + +/** + * Created on 19/10/2014 + * + * @author Darkona + */ +public class ModelFullArmor extends ModelBiped +{ + public ModelFullArmor() + { + super(0.2F); + } + + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + + setRotationAngles(f,f1,f2,f3,f4,f5,entity); + if(entity instanceof EntityLivingBase) + { + EntityLivingBase owner = (EntityLivingBase)entity; + this.isSneak = owner.isSneaking(); + this.onGround = entity.onGround ? 1 : 0; + this.heldItemRight = (owner.getHeldItem() != null) ? 1 : 0; + this.isRiding = entity.isRiding(); + if(owner instanceof EntityPlayer) + { + EntityPlayer player = (EntityPlayer) owner; + this.aimedBow = player.isUsingItem() && player.getItemInUse() != null && player.getItemInUse().getItemUseAction() == EnumAction.bow; + this.heldItemRight = (player.getCurrentEquippedItem() != null) ? 1 : 0; + } + } + super.render(entity, f, f1, f2, f3, f4, f5); + } +} \ No newline at end of file diff --git a/client/models/ModelInflatableBoat.java b/client/models/ModelInflatableBoat.java new file mode 100644 index 00000000..bb91d0f8 --- /dev/null +++ b/client/models/ModelInflatableBoat.java @@ -0,0 +1,172 @@ +package com.darkona.adventurebackpack.client.models; + +import com.darkona.adventurebackpack.entity.EntityInflatableBoat; +import com.darkona.adventurebackpack.util.Utils; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import org.lwjgl.opengl.GL11; + +/** + * InflatableBoat - Darkona + * Created using Tabula 4.1.0 + */ +public class ModelInflatableBoat extends ModelBase +{ + public ModelRenderer boatSides1; + public ModelRenderer boatSides2; + public ModelRenderer boatSides3; + public ModelRenderer boatSides4; + public ModelRenderer boatSides5; + public ModelRenderer EngineBody; + public ModelRenderer Axis; + public ModelRenderer EnginePistonLeft; + public ModelRenderer EnginePistonRight; + public ModelRenderer TankTop; + public ModelRenderer TankBottom; + public ModelRenderer TankWallRightFront; + public ModelRenderer TankWallLeftFront; + public ModelRenderer TankWallRightBack; + public ModelRenderer TankWallLeftBack; + public ModelRenderer Blade1; + public ModelRenderer Blade2; + public ModelRenderer Blade3; + public ModelRenderer Blade4; + + public ModelInflatableBoat() + { + this.textureWidth = 64; + this.textureHeight = 64; + this.boatSides4 = new ModelRenderer(this, 0, 36); + this.boatSides4.setRotationPoint(0.0F, 4.0F, -9.0F); + this.boatSides4.addBox(-10.0F, -7.0F, -1.0F, 20, 6, 3, 0.0F); + this.setRotateAngle(boatSides4, 0.0F, 3.141592653589793F, 0.0F); + this.Axis = new ModelRenderer(this, 25, 55); + this.Axis.setRotationPoint(16.0F, 1.0F, 0.0F); + this.Axis.addBox(-0.5F, -6.8F, -0.5F, 1, 8, 1, 0.0F); + this.setRotateAngle(Axis, 3.141592653589793F, 0.045553093477052F, -0.4363323129985824F); + this.Blade3 = new ModelRenderer(this, 20, 48); + this.Blade3.setRotationPoint(0.0F, -7.0F, 0.0F); + this.Blade3.addBox(0.0F, -0.5F, -1.0F, 4, 1, 2, 0.0F); + this.setRotateAngle(Blade3, -0.3490658503988659F, 0.0F, 3.141592653589793F); + this.TankWallRightFront = new ModelRenderer(this, 16, 59); + this.TankWallRightFront.setRotationPoint(0.0F, 0.0F, 0.0F); + this.TankWallRightFront.addBox(0.0F, 1.0F, 0.0F, 1, 4, 1, 0.0F); + this.EnginePistonLeft = new ModelRenderer(this, 0, 55); + this.EnginePistonLeft.setRotationPoint(0.0F, 0.0F, 2.0F); + this.EnginePistonLeft.addBox(1.7F, 1.0F, -1.0F, 4, 2, 2, 0.0F); + this.setRotateAngle(EnginePistonLeft, 0.0F, -0.7853981633974483F, 0.0F); + this.boatSides1 = new ModelRenderer(this, 0, 10); + this.boatSides1.setRotationPoint(0.0F, 4.0F, 0.0F); + this.boatSides1.addBox(-12.0F, -9.0F, -3.0F, 24, 18, 4, 0.0F); + this.setRotateAngle(boatSides1, 1.5707963267948966F, 0.0F, 0.0F); + this.boatSides2 = new ModelRenderer(this, 0, 0); + this.boatSides2.setRotationPoint(-11.0F, 4.0F, 0.0F); + this.boatSides2.addBox(-11.0F, -7.0F, -1.3F, 22, 6, 3, 0.0F); + this.setRotateAngle(boatSides2, 0.0F, 4.6898742330339624F, 0.0F); + this.TankTop = new ModelRenderer(this, 32, 58); + this.TankTop.setRotationPoint(2.5F, -6.0F, -0.5F); + this.TankTop.addBox(0.0F, 0.0F, 0.0F, 5, 1, 5, 0.0F); + this.setRotateAngle(TankTop, 0.0F, -1.5707963267948966F, 0.0F); + this.Blade1 = new ModelRenderer(this, 20, 48); + this.Blade1.setRotationPoint(0.0F, -7.0F, 0.0F); + this.Blade1.addBox(0.0F, -0.5F, -1.0F, 4, 1, 2, 0.0F); + this.setRotateAngle(Blade1, -0.3490658503988659F, 0.0F, 0.0F); + this.TankBottom = new ModelRenderer(this, 32, 58); + this.TankBottom.setRotationPoint(0.0F, 0.0F, 0.0F); + this.TankBottom.addBox(0.0F, 5.0F, 0.0F, 5, 1, 5, 0.0F); + this.boatSides3 = new ModelRenderer(this, 0, 0); + this.boatSides3.setRotationPoint(11.0F, 4.0F, 0.0F); + this.boatSides3.addBox(-11.0F, -7.0F, -1.0F, 22, 6, 3, 0.0F); + this.setRotateAngle(boatSides3, 0.0F, 1.5707963267948966F, 0.0F); + this.Blade4 = new ModelRenderer(this, 30, 48); + this.Blade4.setRotationPoint(0.0F, -7.0F, 0.0F); + this.Blade4.addBox(-1.0F, -0.5F, 0.0F, 2, 1, 4, 0.0F); + this.setRotateAngle(Blade4, -3.141592653589793F, 0.0F, 0.3490658503988659F); + this.TankWallRightBack = new ModelRenderer(this, 16, 59); + this.TankWallRightBack.setRotationPoint(0.0F, 0.0F, 0.0F); + this.TankWallRightBack.addBox(0.0F, 1.0F, 4.0F, 1, 4, 1, 0.0F); + this.boatSides5 = new ModelRenderer(this, 0, 36); + this.boatSides5.setRotationPoint(0.0F, 4.0F, 9.0F); + this.boatSides5.addBox(-10.0F, -7.0F, -1.0F, 20, 6, 3, 0.0F); + this.EngineBody = new ModelRenderer(this, 0, 46); + this.EngineBody.setRotationPoint(13.3F, -3.0F, 0.0F); + this.EngineBody.addBox(-2.0F, 0.0F, 0.0F, 4, 4, 4, 0.0F); + this.setRotateAngle(EngineBody, 0.0F, 1.5707963267948966F, 0.0F); + this.TankWallLeftFront = new ModelRenderer(this, 16, 59); + this.TankWallLeftFront.setRotationPoint(0.0F, 0.0F, 0.0F); + this.TankWallLeftFront.addBox(4.0F, 1.0F, 0.0F, 1, 4, 1, 0.0F); + this.Blade2 = new ModelRenderer(this, 30, 48); + this.Blade2.setRotationPoint(0.0F, -7.0F, 0.0F); + this.Blade2.addBox(-1.0F, -0.5F, 0.0F, 2, 1, 4, 0.0F); + this.setRotateAngle(Blade2, 0.0F, 0.0F, -0.3490658503988659F); + this.TankWallLeftBack = new ModelRenderer(this, 16, 59); + this.TankWallLeftBack.setRotationPoint(0.0F, 0.0F, 0.0F); + this.TankWallLeftBack.addBox(4.0F, 1.0F, 4.0F, 1, 4, 1, 0.0F); + this.EnginePistonRight = new ModelRenderer(this, 13, 55); + this.EnginePistonRight.setRotationPoint(0.0F, 0.0F, 2.0F); + this.EnginePistonRight.addBox(1.7F, 1.0F, -1.0F, 4, 2, 2, 0.0F); + this.setRotateAngle(EnginePistonRight, 0.0F, -2.356194490192345F, 0.0F); + this.Axis.addChild(this.Blade3); + this.TankTop.addChild(this.TankWallRightFront); + this.EngineBody.addChild(this.EnginePistonLeft); + this.EngineBody.addChild(this.TankTop); + this.Axis.addChild(this.Blade1); + this.TankTop.addChild(this.TankBottom); + this.Axis.addChild(this.Blade4); + this.TankTop.addChild(this.TankWallRightBack); + this.TankTop.addChild(this.TankWallLeftFront); + this.Axis.addChild(this.Blade2); + this.TankTop.addChild(this.TankWallLeftBack); + this.EngineBody.addChild(this.EnginePistonRight); + } + + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + if(Utils.notNullAndInstanceOf(entity,EntityInflatableBoat.class)) + { + EntityInflatableBoat theBoat = (EntityInflatableBoat)entity; + + if(theBoat.isMotorized() && theBoat.isInflated()) + { + Axis.isHidden = EngineBody.isHidden = false; + }else + { + Axis.isHidden = EngineBody.isHidden = true; + } + + GL11.glPushMatrix(); + GL11.glScalef(theBoat.inflation,theBoat.inflation,theBoat.inflation); + + this.boatSides5.render(f5); + this.boatSides3.render(f5); + this.boatSides2.render(f5); + this.boatSides1.render(f5); + this.boatSides4.render(f5); + this.Axis.render(f5); + this.EngineBody.render(f5); + + + GL11.glPopMatrix(); + }else{ + this.boatSides5.render(f5); + this.boatSides3.render(f5); + this.boatSides2.render(f5); + this.Axis.render(f5); + this.boatSides1.render(f5); + this.boatSides4.render(f5); + this.EngineBody.render(f5); + } + } + + /** + * This is a helper function from Tabula to set the rotation of model parts + */ + public void setRotateAngle(ModelRenderer modelRenderer, float x, float y, float z) + { + modelRenderer.rotateAngleX = x; + modelRenderer.rotateAngleY = y; + modelRenderer.rotateAngleZ = z; + } +} diff --git a/client/models/ModelSleepingBag.java b/client/models/ModelSleepingBag.java new file mode 100644 index 00000000..e1c52911 --- /dev/null +++ b/client/models/ModelSleepingBag.java @@ -0,0 +1,71 @@ +// Date: 14/10/2014 18:47:55 +// Template version 1.1 +// Java generated by Techne +// Keep in mind that you still need to fill in some blanks +// - ZeuX + + +package com.darkona.adventurebackpack.client.models; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelSleepingBag extends ModelBase +{ + //fields + ModelRenderer footer; + ModelRenderer header; + ModelRenderer pillow; + + public ModelSleepingBag() + { + textureWidth = 64; + textureHeight = 64; + + footer = new ModelRenderer(this, 0, 0); + header = new ModelRenderer(this, 0, 17); + pillow = new ModelRenderer(this, 0, 34); + + + footer.addBox(-8F, 0F, 0F, 16, 1, 16); + footer.setRotationPoint(0F, 23F, -8F); + footer.setTextureSize(64, 64); + footer.mirror = true; + setRotation(footer, 0F, 0F, 0F); + + header.addBox(-16F, 0F, 16F, 16, 1, 16); + header.setRotationPoint(8F, 23F, -8F); + header.setTextureSize(64, 64); + header.mirror = true; + setRotation(header, 0F, 0F, 0F); + + pillow.addBox(-6F, -1F, 26F, 12, 1, 6); + pillow.setRotationPoint(0F, 23F, -8F); + pillow.setTextureSize(64, 64); + pillow.mirror = true; + setRotation(pillow, 0F, 0F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + footer.render(f5); + header.render(f5); + pillow.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) + { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) + { + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + } + +} diff --git a/client/models/ModelWearable.java b/client/models/ModelWearable.java new file mode 100644 index 00000000..6f85c9af --- /dev/null +++ b/client/models/ModelWearable.java @@ -0,0 +1,70 @@ +package com.darkona.adventurebackpack.client.models; + +import codechicken.lib.render.RenderUtils; +import codechicken.lib.vec.Cuboid6; +import codechicken.lib.vec.Vector3; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidTank; +import org.lwjgl.opengl.GL11; + +/** + * Created on 10/01/2015 + * + * @author Darkona + */ +public abstract class ModelWearable extends ModelBiped +{ + + protected void startBlending() + { + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + } + + protected void stopBlending() + { + GL11.glDisable(GL11.GL_BLEND); + } + + public void setRotateAngle(ModelRenderer modelRenderer, float x, float y, float z) + { + modelRenderer.rotateAngleX = x; + modelRenderer.rotateAngleY = y; + modelRenderer.rotateAngleZ = z; + } + + public void setOffset(ModelRenderer modelRenderer, float x, float y, float z) + { + modelRenderer.offsetX = x; + modelRenderer.offsetY = y; + modelRenderer.offsetZ = z; + } + + public void setRotationPoints(ModelRenderer modelRenderer, float x, float y, float z) + { + modelRenderer.rotationPointX = x; + modelRenderer.rotationPointY = y; + modelRenderer.rotationPointZ = z; + } + + public abstract void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack stack); + + public void renderFluidInTank(FluidTank tank, Vector3 minCoords, Vector3 maxCoords, Vector3 offset, ModelRenderer parent) + { + if (tank != null && tank.getFluid() != null && tank.getFluid().getFluid().getIcon() != null) + { + Vector3 victor = new Vector3( + (parent.rotationPointX * 0.1f + parent.offsetX * 0.1 + offset.x) , // + (parent.rotationPointY * 0.1f + parent.offsetY * 0.1 + offset.y), + (parent.rotationPointZ * 0.1f + parent.offsetZ * 0.1 + offset.z)); + + Cuboid6 cat = new Cuboid6(minCoords.x,minCoords.y,minCoords.z, maxCoords.x, maxCoords.y, maxCoords.z); + //Thanks Chickenbones! + RenderUtils.renderFluidCuboid(tank.getFluid(), cat.add(victor),((1.0F * tank.getFluidAmount()) / (1.0F * tank.getCapacity())), 0.8); + } + } + +} diff --git a/client/render/RenderRideableSpider.java b/client/render/RenderRideableSpider.java new file mode 100644 index 00000000..8c59aef1 --- /dev/null +++ b/client/render/RenderRideableSpider.java @@ -0,0 +1,81 @@ +package com.darkona.adventurebackpack.client.render; + +import com.darkona.adventurebackpack.entity.EntityFriendlySpider; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelSpider; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.entity.RenderLiving; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; + +@SideOnly(Side.CLIENT) +public class RenderRideableSpider extends RenderLiving +{ + private static final ResourceLocation spiderEyesTextures = new ResourceLocation("textures/entity/spider_eyes.png"); + private static final ResourceLocation spiderTextures = new ResourceLocation("textures/entity/spider/spider.png"); + @SuppressWarnings("unused") + private static final String __OBFID = "CL_00001027"; + + public RenderRideableSpider() + { + super(new ModelSpider(), 1.0F); + this.setRenderPassModel(new ModelSpider()); + } + + protected float getDeathMaxRotation(EntityFriendlySpider p_77037_1_) + { + return 180.0F; + } + + /** + * Queries whether should render the specified pass or not. + */ + protected int shouldRenderPass(EntityFriendlySpider p_77032_1_, int p_77032_2_, float p_77032_3_) + { + if (p_77032_2_ != 0) + { + return -1; + } + else + { + this.bindTexture(spiderEyesTextures); + GL11.glEnable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_ALPHA_TEST); + GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE); + + if (p_77032_1_.isInvisible()) + { + GL11.glDepthMask(false); + } + else + { + GL11.glDepthMask(true); + } + + char c0 = 61680; + int j = c0 % 65536; + int k = c0 / 65536; + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)j / 1.0F, (float)k / 1.0F); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + return 1; + } + } + + /** + * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture. + */ + protected ResourceLocation getEntityTexture(EntityFriendlySpider p_110775_1_) + { + return spiderTextures; + } + + /** + * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture. + */ + protected ResourceLocation getEntityTexture(Entity p_110775_1_) + { + return this.getEntityTexture((EntityFriendlySpider)p_110775_1_); + } +} \ No newline at end of file diff --git a/client/render/RendererAdventureBackpackBlock.java b/client/render/RendererAdventureBackpackBlock.java new file mode 100644 index 00000000..d2ac4432 --- /dev/null +++ b/client/render/RendererAdventureBackpackBlock.java @@ -0,0 +1,86 @@ +package com.darkona.adventurebackpack.client.render; + +import com.darkona.adventurebackpack.AdventureBackpack; +import com.darkona.adventurebackpack.block.TileAdventureBackpack; +import com.darkona.adventurebackpack.client.models.ModelBackpackBlock; +import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.util.Resources; +import com.darkona.adventurebackpack.util.Utils; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + +/** + * Created on 12/10/2014 + * + * @author Darkona + */ + +@SuppressWarnings("unused") +public class RendererAdventureBackpackBlock extends TileEntitySpecialRenderer +{ + + // private ModelAdventureBackpackBlock model; + private ModelBackpackBlock model; + + public RendererAdventureBackpackBlock() + { + this.model = new ModelBackpackBlock(); + } + + @Override + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float par8) + { + int dir = te.getBlockMetadata(); + if ((dir & 8) >= 8) + { + dir -= 8; + } + if ((dir & 4) >= 4) + { + dir -= 4; + } + + GL11.glPushMatrix(); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + GL11.glTranslatef((float) x + 0.5F, (float) y + 0.5f, (float) z + 0.5F); + + GL11.glPushMatrix(); + GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); + + GL11.glPushMatrix(); + if (dir == 0) + { + GL11.glRotatef(-180F, 0.0F, 1.0F, 0.0F); + } + if (dir % 2 != 0) + { + GL11.glRotatef(dir * (-90F), 0.0F, 1.0F, 0.0F); + } + if (dir % 2 == 0) + { + GL11.glRotatef(dir * (-180F), 0.0F, 1.0F, 0.0F); + } + ResourceLocation modelTexture; + if (BackpackNames.getBackpackColorName((TileAdventureBackpack) te).equals("Standard")) + { + modelTexture = Resources.backpackTextureFromString(Utils.getHoliday()); + } else + { + modelTexture = Resources.backpackTextureFromColor((TileAdventureBackpack) te); + } + + bindTexture(modelTexture); + model.render(null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 1 / 20F, (TileAdventureBackpack) te); + + GL11.glDisable(GL12.GL_RESCALE_NORMAL); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + + } + + +} diff --git a/client/render/RendererCampFire.java b/client/render/RendererCampFire.java new file mode 100644 index 00000000..205659ef --- /dev/null +++ b/client/render/RendererCampFire.java @@ -0,0 +1,46 @@ +package com.darkona.adventurebackpack.client.render; + +import com.darkona.adventurebackpack.client.models.ModelCampFire; +import com.darkona.adventurebackpack.util.Resources; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + +/** + * Created on 05/01/2015 + * + * @author Darkona + */ +public class RendererCampFire extends TileEntitySpecialRenderer +{ + + // private ModelAdventureBackpackBlock model; + private ModelCampFire model; + + public RendererCampFire() + { + this.model = new ModelCampFire(); + } + + @Override + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float par8) + { + ResourceLocation modelTexture = Resources.modelTextures("campFire"); + GL11.glPushMatrix(); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + GL11.glTranslatef((float) x + 0.5F, (float) y + 1.2f, (float) z + 0.5F); + GL11.glPushMatrix(); + GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); + + bindTexture(modelTexture); + model.render(null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 1 / 20F); + + GL11.glDisable(GL12.GL_RESCALE_NORMAL); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + } + + +} diff --git a/client/render/RendererHose.java b/client/render/RendererHose.java new file mode 100644 index 00000000..50a74a98 --- /dev/null +++ b/client/render/RendererHose.java @@ -0,0 +1,84 @@ +package com.darkona.adventurebackpack.client.render; + +import com.darkona.adventurebackpack.config.ConfigHandler; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraftforge.client.IItemRenderer; +import org.lwjgl.opengl.GL11; + +/** + * Created on 13/10/2014 + * + * @author Darkona + */ +public class RendererHose implements IItemRenderer +{ + + private static RenderItem renderHose = new RenderItem(); + private FontRenderer fontRenderer; + private Tessellator tessellator = Tessellator.instance; + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) + { + return type == ItemRenderType.INVENTORY; + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) + { + return false; + } + + @Override + public void renderItem(ItemRenderType type, ItemStack hose, Object... data) + { + + if (type == ItemRenderType.INVENTORY) + { + // ====================Render the item===================== // + GL11.glColor4f(1, 1, 1, 1); + IIcon icon = hose.getItem().getIcon(hose, 0); + renderHose.renderIcon(0, 0, icon, 16, 16); + fontRenderer = Minecraft.getMinecraft().fontRenderer; + + if (hose.hasTagCompound()) + { + String amount = Integer.toString(hose.getTagCompound().getInteger("amount")); + String name = hose.getTagCompound().getString("fluid"); + String mode; + switch (hose.getTagCompound().getInteger("mode")) + { + case 0: + mode = "Suck"; + break; + case 1: + mode = "Spill"; + break; + case 2: + mode = "Drink"; + break; + default: + mode = "Useless"; + break; + } + GL11.glPushMatrix(); + GL11.glScalef(0.5f, 0.5f, 0.5f); + if (fontRenderer != null) + { + fontRenderer.drawString(mode, 0, 0, 0xFFFFFF); + if (!ConfigHandler.TANKS_OVERLAY) + { + fontRenderer.drawString(amount, 0, 18, 0xFFFFFF); + fontRenderer.drawString(name, 0, 24, 0xFFFFFF); + } + } + GL11.glPopMatrix(); + } + } + } +} diff --git a/client/render/RendererInflatableBoat.java b/client/render/RendererInflatableBoat.java new file mode 100644 index 00000000..6a83ec67 --- /dev/null +++ b/client/render/RendererInflatableBoat.java @@ -0,0 +1,73 @@ +package com.darkona.adventurebackpack.client.render; + +import com.darkona.adventurebackpack.client.models.ModelInflatableBoat; +import com.darkona.adventurebackpack.entity.EntityInflatableBoat; +import com.darkona.adventurebackpack.util.Resources; +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; + +/** + * Created on 05/01/2015 + * + * @author Darkona + */ +public class RendererInflatableBoat extends Render +{ + + private ResourceLocation boatTexture = Resources.modelTextures("inflatableBoat"); + private ModelInflatableBoat boatModel = new ModelInflatableBoat(); + + public RendererInflatableBoat() + { + this.shadowSize = 0.5F; + } + + public void doRender(EntityInflatableBoat entity, double x, double y, double z, float var1, float var2) + { + GL11.glPushMatrix(); + GL11.glTranslatef((float) x, (float) y, (float) z); + GL11.glRotatef(180.0F - var1, 0.0F, 1.0F, 0.0F); + float f2 = (float) entity.getTimeSinceHit() - var2; + float f3 = entity.getDamageTaken() - var2; + + if (f3 < 0.0F) + { + f3 = 0.0F; + } + + if (f2 > 0.0F) + { + GL11.glRotatef(MathHelper.sin(f2) * f2 * f3 / 10.0F * (float) entity.getForwardDirection(), 1.0F, 0.0F, 0.0F); + } + + float f4 = 0.75F; + GL11.glScalef(f4, f4, f4); + GL11.glScalef(1.0F / f4, 1.0F / f4, 1.0F / f4); + this.bindEntityTexture(entity); + GL11.glScalef(-1.0F, -1.0F, 1.0F); + this.boatModel.render(entity, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F); + GL11.glPopMatrix(); + } + + + /** + * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture. + * + * @param p_110775_1_ + */ + @Override + protected ResourceLocation getEntityTexture(Entity p_110775_1_) + { + return boatTexture; + } + + + @Override + public void doRender(Entity entity, double posX, double posY, double posZ, float p_76986_8_, float p_76986_9_) + { + this.doRender((EntityInflatableBoat) entity, posX, posY, posZ, p_76986_8_, p_76986_9_); + } +} diff --git a/client/render/RendererItemAdventureBackpack.java b/client/render/RendererItemAdventureBackpack.java new file mode 100644 index 00000000..f2644b59 --- /dev/null +++ b/client/render/RendererItemAdventureBackpack.java @@ -0,0 +1,197 @@ +package com.darkona.adventurebackpack.client.render; + +import com.darkona.adventurebackpack.AdventureBackpack; +import com.darkona.adventurebackpack.client.models.ModelBackpackBlock; +import com.darkona.adventurebackpack.inventory.InventoryBackpack; +import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.util.Resources; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityClientPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.IItemRenderer; +import net.minecraftforge.event.entity.player.ItemTooltipEvent; +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.client.renderer.entity.RenderPlayer; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.client.renderer.EntityRenderer; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraftforge.client.event.RenderPlayerEvent; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.client.entity.AbstractClientPlayer; +import org.lwjgl.opengl.GL11; + +/** + * Created on 12/10/2014 + * + * @author Darkona + */ +@SuppressWarnings("unused") +public class RendererItemAdventureBackpack implements IItemRenderer +{ + private final ModelBackpackBlock model; + private Minecraft mc; + + public RendererItemAdventureBackpack() + { + model = new ModelBackpackBlock(); + } + + public boolean handleRenderType(ItemStack item, IItemRenderer.ItemRenderType type) + { + switch (type) + { + case INVENTORY: + return true; + case ENTITY: + return true; + case EQUIPPED: + return true; + case EQUIPPED_FIRST_PERSON: + return true; + case FIRST_PERSON_MAP: + return false; + } + return false; + } + + public boolean shouldUseRenderHelper(IItemRenderer.ItemRenderType type, ItemStack item, IItemRenderer.ItemRendererHelper helper) + { + switch (type) + { + case INVENTORY: + return true; + case ENTITY: + return true; + case EQUIPPED: + return false; + case EQUIPPED_FIRST_PERSON: + return false; + case FIRST_PERSON_MAP: + return false; + } + return false; + } + + public void renderItem(IItemRenderer.ItemRenderType type, ItemStack backpack, Object... data) + { + InventoryBackpack inv = new InventoryBackpack(backpack); + ResourceLocation modelTexture; + if (BackpackNames.getBackpackColorName(backpack).equals("Standard")) + { + modelTexture = Resources.backpackTextureFromString(AdventureBackpack.instance.Holiday); + } else + { + modelTexture = Resources.backpackTextureFromColor(inv); + } + switch (type) + { + + case INVENTORY: + Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); + { + GL11.glPushMatrix(); + GL11.glColor4f(1, 1, 1, 128); + + GL11.glPushMatrix(); + GL11.glTranslatef(-0.5f, 0f, -0.5f); + + GL11.glPushMatrix(); + GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); + + GL11.glPushMatrix(); + GL11.glScalef(1.9f, 1.9f, 1.9f); + + model.render(null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.05F, inv); + + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + } + break; + + case ENTITY: + Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); + { + GL11.glPushMatrix(); + GL11.glColor4f(1, 1, 1, 128); + + GL11.glPushMatrix(); + GL11.glTranslatef(0f, 1f, 0f); + + GL11.glPushMatrix(); + GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); + + GL11.glPushMatrix(); + GL11.glScalef(1.2f, 1.2f, 1.2f); + + model.render(null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.05F, inv); + + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + } + break; + + case EQUIPPED: + Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); + + GL11.glPushMatrix(); + GL11.glColor4f(1, 1, 1, 128); + + GL11.glPushMatrix(); + GL11.glTranslatef(0.8f, 0.8f, 0.0f); + + GL11.glPushMatrix(); + GL11.glScalef(0.9f, 0.9f, 0.9f); + + GL11.glPushMatrix(); + GL11.glRotatef(180, 0, 0, 1); + GL11.glRotatef(90, 0, 1, 0); + + GL11.glPushMatrix(); + GL11.glRotatef(-45, 0, 1, 0); + model.render(null, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.05f, inv); + + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + break; + + case EQUIPPED_FIRST_PERSON: + Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); + + GL11.glPushMatrix(); + GL11.glColor4f(1, 1, 1, 128); + + GL11.glPushMatrix(); + GL11.glTranslatef(1f, 0.8f, 0.8f); + + GL11.glPushMatrix(); + GL11.glScalef(1.5f, 1.5f, 1.5f); + + GL11.glPushMatrix(); + GL11.glRotatef(195, 0, 0, 1); + + GL11.glPushMatrix(); + GL11.glRotatef(180, 0, 1, 0); + model.render(null, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.05f, inv); + + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + break; + case FIRST_PERSON_MAP: + break; + } + } + } \ No newline at end of file diff --git a/client/render/RendererItemAdventureHat.java b/client/render/RendererItemAdventureHat.java new file mode 100644 index 00000000..e770243a --- /dev/null +++ b/client/render/RendererItemAdventureHat.java @@ -0,0 +1,176 @@ +package com.darkona.adventurebackpack.client.render; + + +import com.darkona.adventurebackpack.client.models.ModelAdventureHat; +import com.darkona.adventurebackpack.util.Resources; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.Entity; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.IItemRenderer; +import org.lwjgl.opengl.GL11; + + +/** + * Created by Darkona on 11/10/2014. + */ + + +public class RendererItemAdventureHat implements IItemRenderer +{ + + private final ModelAdventureHat model; + + public RendererItemAdventureHat() + { + model = ModelAdventureHat.instance; + } + + public boolean handleRenderType(ItemStack item, IItemRenderer.ItemRenderType type) + { + switch (type) + { + case INVENTORY: + return true; + case ENTITY: + return true; + case EQUIPPED: + return true; + case EQUIPPED_FIRST_PERSON: + return true; + case FIRST_PERSON_MAP: + return false; + } + return false; + } + + public boolean shouldUseRenderHelper(IItemRenderer.ItemRenderType type, ItemStack item, IItemRenderer.ItemRendererHelper helper) + { + switch (type) + { + case INVENTORY: + return true; + case ENTITY: + return true; + case EQUIPPED: + return true; + case EQUIPPED_FIRST_PERSON: + return true; + case FIRST_PERSON_MAP: + return false; + } + return false; + } + + public void renderItem(IItemRenderer.ItemRenderType type, ItemStack item, Object... data) + { + ResourceLocation modelTexture = Resources.modelTextures("adventureHat"); + Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); + switch (type) + { + case INVENTORY: + + { + GL11.glPushMatrix(); + GL11.glColor4f(1, 1, 1, 128); + + GL11.glPushMatrix(); + GL11.glTranslatef(-0.5f, -1.0f, -0.5f); + + GL11.glPushMatrix(); + GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(180F, 0.0F, 1.0F, 0.0F); + GL11.glPushMatrix(); + GL11.glScalef(1.5f, 1.5f, 1.5f); + + model.render((Entity) null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.05F); + + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + } + break; + case ENTITY: + Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); + { + GL11.glPushMatrix(); + GL11.glColor4f(1, 1, 1, 128); + + GL11.glPushMatrix(); + GL11.glTranslatef(0f, 0f, 0f); + + GL11.glPushMatrix(); + GL11.glRotatef(180, 0, 0, 1); + + GL11.glPushMatrix(); + GL11.glScalef(1.0f, 1.0f, 1.0f); + + model.render((Entity) null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.05F); + + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + } + break; + case EQUIPPED: + Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); + + GL11.glPushMatrix(); + GL11.glColor4f(1, 1, 1, 128); + GL11.glPushMatrix(); + GL11.glScalef(1.0f, 1.0f, 1.0f); + + GL11.glPushMatrix(); + GL11.glRotatef(180, 0, 0, 1); + + GL11.glPushMatrix(); + GL11.glRotatef(90, 0, 1, 0); + + GL11.glPushMatrix(); + GL11.glRotatef(-95, 1, 0, 0); + + GL11.glPushMatrix(); + GL11.glTranslatef(0.0f, 1.2f, -.6f); + + model.render((Entity) null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.05F); + + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + break; + case EQUIPPED_FIRST_PERSON: + Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); + + GL11.glPushMatrix(); + GL11.glColor4f(1, 1, 1, 128); + + GL11.glPushMatrix(); + GL11.glTranslatef(-.1f, 0f, 0.0f); + + GL11.glPushMatrix(); + GL11.glScalef(1.0f, 1.0f, 1.0f); + + GL11.glPushMatrix(); + GL11.glRotatef(180, 0, 0, 1); + + GL11.glPushMatrix(); + GL11.glRotatef(180, 0, 1, 0); + + model.render((Entity) null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.05F); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + break; + case FIRST_PERSON_MAP: + break; + } + } + +} \ No newline at end of file diff --git a/client/render/RendererItemClockworkCrossbow.java b/client/render/RendererItemClockworkCrossbow.java new file mode 100644 index 00000000..16af1a2e --- /dev/null +++ b/client/render/RendererItemClockworkCrossbow.java @@ -0,0 +1,143 @@ +package com.darkona.adventurebackpack.client.render; + + +import com.darkona.adventurebackpack.client.models.ModelClockworkCrossbow; +import com.darkona.adventurebackpack.util.Resources; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.IItemRenderer; +import org.lwjgl.opengl.GL11; + + +/** + * Created by Darkona on 11/10/2014. + */ + + +public class RendererItemClockworkCrossbow implements IItemRenderer +{ + + private final ModelClockworkCrossbow model; + private ResourceLocation modelTexture = Resources.modelTextures("clockworkCrossbow"); + + public RendererItemClockworkCrossbow() + { + model = new ModelClockworkCrossbow(); + } + + public boolean handleRenderType(ItemStack item, ItemRenderType type) + { + return (type != ItemRenderType.FIRST_PERSON_MAP); + } + + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) + { + return (type != ItemRenderType.FIRST_PERSON_MAP); + } + + public void renderItem(ItemRenderType type, ItemStack item, Object... data) + { + + Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); + EntityPlayer player; + switch (type) + { + case INVENTORY: + + { + GL11.glPushMatrix(); + GL11.glColor4f(1, 1, 1, 128); + + GL11.glPushMatrix(); + GL11.glTranslatef(-0.5f, -.5f, -0.5f); + + GL11.glPushMatrix(); + GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(180F, 0.0F, 1.0F, 0.0F); + GL11.glPushMatrix(); + GL11.glScalef(0.7f, 0.7f, 0.7f); + + model.render(null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.05F); + + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + } + break; + case ENTITY: + Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); + { + GL11.glPushMatrix(); + GL11.glColor4f(1, 1, 1, 128); + + GL11.glPushMatrix(); + GL11.glTranslatef(0f, .50f, 0f); + + GL11.glPushMatrix(); + GL11.glRotatef(180, 0, 0, 1); + + GL11.glPushMatrix(); + GL11.glScalef(1.0f, 1.0f, 1.0f); + + model.render(null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.05F); + + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + } + break; + case EQUIPPED: + Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); + + GL11.glPushMatrix(); + GL11.glColor4f(1, 1, 1, 128); + GL11.glPushMatrix(); + GL11.glScalef(1.2f, 1.2f, 1.2f); + + GL11.glPushMatrix(); + GL11.glRotatef(180, 0, 0, 1); + GL11.glRotatef(-45, 0, 1, 0); + GL11.glRotatef(75, 1, 0, 0); + + GL11.glTranslatef(0.0f, 0.4f, 0.2f); + player = (EntityPlayer) data[1]; + model.render(player, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.05F, item); + + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + + break; + case EQUIPPED_FIRST_PERSON: + Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); + player = (EntityPlayer) data[1]; + + GL11.glPushMatrix(); + GL11.glColor4f(1, 1, 1, 128); + GL11.glRotatef(180, 0, 0, 1); + GL11.glScalef(1.2f, 1.2f, 1.2f); + + GL11.glPushMatrix(); + GL11.glTranslatef(0.81f, -1f, 0f); + + GL11.glPushMatrix(); + GL11.glRotatef(45, 0, 1, 0); + GL11.glRotatef(20, 1, 0, 0); + + GL11.glRotatef(-20, 1.0F, 0.0F, 0.0F); + GL11.glTranslatef(0.0F, -0.32F, .42F); + model.render(player, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.05F, item); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + break; + case FIRST_PERSON_MAP: + break; + } + } + +} \ No newline at end of file diff --git a/client/render/RendererStack.java b/client/render/RendererStack.java new file mode 100644 index 00000000..7702d5ec --- /dev/null +++ b/client/render/RendererStack.java @@ -0,0 +1,63 @@ +package com.darkona.adventurebackpack.client.render; + +import copy.betterstorage.utils.RenderUtils; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.item.ItemStack; +import org.lwjgl.opengl.GL11; + +public class RendererStack extends ModelRenderer +{ + + public ItemStack stack; + private boolean which; + + public RendererStack(ModelBase modelBase, boolean which) + { + super(modelBase); + this.which = which; + addChild(new Thing(modelBase)); + } + + private class Thing extends ModelRenderer + { + public Thing(ModelBase modelBase) + { + super(modelBase); + } + + @Override + @SideOnly(Side.CLIENT) + public void render(float par1) + { + if (stack == null) + { + return; + } + GL11.glPushMatrix(); + GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); + if (which) + { + GL11.glScalef(0.6F, 0.6F, 0.6F); + GL11.glPushMatrix(); + GL11.glRotatef(-90F, 0, 1, 0); + GL11.glRotatef(-225F, 0, 0, 1); + + } else + { + GL11.glScalef(0.7F, 0.7F, 0.7F); + GL11.glPushMatrix(); + GL11.glRotatef(45F, 0, 0, 1); + + } + RenderUtils.renderItemIn3d(stack); + GL11.glPopAttrib(); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + + } + } + +} \ No newline at end of file diff --git a/client/render/RendererWearableEquipped.java b/client/render/RendererWearableEquipped.java new file mode 100644 index 00000000..88460e91 --- /dev/null +++ b/client/render/RendererWearableEquipped.java @@ -0,0 +1,98 @@ +package com.darkona.adventurebackpack.client.render; + +import com.darkona.adventurebackpack.item.IBackWearableItem; +import com.darkona.adventurebackpack.util.Wearing; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.client.renderer.entity.RendererLivingEntity; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + +/** + * Created on 25/12/2014 + * + * @author Darkona + */ +public class RendererWearableEquipped extends RendererLivingEntity +{ + + public ResourceLocation texture; + public ModelBiped modelBipedMain; + + public RendererWearableEquipped() + { + super(new ModelBiped(0.0F), 0.0F); + renderManager = RenderManager.instance; + } + + @Override + protected ResourceLocation getEntityTexture(Entity par1Entity) + { + return texture; + } + + public void render(Entity entity, double x, double y, double z, float rotX, float rotY, float rotZ, float yaw, float pitch) + { + try + { + if (!Wearing.isWearingWearable((EntityPlayer) entity)) return; + ItemStack wearable = Wearing.getWearingWearable((EntityPlayer) entity).copy(); + IBackWearableItem wearableItem = (IBackWearableItem) wearable.getItem(); + modelBipedMain = wearableItem.getWearableModel(wearable); + texture = wearableItem.getWearableTexture(wearable); + modelBipedMain.bipedBody.rotateAngleX = rotX; + modelBipedMain.bipedBody.rotateAngleY = rotY; + modelBipedMain.bipedBody.rotateAngleZ = rotZ; + GL11.glColor3f(1.0F, 1.0F, 1.0F); + GL11.glPushMatrix(); + try + { + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + renderMainModel((EntityPlayer) entity, 0, 0, 0, 0, 0, 0.0625f); + } catch (Exception oops) + { + + } + OpenGlHelper.setActiveTexture(OpenGlHelper.lightmapTexUnit); + GL11.glEnable(GL11.GL_TEXTURE_2D); + OpenGlHelper.setActiveTexture(OpenGlHelper.defaultTexUnit); + GL11.glPopMatrix(); + }catch(Exception ex) + { + //discard silently because NO ONE CARES + } + } + + protected void renderMainModel(EntityLivingBase entity, float limbSwing1, float limbswing2, float z, float yaw, float whatever, float scale) + { + bindTexture(this.texture); + if (!entity.isInvisible()) + { + modelBipedMain.render(entity, limbSwing1, limbswing2, z, yaw, whatever, scale); + } else + if (!entity.isInvisibleToPlayer(Minecraft.getMinecraft().thePlayer)) + { + GL11.glPushMatrix(); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.15F); + GL11.glDepthMask(false); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + GL11.glAlphaFunc(GL11.GL_GREATER, 0.003921569F); + modelBipedMain.render(entity, limbSwing1, limbswing2, z, yaw, whatever, scale); + GL11.glDisable(GL11.GL_BLEND); + GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); + GL11.glPopMatrix(); + GL11.glDepthMask(true); + } else + { + modelBipedMain.setRotationAngles(limbSwing1, limbswing2, z, yaw, whatever, scale, entity); + } + } +} From 779790093eec92ae17e54ca04173bd139d501d1e Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:06:08 -0400 Subject: [PATCH 022/462] Delete BackpackMaterial.java --- block/BackpackMaterial.java | 167 ------------------------------------ 1 file changed, 167 deletions(-) delete mode 100644 block/BackpackMaterial.java diff --git a/block/BackpackMaterial.java b/block/BackpackMaterial.java deleted file mode 100644 index 3b5159e8..00000000 --- a/block/BackpackMaterial.java +++ /dev/null @@ -1,167 +0,0 @@ -package com.darkona.adventurebackpack.block; - -import net.minecraft.block.material.MapColor; -import net.minecraft.block.material.Material; - -/** - * Created on 24/12/2014 - * - * @author Darkona - */ -public class BackpackMaterial extends Material -{ - - - public BackpackMaterial() - { - super(MapColor.brownColor); - } - - /** - * Returns if blocks of these materials are liquids. - */ - @Override - public boolean isLiquid() - { - return false; - } - - @Override - public boolean isSolid() - { - return true; - } - - /** - * Will prevent grass from growing on dirt underneath and kill any grass below it if it returns true - */ - @Override - public boolean getCanBlockGrass() - { - return false; - } - - /** - * Returns if this material is considered solid or not - */ - @Override - public boolean blocksMovement() - { - return super.blocksMovement(); - } - - /** - * Makes blocks with this material require the correct tool to be harvested. - */ - @Override - protected Material setRequiresTool() - { - return super.setRequiresTool(); - } - - /** - * Set the canBurn bool to True and return the current object. - */ - @Override - protected Material setBurning() - { - return this; - } - - /** - * Returns if the block can burn or not. - */ - @Override - public boolean getCanBurn() - { - return false; - } - - /** - * Sets {@link #replaceable} to true. - */ - @Override - public Material setReplaceable() - { - return super.setReplaceable(); - } - - /** - * Returns whether the material can be replaced by other blocks when placed - eg snow, vines and tall grass. - */ - @Override - public boolean isReplaceable() - { - return false; - } - - /** - * Returns true if the material can be harvested without a tool (or with the wrong tool) - */ - @Override - public boolean isToolNotRequired() - { - return true; - } - - /** - * This type of material can't be pushed, but pistons can move over it. - */ - @Override - protected Material setNoPushMobility() - { - return super.setNoPushMobility(); - } - - /** - * @see #isAdventureModeExempt() - */ - @Override - protected Material setAdventureModeExempt() - { - return super.setAdventureModeExempt(); - } - - @Override - public MapColor getMaterialMapColor() - { - return super.getMaterialMapColor(); - } - - /** - * Returns true if blocks with this material can always be mined in adventure mode. - */ - @Override - public boolean isAdventureModeExempt() - { - return true; - } - - /** - * This type of material can't be pushed, and pistons are blocked to move. - */ - @Override - protected Material setImmovableMobility() - { - return super.setImmovableMobility(); - } - - /** - * Returns the mobility information of the material, 0 = free, 1 = can't push but can move over, 2 = total - * immobility and stop pistons. - */ - @Override - public int getMaterialMobility() - { - return super.getMaterialMobility(); - } - - /** - * Indicate if the material is opaque - */ - @Override - public boolean isOpaque() - { - return super.isOpaque(); - } -} From f6bb999376eb34726ab78a69fe798d2801cc68ba Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:06:20 -0400 Subject: [PATCH 023/462] Delete BlockAdventureBackpack.java --- block/BlockAdventureBackpack.java | 468 ------------------------------ 1 file changed, 468 deletions(-) delete mode 100644 block/BlockAdventureBackpack.java diff --git a/block/BlockAdventureBackpack.java b/block/BlockAdventureBackpack.java deleted file mode 100644 index d77fc87d..00000000 --- a/block/BlockAdventureBackpack.java +++ /dev/null @@ -1,468 +0,0 @@ -package com.darkona.adventurebackpack.block; - -import com.darkona.adventurebackpack.AdventureBackpack; -import com.darkona.adventurebackpack.client.Icons; -import com.darkona.adventurebackpack.handlers.GuiHandler; -import com.darkona.adventurebackpack.init.ModItems; -import com.darkona.adventurebackpack.reference.BackpackNames; -import com.darkona.adventurebackpack.reference.ModInfo; -import com.darkona.adventurebackpack.util.LogHelper; -import com.darkona.adventurebackpack.util.Utils; -import cpw.mods.fml.common.network.internal.FMLNetworkHandler; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.block.BlockContainer; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.EnumCreatureType; -import net.minecraft.entity.boss.EntityDragon; -import net.minecraft.entity.boss.EntityWither; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.*; -import net.minecraft.world.Explosion; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -import java.util.Random; - -/** - * Created on 12/10/2014. - * @author Javier Darkona - */ -@SuppressWarnings("unused") -public class BlockAdventureBackpack extends BlockContainer -{ - - public BlockAdventureBackpack() - { - super(new BackpackMaterial()); - setHardness(1.0f); - setStepSound(soundTypeCloth); - setResistance(2000f); - } - - /** - * Pretty effects for the bookshelf ;) - * - * @param world - * @param x - * @param y - * @param z - * @param random - */ - @Override - @SideOnly(Side.CLIENT) - public void randomDisplayTick(World world, int x, int y, int z, Random random) - { - if (getAssociatedTileColorName(world, x, y, z).equals("Bookshelf")) - { - ChunkCoordinates enchTable = Utils.findBlock3D(world, x, y, z, Blocks.enchanting_table, 2, 2); - if(enchTable !=null) - { - if (!world.isAirBlock((enchTable.posX - x) / 2 + x, enchTable.posY, (enchTable.posZ - z) / 2 + z)) - { - return; - } - for (int o = 0; o < 4; o++) - { - world.spawnParticle("enchantmenttable",enchTable.posX + 0.5D,enchTable.posY + 2.0D,enchTable.posZ + 0.5D, - ((x - enchTable.posX) + random.nextFloat()) - 0.5D, - ((y - enchTable.posY) - random.nextFloat() - 1.0F), - ((z - enchTable.posZ) + random.nextFloat()) - 0.5D); - } - } - } - } - - public int getMobilityFlag() - { - return 0; - } - - @Override - public String getHarvestTool(int metadata) - { - return null; - } - - @Override - public int getHarvestLevel(int metadata) - { - return 0; - } - - @Override - public boolean isToolEffective(String type, int metadata) - { - return true; - } - - private String getAssociatedTileColorName(IBlockAccess world, int x, int y, int z) - { - return ((TileAdventureBackpack) world.getTileEntity(x, y, z)).getColorName(); - } - @Override - public boolean canRenderInPass(int pass) - { - return true; - } - - @Override - public boolean canEntityDestroy(IBlockAccess world, int x, int y, int z, Entity entity) - { - return false; - } - - @Override - public float getEnchantPowerBonus(World world, int x, int y, int z) - { - return getAssociatedTileColorName(world, x, y, z).equals("Bookshelf") ? 10 : 0; - } - - @Override - public boolean canBeReplacedByLeaves(IBlockAccess world, int x, int y, int z) - { - return false; - } - - @Override - public boolean isWood(IBlockAccess world, int x, int y, int z) - { - return false; - } - - @Override - public boolean isLeaves(IBlockAccess world, int x, int y, int z) - { - return false; - } - - @Override - public boolean canCreatureSpawn(EnumCreatureType type, IBlockAccess world, int x, int y, int z) - { - return false; - } - - @Override - public int getFlammability(IBlockAccess world, int x, int y, int z, ForgeDirection face) - { - return 0; - } - - @Override - public boolean canHarvestBlock(EntityPlayer player, int meta) - { - return true; - } - - @Override - public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) - { - if (getAssociatedTileColorName(world, x, y, z).equals("Cactus")) - { - entity.attackEntityFrom(DamageSource.cactus, 1.0F); - } - } - - /** - * Called when a player hits the block. Args: world, x, y, z, player - * - * @param p_149699_1_ - * @param p_149699_2_ - * @param p_149699_3_ - * @param p_149699_4_ - * @param p_149699_5_ - */ - @Override - public void onBlockClicked(World p_149699_1_, int p_149699_2_, int p_149699_3_, int p_149699_4_, EntityPlayer p_149699_5_) - { - super.onBlockClicked(p_149699_1_, p_149699_2_, p_149699_3_, p_149699_4_, p_149699_5_); - } - - /** - * Called when a block is placed using its ItemBlock. Args: World, X, Y, Z, side, hitX, hitY, hitZ, block metadata - * - * @param world - * @param x - * @param y - * @param z - * @param side - * @param hitX - * @param hitY - * @param hitZ - * @param meta - */ - @Override - public int onBlockPlaced(World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int meta) - { - return super.onBlockPlaced(world, x, y, z, side, hitX, hitY, hitZ, meta); - } - - - @Override - public boolean isFlammable(IBlockAccess world, int x, int y, int z, ForgeDirection face) - { - return false; - } - - @Override - public String getUnlocalizedName() - { - return "blockAdventureBackpack"; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - Icons.milkStill = iconRegister.registerIcon(ModInfo.MOD_ID + ":fluid.milk"); - Icons.melonJuiceStill = iconRegister.registerIcon(ModInfo.MOD_ID + ":fluid.melonJuiceStill"); - Icons.melonJuiceFlowing = iconRegister.registerIcon(ModInfo.MOD_ID + ":fluid.melonJuiceFlowing"); - Icons.mushRoomStewStill = iconRegister.registerIcon(ModInfo.MOD_ID + ":fluid.mushroomStewStill"); - Icons.mushRoomStewFlowing = iconRegister.registerIcon(ModInfo.MOD_ID + ":fluid.mushroomStewFlowing"); - } - - @Override - public int getLightValue(IBlockAccess world, int x, int y, int z) - { - if (getAssociatedTileColorName(world, x, y, z).equals("Glowstone")) - { - return 15; - } else if (world.getTileEntity(x, y, z) != null && world.getTileEntity(x, y, z) instanceof TileAdventureBackpack) - { - return ((TileAdventureBackpack) world.getTileEntity(x, y, z)).getLuminosity(); - } else - { - return 0; - } - } - - public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int meta) - { - return getAssociatedTileColorName(world, x, y, z).equals("Redstone") ? 15 : 0; - } - - @Override - public boolean canConnectRedstone(IBlockAccess world, int x, int y, int z, int side) - { - return getAssociatedTileColorName(world, x, y, z).equals("Redstone"); - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) - { - - FMLNetworkHandler.openGui(player, AdventureBackpack.instance, GuiHandler.BACKPACK_TILE, world, x, y, z); - return true; - } - - - @Override - public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z, EntityPlayer player) - { - ItemStack backpack = new ItemStack(ModItems.adventureBackpack, 1); - BackpackNames.setBackpackColorNameFromDamage(backpack, BackpackNames.getBackpackDamageFromName(getAssociatedTileColorName(world, x, y, z))); - return backpack; - } - - @Override - public boolean hasTileEntity(int meta) - { - return true; - } - - @Override - public void setBlockBoundsBasedOnState(IBlockAccess blockAccess, int x, int y, int z) - { - int meta = blockAccess.getBlockMetadata(x, y, z); - meta = (meta & 8) >= 8 ? meta - 8 : meta; - meta = (meta & 4) >= 4 ? meta - 4 : meta; - switch (meta) - { - case 0: - case 2: - setBlockBounds(0.0F, 0.0F, 0.4F, 1.0F, 0.6F, 0.6F); - break; - case 1: - case 3: - setBlockBounds(0.4F, 0.0F, 0.0F, 0.6F, 0.6F, 1.0F); - break; - } - } - - @Override - public int getRenderType() - { - return -1; - } - - @Override - public boolean isOpaqueCube() - { - return false; - } - - @Override - public boolean renderAsNormalBlock() - { - return false; - } - - @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) - { - int dir = MathHelper.floor_double((player.rotationYaw * 4F) / 360F + 0.5D) & 3; - if (stack != null && stack.stackTagCompound != null && stack.stackTagCompound.hasKey("color")) - { - if (stack.stackTagCompound.getString("color").contains("BlockRedstone")) - { - dir = dir | 8; - } - if (stack.stackTagCompound.getString("color").contains("Lightgem")) - { - dir = dir | 4; - } - } - world.setBlockMetadataWithNotify(x, y, z, dir, 3); - createNewTileEntity(world, world.getBlockMetadata(x, y, z)); - - } - - @Override - public boolean canPlaceBlockOnSide(World par1World, int par2, int par3, int par4, int side) - { - return (ForgeDirection.getOrientation(side) == ForgeDirection.UP); - } - - @Override - public int quantityDropped(int meta, int fortune, Random random) - { - return 0; - } - - @Override - @SideOnly(Side.CLIENT) - public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) - { - setBlockBoundsBasedOnState(world, x, y, z); - return super.getSelectedBoundingBoxFromPool(world, x, y, z); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int par1, int par2) - { - return Blocks.wool.getIcon(par1,par2); - } - - @Override - public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) - { - setBlockBoundsBasedOnState(world, x, y, z); - return super.getCollisionBoundingBoxFromPool(world, x, y, z); - } - - @Override - public MovingObjectPosition collisionRayTrace(World world, int x, int y, int z, Vec3 start, Vec3 end) - { - setBlockBoundsBasedOnState(world, x, y, z); - return super.collisionRayTrace(world, x, y, z, start, end); - } - - @Override - public boolean canReplace(World p_149705_1_, int p_149705_2_, int p_149705_3_, int p_149705_4_, int p_149705_5_, ItemStack p_149705_6_) - { - return false; - } - - @Override - public boolean removedByPlayer(World world, EntityPlayer player, int x, int y, int z, boolean harvest) - { - TileEntity tile = world.getTileEntity(x, y, z); - - if (tile instanceof TileAdventureBackpack && !world.isRemote && player != null) - { - if ((player.isSneaking()) ? - ((TileAdventureBackpack) tile).equip(world, player, x, y, z) : - ((TileAdventureBackpack) tile).drop(world, player, x, y, z)) - { - return world.func_147480_a(x, y, z, false); - } - } else - { - return world.func_147480_a(x, y, z, false); - } - return false; - } - - @Override - public void breakBlock(World world, int x, int y, int z, Block block, int meta) - { - TileEntity te = world.getTileEntity(x, y, z); - if (te != null && te instanceof IInventory) - { - IInventory inventory = (IInventory) te; - - for (int i = 0; i < inventory.getSizeInventory(); i++) - { - ItemStack stack = inventory.getStackInSlotOnClosing(i); - - if (stack != null) - { - float spawnX = x + world.rand.nextFloat(); - float spawnY = y + world.rand.nextFloat(); - float spawnZ = z + world.rand.nextFloat(); - float mult = 0.05F; - - EntityItem droppedItem = new EntityItem(world, spawnX, spawnY, spawnZ, stack); - - droppedItem.motionX = -0.5F + world.rand.nextFloat() * mult; - droppedItem.motionY = 4 + world.rand.nextFloat() * mult; - droppedItem.motionZ = -0.5 + world.rand.nextFloat() * mult; - - world.spawnEntityInWorld(droppedItem); - } - } - - - } - - super.breakBlock(world, x, y, z, world.getBlock(x, y, z), meta); - } - - @Override - public TileEntity createTileEntity(World world, int metadata) - { - return new TileAdventureBackpack(); - } - - @Override - public TileEntity createNewTileEntity(World world, int metadata) - { - return createTileEntity(world, metadata); - } - - @Override - public boolean canDropFromExplosion(Explosion p_149659_1_) - { - return false; - } - - @Override - public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion explosion) { - world.func_147480_a(x, y, z, false); - } - - @Override - public void onBlockExploded(World world, int x, int y, int z, Explosion explosion) { - //DO NOTHING - } -} From 2388205477cb56f55e8447cc5ad99b65fa4ae3d1 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:06:33 -0400 Subject: [PATCH 024/462] Delete BlockCampFire.java --- block/BlockCampFire.java | 236 --------------------------------------- 1 file changed, 236 deletions(-) delete mode 100644 block/BlockCampFire.java diff --git a/block/BlockCampFire.java b/block/BlockCampFire.java deleted file mode 100644 index 1c0eee39..00000000 --- a/block/BlockCampFire.java +++ /dev/null @@ -1,236 +0,0 @@ -package com.darkona.adventurebackpack.block; - -import com.darkona.adventurebackpack.CreativeTabAB; -import com.darkona.adventurebackpack.reference.ModInfo; -import com.darkona.adventurebackpack.util.Utils; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.ChunkCoordinates; -import net.minecraft.util.IIcon; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; - -import java.util.Random; - -/** - * Created on 05/01/2015 - * - * @author Darkona - */ -public class BlockCampFire extends BlockContainer -{ - private IIcon icon; - - public BlockCampFire() - { - super(Material.rock); - this.setTickRandomly(true); - this.setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); - - } - - private void func_149978_e() - { - this.setBlockBounds(0.2F, 0.0F, 0.2F, 0.8F, 0.15F, 0.8F); - } - - @SuppressWarnings("unused") - private void blockBoundsForRender() - { - this.func_149978_e(); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - icon = iconRegister.registerIcon(ModInfo.MOD_ID + ":campFire"); - } - - @Override - public String getUnlocalizedName() - { - return "blockCampFire"; - } - - @Override - public TileEntity createNewTileEntity(World world, int p_149915_2_) - { - return new TileCampfire(); - } - - @Override - public int tickRate(World p_149738_1_) - { - return 30; - } - - @Override - public boolean isOpaqueCube() - { - return false; - } - - /** - * If this block doesn't render as an ordinary block it will return False (examples: signs, buttons, stairs, etc) - */ - @Override - public boolean renderAsNormalBlock() - { - return false; - } - - @Override - public int getRenderType() - { - return -1; - } - - @Override - public boolean isNormalCube() - { - return false; - } - - /** - * Indicate if a material is a normal solid opaque cube - */ - @Override - public boolean isBlockNormalCube() - { - return false; - } - - /** - * A randomly called display update to be able to add particles or other items for display - */ - @SideOnly(Side.CLIENT) - @Override - public void randomDisplayTick(World world, int posX, int posY, int posZ, Random rnd) - { - float rndX = posX + rnd.nextFloat(); - float rndY = (posY + 1) - rnd.nextFloat() * 0.1F; - float rndZ = posZ + rnd.nextFloat(); - world.spawnParticle("largesmoke", rndX, rndY, rndZ, 0.0D, 0.0D, 0.0D); - for (int i = 0; i < 4; i++) - { - rndX = posX + 0.5f - (float) rnd.nextGaussian() * 0.08f; - rndY = (float) (posY + 1f - Math.cos((float) rnd.nextGaussian() * 0.1f)); - rndZ = posZ + 0.5f - (float) rnd.nextGaussian() * 0.08f; - //world.spawnParticle("flame", posX+Math.sin(i/4), posY, posZ+Math.cos(i/4), 0.0D, 0.0D, 0.0D); - world.spawnParticle("flame", rndX, rndY + 0.16, rndZ, 0.0D, 0.0D, 0.0D); - } - - } - - @Override - public TileEntity createTileEntity(World world, int metadata) - { - return new TileCampfire(); - } - - @Override - public boolean hasTileEntity(int meta) - { - return true; - } - - @Override - public int getLightValue(IBlockAccess world, int x, int y, int z) - { - return 11; - } - - @Override - public void setBlockBoundsBasedOnState(IBlockAccess blockAccess, int x, int y, int z) - { - this.setBlockBounds(0.2F, 0.0F, 0.2F, 0.8F, 0.15F, 0.8F); - } - - /** - * Returns a bounding box from the pool of bounding boxes (this means this box can change after the pool has been - * cleared to be reused) - * - * @param p_149668_1_ - * @param p_149668_2_ - * @param p_149668_3_ - * @param p_149668_4_ - */ - @Override - public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_149668_2_, int p_149668_3_, int p_149668_4_) - { - return super.getCollisionBoundingBoxFromPool(p_149668_1_, p_149668_2_, p_149668_3_, p_149668_4_); - } - - /** - * Returns the bounding box of the wired rectangular prism to render. - * - * @param p_149633_1_ - * @param p_149633_2_ - * @param p_149633_3_ - * @param p_149633_4_ - */ - @Override - public AxisAlignedBB getSelectedBoundingBoxFromPool(World p_149633_1_, int p_149633_2_, int p_149633_3_, int p_149633_4_) - { - return super.getSelectedBoundingBoxFromPool(p_149633_1_, p_149633_2_, p_149633_3_, p_149633_4_); - } - - @Override - public IIcon getIcon(IBlockAccess p_149673_1_, int p_149673_2_, int p_149673_3_, int p_149673_4_, int p_149673_5_) - { - return icon; - } - - /** - * Gets the block's texture. Args: side, meta - * - * @param p_149691_1_ - * @param p_149691_2_ - */ - @Override - public IIcon getIcon(int p_149691_1_, int p_149691_2_) - { - return icon; - } - - /** - * Determines if this block is classified as a Bed, Allowing - * players to sleep in it, though the block has to specifically - * perform the sleeping functionality in it's activated event. - * - * @param world The current world - * @param x X Position - * @param y Y Position - * @param z Z Position - * @param player The player or camera entity, null in some cases. - * @return True to treat this as a bed - */ - @Override - public boolean isBed(IBlockAccess world, int x, int y, int z, EntityLivingBase player) - { - return true; - } - - @Override - public ChunkCoordinates getBedSpawnPosition(IBlockAccess world, int x, int y, int z, EntityPlayer player) - { - for (int i = y - 5; i <= y + 5; i++) - { - ChunkCoordinates spawn = Utils.getNearestEmptyChunkCoordinatesSpiral(world, x, z, x, i, z, 8, true, 1, (byte) 0, true); - - if (spawn != null) - { - return spawn; - } - } - return null; - } -} From 4822b50dd047e5a6740e184e26fc8aca1c9ade06 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:06:44 -0400 Subject: [PATCH 025/462] Delete BlockSleepingBag.java --- block/BlockSleepingBag.java | 446 ------------------------------------ 1 file changed, 446 deletions(-) delete mode 100644 block/BlockSleepingBag.java diff --git a/block/BlockSleepingBag.java b/block/BlockSleepingBag.java deleted file mode 100644 index 62c1ede3..00000000 --- a/block/BlockSleepingBag.java +++ /dev/null @@ -1,446 +0,0 @@ -package com.darkona.adventurebackpack.block; - -import com.darkona.adventurebackpack.init.ModBlocks; -import com.darkona.adventurebackpack.playerProperties.BackpackProperty; -import com.darkona.adventurebackpack.util.LogHelper; -import com.darkona.adventurebackpack.util.Resources; -import com.darkona.adventurebackpack.util.Utils; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.block.BlockDirectional; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.Item; -import net.minecraft.util.ChatComponentTranslation; -import net.minecraft.util.ChunkCoordinates; -import net.minecraft.util.Direction; -import net.minecraft.util.IIcon; -import net.minecraft.world.Explosion; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.chunk.IChunkProvider; - -import java.util.Iterator; -import java.util.Random; - -/** - * Created on 14/10/2014 - * - * @author Darkona - */ -public class BlockSleepingBag extends BlockDirectional -{ - - public static final int[][] footBlockToHeadBlockMap = new int[][]{{0, 1}, {-1, 0}, {0, -1}, {1, 0}}; - - @SideOnly(Side.CLIENT) - private IIcon[] endIcons; - @SideOnly(Side.CLIENT) - private IIcon[] sideIcons; - @SideOnly(Side.CLIENT) - private IIcon[] topIcons; - - public BlockSleepingBag() - { - super(Material.cloth); - this.func_149978_e(); - setBlockName(getUnlocalizedName()); - } - - - @SideOnly(Side.CLIENT) - protected String getTextureName() - { - return this.textureName == null ? "MISSING_ICON_BLOCK_" + getIdFromBlock(this) + "_" + getUnlocalizedName() : this.textureName; - } - - /** - * Returns the unlocalized name of the block with "tile." appended to the front. - */ - @Override - public String getUnlocalizedName() - { - return "blockSleepingBag"; - } - - - private void func_149978_e() - { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.1F, 1.0F); - } - - /** - * Returns whether or not this bed block is the head of the bed. - */ - - public static boolean isBlockHeadOfBed(int meta) - { - return (meta & 8) != 0; - } - - public static ChunkCoordinates verifyRespawnCoordinatesOnBlock(World world, ChunkCoordinates chunkCoordinates, boolean forced) - { - IChunkProvider ichunkprovider = world.getChunkProvider(); - ichunkprovider.loadChunk(chunkCoordinates.posX - 3 >> 4, chunkCoordinates.posZ - 3 >> 4); - ichunkprovider.loadChunk(chunkCoordinates.posX + 3 >> 4, chunkCoordinates.posZ - 3 >> 4); - ichunkprovider.loadChunk(chunkCoordinates.posX - 3 >> 4, chunkCoordinates.posZ + 3 >> 4); - ichunkprovider.loadChunk(chunkCoordinates.posX + 3 >> 4, chunkCoordinates.posZ + 3 >> 4); - - if (world.getBlock(chunkCoordinates.posX, chunkCoordinates.posY, chunkCoordinates.posZ).isBed(world, chunkCoordinates.posX, chunkCoordinates.posY, chunkCoordinates.posZ, null)) - { - ChunkCoordinates newChunkCoords = world.getBlock(chunkCoordinates.posX, chunkCoordinates.posY, chunkCoordinates.posZ).getBedSpawnPosition(world, chunkCoordinates.posX, chunkCoordinates.posY, chunkCoordinates.posZ, null); - return newChunkCoords; - } - - Material material = world.getBlock(chunkCoordinates.posX, chunkCoordinates.posY, chunkCoordinates.posZ).getMaterial(); - Material material1 = world.getBlock(chunkCoordinates.posX, chunkCoordinates.posY + 1, chunkCoordinates.posZ).getMaterial(); - boolean flag1 = (!material.isSolid()) && (!material.isLiquid()); - boolean flag2 = (!material1.isSolid()) && (!material1.isLiquid()); - return (forced) && (flag1) && (flag2) ? chunkCoordinates : null; - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int id, float f1, float f2, float f3) - { - if (world.isRemote) - { - return true; - } else - { - int meta = world.getBlockMetadata(x, y, z); - - if (!isBlockHeadOfBed(meta)) - { - int dir = getDirection(meta); - x += footBlockToHeadBlockMap[dir][0]; - z += footBlockToHeadBlockMap[dir][1]; - - if (world.getBlock(x, y, z) != this) - { - return true; - } - - meta = world.getBlockMetadata(x, y, z); - } - - if (world.provider.canRespawnHere() && world.getBiomeGenForCoords(x, z) != BiomeGenBase.hell) - { - if (isBedOccupied(meta)) - { - EntityPlayer entityplayer1 = null; - @SuppressWarnings("rawtypes") - Iterator iterator = world.playerEntities.iterator(); - - while (iterator.hasNext()) - { - EntityPlayer entityplayer2 = (EntityPlayer) iterator.next(); - - if (entityplayer2.isPlayerSleeping()) - { - ChunkCoordinates chunkcoordinates = entityplayer2.playerLocation; - - if (chunkcoordinates.posX == x && chunkcoordinates.posY == y && chunkcoordinates.posZ == z) - { - entityplayer1 = entityplayer2; - } - } - } - - if (entityplayer1 != null) - { - player.addChatComponentMessage(new ChatComponentTranslation("tile.bed.occupied", new Object[0])); - return true; - } - - setBedOccupied(world, x, y, z, false); - } - - EntityPlayer.EnumStatus enumstatus = player.sleepInBedAt(x, y, z); - - if (enumstatus == EntityPlayer.EnumStatus.OK) - { - setBedOccupied(world, x, y, z, true); - //This is so the wake up event can detect it. It fires before the player wakes up. - //and the bed location isn't set until then, normally. - player.setSpawnChunk(new ChunkCoordinates(x,y,z),true,player.dimension); - LogHelper.info("Looking for a campfire nearby..."); - ChunkCoordinates campfire = Utils.findBlock3D(world, x, y, z, ModBlocks.blockCampFire, 8, 2); - if (campfire != null) - { - LogHelper.info("Campfire Found, saving coordinates. " + LogHelper.print3DCoords(campfire)); - BackpackProperty.get(player).setCampFire(campfire); - } - return true; - } else - { - if (enumstatus == EntityPlayer.EnumStatus.NOT_POSSIBLE_NOW) - { - player.addChatComponentMessage(new ChatComponentTranslation("tile.bed.noSleep", new Object[0])); - } else if (enumstatus == EntityPlayer.EnumStatus.NOT_SAFE) - { - player.addChatComponentMessage(new ChatComponentTranslation("tile.bed.notSafe", new Object[0])); - } - - return true; - } - } else - { - double d2 = (double) x + 0.5D; - double d0 = (double) y + 0.5D; - double d1 = (double) z + 0.5D; - world.setBlockToAir(x, y, z); - int k1 = getDirection(meta); - x += footBlockToHeadBlockMap[k1][0]; - z += footBlockToHeadBlockMap[k1][1]; - - if (world.getBlock(x, y, z) == this) - { - world.setBlockToAir(x, y, z); - d2 = (d2 + (double) x + 0.5D) / 2.0D; - d0 = (d0 + (double) y + 0.5D) / 2.0D; - d1 = (d1 + (double) z + 0.5D) / 2.0D; - } - - world.newExplosion((Entity) null, (double) ((float) x + 0.5F), (double) ((float) y + 0.5F), (double) ((float) z + 0.5F), 5.0F, true, true); - return true; - } - } - } - - public static void setBedOccupied(World world, int x, int y, int z, boolean flag) - { - int l = world.getBlockMetadata(x, y, z); - - if (flag) - { - l |= 4; - } else - { - l &= -5; - } - - world.setBlockMetadataWithNotify(x, y, z, l, 4); - } - - public static boolean isBedOccupied(int meta) - { - return (meta & 4) != 0; - } - - public void onNeighborBlockChange(World world, int x, int y, int z, Block block) - { - int meta = world.getBlockMetadata(x, y, z); - int dir = getDirection(meta); - - if (isBlockHeadOfBed(meta)) - { - if (world.getBlock(x - footBlockToHeadBlockMap[dir][0], y, z - footBlockToHeadBlockMap[dir][1]) != this) - { - world.setBlockToAir(x, y, z); - } - } else if (world.getBlock(x + footBlockToHeadBlockMap[dir][0], y, z + footBlockToHeadBlockMap[dir][1]) != this) - { - world.setBlockToAir(x, y, z); - - if (!world.isRemote) - { - this.dropBlockAsItem(world, x, y, z, meta, 0); - } - } - } - - public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) - { - this.blockBoundsForRender(); - } - - private void blockBoundsForRender() - { - this.func_149978_e(); - } - - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) - { - return null; - } - - public static ChunkCoordinates func_149977_a(World world, int x, int y, int z, int whatever) - { - int meta = world.getBlockMetadata(x, y, z); - int dir = BlockDirectional.getDirection(meta); - - for (int k1 = 0; k1 <= 1; ++k1) - { - int l1 = x - footBlockToHeadBlockMap[dir][0] * k1 - 1; - int i2 = z - footBlockToHeadBlockMap[dir][1] * k1 - 1; - int j2 = l1 + 2; - int k2 = i2 + 2; - - for (int l2 = l1; l2 <= j2; ++l2) - { - for (int i3 = i2; i3 <= k2; ++i3) - { - if (World.doesBlockHaveSolidTopSurface(world, l2, y - 1, i3) && !world.getBlock(l2, y, i3).getMaterial().isOpaque() && !world.getBlock(l2, y + 1, i3).getMaterial().isOpaque()) - { - if (whatever <= 0) - { - return new ChunkCoordinates(l2, y, i3); - } - - --whatever; - } - } - } - } - - return null; - } - - @Override - public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) - { - int direction = getDirection(meta); - if (player.capabilities.isCreativeMode && isBlockHeadOfBed(meta)) - { - x -= footBlockToHeadBlockMap[direction][0]; - z -= footBlockToHeadBlockMap[direction][1]; - - if (world.getBlock(x, y, z) == this) - { - world.setBlockToAir(x, y, z); - } - } - } - - - @Override - public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion boom) - { - this.onBlockDestroyedByPlayer(world, x, y, z, world.getBlockMetadata(x, y, z)); - } - - @Override - public void onBlockDestroyedByPlayer(World world, int x, int y, int z, int meta) - { - //LogHelper.info("onBlockDestroyedByPlayer() : BlockSleepingBag"); - @SuppressWarnings("unused") - int direction = getDirection(meta); - int tileZ = z; - int tileX = x; - switch (meta) - { - case 0: - tileZ--; - break; - case 1: - tileX++; - break; - case 2: - tileZ++; - break; - case 3: - tileX--; - break; - } - //LogHelper.info("onBlockDestroyedByPlayer() Looking for tile entity in x=" +tileX+" y="+y+" z="+tileZ+" while breaking the block in x= "+x+" y="+y+" z="+z); - if (world.getTileEntity(tileX, y, tileZ) != null && world.getTileEntity(tileX, y, tileZ) instanceof TileAdventureBackpack) - { - // LogHelper.info("onBlockDestroyedByPlayer() Found the tile entity in x=" +tileX+" y="+y+" z="+z+" while breaking the block in x= "+x+" y="+y+" z="+z+" ...removing."); - ((TileAdventureBackpack) world.getTileEntity(tileX, y, tileZ)).setSleepingBagDeployed(false); - } - } - - @Override - public boolean isBed(IBlockAccess world, int x, int y, int z, EntityLivingBase player) - { - return true; - } - - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int meta) - { - if (side == 0) - { - return Blocks.planks.getBlockTextureFromSide(side); - } else - { - int k = getDirection(meta); - int l = Direction.bedDirection[k][side]; - int isHead = isBlockHeadOfBed(meta) ? 1 : 0; - return (isHead != 1 || l != 2) && (isHead != 0 || l != 3) ? (l != 5 && l != 4 ? this.topIcons[isHead] : this.sideIcons[isHead]) : this.endIcons[isHead]; - } - } - - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.topIcons = new IIcon[]{ - iconRegister.registerIcon(Resources.blockTextures("sleepingBag_feet_top").toString()), - iconRegister.registerIcon(Resources.blockTextures("sleepingBag_head_top").toString()) - }; - - this.endIcons = new IIcon[]{ - iconRegister.registerIcon(Resources.blockTextures("sleepingBag_feet_end").toString()), - iconRegister.registerIcon(Resources.blockTextures("sleepingBag_head_end").toString()) - }; - - this.sideIcons = new IIcon[]{ - iconRegister.registerIcon(Resources.blockTextures("sleepingBag_feet_side").toString()), - iconRegister.registerIcon(Resources.blockTextures("sleepingBag_head_side").toString()) - }; - } - - public int getRenderType() - { - return 14; - } - - @Override - public boolean isNormalCube() - { - return false; - } - - /** - * Indicate if a material is a normal solid opaque cube - */ - @Override - public boolean isBlockNormalCube() - { - return false; - } - - /** - * If this block doesn't render as an ordinary block it will return False (examples: signs, buttons, stairs, etc) - */ - @Override - public boolean renderAsNormalBlock() - { - return false; - } - - /** - * Is this block (a) opaque and (b) a full 1m cube? This determines whether or not to render the shared face of two - * adjacent blocks and also whether the player can attach torches, redstone wire, etc to this block. - */ - @Override - public boolean isOpaqueCube() - { - return false; - } - - /** - * Returns if this block is collidable (only used by Fire). Args: x, y, z - */ - @Override - public boolean isCollidable() - { - return super.isCollidable(); - } -} From 3cfdad8805dfbe22e58af6d937d78c4a7c5ee2e9 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:06:52 -0400 Subject: [PATCH 026/462] Delete TileAdventureBackpack.java --- block/TileAdventureBackpack.java | 607 ------------------------------- 1 file changed, 607 deletions(-) delete mode 100644 block/TileAdventureBackpack.java diff --git a/block/TileAdventureBackpack.java b/block/TileAdventureBackpack.java deleted file mode 100644 index 0ef77b14..00000000 --- a/block/TileAdventureBackpack.java +++ /dev/null @@ -1,607 +0,0 @@ -package com.darkona.adventurebackpack.block; - -import com.darkona.adventurebackpack.common.BackpackAbilities; -import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; -import com.darkona.adventurebackpack.init.ModBlocks; -import com.darkona.adventurebackpack.init.ModItems; -import com.darkona.adventurebackpack.inventory.InventoryActions; -import com.darkona.adventurebackpack.inventory.SlotTool; -import com.darkona.adventurebackpack.item.ItemAdventureBackpack; -import com.darkona.adventurebackpack.util.BackpackUtils; -import net.minecraft.block.Block; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.network.NetworkManager; -import net.minecraft.network.Packet; -import net.minecraft.network.play.server.S35PacketUpdateTileEntity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ChatComponentTranslation; -import net.minecraft.world.EnumSkyBlock; -import net.minecraft.world.World; -import net.minecraftforge.fluids.FluidContainerRegistry; -import net.minecraftforge.fluids.FluidTank; - -/** - * Created by Darkona on 12/10/2014. - */ -public class TileAdventureBackpack extends TileEntity implements IInventoryAdventureBackpack -{ - - public ItemStack[] inventory; - private FluidTank leftTank; - private FluidTank rightTank; - public boolean sleepingBagDeployed; - private boolean special; - private int sbdir; - private int sbx; - private int sby; - private int sbz; - private int checkTime = 0; - private String colorName; - private int lastTime; - private int luminosity; - private NBTTagCompound extendedProperties; - - public int getLuminosity() - { - return luminosity; - } - - public int getLastTime() - { - return lastTime; - } - - public void setLastTime(int lastTime) - { - this.lastTime = lastTime; - } - - public NBTTagCompound getExtendedProperties() - { - return extendedProperties; - } - - public void setExtendedProperties(NBTTagCompound extendedProperties) - { - this.extendedProperties = extendedProperties; - } - - public TileAdventureBackpack() - { - leftTank = new FluidTank(Constants.basicTankCapacity); - rightTank = new FluidTank(Constants.basicTankCapacity); - inventory = new ItemStack[Constants.inventorySize]; - sleepingBagDeployed = false; - setColorName("Standard"); - luminosity = 0; - lastTime = 0; - checkTime = 0; - extendedProperties = new NBTTagCompound(); - } - - public boolean deploySleepingBag(EntityPlayer player, World world, int x, int y, int z, int meta) - { - if (world.isRemote) return false; - Block sleepingBag = ModBlocks.blockSleepingBag; - if (world.setBlock(x, y, z, sleepingBag, meta, 3)) - { - world.playSoundAtEntity(player, Block.soundTypeCloth.func_150496_b(), 0.5f, 1.0f); - sbx = x; - sby = y; - sbz = z; - sbdir = meta; - switch (meta & 3) - { - case 0: - ++z; - break; - case 1: - --x; - break; - case 2: - --z; - break; - case 3: - ++x; - break; - } - sleepingBagDeployed = world.setBlock(x, y, z, sleepingBag, meta + 8, 3); - //LogHelper.info("deploySleepingBag() => SleepingBagDeployed is: " + sleepingBagDeployed); - world.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); - return sleepingBagDeployed; - } - return false; - } - - public void setSleepingBagDeployed(boolean state) - { - this.sleepingBagDeployed = state; - } - - public boolean removeSleepingBag(World world) - { - if (sleepingBagDeployed) - { - if (world.getBlock(sbx, sby, sbz) == ModBlocks.blockSleepingBag) - { - world.func_147480_a(sbx, sby, sbz, false); - this.sleepingBagDeployed = false; - markDirty(); - return true; - } - } else - { - this.sleepingBagDeployed = false; - markDirty(); - } - return false; - } - - //=====================================================GETTERS====================================================// - - public String getColorName() - { - return colorName; - } - - @Override - public ItemStack[] getInventory() - { - return this.inventory; - } - - @Override - public int getSizeInventory() - { - return inventory.length; - } - - @Override - public ItemStack getStackInSlot(int slot) - { - return inventory[slot]; - } - - @Override - public String getInventoryName() - { - return null; - } - - @Override - public int getInventoryStackLimit() - { - return 64; - } - - @Override - public FluidTank getLeftTank() - { - return leftTank; - } - - @Override - public FluidTank getRightTank() - { - return rightTank; - } - - //=====================================================SETTERS====================================================// - - - public void setColorName(String string) - { - this.colorName = string; - } - - //=====================================================BOOLEANS===================================================// - @Override - public boolean hasCustomInventoryName() - { - return false; - } - - @Override - public boolean isUseableByPlayer(EntityPlayer player) - { - return worldObj.getTileEntity(xCoord, yCoord, zCoord) == this && player.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) <= 64; - } - - public boolean isSBDeployed() - { - return this.sleepingBagDeployed; - } - - public boolean isSpecial() - { - return special; - } - - //=======================================================NBT======================================================// - @Override - public void readFromNBT(NBTTagCompound compound) - { - super.readFromNBT(compound); - loadFromNBT(compound); - sleepingBagDeployed = compound.getBoolean("sleepingbag"); - sbx = compound.getInteger("sbx"); - sby = compound.getInteger("sby"); - sbz = compound.getInteger("sbz"); - sbdir = compound.getInteger("sbdir"); - luminosity = compound.getInteger("lumen"); - } - - @Override - public void writeToNBT(NBTTagCompound compound) - { - super.writeToNBT(compound); - saveToNBT(compound); - compound.setBoolean("sleepingbag", sleepingBagDeployed); - compound.setInteger("sbx", sbx); - compound.setInteger("sby", sby); - compound.setInteger("sbz", sbz); - compound.setInteger("lumen", luminosity); - compound.setInteger("sbdir", sbdir); - } - - @Override - public void loadFromNBT(NBTTagCompound compound) - { - if(compound.hasKey("backpackData")) - { - NBTTagCompound backpackData = compound.getCompoundTag("backpackData"); - NBTTagList items = backpackData.getTagList("ABPItems", net.minecraftforge.common.util.Constants.NBT.TAG_COMPOUND); - for (int i = 0; i < items.tagCount(); i++) - { - NBTTagCompound item = items.getCompoundTagAt(i); - byte slot = item.getByte("Slot"); - if (slot >= 0 && slot < inventory.length) - { - inventory[slot] = ItemStack.loadItemStackFromNBT(item); - } - } - leftTank.readFromNBT(backpackData.getCompoundTag("leftTank")); - rightTank.readFromNBT(backpackData.getCompoundTag("rightTank")); - colorName = backpackData.getString("colorName"); - lastTime = backpackData.getInteger("lastTime"); - special = backpackData.getBoolean("special"); - extendedProperties = backpackData.getCompoundTag("extended"); - } - } - - @Override - public void saveToNBT(NBTTagCompound compound) - { - NBTTagCompound backpackData = new NBTTagCompound(); - NBTTagList items = new NBTTagList(); - for (int i = 0; i < inventory.length; i++) - { - ItemStack stack = inventory[i]; - if (stack != null) - { - NBTTagCompound item = new NBTTagCompound(); - item.setByte("Slot", (byte) i); - stack.writeToNBT(item); - items.appendTag(item); - } - } - backpackData.setTag("ABPItems", items); - backpackData.setString("colorName", colorName); - backpackData.setInteger("lastTime", lastTime); - backpackData.setBoolean("special", BackpackAbilities.hasAbility(colorName)); - backpackData.setTag("extended", extendedProperties); - backpackData.setTag("rightTank", rightTank.writeToNBT(new NBTTagCompound())); - backpackData.setTag("leftTank", leftTank.writeToNBT(new NBTTagCompound())); - - compound.setTag("backpackData",backpackData); - } - - @Override - public FluidTank[] getTanksArray() - { - FluidTank[] tanks = {leftTank,rightTank}; - return tanks; - } - - //====================================================INVENTORY===================================================// - @Override - public void openInventory() - { - } - - @Override - public void closeInventory() - { - markDirty(); - } - - @Override - public boolean isItemValidForSlot(int slot, ItemStack stack) - { - if (stack.getItem() instanceof ItemAdventureBackpack || Block.getBlockFromItem(stack.getItem()) instanceof BlockAdventureBackpack) - { - return false; - } - if (slot == 6 || slot == 8) - { - return FluidContainerRegistry.isContainer(stack); - } - - return !(slot == 0 || slot == 3) || SlotTool.isValidTool(stack); - } - - @Override - public ItemStack decrStackSize(int i, int count) - { - ItemStack itemstack = getStackInSlot(i); - - if (itemstack != null) - { - if (itemstack.stackSize <= count) - { - setInventorySlotContents(i, null); - } else - { - itemstack = itemstack.splitStack(count); - } - } - markDirty(); - return itemstack; - } - - @Override - public ItemStack getStackInSlotOnClosing(int slot) - { - if (slot == Constants.bucketInLeft || slot == Constants.bucketInRight || slot == Constants.bucketOutLeft || slot == Constants.bucketOutRight) - { - return inventory[slot]; - } - return null; - } - - @Override - public void setInventorySlotContents(int i, ItemStack itemstack) - { - - inventory[i] = itemstack; - if (itemstack != null && itemstack.stackSize > getInventoryStackLimit()) - { - itemstack.stackSize = getInventoryStackLimit(); - } - markDirty(); - } - - @Override - public void markDirty() - { - for (int i = 0; i < inventory.length; i++) - { - if (i == Constants.bucketInLeft && inventory[i] != null) - { - updateTankSlots(getLeftTank(), i); - } - - if (i == Constants.bucketInRight && inventory[i] != null) - { - updateTankSlots(getRightTank(), i); - } - } - super.markDirty(); - } - - @Override - public void setInventorySlotContentsNoSave(int slot, ItemStack itemstack) - { - if (slot > inventory.length) return; - inventory[slot] = itemstack; - if (itemstack != null && itemstack.stackSize > getInventoryStackLimit()) - { - itemstack.stackSize = getInventoryStackLimit(); - } - } - - @Override - public ItemStack decrStackSizeNoSave(int slot, int amount) - { - ItemStack stack = getStackInSlot(slot); - - if (stack != null) - { - if (stack.stackSize <= amount) - { - setInventorySlotContentsNoSave(slot, null); - } else - { - stack = stack.splitStack(amount); - } - } - return stack; - } - - @Override - public boolean hasItem(Item item) - { - return InventoryActions.hasItem(this, item); - } - - @Override - public void consumeInventoryItem(Item item) - { - InventoryActions.consumeItemInInventory(this, item); - } - - //===================================================TILE ENTITY==================================================// - - //SEND SYNC PACKET - @Override - public Packet getDescriptionPacket() - { - NBTTagCompound compound = new NBTTagCompound(); - writeToNBT(compound); - return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, compound); - } - - //RECEIV SYNC PACKET - This is necessary for the TileEntity to load the nbt as soon as it is loaded and be rendered - //properly when the custom renderer reads it - @Override - public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) - { - super.onDataPacket(net, pkt); - readFromNBT(pkt.func_148857_g()); - } - - @Override - public void updateEntity() - { - //Execute this backpack's ability. No, seriously. You might not infer that from the code. Just sayin' - if (isSpecial() && !colorName.isEmpty()) - { - BackpackAbilities.backpackAbilities.executeAbility(null, this.worldObj, this); - } - - //Check for backpack luminosity and a deployed sleeping bag, just in case because i'm super paranoid. - if (checkTime == 0) - { - int lastLumen = luminosity; - int left = (leftTank.getFluid() != null) ? leftTank.getFluid().getFluid().getLuminosity() : 0; - int right = (rightTank.getFluid() != null) ? rightTank.getFluid().getFluid().getLuminosity() : 0; - luminosity = Math.max(left, right); - if (luminosity != lastLumen) - { - int meta = worldObj.getBlockMetadata(xCoord, yCoord, zCoord); - worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.blockBackpack, meta, 3); - worldObj.setLightValue(EnumSkyBlock.Block, xCoord, yCoord, zCoord, luminosity); - } - if (worldObj.getBlock(sbx, sby, sbz) != ModBlocks.blockSleepingBag) - { - sleepingBagDeployed = false; - } - checkTime = 20; - } else - { - checkTime--; - } - } - - public void updateTankSlots(FluidTank tank, int slotIn) - { - InventoryActions.transferContainerTank(this, tank, slotIn); - } - - @Override - public void saveTanks(NBTTagCompound compound) - { - NBTTagCompound backpackData; - if(compound.hasKey("backpackData")) - { - backpackData = compound.getCompoundTag("backpackData"); - }else{ - backpackData = new NBTTagCompound(); - } - backpackData.setTag("rightTank", rightTank.writeToNBT(new NBTTagCompound())); - backpackData.setTag("leftTank", leftTank.writeToNBT(new NBTTagCompound())); - compound.setTag("backpackData",backpackData); - } - - @Override - public void loadTanks(NBTTagCompound compound) - { - if(compound.hasKey("backpackData")) - { - NBTTagCompound backpackData = compound.getCompoundTag("backpackData"); - leftTank.readFromNBT(backpackData.getCompoundTag("leftTank")); - rightTank.readFromNBT(backpackData.getCompoundTag("rightTank")); - } - } - - @Override - public TileAdventureBackpack getTile() - { - return this; - } - - @Override - public ItemStack getParentItemStack() - { - return null; - } - - - private ItemStack transferToItemStack(ItemStack stack) - { - NBTTagCompound compound = new NBTTagCompound(); - saveToNBT(compound); - stack.setTagCompound(compound); - return stack; - } - - //=====================================================BACKPACK===================================================// - public boolean equip(World world, EntityPlayer player, int x, int y, int z) - { - ItemStack stacky = new ItemStack(ModItems.adventureBackpack, 1); - transferToItemStack(stacky); - removeSleepingBag(world); - if (BackpackUtils.equipWearable(stacky, player) != BackpackUtils.reasons.SUCCESFUL) - { - player.addChatComponentMessage(new ChatComponentTranslation("You already have a adventurebackpack on your back please take it off if you want to equip this one")); - if (!player.inventory.addItemStackToInventory(stacky)) - { - return drop(world, player, x, y, z); - } - } - return true; - } - - public boolean drop(World world, EntityPlayer player, int x, int y, int z) - { - removeSleepingBag(world); - if (player.capabilities.isCreativeMode) return true; - ItemStack stacky = new ItemStack(ModItems.adventureBackpack, 1); - transferToItemStack(stacky); - float spawnX = x + world.rand.nextFloat(); - float spawnY = y + world.rand.nextFloat(); - float spawnZ = z + world.rand.nextFloat(); - - EntityItem droppedItem = new EntityItem(world, spawnX, spawnY, spawnZ, stacky); - - float mult = 0.05F; - - droppedItem.motionX = (-0.5F + world.rand.nextFloat()) * mult; - droppedItem.motionY = (4 + world.rand.nextFloat()) * mult; - droppedItem.motionZ = (-0.5F + world.rand.nextFloat()) * mult; - - return world.spawnEntityInWorld(droppedItem); - } - - - @Override - public boolean updateTankSlots() - { - return false; - } - - public void dirtyTanks() - { - - } - - public void dirtyTime() - { - } - - public void dirtyExtended() - { - - } - - public void dirtyInventory() - { - - } -} From 30526a1e3179ba21c43b8aefae0a0f96f0205548 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:06:59 -0400 Subject: [PATCH 027/462] Delete TileCampfire.java --- block/TileCampfire.java | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 block/TileCampfire.java diff --git a/block/TileCampfire.java b/block/TileCampfire.java deleted file mode 100644 index 8ac595b7..00000000 --- a/block/TileCampfire.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.darkona.adventurebackpack.block; - -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; - -/** - * Created on 08/01/2015 - * - * @author Darkona - */ -public class TileCampfire extends TileEntity -{ - public TileCampfire() - { - } - - @SuppressWarnings("unused") - private int burnTicks; - @SuppressWarnings("unused") - private ItemStack[] foodCooking = new ItemStack[4]; -} From 4a06b226f58a23f244336302bd5a8ba65d90df71 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:07:12 -0400 Subject: [PATCH 028/462] Delete Visuals.java --- client/Visuals.java | 129 -------------------------------------------- 1 file changed, 129 deletions(-) delete mode 100644 client/Visuals.java diff --git a/client/Visuals.java b/client/Visuals.java deleted file mode 100644 index 92407568..00000000 --- a/client/Visuals.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.darkona.adventurebackpack.client; - -import com.darkona.adventurebackpack.entity.fx.SteamFX; -import net.minecraft.client.Minecraft; -import net.minecraft.client.particle.EntityFX; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.MathHelper; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -/** - * Created on 17/10/2014 - * - * @author Darkona - */ -public class Visuals -{ - - public static void NyanParticles(EntityPlayer player, World world) - { - // World world = player.worldObj; - int i = 2; - for (int j = 0; j < i * 3; ++j) - { - float f = world.rand.nextFloat() * (float) Math.PI * 2.0F; - float f1 = world.rand.nextFloat() * 0.5F + 0.5F; - float f2 = MathHelper.sin(f) * i * 0.5F * f1; - float f3 = MathHelper.cos(f) * i * 0.5F * f1; - world.spawnParticle("note", - player.posX + f2, - player.boundingBox.minY + 0.8f, - player.posZ + f3, - (double) (float) Math.pow(2.0D, (world.rand.nextInt(169) - 12) / 12.0D) / 24.0D, - -1.0D, - 0.0D); - } - } - - public static void SlimeParticles(EntityPlayer player, World world) - { - int i = 3; - for (int j = 0; j < i * 2; ++j) - { - float f = world.rand.nextFloat() * (float) Math.PI * 2.0F; - float f1 = world.rand.nextFloat() * 0.5F + 0.5F; - float f2 = MathHelper.sin(f) * i * 0.5F * f1; - float f3 = MathHelper.cos(f) * i * 0.5F * f1; - world.spawnParticle("slime", player.posX + f2, player.boundingBox.minY, player.posZ + f3, 0.0D, 0.0625D, 0.0D); - } - } - - public static void CopterParticles(EntityPlayer player, World world) - { - Vec3 playerPosition = Vec3.createVectorHelper(player.posX, player.posY, player.posZ); - Vec3 victor = Vec3.createVectorHelper(-0.25D, -0.19D, -0.40D); - victor.rotateAroundY(-player.renderYawOffset * 3.141593F / 180.0F); - Vec3 finalPosition = playerPosition.addVector(victor.xCoord, victor.yCoord, victor.zCoord); - world.spawnParticle("smoke", finalPosition.xCoord, finalPosition.yCoord, finalPosition.zCoord, 0, -0.4, 0); - } - - public static void JetpackParticles(EntityPlayer player, World world) - { - Vec3 playerPosition = Vec3.createVectorHelper(player.posX, player.posY, player.posZ); - Vec3 victor = Vec3.createVectorHelper(-0.5D, -0.5D, -0.5D); - Vec3 victoria = Vec3.createVectorHelper(0.5D, -0.5D, -0.5D); - victor.rotateAroundY(-player.renderYawOffset * 3.141593F / 180.0F); - victoria.rotateAroundY(-player.renderYawOffset * 3.141593F / 180.0F); - Vec3 leftPosition = victor.addVector(playerPosition.xCoord, playerPosition.yCoord, playerPosition.zCoord); - Vec3 rightPosition = victoria.addVector(playerPosition.xCoord, playerPosition.yCoord, playerPosition.zCoord); - for(int i = 0; i< 4; i++) - { - spawnParticle("steam", leftPosition.xCoord, leftPosition.yCoord, leftPosition.zCoord, 0.04*world.rand.nextGaussian(), -0.8, 0.04 * world.rand.nextGaussian()); - spawnParticle("steam", rightPosition.xCoord, rightPosition.yCoord, rightPosition.zCoord, 0.04 * world.rand.nextGaussian(), -0.8, 0.04 * world.rand.nextGaussian()); - } - } - - - private static Minecraft mc = Minecraft.getMinecraft(); - private static World theWorld = mc.theWorld; - - public static EntityFX spawnParticle(String particleName, double x, double y, double z, double motionX, double motionY, double motionZ) - { - if (mc != null && mc.renderViewEntity != null && mc.effectRenderer != null) - { - int particleSetting = mc.gameSettings.particleSetting; - - if (particleSetting == 1 && theWorld.rand.nextInt(3) == 0) - { - particleSetting = 2; - } - - double renderX = mc.renderViewEntity.posX - x; - double renderY = mc.renderViewEntity.posY - y; - double renderZ = mc.renderViewEntity.posZ - z; - EntityFX entityFX = null; - double var22 = 16.0D; - - if (renderX * renderX + renderY * renderY + renderZ * renderZ > var22 * var22) - { - return null; - } - else if (particleSetting > 1) - { - return null; - } - else - { - if (particleName.equals("steam")) - { - entityFX = new SteamFX(theWorld, x, y, z, (float) motionX, (float) motionY, (float) motionZ); - /* - try - { - entityFX = (EntityFX) Class.forName("mods.railcraft.client.particles.EntitySteamFX") - .getConstructor(World.class,int.class,int.class,int.class,float.class,float.class,float.class) - .newInstance(theWorld, x, y, z, (float) motionX, (float) motionY, (float) motionZ); - }catch(Exception ex) - { - entityFX = new SteamFX(theWorld, x, y, z, (float) motionX, (float) motionY, (float) motionZ); - } - */ - } - mc.effectRenderer.addEffect(entityFX); - return entityFX; - } - } - return null; - } -} From a030d7b46483adae0991114d3043b9da0a92c1ab Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:07:23 -0400 Subject: [PATCH 029/462] Delete Icons.java --- client/Icons.java | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 client/Icons.java diff --git a/client/Icons.java b/client/Icons.java deleted file mode 100644 index 20284492..00000000 --- a/client/Icons.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.darkona.adventurebackpack.client; - -import net.minecraft.util.IIcon; - -/** - * Created on 14/10/2014 - * - * @author Darkona - */ -public class Icons -{ - public static IIcon milkFlowing; - public static IIcon milkStill; - - public static IIcon melonJuiceFlowing; - public static IIcon melonJuiceStill; - public static IIcon mushRoomStewStill; - public static IIcon mushRoomStewFlowing; -} From 9c9561adc726c710ce301f5926852ccff989ab4a Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:07:35 -0400 Subject: [PATCH 030/462] Delete ClientActions.java --- client/ClientActions.java | 80 --------------------------------------- 1 file changed, 80 deletions(-) delete mode 100644 client/ClientActions.java diff --git a/client/ClientActions.java b/client/ClientActions.java deleted file mode 100644 index 5f342344..00000000 --- a/client/ClientActions.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.darkona.adventurebackpack.client; - -import com.darkona.adventurebackpack.client.audio.*; -import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; -import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; -import cpw.mods.fml.client.FMLClientHandler; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.audio.SoundHandler; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; - -/** - * Created on 11/10/2014 - * - * @author Darkona - * @see com.darkona.adventurebackpack.handlers.PlayerEventHandler - * @see com.darkona.adventurebackpack.fluids.FluidEffectRegistry - * @see com.darkona.adventurebackpack.common.BackpackAbilities - */ -public class ClientActions -{ - - @SideOnly(Side.CLIENT) - public static void showParticlesAtEntity(Entity entity, byte particleCode) - { - if (entity instanceof EntityPlayer) - { - EntityPlayer player = (EntityPlayer) entity; - switch (particleCode) - { - case EntityParticlePacket.COPTER_PARTICLE: - Visuals.CopterParticles(player, player.worldObj); - break; - case EntityParticlePacket.NYAN_PARTICLE: - Visuals.NyanParticles(player, player.worldObj); - break; - case EntityParticlePacket.SLIME_PARTICLE: - Visuals.SlimeParticles(player, player.worldObj); - break; - case EntityParticlePacket.JETPACK_PARTICLE: - Visuals.JetpackParticles(player, player.worldObj); - break; - } - } - } - - @SideOnly(Side.CLIENT) - public static void playSoundAtEntity(Entity entity, byte soundCode) - { - SoundHandler snd = FMLClientHandler.instance().getClient().getSoundHandler(); - if (entity instanceof EntityPlayer) - { - EntityPlayer player = (EntityPlayer) entity; - switch (soundCode) - { - case EntitySoundPacket.COPTER_SOUND: - if (ConfigHandler.ALLOW_COPTER_SOUND) - { - snd.playSound(new CopterPackSound(player)); - } - break; - case EntitySoundPacket.NYAN_SOUND: - snd.playSound(new NyanMovingSound(player)); - break; - case EntitySoundPacket.JETPACK_FIZZ: - snd.playSound(new JetpackSoundOn(player)); - break; - case EntitySoundPacket.BOILING_BUBBLES: - snd.playSound(new BoilingBoilerSound(player)); - break; - case EntitySoundPacket.LEAKING_STEAM: - snd.playSound(new LeakingBoilerSound(player)); - break; - } - } - } - -} From c818e1aa58b345abe883de16eed91335bfb638d9 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:07:43 -0400 Subject: [PATCH 031/462] Delete RenderRideableSpider.java --- client/render/RenderRideableSpider.java | 81 ------------------------- 1 file changed, 81 deletions(-) delete mode 100644 client/render/RenderRideableSpider.java diff --git a/client/render/RenderRideableSpider.java b/client/render/RenderRideableSpider.java deleted file mode 100644 index 8c59aef1..00000000 --- a/client/render/RenderRideableSpider.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.darkona.adventurebackpack.client.render; - -import com.darkona.adventurebackpack.entity.EntityFriendlySpider; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.model.ModelSpider; -import net.minecraft.client.renderer.OpenGlHelper; -import net.minecraft.client.renderer.entity.RenderLiving; -import net.minecraft.entity.Entity; -import net.minecraft.util.ResourceLocation; -import org.lwjgl.opengl.GL11; - -@SideOnly(Side.CLIENT) -public class RenderRideableSpider extends RenderLiving -{ - private static final ResourceLocation spiderEyesTextures = new ResourceLocation("textures/entity/spider_eyes.png"); - private static final ResourceLocation spiderTextures = new ResourceLocation("textures/entity/spider/spider.png"); - @SuppressWarnings("unused") - private static final String __OBFID = "CL_00001027"; - - public RenderRideableSpider() - { - super(new ModelSpider(), 1.0F); - this.setRenderPassModel(new ModelSpider()); - } - - protected float getDeathMaxRotation(EntityFriendlySpider p_77037_1_) - { - return 180.0F; - } - - /** - * Queries whether should render the specified pass or not. - */ - protected int shouldRenderPass(EntityFriendlySpider p_77032_1_, int p_77032_2_, float p_77032_3_) - { - if (p_77032_2_ != 0) - { - return -1; - } - else - { - this.bindTexture(spiderEyesTextures); - GL11.glEnable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_ALPHA_TEST); - GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE); - - if (p_77032_1_.isInvisible()) - { - GL11.glDepthMask(false); - } - else - { - GL11.glDepthMask(true); - } - - char c0 = 61680; - int j = c0 % 65536; - int k = c0 / 65536; - OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)j / 1.0F, (float)k / 1.0F); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - return 1; - } - } - - /** - * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture. - */ - protected ResourceLocation getEntityTexture(EntityFriendlySpider p_110775_1_) - { - return spiderTextures; - } - - /** - * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture. - */ - protected ResourceLocation getEntityTexture(Entity p_110775_1_) - { - return this.getEntityTexture((EntityFriendlySpider)p_110775_1_); - } -} \ No newline at end of file From 09f41dad20d4b7c2409b36b15cb1e59c3e06ba9a Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:07:50 -0400 Subject: [PATCH 032/462] Delete RendererWearableEquipped.java --- client/render/RendererWearableEquipped.java | 98 --------------------- 1 file changed, 98 deletions(-) delete mode 100644 client/render/RendererWearableEquipped.java diff --git a/client/render/RendererWearableEquipped.java b/client/render/RendererWearableEquipped.java deleted file mode 100644 index 88460e91..00000000 --- a/client/render/RendererWearableEquipped.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.darkona.adventurebackpack.client.render; - -import com.darkona.adventurebackpack.item.IBackWearableItem; -import com.darkona.adventurebackpack.util.Wearing; -import net.minecraft.client.Minecraft; -import net.minecraft.client.model.ModelBiped; -import net.minecraft.client.renderer.OpenGlHelper; -import net.minecraft.client.renderer.entity.RenderManager; -import net.minecraft.client.renderer.entity.RendererLivingEntity; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; - -/** - * Created on 25/12/2014 - * - * @author Darkona - */ -public class RendererWearableEquipped extends RendererLivingEntity -{ - - public ResourceLocation texture; - public ModelBiped modelBipedMain; - - public RendererWearableEquipped() - { - super(new ModelBiped(0.0F), 0.0F); - renderManager = RenderManager.instance; - } - - @Override - protected ResourceLocation getEntityTexture(Entity par1Entity) - { - return texture; - } - - public void render(Entity entity, double x, double y, double z, float rotX, float rotY, float rotZ, float yaw, float pitch) - { - try - { - if (!Wearing.isWearingWearable((EntityPlayer) entity)) return; - ItemStack wearable = Wearing.getWearingWearable((EntityPlayer) entity).copy(); - IBackWearableItem wearableItem = (IBackWearableItem) wearable.getItem(); - modelBipedMain = wearableItem.getWearableModel(wearable); - texture = wearableItem.getWearableTexture(wearable); - modelBipedMain.bipedBody.rotateAngleX = rotX; - modelBipedMain.bipedBody.rotateAngleY = rotY; - modelBipedMain.bipedBody.rotateAngleZ = rotZ; - GL11.glColor3f(1.0F, 1.0F, 1.0F); - GL11.glPushMatrix(); - try - { - GL11.glEnable(GL12.GL_RESCALE_NORMAL); - renderMainModel((EntityPlayer) entity, 0, 0, 0, 0, 0, 0.0625f); - } catch (Exception oops) - { - - } - OpenGlHelper.setActiveTexture(OpenGlHelper.lightmapTexUnit); - GL11.glEnable(GL11.GL_TEXTURE_2D); - OpenGlHelper.setActiveTexture(OpenGlHelper.defaultTexUnit); - GL11.glPopMatrix(); - }catch(Exception ex) - { - //discard silently because NO ONE CARES - } - } - - protected void renderMainModel(EntityLivingBase entity, float limbSwing1, float limbswing2, float z, float yaw, float whatever, float scale) - { - bindTexture(this.texture); - if (!entity.isInvisible()) - { - modelBipedMain.render(entity, limbSwing1, limbswing2, z, yaw, whatever, scale); - } else - if (!entity.isInvisibleToPlayer(Minecraft.getMinecraft().thePlayer)) - { - GL11.glPushMatrix(); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.15F); - GL11.glDepthMask(false); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glAlphaFunc(GL11.GL_GREATER, 0.003921569F); - modelBipedMain.render(entity, limbSwing1, limbswing2, z, yaw, whatever, scale); - GL11.glDisable(GL11.GL_BLEND); - GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); - GL11.glPopMatrix(); - GL11.glDepthMask(true); - } else - { - modelBipedMain.setRotationAngles(limbSwing1, limbswing2, z, yaw, whatever, scale, entity); - } - } -} From d23f69da831d6eecb6cccb1c11e86c6ba3670172 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:07:56 -0400 Subject: [PATCH 033/462] Delete RendererStack.java --- client/render/RendererStack.java | 63 -------------------------------- 1 file changed, 63 deletions(-) delete mode 100644 client/render/RendererStack.java diff --git a/client/render/RendererStack.java b/client/render/RendererStack.java deleted file mode 100644 index 7702d5ec..00000000 --- a/client/render/RendererStack.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.darkona.adventurebackpack.client.render; - -import copy.betterstorage.utils.RenderUtils; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.item.ItemStack; -import org.lwjgl.opengl.GL11; - -public class RendererStack extends ModelRenderer -{ - - public ItemStack stack; - private boolean which; - - public RendererStack(ModelBase modelBase, boolean which) - { - super(modelBase); - this.which = which; - addChild(new Thing(modelBase)); - } - - private class Thing extends ModelRenderer - { - public Thing(ModelBase modelBase) - { - super(modelBase); - } - - @Override - @SideOnly(Side.CLIENT) - public void render(float par1) - { - if (stack == null) - { - return; - } - GL11.glPushMatrix(); - GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); - if (which) - { - GL11.glScalef(0.6F, 0.6F, 0.6F); - GL11.glPushMatrix(); - GL11.glRotatef(-90F, 0, 1, 0); - GL11.glRotatef(-225F, 0, 0, 1); - - } else - { - GL11.glScalef(0.7F, 0.7F, 0.7F); - GL11.glPushMatrix(); - GL11.glRotatef(45F, 0, 0, 1); - - } - RenderUtils.renderItemIn3d(stack); - GL11.glPopAttrib(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - - } - } - -} \ No newline at end of file From e2a0755150ad9d55a9ee0d3ac4ecb29483158d9e Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:08:03 -0400 Subject: [PATCH 034/462] Delete RendererItemClockworkCrossbow.java --- .../render/RendererItemClockworkCrossbow.java | 143 ------------------ 1 file changed, 143 deletions(-) delete mode 100644 client/render/RendererItemClockworkCrossbow.java diff --git a/client/render/RendererItemClockworkCrossbow.java b/client/render/RendererItemClockworkCrossbow.java deleted file mode 100644 index 16af1a2e..00000000 --- a/client/render/RendererItemClockworkCrossbow.java +++ /dev/null @@ -1,143 +0,0 @@ -package com.darkona.adventurebackpack.client.render; - - -import com.darkona.adventurebackpack.client.models.ModelClockworkCrossbow; -import com.darkona.adventurebackpack.util.Resources; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; -import org.lwjgl.opengl.GL11; - - -/** - * Created by Darkona on 11/10/2014. - */ - - -public class RendererItemClockworkCrossbow implements IItemRenderer -{ - - private final ModelClockworkCrossbow model; - private ResourceLocation modelTexture = Resources.modelTextures("clockworkCrossbow"); - - public RendererItemClockworkCrossbow() - { - model = new ModelClockworkCrossbow(); - } - - public boolean handleRenderType(ItemStack item, ItemRenderType type) - { - return (type != ItemRenderType.FIRST_PERSON_MAP); - } - - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) - { - return (type != ItemRenderType.FIRST_PERSON_MAP); - } - - public void renderItem(ItemRenderType type, ItemStack item, Object... data) - { - - Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); - EntityPlayer player; - switch (type) - { - case INVENTORY: - - { - GL11.glPushMatrix(); - GL11.glColor4f(1, 1, 1, 128); - - GL11.glPushMatrix(); - GL11.glTranslatef(-0.5f, -.5f, -0.5f); - - GL11.glPushMatrix(); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(180F, 0.0F, 1.0F, 0.0F); - GL11.glPushMatrix(); - GL11.glScalef(0.7f, 0.7f, 0.7f); - - model.render(null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.05F); - - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - } - break; - case ENTITY: - Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); - { - GL11.glPushMatrix(); - GL11.glColor4f(1, 1, 1, 128); - - GL11.glPushMatrix(); - GL11.glTranslatef(0f, .50f, 0f); - - GL11.glPushMatrix(); - GL11.glRotatef(180, 0, 0, 1); - - GL11.glPushMatrix(); - GL11.glScalef(1.0f, 1.0f, 1.0f); - - model.render(null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.05F); - - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - } - break; - case EQUIPPED: - Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); - - GL11.glPushMatrix(); - GL11.glColor4f(1, 1, 1, 128); - GL11.glPushMatrix(); - GL11.glScalef(1.2f, 1.2f, 1.2f); - - GL11.glPushMatrix(); - GL11.glRotatef(180, 0, 0, 1); - GL11.glRotatef(-45, 0, 1, 0); - GL11.glRotatef(75, 1, 0, 0); - - GL11.glTranslatef(0.0f, 0.4f, 0.2f); - player = (EntityPlayer) data[1]; - model.render(player, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.05F, item); - - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - - break; - case EQUIPPED_FIRST_PERSON: - Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); - player = (EntityPlayer) data[1]; - - GL11.glPushMatrix(); - GL11.glColor4f(1, 1, 1, 128); - GL11.glRotatef(180, 0, 0, 1); - GL11.glScalef(1.2f, 1.2f, 1.2f); - - GL11.glPushMatrix(); - GL11.glTranslatef(0.81f, -1f, 0f); - - GL11.glPushMatrix(); - GL11.glRotatef(45, 0, 1, 0); - GL11.glRotatef(20, 1, 0, 0); - - GL11.glRotatef(-20, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.32F, .42F); - model.render(player, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.05F, item); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - break; - case FIRST_PERSON_MAP: - break; - } - } - -} \ No newline at end of file From ad9d82cb5d0ff889a60e2406a8194dedfee08af5 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:09:10 -0400 Subject: [PATCH 035/462] Delete BoilingBoilerSound.java --- client/audio/BoilingBoilerSound.java | 103 --------------------------- 1 file changed, 103 deletions(-) delete mode 100644 client/audio/BoilingBoilerSound.java diff --git a/client/audio/BoilingBoilerSound.java b/client/audio/BoilingBoilerSound.java deleted file mode 100644 index 5a8b5c8d..00000000 --- a/client/audio/BoilingBoilerSound.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.darkona.adventurebackpack.client.audio; - -import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; -import com.darkona.adventurebackpack.reference.ModInfo; -import com.darkona.adventurebackpack.util.Wearing; -import net.minecraft.client.audio.MovingSound; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.ResourceLocation; - -/** - * Created on 16/01/2015 - * - * @author Darkona - */ -public class BoilingBoilerSound extends MovingSound -{ - - public EntityPlayer thePlayer; - protected boolean repeat = true; - protected int repeatDelay = 0; - - protected float pitch; - - public BoilingBoilerSound(EntityPlayer player) - { - super(new ResourceLocation(ModInfo.MOD_ID, "s_boiling")); - volume = 0.25f; - pitch = 0.4F; - thePlayer = player; - } - - public EntityPlayer getThePlayer() - { - return thePlayer; - } - - public void setThePlayer(EntityPlayer player){ - thePlayer = player; - } - - public void setDonePlaying() - { - repeat = false; - donePlaying = true; - repeatDelay = 0; - } - - @Override - public boolean isDonePlaying() - { - return this.donePlaying; - } - - @Override - public void update() - { - - if (thePlayer == null || thePlayer.isDead || thePlayer.worldObj == null || !Wearing.isWearingSteam(thePlayer)) - { - setDonePlaying(); - return; - } - - InventoryCoalJetpack inv = new InventoryCoalJetpack(Wearing.getWearingSteam(thePlayer)); - if(inv.isLava() && inv.getWaterTank().getFluidAmount() > 0) - { - xPosF = (float)thePlayer.posX; - yPosF = (float)thePlayer.posY; - zPosF = (float)thePlayer.posZ; - }else - { - setDonePlaying(); - } - } - - @Override - public boolean canRepeat() - { - return this.repeat; - } - - @Override - public float getVolume() - { - return this.volume; - } - - @Override - public float getPitch() - { - return this.pitch; - } - - @Override - public int getRepeatDelay(){ return this.repeatDelay; } - - @Override - public AttenuationType getAttenuationType() - { - return AttenuationType.LINEAR; - } - -} From ca6ffbc5a9957b5b4f0846c2ce4892774159426c Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:09:34 -0400 Subject: [PATCH 036/462] Delete CopterPackSound.java --- client/audio/CopterPackSound.java | 130 ------------------------------ 1 file changed, 130 deletions(-) delete mode 100644 client/audio/CopterPackSound.java diff --git a/client/audio/CopterPackSound.java b/client/audio/CopterPackSound.java deleted file mode 100644 index 6c1a4787..00000000 --- a/client/audio/CopterPackSound.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.darkona.adventurebackpack.client.audio; - -import com.darkona.adventurebackpack.item.ItemCopterPack; -import com.darkona.adventurebackpack.reference.ModInfo; -import com.darkona.adventurebackpack.util.LogHelper; -import com.darkona.adventurebackpack.util.Wearing; -import net.minecraft.client.audio.MovingSound; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; - -/** - * Created on 16/10/2014 - * - * @author Darkona - */ -public class CopterPackSound extends MovingSound -{ - - public EntityPlayer thePlayer; - protected boolean repeat = true; - protected int repeatDelay = 0; - - protected float pitch; - - - public CopterPackSound(EntityPlayer player) - { - super(new ResourceLocation(ModInfo.MOD_ID, "helicopter")); - volume = 0.6f; - pitch = 1.0F; - thePlayer = player; - } - - public EntityPlayer getThePlayer() - { - return thePlayer; - } - - public void setThePlayer(EntityPlayer player){ - thePlayer = player; - } - - public void setRepeat(boolean newRepeat){ - LogHelper.info("Setting sound repeat"); - repeat = newRepeat; - } - - - public void setDonePlaying() - { - this.repeat = false; - this.donePlaying = true; - this.repeatDelay = 0; - } - - @Override - public boolean isDonePlaying() - { - return this.donePlaying; - } - - @Override - public void update() - { - ItemStack copter = Wearing.getWearingCopter(thePlayer); - byte status = 0; - if(thePlayer == null || thePlayer.worldObj == null || copter ==null || !(copter.getItem() instanceof ItemCopterPack)) - { - setDonePlaying(); - return; - } - if (copter.hasTagCompound() && copter.getTagCompound().hasKey("status")) - { - status = copter.getTagCompound().getByte("status"); - if (status == ItemCopterPack.OFF_MODE) - { - setDonePlaying(); - }else{ - if(status == ItemCopterPack.HOVER_MODE) - { - pitch = (thePlayer.motionY > 0) ? 1.2f : (thePlayer.motionY < -0.1) ? 0.8f : 1.0f; - } - if(status == ItemCopterPack.NORMAL_MODE) - { - if(thePlayer.onGround) - { - pitch = 0.8f; - }else - { - pitch = (thePlayer.motionY > 0) ? 1.2f : (thePlayer.isSneaking()) ? 0.8f : 1.0f; - } - } - } - }else{ - setDonePlaying(); - } - xPosF = (float)thePlayer.posX; - yPosF = (float)thePlayer.posY; - zPosF = (float)thePlayer.posZ; - } - - @Override - public boolean canRepeat() - { - return this.repeat; - } - - @Override - public float getVolume() - { - return this.volume; - } - - @Override - public float getPitch() - { - return this.pitch; - } - - @Override - public int getRepeatDelay(){ return this.repeatDelay; } - - @Override - public AttenuationType getAttenuationType() - { - return AttenuationType.LINEAR; - } - -} From 87ae865bc10429d328083b04e99ddc502b521d49 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:09:41 -0400 Subject: [PATCH 037/462] Delete JetpackSoundOn.java --- client/audio/JetpackSoundOn.java | 102 ------------------------------- 1 file changed, 102 deletions(-) delete mode 100644 client/audio/JetpackSoundOn.java diff --git a/client/audio/JetpackSoundOn.java b/client/audio/JetpackSoundOn.java deleted file mode 100644 index 689aae64..00000000 --- a/client/audio/JetpackSoundOn.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.darkona.adventurebackpack.client.audio; - -import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; -import com.darkona.adventurebackpack.reference.ModInfo; -import com.darkona.adventurebackpack.util.Wearing; -import net.minecraft.client.audio.MovingSound; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.ResourceLocation; - -/** - * Created on 16/01/2015 - * - * @author Darkona - */ -public class JetpackSoundOn extends MovingSound -{ - - public EntityPlayer thePlayer; - protected boolean repeat = true; - protected int repeatDelay = 0; - - protected float pitch; - - public JetpackSoundOn(EntityPlayer player) - { - super(new ResourceLocation(ModInfo.MOD_ID, "s_jetpackon")); - volume = 0.9f; - pitch = 1.0F; - thePlayer = player; - } - - public EntityPlayer getThePlayer() - { - return thePlayer; - } - - public void setThePlayer(EntityPlayer player){ - thePlayer = player; - } - - public void setDonePlaying() - { - repeat = false; - donePlaying = true; - repeatDelay = 0; - } - - @Override - public boolean isDonePlaying() - { - return this.donePlaying; - } - - @Override - public void update() - { - if (thePlayer == null || thePlayer.isDead || thePlayer.worldObj == null || !Wearing.isWearingSteam(thePlayer)) - { - setDonePlaying(); - return; - } - - InventoryCoalJetpack inv = new InventoryCoalJetpack(Wearing.getWearingSteam(thePlayer)); - if(inv.isInUse()) - { - xPosF = (float)thePlayer.posX; - yPosF = (float)thePlayer.posY; - zPosF = (float)thePlayer.posZ; - }else - { - setDonePlaying(); - } - } - - @Override - public boolean canRepeat() - { - return this.repeat; - } - - @Override - public float getVolume() - { - return this.volume; - } - - @Override - public float getPitch() - { - return this.pitch; - } - - @Override - public int getRepeatDelay(){ return this.repeatDelay; } - - @Override - public AttenuationType getAttenuationType() - { - return AttenuationType.LINEAR; - } - -} From 1ace4bea75702d338f097fe2316b01141e5702bb Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:09:48 -0400 Subject: [PATCH 038/462] Delete LeakingBoilerSound.java --- client/audio/LeakingBoilerSound.java | 102 --------------------------- 1 file changed, 102 deletions(-) delete mode 100644 client/audio/LeakingBoilerSound.java diff --git a/client/audio/LeakingBoilerSound.java b/client/audio/LeakingBoilerSound.java deleted file mode 100644 index b544ba41..00000000 --- a/client/audio/LeakingBoilerSound.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.darkona.adventurebackpack.client.audio; - -import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; -import com.darkona.adventurebackpack.reference.ModInfo; -import com.darkona.adventurebackpack.util.Wearing; -import net.minecraft.client.audio.MovingSound; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.ResourceLocation; - -/** - * Created on 16/01/2015 - * - * @author Darkona - */ -public class LeakingBoilerSound extends MovingSound -{ - - public EntityPlayer thePlayer; - protected boolean repeat = true; - protected int repeatDelay = 0; - - protected float pitch; - - public LeakingBoilerSound(EntityPlayer player) - { - super(new ResourceLocation(ModInfo.MOD_ID, "s_background2")); - volume = 0.2f; - pitch = 1.2F; - thePlayer = player; - } - - public EntityPlayer getThePlayer() - { - return thePlayer; - } - - public void setThePlayer(EntityPlayer player){ - thePlayer = player; - } - - public void setDonePlaying() - { - repeat = false; - donePlaying = true; - repeatDelay = 0; - } - - @Override - public boolean isDonePlaying() - { - return this.donePlaying; - } - - @Override - public void update() - { - if (thePlayer == null || thePlayer.isDead || thePlayer.worldObj == null || !Wearing.isWearingSteam(thePlayer)) - { - setDonePlaying(); - return; - } - - InventoryCoalJetpack inv = new InventoryCoalJetpack(Wearing.getWearingSteam(thePlayer)); - if(inv.isLeaking()) - { - xPosF = (float)thePlayer.posX; - yPosF = (float)thePlayer.posY; - zPosF = (float)thePlayer.posZ; - }else - { - setDonePlaying(); - } - } - - @Override - public boolean canRepeat() - { - return this.repeat; - } - - @Override - public float getVolume() - { - return this.volume; - } - - @Override - public float getPitch() - { - return this.pitch; - } - - @Override - public int getRepeatDelay(){ return this.repeatDelay; } - - @Override - public AttenuationType getAttenuationType() - { - return AttenuationType.LINEAR; - } - -} From 57f692262c175c5a16a1ae1913531744ba60f0d6 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:09:55 -0400 Subject: [PATCH 039/462] Delete NyanMovingSound.java --- client/audio/NyanMovingSound.java | 119 ------------------------------ 1 file changed, 119 deletions(-) delete mode 100644 client/audio/NyanMovingSound.java diff --git a/client/audio/NyanMovingSound.java b/client/audio/NyanMovingSound.java deleted file mode 100644 index c4329e25..00000000 --- a/client/audio/NyanMovingSound.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.darkona.adventurebackpack.client.audio; - -import com.darkona.adventurebackpack.reference.ModInfo; -import com.darkona.adventurebackpack.util.Wearing; -import net.minecraft.client.audio.MovingSound; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.ResourceLocation; - -/** - * Created on 16/10/2014 - * - * @author Darkona - */ -public class NyanMovingSound extends MovingSound -{ - - public static NyanMovingSound instance = new NyanMovingSound(); - - public EntityPlayer getPlayer() - { - return player; - } - - public NyanMovingSound setPlayer(EntityPlayer p) - { - this.player = p; - return this; - } - - private EntityPlayer player; - - public NyanMovingSound(EntityPlayer player) - { - super(new ResourceLocation(ModInfo.MOD_ID, "nyan")); - this.volume = 0.8f; - this.player = player; - } - - public NyanMovingSound() - { - super(new ResourceLocation(ModInfo.MOD_ID, "nyan")); - } - - public void setDonePlaying() - { - this.donePlaying = true; - } - - @Override - public void update() - { - if (player == null || player.isDead) - { - this.donePlaying = true; - } else - { - if (Wearing.isWearingTheRightBackpack(player, "Rainbow")) - { - this.volume = 0.8f; - } else - { - this.donePlaying = true; - // this.volume = 0.0f; - } - - this.xPosF = (float) this.player.posX; - this.yPosF = (float) this.player.posY; - this.zPosF = (float) this.player.posZ; - } - } - - @Override - public boolean canRepeat() - { - return false; - } - - @Override - public int getRepeatDelay() - { - return super.getRepeatDelay(); - } - - @Override - public float getVolume() - { - return super.getVolume(); - } - - @Override - public float getPitch() - { - return super.getPitch(); - } - - @Override - public float getXPosF() - { - return super.getXPosF(); - } - - @Override - public float getYPosF() - { - return super.getYPosF(); - } - - @Override - public float getZPosF() - { - return super.getZPosF(); - } - - @Override - public AttenuationType getAttenuationType() - { - return AttenuationType.LINEAR; - } -} From ebdf428cb4ff4cc2d31bb3d95c46f3e030029b08 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:11:08 -0400 Subject: [PATCH 040/462] Delete GuiAdvBackpack.java --- client/gui/GuiAdvBackpack.java | 247 --------------------------------- 1 file changed, 247 deletions(-) delete mode 100644 client/gui/GuiAdvBackpack.java diff --git a/client/gui/GuiAdvBackpack.java b/client/gui/GuiAdvBackpack.java deleted file mode 100644 index fc511525..00000000 --- a/client/gui/GuiAdvBackpack.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.darkona.adventurebackpack.client.gui; - -import com.darkona.adventurebackpack.block.TileAdventureBackpack; -import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; -import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.config.Keybindings; -import com.darkona.adventurebackpack.init.ModNetwork; -import com.darkona.adventurebackpack.inventory.ContainerBackpack; -import com.darkona.adventurebackpack.inventory.InventoryBackpack; -import com.darkona.adventurebackpack.network.EquipUnequipBackWearablePacket; -import com.darkona.adventurebackpack.network.SleepingBagPacket; -import com.darkona.adventurebackpack.util.Resources; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fluids.FluidTank; -import org.lwjgl.input.Keyboard; -import org.lwjgl.opengl.GL11; - -/** - * Created on 12/10/2014 - * - * @author Darkona - */ -@SideOnly(Side.CLIENT) -public class GuiAdvBackpack extends GuiWithTanks -{ - - protected IInventoryAdventureBackpack inventory; - protected boolean isTile; - protected boolean wearing; - protected int X; - protected int Y; - protected int Z; - private EntityPlayer player; - private static final ResourceLocation texture = Resources.guiTextures("guiBackpackNew"); - private static GuiImageButtonNormal bedButton = new GuiImageButtonNormal(5, 91, 18, 18); - private static GuiImageButtonNormal equipButton = new GuiImageButtonNormal(5, 91, 18, 18); - private static GuiImageButtonNormal unequipButton = new GuiImageButtonNormal(5, 91, 18, 18); - private static GuiTank tankLeft = new GuiTank(25, 7, 100, 16, ConfigHandler.GUI_TANK_RENDER); - private static GuiTank tankRight = new GuiTank(207, 7, 100, 16, ConfigHandler.GUI_TANK_RENDER); - private FluidTank lft; - private FluidTank rgt; - public int lefties; - public int topsies; - - public GuiAdvBackpack(EntityPlayer player, TileAdventureBackpack tileBackpack) - { - super(new ContainerBackpack(player, tileBackpack, ContainerBackpack.SOURCE_TILE)); - this.inventory = tileBackpack; - this.isTile = true; - xSize = 248; - ySize = 207; - this.X = tileBackpack.xCoord; - this.Y = tileBackpack.yCoord; - this.Z = tileBackpack.zCoord; - this.player = player; - this.lefties = guiLeft; - this.topsies = guiTop; - } - - public GuiAdvBackpack(EntityPlayer player, InventoryBackpack inventoryBackpack, boolean wearing) - { - super(new ContainerBackpack(player, inventoryBackpack, wearing ? ContainerBackpack.SOURCE_WEARING : ContainerBackpack.SOURCE_HOLDING)); - this.inventory = inventoryBackpack; - this.wearing = wearing; - this.isTile = false; - xSize = 248; - ySize = 207; - this.player = player; - this.lefties = guiLeft; - this.topsies = guiTop; - } - - @Override - public void onGuiClosed() - { - if (inventory != null) - { - inventory.closeInventory(); - } - super.onGuiClosed(); - } - - @Override - protected void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) - { - GL11.glColor4f(1, 1, 1, 1); - - this.mc.renderEngine.bindTexture(texture); - - drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - - // Buttons and button highlight - if (isTile) - { - if (bedButton.inButton(this, mouseX, mouseY)) - { - bedButton.draw(this, 20, 227); - } else - { - bedButton.draw(this, 1, 227); - } - }else - { - if(wearing) - { - if(unequipButton.inButton(this,mouseX,mouseY)) - { - unequipButton.draw(this,96,227); - }else - { - unequipButton.draw(this,77,227); - } - }else - { - if(equipButton.inButton(this,mouseX,mouseY)) - { - equipButton.draw(this,96,208); - }else - { - equipButton.draw(this,77,208); - } - } - } - //zLevel +=1; - if(ConfigHandler.HOVERING_TEXT_TANKS) - { - if (tankLeft.inTank(this, mouseX, mouseY)) - { - drawHoveringText(tankLeft.getTankTooltip(), mouseX, mouseY, fontRendererObj); - } - - if (tankRight.inTank(this, mouseX, mouseY)) - { - drawHoveringText(tankRight.getTankTooltip(), mouseX, mouseY, fontRendererObj); - } - } - } - - @Override - protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) - { - - inventory.openInventory(); - lft = inventory.getLeftTank(); - rgt = inventory.getRightTank(); - tankLeft.draw(this, lft); - tankRight.draw(this, rgt); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_BLEND); - /* - if(!ConfigHandler.HOVERING_TEXT_TANKS){ - GL11.glPushMatrix(); - //GL11.glTranslatef(8f,64f,0f); - GL11.glScalef(0.6f, 0.6f, 0.6f); - String name = (lft.getFluid() != null) ? lft.getFluid().getLocalizedName() : "None"; - String amount = (lft.getFluid() != null ? lft.getFluid().amount : "Empty").toString(); - String capacity = Integer.toString(inventory.getLeftTank().getCapacity()); - int offsetY = 32; - int offsetX = 8; - fontRendererObj.drawString(Utils.getFirstWord(name), 1 + offsetX, 64 + offsetY, 0x373737, false); - fontRendererObj.drawString(amount, 1 + offsetX, 79 + offsetY, 0x373737, false); - fontRendererObj.drawString(capacity, 1 + offsetX, 94 + offsetY, 0x373737, false); - - name = (rgt.getFluid() != null) ? rgt.getFluid().getLocalizedName() : "None"; - amount = (rgt.getFluid() != null ? rgt.getFluid().amount : "Empty").toString(); - fontRendererObj.drawString(Utils.getFirstWord(name), 369 + offsetX, 64 + offsetY, 0x373737, false); - fontRendererObj.drawString(amount, 369 + offsetX, 79 + offsetY, 0x373737, false); - fontRendererObj.drawString(capacity, 369 + offsetX, 94 + offsetY, 0x373737, false); - - GL11.glPopMatrix(); - } - */ - } - - @Override - public float getZLevel() - { - return this.zLevel; - } - - @Override - public void initGui() - { - super.initGui(); - - } - - @Override - public int getLeft() - { - return guiLeft; - } - - @Override - public int getTop() - { - return guiTop; - } - - @Override - protected void mouseClicked(int mouseX, int mouseY, int button) - { - int sneakKey = Minecraft.getMinecraft().gameSettings.keyBindSneak.getKeyCode(); - if(isTile) - { - if (bedButton.inButton(this, mouseX, mouseY)) - { - TileAdventureBackpack te = (TileAdventureBackpack) inventory; - ModNetwork.net.sendToServer(new SleepingBagPacket.SleepingBagMessage(te.xCoord, te.yCoord, te.zCoord)); - } - }else - { - if(wearing) - { - if(unequipButton.inButton(this,mouseX,mouseY)) - { - ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.UNEQUIP_WEARABLE,false)); - player.closeScreen(); - } - } else - { - if(equipButton.inButton(this,mouseX,mouseY)) - { - ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, Keyboard.isKeyDown(sneakKey))); - player.closeScreen(); - } - - } - } - super.mouseClicked(mouseX, mouseY, button); - } - - @Override - protected void keyTyped(char key, int keycode) - { - if (keycode == Keybindings.openBackpack.getKeyCode()) - { - player.closeScreen(); - } - super.keyTyped(key, keycode); - } -} - From 1596e472019749abd3328153f5b8989f79d0f176 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:11:16 -0400 Subject: [PATCH 041/462] Delete GuiCoalJetpack.java --- client/gui/GuiCoalJetpack.java | 202 --------------------------------- 1 file changed, 202 deletions(-) delete mode 100644 client/gui/GuiCoalJetpack.java diff --git a/client/gui/GuiCoalJetpack.java b/client/gui/GuiCoalJetpack.java deleted file mode 100644 index d0e5f193..00000000 --- a/client/gui/GuiCoalJetpack.java +++ /dev/null @@ -1,202 +0,0 @@ -package com.darkona.adventurebackpack.client.gui; - -import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.config.Keybindings; -import com.darkona.adventurebackpack.init.ModNetwork; -import com.darkona.adventurebackpack.inventory.ContainerJetpack; -import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; -import com.darkona.adventurebackpack.network.EquipUnequipBackWearablePacket; -import com.darkona.adventurebackpack.util.Resources; -import com.darkona.adventurebackpack.util.Utils; -import com.darkona.adventurebackpack.util.Wearing; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fluids.FluidTank; -import org.lwjgl.input.Keyboard; -import org.lwjgl.opengl.GL11; - -/** - * Created on 15/01/2015 - * - * @author Darkona - */ -public class GuiCoalJetpack extends GuiWithTanks -{ - private static final ResourceLocation texture = Resources.guiTextures("guiSteamJetpack"); - private static GuiTank waterTank = new GuiTank(8, 8,72, 16, ConfigHandler.GUI_TANK_RENDER); - private static GuiTank steamTank = new GuiTank(116, 8,72, 16, ConfigHandler.GUI_TANK_RENDER); - private static GuiImageButtonNormal equipButton = new GuiImageButtonNormal(150, 64, 18, 18); - private static GuiImageButtonNormal unequipButton = new GuiImageButtonNormal(150, 64, 18, 18); - private boolean wearing; - EntityPlayer player; - InventoryCoalJetpack inventory; - int boiling = 0; - public GuiCoalJetpack(EntityPlayer player, InventoryCoalJetpack inventory, boolean wearing) - { - super(new ContainerJetpack(player, inventory,wearing)); - this.wearing = wearing; - this.player = player; - this.inventory = inventory; - xSize = 176; - ySize = 166; - } - - - - @Override - protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int mouseX, int mouseY) - { - inventory.openInventory(); - this.mc.renderEngine.bindTexture(texture); - drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - - if(wearing) - { - if(unequipButton.inButton(this,mouseX,mouseY)) - { - unequipButton.draw(this,20,186); - }else - { - unequipButton.draw(this,1,186); - } - }else - { - if(equipButton.inButton(this,mouseX,mouseY)) - { - equipButton.draw(this,20,167); - }else - { - equipButton.draw(this,1,167); - } - } - - - - - - // if(wearing) inventory = new InventorySteamJetpack(Wearing.getWearingSteam(player)); - - - - } - - @Override - protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) - { - this.mc.renderEngine.bindTexture(texture); - if(wearing) inventory = new InventoryCoalJetpack(Wearing.getWearingSteam(player)); - FluidTank water = inventory.getWaterTank(); - FluidTank steam = inventory.getCoalTank(); - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - if( inventory.isLava() - && steam.getFluidAmount() < steam.getCapacity() - && water.getFluidAmount() > 0) - { - if(boiling < 83) - { - drawTexturedModalRect(28,40,50,172,boiling++,37); - }else boiling = 0; - } - if(inventory.getBurnTicks() > 0) - { - int i1 =inventory.getBurnTimeRemainingScaled(13); - this.drawTexturedModalRect(78, 48 + 12 - i1, 176, 12 - i1, 14, i1 + 1); - } - - int H = Math.round(((float)72 / (float)InventoryCoalJetpack.MAX_TEMPERATURE) * (float)inventory.getTemperature()); - drawTexturedModalRect( 139, 8 + (72- H), 40, 167 + (72 - H), 5, H); - - GL11.glDisable(GL11.GL_BLEND); - GL11.glPopMatrix(); - GL11.glDisable(GL11.GL_LIGHTING); - - - waterTank.draw(this, water); - steamTank.draw(this,steam); - - float factor = 0.7f; - - String show = ((water.getFluidAmount() > 0) ? Utils.capitalize(FluidRegistry.getFluidName(water.getFluid())) : "None")+ "-" + water.getFluidAmount(); - - GL11.glPushMatrix(); - GL11.glTranslatef(70, 10, 0); - GL11.glScalef(factor, factor, factor); - fontRendererObj.drawString(show, 0, 0, 0x373737, false); - GL11.glScalef(1, 1, 1); - GL11.glPopMatrix(); - - show = ((steam.getFluidAmount() > 0) ? Utils.capitalize(FluidRegistry.getFluidName(steam.getFluid())) : "None") + "-" + steam.getFluidAmount(); - - GL11.glPushMatrix(); - GL11.glTranslatef(70, 20, 0); - GL11.glScalef(factor, factor, factor); - fontRendererObj.drawString(show, 0, 0, 0x373737, false); - GL11.glScalef(1, 1, 1); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - GL11.glTranslatef(145,8,0); - GL11.glScalef(0.9f, 0.9f, 0.9f); - fontRendererObj.drawString((inventory.getTemperature()) + " C", 0, 0, 0x373737, false); - GL11.glScalef(1, 1, 1); - GL11.glPopMatrix(); - - - - - } - - @Override - protected void mouseClicked(int mouseX, int mouseY, int mouseButton) - { - int sneakKey = Minecraft.getMinecraft().gameSettings.keyBindSneak.getKeyCode(); - if(wearing) - { - if(unequipButton.inButton(this,mouseX,mouseY)) - { - ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.UNEQUIP_WEARABLE,false)); - player.closeScreen(); - } - } else - { - if(equipButton.inButton(this,mouseX,mouseY)) - { - ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, Keyboard.isKeyDown(sneakKey))); - player.closeScreen(); - } - } - super.mouseClicked(mouseX, mouseY, mouseButton); - } - - @Override - public int getLeft() - { - return guiLeft; - } - - @Override - public int getTop() - { - return guiTop; - } - - @Override - public float getZLevel() - { - return zLevel; - } - - @Override - protected void keyTyped(char key, int keycode) - { - if (keycode == Keybindings.openBackpack.getKeyCode()) - { - player.closeScreen(); - } - super.keyTyped(key, keycode); - } -} From 8ce2a890dcfc1126b3a693acdfefa2040fa2b2e7 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:26:15 -0400 Subject: [PATCH 042/462] Delete GuiCopterPack.java --- client/gui/GuiCopterPack.java | 163 ---------------------------------- 1 file changed, 163 deletions(-) delete mode 100644 client/gui/GuiCopterPack.java diff --git a/client/gui/GuiCopterPack.java b/client/gui/GuiCopterPack.java deleted file mode 100644 index 639c1f3c..00000000 --- a/client/gui/GuiCopterPack.java +++ /dev/null @@ -1,163 +0,0 @@ -package com.darkona.adventurebackpack.client.gui; - -import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.config.Keybindings; -import com.darkona.adventurebackpack.init.ModNetwork; -import com.darkona.adventurebackpack.inventory.ContainerCopter; -import com.darkona.adventurebackpack.inventory.InventoryCopterPack; -import com.darkona.adventurebackpack.network.EquipUnequipBackWearablePacket; -import com.darkona.adventurebackpack.reference.GeneralReference; -import com.darkona.adventurebackpack.util.Resources; -import com.darkona.adventurebackpack.util.Utils; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fluids.FluidTank; -import org.lwjgl.input.Keyboard; -import org.lwjgl.opengl.GL11; - -/** - * Created on 03/01/2015 - * - * @author Darkona - */ -public class GuiCopterPack extends GuiWithTanks -{ - private InventoryCopterPack inventory; - private static final ResourceLocation texture = Resources.guiTextures("guiCopterPack"); - private static GuiTank fuelTank = new GuiTank(8, 8,72, 32, ConfigHandler.GUI_TANK_RENDER); - private static GuiImageButtonNormal equipButton = new GuiImageButtonNormal(150, 64, 18, 18); - private static GuiImageButtonNormal unequipButton = new GuiImageButtonNormal(150, 64, 18, 18); - - private boolean wearing; - EntityPlayer player; - - public GuiCopterPack(EntityPlayer player, InventoryCopterPack inv, boolean wearing) - { - super(new ContainerCopter(player, inv, wearing)); - this.inventory = inv; - xSize = 176; - ySize = 166; - this.wearing = wearing; - this.player = player; - } - - @Override - protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int mouseX, int mouseY) - { - GL11.glColor4f(1, 1, 1, 1); - this.mc.renderEngine.bindTexture(texture); - drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - - if(wearing) - { - if(unequipButton.inButton(this,mouseX,mouseY)) - { - unequipButton.draw(this,20,186); - }else - { - unequipButton.draw(this,1,186); - } - }else - { - if(equipButton.inButton(this,mouseX,mouseY)) - { - equipButton.draw(this,20,167); - }else - { - equipButton.draw(this,1,167); - } - } - - - } - - @Override - protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) - { - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_BLEND); - inventory.openInventory(); - FluidTank fuel = inventory.getFuelTank(); - fuelTank.draw(this, fuel); - - GL11.glPushMatrix(); - String name = (fuel.getFluid() != null) ? Utils.capitalize(fuel.getFluid().getFluid().getName()) : "None"; - String amount = (fuel.getFluid() != null) ? ""+ fuel.getFluid().amount : "0"; - String capacity = Integer.toString(fuel.getCapacity()); - int offsetY = 8; - int offsetX = 83; - fontRendererObj.drawString(name, 1 + offsetX, offsetY, 0x373737, false); - fontRendererObj.drawString(amount, 1 + offsetX, 10 + offsetY, 0x373737, false); - fontRendererObj.drawString(capacity, 1 + offsetX, 20 + offsetY, 0x373737, false); - - if(fuel.getFluid()!=null) - { - Float f = GeneralReference.liquidFuels.get(name); - String conLev = (f != null) ? f.toString() : "0"; - if(conLev != null && !conLev.isEmpty()) - fontRendererObj.drawString("Consumption: " + conLev , 1 + offsetX, 40 + offsetY, 0x373737, false); - } - GL11.glPopMatrix(); - } - - @Override - public int getLeft() - { - return guiLeft; - } - - @Override - public int getTop() - { - return guiTop; - } - - @Override - public float getZLevel() - { - return zLevel; - } - - @Override - protected void mouseClicked(int mouseX, int mouseY, int mouseButton) - { - int sneakKey = Minecraft.getMinecraft().gameSettings.keyBindSneak.getKeyCode(); - if(wearing) - { - if(unequipButton.inButton(this,mouseX,mouseY)) - { - ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.UNEQUIP_WEARABLE,false)); - player.closeScreen(); - } - } else - { - if(equipButton.inButton(this,mouseX,mouseY)) - { - ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, Keyboard.isKeyDown(sneakKey))); - player.closeScreen(); - } - } - super.mouseClicked(mouseX, mouseY, mouseButton); - } - - @Override - protected void keyTyped(char key, int keycode) - { - if (keycode == Keybindings.openBackpack.getKeyCode()) - { - player.closeScreen(); - } - super.keyTyped(key, keycode); - } - - @Override - public void onGuiClosed() - { - if (inventory != null) - { - inventory.closeInventory(); - } - super.onGuiClosed(); - } -} From 4faf16e4013505f2f860e0299d800134c348043f Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:26:21 -0400 Subject: [PATCH 043/462] Delete GuiFactory.java --- client/gui/GuiFactory.java | 39 -------------------------------------- 1 file changed, 39 deletions(-) delete mode 100644 client/gui/GuiFactory.java diff --git a/client/gui/GuiFactory.java b/client/gui/GuiFactory.java deleted file mode 100644 index de9d38fc..00000000 --- a/client/gui/GuiFactory.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.darkona.adventurebackpack.client.gui; - -import cpw.mods.fml.client.IModGuiFactory; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiScreen; - -import java.util.Set; - -/** - * Created on 10/10/2014 - * - * @author Darkona - */ -public class GuiFactory implements IModGuiFactory -{ - @Override - public void initialize(Minecraft minecraftInstance) - { - - } - - @Override - public Class mainConfigGuiClass() - { - return ModGuiConfig.class; - } - - @Override - public Set runtimeGuiCategories() - { - return null; - } - - @Override - public RuntimeOptionGuiHandler getHandlerFor(RuntimeOptionCategoryElement element) - { - return null; - } -} \ No newline at end of file From 442eb1b3de431650c26c61f7a67fa0672b35dcbe Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:26:26 -0400 Subject: [PATCH 044/462] Delete GuiImageButtonNormal.java --- client/gui/GuiImageButtonNormal.java | 34 ---------------------------- 1 file changed, 34 deletions(-) delete mode 100644 client/gui/GuiImageButtonNormal.java diff --git a/client/gui/GuiImageButtonNormal.java b/client/gui/GuiImageButtonNormal.java deleted file mode 100644 index f904de36..00000000 --- a/client/gui/GuiImageButtonNormal.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.darkona.adventurebackpack.client.gui; - -/** - * Created on 12/10/2014 - * - * @author Darkona - */ -public class GuiImageButtonNormal -{ - private int X; - private int Y; - private int W; - private int H; - - public GuiImageButtonNormal(int U, int V, int W, int H) - { - this.X = U; - this.Y = V; - this.W = W; - this.H = H; - } - - public void draw(GuiWithTanks gui, int U, int V) - { - gui.drawTexturedModalRect(gui.getLeft() + X, gui.getTop() + Y, U, V, W, H); - } - - public boolean inButton(GuiWithTanks gui, int mouseX, int mouseY) - { - mouseX -= gui.getLeft(); - mouseY -= gui.getTop(); - return X <= mouseX && mouseX <= X + W && Y <= mouseY && mouseY <= Y + H; - } -} From db0a6cff55c700258302f0779071e3a088062ab9 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:26:33 -0400 Subject: [PATCH 045/462] Delete GuiOverlay.java --- client/gui/GuiOverlay.java | 223 ------------------------------------- 1 file changed, 223 deletions(-) delete mode 100644 client/gui/GuiOverlay.java diff --git a/client/gui/GuiOverlay.java b/client/gui/GuiOverlay.java deleted file mode 100644 index d3b9093e..00000000 --- a/client/gui/GuiOverlay.java +++ /dev/null @@ -1,223 +0,0 @@ -package com.darkona.adventurebackpack.client.gui; - -import codechicken.lib.render.TextureUtils; -import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.inventory.IInventoryTanks; -import com.darkona.adventurebackpack.item.ItemHose; -import com.darkona.adventurebackpack.reference.ModInfo; -import com.darkona.adventurebackpack.util.LogHelper; -import com.darkona.adventurebackpack.util.Wearing; -import cpw.mods.fml.common.eventhandler.EventPriority; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.gui.Gui; -import net.minecraft.client.gui.ScaledResolution; -import net.minecraft.client.renderer.RenderHelper; -import net.minecraft.client.renderer.entity.RenderItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.IIcon; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.event.RenderGameOverlayEvent; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidTank; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; - -import java.util.Collection; -import java.util.Iterator; - -/** - * Created on 09/01/2015 - * - * @author Darkona - */ -public class GuiOverlay extends Gui -{ - private Minecraft mc; - private int screenWidth; - private int screenHeight; - protected static RenderItem itemRender = new RenderItem(); - protected FontRenderer fontRendererObj; - ScaledResolution resolution; - @SuppressWarnings("static-access") - public GuiOverlay(Minecraft mc) - { - super(); - - // We need this to invoke the render engine. - this.mc = mc; - this.itemRender.renderWithColor = false; - this.fontRendererObj = mc.fontRenderer; - } - - private static final int BUFF_ICON_SIZE = 18; - private static final int BUFF_ICON_SPACING = BUFF_ICON_SIZE + 2; // 2 pixels between buff icons - private static final int BUFF_ICON_BASE_U_OFFSET = 0; - private static final int BUFF_ICON_BASE_V_OFFSET = 198; - private static final int BUFF_ICONS_PER_ROW = 8; - - - @SubscribeEvent(priority = EventPriority.NORMAL) - public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) - { - if(event.type != RenderGameOverlayEvent.ElementType.EXPERIENCE) - { - return; - } - resolution = new ScaledResolution(this.mc, this.mc.displayWidth, this.mc.displayHeight); - screenWidth = resolution.getScaledWidth(); - screenHeight = resolution.getScaledHeight(); - if(ConfigHandler.STATUS_OVERLAY) - { - int xPos = 2; - int yPos = 2; - @SuppressWarnings("rawtypes") - Collection collection = this.mc.thePlayer.getActivePotionEffects(); - if (!collection.isEmpty()) - { - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glDisable(GL11.GL_LIGHTING); - this.mc.renderEngine.bindTexture(new ResourceLocation("textures/gui/container/inventory.png")); - - for (@SuppressWarnings("rawtypes") - Iterator iterator = this.mc.thePlayer.getActivePotionEffects() - .iterator(); iterator.hasNext(); xPos += BUFF_ICON_SPACING) - { - PotionEffect potioneffect = (PotionEffect) iterator.next(); - Potion potion = Potion.potionTypes[potioneffect.getPotionID()]; - - if (potion.hasStatusIcon()) - { - int iconIndex = potion.getStatusIconIndex(); - this.drawTexturedModalRect( - xPos, yPos, - BUFF_ICON_BASE_U_OFFSET + iconIndex % BUFF_ICONS_PER_ROW * BUFF_ICON_SIZE, BUFF_ICON_BASE_V_OFFSET + iconIndex / BUFF_ICONS_PER_ROW * BUFF_ICON_SIZE, - BUFF_ICON_SIZE, BUFF_ICON_SIZE); - } - } - } - } - - if(ConfigHandler.TANKS_OVERLAY) - { - EntityPlayer player= mc.thePlayer; - if(Wearing.isWearingWearable(player)) - { - IInventoryTanks inv = Wearing.getWearableInv(player); - assert inv != null; - inv.openInventory(); - - int textureHeight = 23; - int textureWidth = 10; - - int xPos = screenWidth - (textureWidth*3) - 4 ; - //int yPos = ((screenHeight / 3) * 2) - textureHeight - 2; - int yPos = (screenHeight) - textureHeight - 2; - - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glDisable(GL11.GL_LIGHTING); - - int tankX = xPos; - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - for (FluidTank tank : inv.getTanksArray()) - { - - mc.renderEngine.bindTexture(new ResourceLocation(ModInfo.MOD_ID.toLowerCase(), "textures/gui/overlay.png")); - drawTexturedModalRect(tankX, yPos, 10, 0, textureWidth, textureHeight); - drawTank(tank, tankX + 1, yPos + 1, textureHeight - 2, textureWidth - 2); - ++tankX; - tankX += textureWidth; - } - if (Wearing.isWearingBackpack(player)) - { - int u[] = {10, 10}; - int v[] = {0, 0}; - int[] xStart = {xPos, xPos + textureWidth + 1}; - int[] yStart = {yPos, yPos}; - short tank = -1; - if (player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemHose) - { - tank = (short) (ItemHose.getHoseTank(player.getHeldItem())); - } - if (tank > -1) - { - u[0] = (tank == 0) ? 0 : 10; - u[1] = (tank == 1) ? 0 : 10; - } - mc.renderEngine.bindTexture(new ResourceLocation(ModInfo.MOD_ID.toLowerCase(), "textures/gui/overlay.png")); - - //Left Tank - drawTexturedModalRect(xStart[0], yStart[0], u[0], v[0], textureWidth, textureHeight); - //Right Tank - drawTexturedModalRect(xStart[1], yStart[0], u[1], v[1], textureWidth, textureHeight); - RenderHelper.enableStandardItemLighting(); - RenderHelper.enableGUIStandardItemLighting(); - GL11.glPushMatrix(); - GL11.glTranslatef(xStart[1] + textureWidth + 2, yStart[0], 0); - GL11.glScalef(0.5f, 0.5f, 0.5f); - drawItemStack(inv.getStackInSlot(Constants.upperTool), 0, 0); - drawItemStack(inv.getStackInSlot(Constants.lowerTool), 0, 16); - GL11.glPopMatrix(); - RenderHelper.disableStandardItemLighting(); - - } - GL11.glDisable(GL12.GL_RESCALE_NORMAL); - GL11.glDisable(GL11.GL_BLEND); - } - } - } - - private void drawTank(FluidTank tank, int startX, int startY, int height, int width) - { - int liquidPerPixel = tank.getCapacity() / height; - FluidStack fluid = tank.getFluid(); - if (fluid != null) - { - try - { - IIcon icon = fluid.getFluid().getStillIcon(); - TextureUtils.bindAtlas(fluid.getFluid().getSpriteNumber()); - int top = startY + height - (fluid.amount / liquidPerPixel); - for (int j = startY + height - 1; j >= top; j--) - { - for (int i = startX; i <= startX + width - 1; i++) - { - GL11.glPushMatrix(); - if (j >= top + 5) - { - GL11.glColor4f(0.9f, 0.9f, 0.9f, 1); - } else - { - GL11.glColor4f(1, 1, 1, 1); - } - GuiTank.drawFluidPixelFromIcon(i, j, icon, 1, 1, 0, 0, 0, 0,1); - GL11.glPopMatrix(); - } - } - } catch (Exception oops) - { - LogHelper.error("Exception while trying to render the fluid in the GUI"); - } - } - } - - private void drawItemStack(ItemStack stack, int x, int y) - { - if(stack == null)return; - GL11.glTranslatef(0.0F, 0.0F, 32.0F); - this.zLevel = 200.0F; - itemRender.zLevel = 200.0F; - FontRenderer font = null; - font = stack.getItem().getFontRenderer(stack); - if (font == null) font = fontRendererObj; - itemRender.renderItemIntoGUI(font,mc.getTextureManager(),stack,x,y); - this.zLevel = 0.0F; - itemRender.zLevel = 0.0F; - } -} From 2b08d6e1bf62951d253f3a3fd02f81aaf94fe557 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:26:39 -0400 Subject: [PATCH 046/462] Delete GuiTank.java --- client/gui/GuiTank.java | 252 ---------------------------------------- 1 file changed, 252 deletions(-) delete mode 100644 client/gui/GuiTank.java diff --git a/client/gui/GuiTank.java b/client/gui/GuiTank.java deleted file mode 100644 index 0f79b777..00000000 --- a/client/gui/GuiTank.java +++ /dev/null @@ -1,252 +0,0 @@ -package com.darkona.adventurebackpack.client.gui; - -import codechicken.lib.render.TextureUtils; -import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.util.LogHelper; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.texture.TextureMap; -import net.minecraft.util.IIcon; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidTank; -import org.lwjgl.opengl.GL11; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by Darkona on 12/10/2014. - */ -public class GuiTank -{ - private int height; - private int width; - private int startX; - private int startY; - private int offsetX = 0; - private int offsetY = 0; - private int resolution; - private int liquidPerPixel; - private float zLevel; - private FluidTank tank; - - /** - * Draws the fluid from a fluidTank in a GUI. - * - * @param X The startX coordinate to start drawing from. - * @param Y The startY coordinate to start drawing from. - * @param H The height in pixels of the tank. - * @param W The width in pixels of the tank. - * @param resolution The resolution of the fluid painted in the tank. Higher values - * mean smaller and more numerous boxes. Values can be 1, 2, 4, - * 8, 16. Other values are untested, but i guess they should - * always be integer divisors of the width, with modulus 0; - */ - public GuiTank(int X, int Y, int H, int W, int resolution) - { - this.startX = X; - this.startY = Y; - this.height = H; - this.width = W; - this.resolution = resolution > 0 ? W / resolution : W; - - } - - public List getTankTooltip() - { - FluidStack fluid = tank.getFluid(); - String fluidName = (fluid != null) ? fluid.getLocalizedName() : "None"; - String fluidAmount = (fluid != null) ? fluid.amount + "/" + Constants.basicTankCapacity : "Empty"; - ArrayList tankTips = new ArrayList(); - tankTips.add(fluidName); - tankTips.add(fluidAmount); - return tankTips; - } - - /** - * @param gui - * @param theFluid - */ - public void draw(GuiWithTanks gui, FluidTank theFluid) - { - - tank = theFluid; - liquidPerPixel = tank.getCapacity() / this.height; - this.zLevel = gui.getZLevel()+1; - switch (ConfigHandler.GUI_TANK_RENDER) - { - case 1: - drawMethodOne(gui); - break; - case 2: - drawMethodTwo(); - break; - case 3: - drawMethodThree(); - break; - default: - drawMethodThree(); - break; - } - - } - - public void draw(GuiWithTanks gui, FluidTank theFluid, int X, int Y) - { - offsetX = X; - offsetY = Y; - draw(gui, theFluid); - } - - /** - * @param gui - * @param - */ - private void drawMethodOne(GuiWithTanks gui) - { - if(tank.getFluid() != null) - { - FluidStack fluid = tank.getFluid(); - - IIcon icon = fluid.getFluid().getStillIcon(); - int pixelsY = fluid.amount / liquidPerPixel; - Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.locationBlocksTexture); - int maxY = (startY + offsetY) + height; - for (int i = (startX + offsetX); i < (startX + offsetX) + width; i += resolution) - { - for (int j = maxY - resolution; j >= maxY - pixelsY; j -= resolution) - { - GL11.glPushMatrix(); - GL11.glColor4f(1, 1, 1, 1); - gui.drawTexturedModelRectFromIcon(i, j, icon, resolution, resolution); - GL11.glPopMatrix(); - } - } - } - } - - /** - * @param - */ - private void drawMethodTwo() - { - if(tank.getFluid() != null) - { - FluidStack fluid = tank.getFluid(); - - IIcon icon = fluid.getFluid().getStillIcon(); - int pixelsY = fluid.amount / liquidPerPixel; - Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.locationBlocksTexture); - int top = (startY + offsetY) + height - pixelsY; - int maxY = (startY + offsetY) + height - 1; - for (int i = (startX + offsetX); i < (startX + offsetX) + width; i += resolution) - { - int iconY = 7; - for (int j = maxY; j >= top; j--) - { - GL11.glPushMatrix(); - GL11.glColor4f(1, 1, 1, 1); - drawFluidPixelFromIcon(i, j, icon, resolution, 1, 0, iconY, resolution, 0, zLevel); - iconY = (iconY == 0) ? 7 : iconY - 1; - GL11.glPopMatrix(); - } - } - } - } - - /** - * @param - */ - private void drawMethodThree() - { - if(tank.getFluid() != null) - { - FluidStack fluid = tank.getFluid(); - - try - { - IIcon icon = fluid.getFluid().getStillIcon(); - TextureUtils.bindAtlas(fluid.getFluid().getSpriteNumber()); - int top = (startY + offsetY) + height - (fluid.amount / liquidPerPixel); - for (int j = (startY + offsetY) + height - 1; j >= top; j--) - { - for (int i = (startX + offsetX); i <= (startX + offsetX) + width - 1; i++) - { - GL11.glPushMatrix(); - if (j >= top + 5) - { - GL11.glColor4f(0.9f, 0.9f, 0.9f, 1); - } else - { - GL11.glColor4f(1, 1, 1, 1); - } - drawFluidPixelFromIcon(i, j, icon, 1, 1, 0, 0, 0, 0, zLevel); - GL11.glPopMatrix(); - } - } - } catch (Exception oops) - { - LogHelper.error("Exception while trying to render the fluid in the GUI"); - //oops.printStackTrace(); - } - } - } - - /** - * @param gui - * @param mouseX - * @param mouseY - * @return - */ - public boolean inTank(GuiWithTanks gui, int mouseX, int mouseY) - { - mouseX -= gui.getLeft(); - mouseY -= gui.getTop(); - return startX <= mouseX && mouseX <= (startX + offsetX) + width && (startY + offsetY) <= mouseY && mouseY <= (startY + offsetY) + height; - } - - /** - * Draws a box textured with the selected box of an icon. - * - * @param x The startX coordinate where to start drawing the box. - * @param y The startY coordinate where to start drawing the box. - * @param icon The icon to draw from. - * @param w The Width of the drawed box. - * @param h The height of the drawed box. - * @param srcX The startX coordinate from the icon to start drawing from. Starts - * at 0. - * @param srcY The startY coordinate from the icon to start drawing from. Starts - * at 0. - * @param srcW The width of the selection in the icon to draw from. Starts at - * 0. - * @param srcH The height of the selection in the icon to draw from. Starts - * at 0. - */ - public static void drawFluidPixelFromIcon(int x, int y, IIcon icon, int w, int h, int srcX, int srcY, int srcW, int srcH, float zLevel) - { - double minU = icon.getMinU(); - double maxU = icon.getMaxU(); - double minV = icon.getMinV(); - double maxV = icon.getMaxV(); - - double singleU = (maxU - minU) / icon.getIconHeight(); - double singleV = (maxV - minV) / icon.getIconWidth(); - - double newMinU = minU + (singleU * srcX); - double newMinV = minV + (singleV * srcY); - - double newMaxU = newMinU + (singleU * srcW); - double newMaxV = newMinV + (singleV * srcH); - - Tessellator tessellator = Tessellator.instance; - tessellator.startDrawingQuads(); - tessellator.addVertexWithUV(x, y + h, zLevel, newMinU, newMaxV); - tessellator.addVertexWithUV(x + w, y + h, zLevel, newMaxU, newMaxV); - tessellator.addVertexWithUV(x + w, y, zLevel, newMaxU, newMinV); - tessellator.addVertexWithUV(x, y, zLevel, newMinU, newMinV); - tessellator.draw(); - - - } -} From 7f735994b2ed9835f9eada172a840a53a7ae6319 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:26:45 -0400 Subject: [PATCH 047/462] Delete GuiWithTanks.java --- client/gui/GuiWithTanks.java | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 client/gui/GuiWithTanks.java diff --git a/client/gui/GuiWithTanks.java b/client/gui/GuiWithTanks.java deleted file mode 100644 index 4e2b1b2f..00000000 --- a/client/gui/GuiWithTanks.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.darkona.adventurebackpack.client.gui; - -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.inventory.Container; - -/** - * Created on 06/01/2015 - * - * @author Darkona - */ -public abstract class GuiWithTanks extends GuiContainer -{ - public GuiWithTanks(Container p_i1072_1_) - { - super(p_i1072_1_); - } - - public int getLeft() - { - return guiLeft; - } - - public int getTop() - { - return guiTop; - } - - public float getZLevel() {return zLevel;} - -} From 09a6f82a8ac03b75d59ebc1b2bb0779dbc1fa4d2 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:26:51 -0400 Subject: [PATCH 048/462] Delete IBackpackGui.java --- client/gui/IBackpackGui.java | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 client/gui/IBackpackGui.java diff --git a/client/gui/IBackpackGui.java b/client/gui/IBackpackGui.java deleted file mode 100644 index 682d1254..00000000 --- a/client/gui/IBackpackGui.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.darkona.adventurebackpack.client.gui; - -import net.minecraft.util.IIcon; - -/** - * Created on 12/10/2014 - * - * @author Darkona - */ -public interface IBackpackGui -{ - - public void drawTexturedModelRectFromIcon(int i, int j, IIcon icon, int h, int w); - - public int getLeft(); - - public int getTop(); - - //public void drawTexturedModalRect(int i, int j, int srcX, int srcY, int w, int h); - - public float getZLevel(); -} From a826be2bf6afeb1d136d23f91018838fbbcd45ad Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:26:56 -0400 Subject: [PATCH 049/462] Delete ModGuiConfig.java --- client/gui/ModGuiConfig.java | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 client/gui/ModGuiConfig.java diff --git a/client/gui/ModGuiConfig.java b/client/gui/ModGuiConfig.java deleted file mode 100644 index d69d137a..00000000 --- a/client/gui/ModGuiConfig.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.darkona.adventurebackpack.client.gui; - -import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.reference.ModInfo; -import cpw.mods.fml.client.config.GuiConfig; -import net.minecraft.client.gui.GuiScreen; -import net.minecraftforge.common.config.ConfigElement; -import net.minecraftforge.common.config.Configuration; - -/** - * Created by Darkona on 10/10/2014. - */ -public class ModGuiConfig extends GuiConfig -{ - - @SuppressWarnings({ "rawtypes", "unchecked" }) - public ModGuiConfig(GuiScreen guiScreen) - { - super(guiScreen, - new ConfigElement(ConfigHandler.config.getCategory(Configuration.CATEGORY_GENERAL)).getChildElements(), - ModInfo.MOD_ID, - false, - false, - GuiConfig.getAbridgedConfigPath(ConfigHandler.config.toString())); - } -} From 619d3f2cf356f50fc60588e34c52655382691658 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:27:09 -0400 Subject: [PATCH 050/462] Delete ModelAdventureHat.java --- client/models/ModelAdventureHat.java | 77 ---------------------------- 1 file changed, 77 deletions(-) delete mode 100644 client/models/ModelAdventureHat.java diff --git a/client/models/ModelAdventureHat.java b/client/models/ModelAdventureHat.java deleted file mode 100644 index 57b91b43..00000000 --- a/client/models/ModelAdventureHat.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.darkona.adventurebackpack.client.models; - -import net.minecraft.client.model.ModelBiped; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelAdventureHat extends ModelBiped -{ - //fields - ModelRenderer wing; - ModelRenderer top; - ModelRenderer thing; - - public static ModelAdventureHat instance = new ModelAdventureHat(); - - public ModelAdventureHat() - { - textureWidth = 64; - textureHeight = 32; - - wing = new ModelRenderer(this, 0, 0); - wing.addBox(-6F, -8.5F, -6F, 12, 1, 12); - wing.setRotationPoint(0F, 0F, 0F); - wing.setTextureSize(64, 32); - wing.mirror = true; - setRotation(wing, 0F, 0F, 0.0523599F); - - thing = new ModelRenderer(this, 32, 21); - thing.addBox(4F, -9F, -1F, 1, 1, 2); - thing.setRotationPoint(0F, 0F, 0F); - thing.setTextureSize(64, 32); - thing.mirror = true; - setRotation(thing, 0F, 0F, 0F); - - top = new ModelRenderer(this, 0, 21); - top.addBox(-4F, -11F, -4F, 8, 3, 8); - top.setRotationPoint(0F, 0F, 0F); - top.setTextureSize(64, 32); - top.mirror = true; - setRotation(top, 0F, 0F, 0F); - - this.bipedHead.addChild(top); - this.bipedHead.addChild(wing); - this.bipedHead.addChild(thing); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - setRotationAngles(entity, f, f1, f2, f3, f4, f5); - - for (Object part : this.boxList) - { - ((ModelRenderer) part).rotateAngleX = bipedHead.rotateAngleX; - ((ModelRenderer) part).rotateAngleY = bipedHead.rotateAngleY; - ((ModelRenderer) part).rotateAngleZ = bipedHead.rotateAngleZ; - } - /*GL11.glPushMatrix(); - GL11.glScalef(1.2f, 1.2f, 1.2f);*/ - wing.render(f5); - thing.render(f5); - top.render(f5); - /* GL11.glPopMatrix();*/ - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} \ No newline at end of file From 41952f93b889c7fe06086411431354dcc9070437 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:27:17 -0400 Subject: [PATCH 051/462] Delete ModelBackpackArmor.java --- client/models/ModelBackpackArmor.java | 361 -------------------------- 1 file changed, 361 deletions(-) delete mode 100644 client/models/ModelBackpackArmor.java diff --git a/client/models/ModelBackpackArmor.java b/client/models/ModelBackpackArmor.java deleted file mode 100644 index ba8162c7..00000000 --- a/client/models/ModelBackpackArmor.java +++ /dev/null @@ -1,361 +0,0 @@ -package com.darkona.adventurebackpack.client.models; - -import codechicken.lib.vec.Vector3; -import com.darkona.adventurebackpack.client.render.RendererStack; -import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.inventory.InventoryBackpack; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import org.lwjgl.opengl.GL11; - -import java.util.List; - -/** - * Created on 17/12/2014 - * - * @author Darkona - */ -public class ModelBackpackArmor extends ModelWearable -{ - public static final ModelBackpackArmor instance = new ModelBackpackArmor(); - - public ModelRenderer mainBody; - public ModelRenderer tankLeftTop; - public ModelRenderer tankRightTop; - public ModelRenderer bed; - public ModelRenderer villagerNose; - public ModelRenderer pigNose; - public ModelRenderer ocelotNose; - public ModelRenderer leftStrap; - public ModelRenderer rightStrap; - public ModelRenderer top; - public ModelRenderer bottom; - public ModelRenderer pocketFace; - public ModelRenderer tankLeftBottom; - public ModelRenderer tankLeftWall4; - public ModelRenderer tankLeftWall3; - public ModelRenderer tankLeftWall2; - public ModelRenderer tankLeftWall1; - public ModelRenderer tankRightBottom; - public ModelRenderer tankRightWall2; - public ModelRenderer tankRightWall1; - public ModelRenderer tankRightWall3; - public ModelRenderer tankRightWall4; - public ModelRenderer bedStrapLeftMid; - public ModelRenderer bedStrapRightBottom; - public ModelRenderer bedStrapLeftBottom; - public ModelRenderer bedStrapRightMid; - public ModelRenderer bedStrapRightTop; - public ModelRenderer bedStrapLeftTop; - RendererStack lowerTool; - RendererStack upperTool; - public ItemStack backpack; - - @SuppressWarnings("unchecked") - private void init() - { - this.textureWidth = 128; - this.textureHeight = 64; - - //Main Backpack - - this.mainBody = new ModelRenderer(this, 0, 9); - this.mainBody.addBox(-5.0F, 0.0F, -3.0F, 10, 9, 5); - this.mainBody.setRotationPoint(0.0F, 0.0F, 0.0F); - - this.leftStrap = new ModelRenderer(this, 21, 24); - this.leftStrap.setRotationPoint(3.0F, 0.0F, -3.0F); - this.leftStrap.addBox(0.0F, 0.0F, -1.0F, 1, 8, 1); - this.mainBody.addChild(this.leftStrap); - - this.rightStrap = new ModelRenderer(this, 26, 24); - this.rightStrap.setRotationPoint(-4.0F, 0.0F, -3.0F); - this.rightStrap.addBox(0.0F, 0.0F, -1.0F, 1, 8, 1); - this.mainBody.addChild(this.rightStrap); - - this.top = new ModelRenderer(this, 0, 0); - this.top.setRotationPoint(0.0F, 0.0F, -3.0F); - this.top.addBox(-5.0F, -3.0F, 0.0F, 10, 3, 5); - this.mainBody.addChild(this.top); - - this.bottom = new ModelRenderer(this, 0, 34); - this.bottom.setRotationPoint(-5.0F, 9.0F, -3.0F); - this.bottom.addBox(0.0F, 0.0F, 0.0F, 10, 1, 4); - this.mainBody.addChild(this.bottom); - - this.pocketFace = new ModelRenderer(this, 0, 24); - this.pocketFace.setRotationPoint(0.0F, 6.9F, 2.0F); - this.pocketFace.addBox(-4.0F, -6.0F, 0.0F, 8, 6, 2); - this.mainBody.addChild(this.pocketFace); - - //Left Tank - - this.tankLeftTop = new ModelRenderer(this, 0, 40); - this.tankLeftTop.setRotationPoint(5.0F, -1.0F, -2.5F); - this.tankLeftTop.addBox(0.0F, 0.0F, 0.0F, 4, 1, 4); - - this.tankLeftBottom = new ModelRenderer(this, 0, 46); - this.tankLeftBottom.setRotationPoint(0.0F, 9.0F, 0.0F); - this.tankLeftBottom.addBox(0.0F, 0.0F, 0.0F, 4, 1, 4); - this.tankLeftTop.addChild(this.tankLeftBottom); - - this.tankLeftWall1 = new ModelRenderer(this, 0, 52); - this.tankLeftWall1.setRotationPoint(3.0F, -8.0F, 0.0F); - this.tankLeftWall1.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); - this.tankLeftBottom.addChild(this.tankLeftWall1); - - this.tankLeftWall2 = new ModelRenderer(this, 5, 52); - this.tankLeftWall2.setRotationPoint(0.0F, -8.0F, 0.0F); - this.tankLeftWall2.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); - this.tankLeftBottom.addChild(this.tankLeftWall2); - - this.tankLeftWall3 = new ModelRenderer(this, 10, 52); - this.tankLeftWall3.setRotationPoint(0.0F, -8.0F, 3.0F); - this.tankLeftWall3.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); - this.tankLeftBottom.addChild(this.tankLeftWall3); - - this.tankLeftWall4 = new ModelRenderer(this, 15, 52); - this.tankLeftWall4.setRotationPoint(3.0F, -8.0F, 3.0F); - this.tankLeftWall4.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); - this.tankLeftBottom.addChild(this.tankLeftWall4); - - //Right Tank - - this.tankRightTop = new ModelRenderer(this, 17, 40); - this.tankRightTop.setRotationPoint(-9.0F, -1.0F, -2.5F); - this.tankRightTop.addBox(0.0F, 0.0F, 0.0F, 4, 1, 4); - - this.tankRightBottom = new ModelRenderer(this, 17, 46); - this.tankRightBottom.setRotationPoint(0.0F, 9.0F, 0.0F); - this.tankRightBottom.addBox(0.0F, 0.0F, 0.0F, 4, 1, 4); - this.tankRightTop.addChild(this.tankRightBottom); - - this.tankRightWall1 = new ModelRenderer(this, 22, 52); - this.tankRightWall1.setRotationPoint(3.0F, -8.0F, 3.0F); - this.tankRightWall1.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); - this.tankRightBottom.addChild(this.tankRightWall1); - - this.tankRightWall2 = new ModelRenderer(this, 27, 52); - this.tankRightWall2.setRotationPoint(3.0F, -8.0F, 0.0F); - this.tankRightWall2.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); - this.tankRightBottom.addChild(this.tankRightWall2); - - this.tankRightWall3 = new ModelRenderer(this, 32, 52); - this.tankRightWall3.setRotationPoint(0.0F, -8.0F, 3.0F); - this.tankRightWall3.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); - this.tankRightBottom.addChild(this.tankRightWall3); - - this.tankRightWall4 = new ModelRenderer(this, 37, 52); - this.tankRightWall4.setRotationPoint(0.0F, -8.0F, 0.0F); - this.tankRightWall4.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); - this.tankRightBottom.addChild(this.tankRightWall4); - - //Bed - - this.bed = new ModelRenderer(this, 31, 0); - this.bed.setRotationPoint(-7.0F, 7.0F, 2.0F); - this.bed.addBox(0.0F, 0.0F, 0.0F, 14, 2, 2); - - this.bedStrapRightTop = new ModelRenderer(this, 40, 5); - this.bedStrapRightTop.setRotationPoint(2.0F, -1.0F, 0.0F); - this.bedStrapRightTop.addBox(0.0F, 0.0F, 0.0F, 1, 1, 3); - this.bed.addChild(this.bedStrapRightTop); - - this.bedStrapRightMid = new ModelRenderer(this, 38, 10); - this.bedStrapRightMid.setRotationPoint(2.0F, 0.0F, 2.0F); - this.bedStrapRightMid.addBox(0.0F, 0.0F, 0.0F, 2, 3, 1); - this.bed.addChild(this.bedStrapRightMid); - - this.bedStrapRightBottom = new ModelRenderer(this, 42, 15); - this.bedStrapRightBottom.setRotationPoint(2.0F, 2.0F, -1.0F); - this.bedStrapRightBottom.addBox(0.0F, 0.0F, 0.0F, 2, 1, 3); - this.bed.addChild(this.bedStrapRightBottom); - - this.bedStrapLeftTop = new ModelRenderer(this, 31, 5); - this.bedStrapLeftTop.setRotationPoint(11.0F, -1.0F, 0.0F); - this.bedStrapLeftTop.addBox(0.0F, 0.0F, 0.0F, 1, 1, 3); - this.bed.addChild(this.bedStrapLeftTop); - - this.bedStrapLeftMid = new ModelRenderer(this, 31, 10); - this.bedStrapLeftMid.setRotationPoint(10.0F, 0.0F, 2.0F); - this.bedStrapLeftMid.addBox(0.0F, 0.0F, 0.0F, 2, 3, 1); - this.bed.addChild(this.bedStrapLeftMid); - - this.bedStrapLeftBottom = new ModelRenderer(this, 31, 15); - this.bedStrapLeftBottom.setRotationPoint(10.0F, 2.0F, -1.0F); - this.bedStrapLeftBottom.addBox(0.0F, 0.0F, 0.0F, 2, 1, 3); - this.bed.addChild(this.bedStrapLeftBottom); - - //Noses - - this.villagerNose = new ModelRenderer(this, 64, 0); - this.villagerNose.setRotationPoint(-1.0F, 4.0F, 4.0F); - this.villagerNose.addBox(0.0F, 0.0F, 0.0F, 2, 4, 2); - - ocelotNose = new ModelRenderer(this, 74, 0); - ocelotNose.setRotationPoint(-1.0F, 4.0F, 4.0F); - ocelotNose.addBox(0.0F, 0.0F, 0.0F, 3, 2, 1); - - pigNose = new ModelRenderer(this, 74, 0); - pigNose.setRotationPoint(-2.0F, 4.0F, 4.0F); - pigNose.addBox(0.0F, 0.0F, 0.0F, 4, 3, 1); - - lowerTool = new RendererStack(this, true); - upperTool = new RendererStack(this, false); - - - bipedBody.addChild(mainBody); - bipedBody.addChild(bed); - bipedBody.addChild(tankLeftTop); - bipedBody.addChild(tankRightTop); - bipedBody.addChild(villagerNose); - bipedBody.addChild(ocelotNose); - bipedBody.addChild(pigNose); - mainBody.addChild(lowerTool); - mainBody.addChild(upperTool); - - - float offsetZ = 0.4F; - float offsetY = 0.2F; - - - for (ModelRenderer part : (List) bipedBody.childModels) - { - setOffset(part, part.offsetX + 0, part.offsetY + offsetY, part.offsetZ + offsetZ); - } - - } - - public ModelBackpackArmor setWearable(ItemStack wearable) - { - this.backpack = wearable; - return this; - } - public ModelBackpackArmor() - { - init(); - } - - public ModelBackpackArmor(ItemStack backpack) - { - init(); - this.backpack = backpack; - } - @SuppressWarnings("unchecked") - private void renderBackpack(Float scale) - { - InventoryBackpack backpack = new InventoryBackpack(this.backpack); - backpack.openInventory(); - String color = backpack.getColorName(); - for (ModelRenderer model : (List) bipedBody.childModels) - { - model.mirror = false; - } - - lowerTool.setRotationPoint(-.5F, .10F, .3F); - setOffset(lowerTool, -.28F, 0.8F, -.1F); - setOffset(upperTool, 0.0f, 0.04f, 0.25f); - - lowerTool.stack = backpack.getStackInSlot(Constants.lowerTool); - upperTool.stack = backpack.getStackInSlot(Constants.upperTool); - - if (color.equals("Quartz") || color.equals("Slime") || color.equals("Snow")) - { - startBlending(); - this.mainBody.render(scale); - stopBlending(); - } else - { - this.mainBody.render(scale); - } - - GL11.glPushMatrix(); - - tankLeftTop.render(scale); - tankRightTop.render(scale); - - bed.render(scale); - if (color.equals("Pig") || color.equals("Horse")) - { - pigNose.render(scale); - } - if (color.equals("Villager") || color.equals("IronGolem")) - { - villagerNose.render(scale); - } - if (color.equals("Ocelot")) - { - ocelotNose.render(scale); - } - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - GL11.glTranslatef(bipedBody.offsetX + 0, bipedBody.offsetY + 0.2F, bipedBody.offsetZ + 0.3f); - - renderFluidInTank(backpack.getLeftTank(), new Vector3(0f,.5f,0f), new Vector3(.17f,0,.17f), new Vector3(-.17f, .05f, .2f), tankLeftTop); - - renderFluidInTank(backpack.getRightTank(), new Vector3(0f,.5f,0f), new Vector3(.17f,0,.17f), new Vector3(.41f, .05f, .2f), tankRightTop); - GL11.glPopMatrix(); - } - - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - - isSneak = ((entity != null) && (entity).isSneaking()); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - @SuppressWarnings("unused") - float oV = (isSneak) ? 0 : .3F; - - float scale = f5 * 0.9f; - - GL11.glPushMatrix(); - - GL11.glTranslatef(bipedBody.offsetX, bipedBody.offsetY, bipedBody.offsetZ); - GL11.glColor4f(1, 1, 1, 1); - - if (bipedBody.rotateAngleX == 0.0F && bipedBody.rotateAngleY == 0.0F && bipedBody.rotateAngleZ == 0.0F) - { - if (bipedBody.rotationPointX == 0.0F && bipedBody.rotationPointY == 0.0F && bipedBody.rotationPointZ == 0.0F) - { - renderBackpack(scale); - } else - { - GL11.glTranslatef(bipedBody.rotationPointX * f5, bipedBody.rotationPointY * f5, bipedBody.rotationPointZ * f5); - renderBackpack(scale); - GL11.glTranslatef(-bipedBody.rotationPointX * f5, -bipedBody.rotationPointY * f5, -bipedBody.rotationPointZ * f5); - } - } else - { - GL11.glPushMatrix(); - GL11.glTranslatef(bipedBody.rotationPointX * f5, bipedBody.rotationPointY * f5, bipedBody.rotationPointZ * f5); - - if (bipedBody.rotateAngleZ != 0.0F) - { - GL11.glRotatef(bipedBody.rotateAngleZ * (180F / (float) Math.PI), 0.0F, 0.0F, 1.0F); - } - - if (bipedBody.rotateAngleY != 0.0F) - { - GL11.glRotatef(bipedBody.rotateAngleY * (180F / (float) Math.PI), 0.0F, 1.0F, 0.0F); - } - - if (bipedBody.rotateAngleX != 0.0F) - { - GL11.glRotatef(bipedBody.rotateAngleX * (180F / (float) Math.PI), 1.0F, 0.0F, 0.0F); - } - renderBackpack(scale); - GL11.glPopMatrix(); - } - GL11.glTranslatef(-bipedBody.offsetX, -bipedBody.offsetY, -(bipedBody.offsetZ)); - GL11.glPopMatrix(); - } - - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack stack) - { - this.backpack = stack; - render(entity, f, f1,f2,f3,f4,f5); - } -} From f0a072739b8bdf821c2af2eeb534418bfd1fcaa9 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:27:25 -0400 Subject: [PATCH 052/462] Delete ModelBackpackBlock.java --- client/models/ModelBackpackBlock.java | 428 -------------------------- 1 file changed, 428 deletions(-) delete mode 100644 client/models/ModelBackpackBlock.java diff --git a/client/models/ModelBackpackBlock.java b/client/models/ModelBackpackBlock.java deleted file mode 100644 index 061141b1..00000000 --- a/client/models/ModelBackpackBlock.java +++ /dev/null @@ -1,428 +0,0 @@ -package com.darkona.adventurebackpack.client.models; - -import codechicken.lib.render.CCRenderState; -import codechicken.lib.render.RenderUtils; -import codechicken.lib.vec.Cuboid6; -import codechicken.lib.vec.Vector3; -import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraftforge.fluids.FluidTank; -import org.lwjgl.opengl.GL11; - -/** - * Created on 17/12/2014 - * - * @author Darkona - */ -public class ModelBackpackBlock extends ModelBase -{ - public ModelRenderer mainBody; - public ModelRenderer lampLight; - public ModelRenderer tankLeftTop; - public ModelRenderer tankRightTop; - public ModelRenderer bed; - public ModelRenderer lampPole1; - public ModelRenderer kitchenBase; - public ModelRenderer villagerNose; - public ModelRenderer pigNose; - public ModelRenderer ocelotNose; - public ModelRenderer leftStrap; - public ModelRenderer rightStrap; - public ModelRenderer top; - public ModelRenderer bottom; - public ModelRenderer pocketFace; - public ModelRenderer tankLeftBottom; - public ModelRenderer tankLeftWall4; - public ModelRenderer tankLeftWall3; - public ModelRenderer tankLeftWall2; - public ModelRenderer tankLeftWall1; - public ModelRenderer tankRightBottom; - public ModelRenderer tankRightWall2; - public ModelRenderer tankRightWall1; - public ModelRenderer tankRightWall3; - public ModelRenderer tankRightWall4; - public ModelRenderer bedStrapLeftMid; - public ModelRenderer bedStrapRightBottom; - public ModelRenderer bedStrapLeftBottom; - public ModelRenderer bedStrapRightMid; - public ModelRenderer bedStrapRightTop; - public ModelRenderer bedStrapLeftTop; - public ModelRenderer lampPole2; - public ModelRenderer lampTop; - public ModelRenderer lampPole3; - public ModelRenderer lampBottom; - public ModelRenderer lampGlassLeft; - public ModelRenderer lampGlassRight; - public ModelRenderer lampGlassBack; - public ModelRenderer lampGlassFront; - public ModelRenderer kitchen; - - public ModelBackpackBlock() - { - this.textureWidth = 128; - this.textureHeight = 64; - - //Main Backpack - - this.mainBody = new ModelRenderer(this, 0, 9); - this.mainBody.setRotationPoint(0.0F, 0.0F, 0.0F); - this.mainBody.addBox(-5.0F, 0.0F, -3.0F, 10, 9, 5); - - this.leftStrap = new ModelRenderer(this, 21, 24); - this.leftStrap.setRotationPoint(3.0F, 0.0F, -3.0F); - this.leftStrap.addBox(0.0F, 0.0F, -1.0F, 1, 8, 1); - this.mainBody.addChild(this.leftStrap); - - this.rightStrap = new ModelRenderer(this, 26, 24); - this.rightStrap.setRotationPoint(-4.0F, 0.0F, -3.0F); - this.rightStrap.addBox(0.0F, 0.0F, -1.0F, 1, 8, 1); - this.mainBody.addChild(this.rightStrap); - - this.top = new ModelRenderer(this, 0, 0); - this.top.setRotationPoint(0.0F, 0.0F, -3.0F); - this.top.addBox(-5.0F, -3.0F, 0.0F, 10, 3, 5); - this.mainBody.addChild(this.top); - - this.bottom = new ModelRenderer(this, 0, 34); - this.bottom.setRotationPoint(-5.0F, 9.0F, -3.0F); - this.bottom.addBox(0.0F, 0.0F, 0.0F, 10, 1, 4); - this.mainBody.addChild(this.bottom); - - this.pocketFace = new ModelRenderer(this, 0, 24); - this.pocketFace.setRotationPoint(0.0F, 6.9F, 2.0F); - this.pocketFace.addBox(-4.0F, -6.0F, 0.0F, 8, 6, 2); - this.mainBody.addChild(this.pocketFace); - - //Left Tank - - this.tankLeftTop = new ModelRenderer(this, 0, 40); - this.tankLeftTop.setRotationPoint(5.0F, 0.0F, -2.5F); - this.tankLeftTop.addBox(0.0F, 0.0F, 0.0F, 4, 1, 4); - - this.tankLeftBottom = new ModelRenderer(this, 0, 46); - this.tankLeftBottom.setRotationPoint(0.0F, 9.0F, 0.0F); - this.tankLeftBottom.addBox(0.0F, 0.0F, 0.0F, 4, 1, 4); - this.tankLeftTop.addChild(this.tankLeftBottom); - - this.tankLeftWall1 = new ModelRenderer(this, 0, 52); - this.tankLeftWall1.setRotationPoint(3.0F, -8.0F, 0.0F); - this.tankLeftWall1.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); - this.tankLeftBottom.addChild(this.tankLeftWall1); - - this.tankLeftWall2 = new ModelRenderer(this, 5, 52); - this.tankLeftWall2.setRotationPoint(0.0F, -8.0F, 0.0F); - this.tankLeftWall2.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); - this.tankLeftBottom.addChild(this.tankLeftWall2); - - this.tankLeftWall3 = new ModelRenderer(this, 10, 52); - this.tankLeftWall3.setRotationPoint(0.0F, -8.0F, 3.0F); - this.tankLeftWall3.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); - this.tankLeftBottom.addChild(this.tankLeftWall3); - - this.tankLeftWall4 = new ModelRenderer(this, 15, 52); - this.tankLeftWall4.setRotationPoint(3.0F, -8.0F, 3.0F); - this.tankLeftWall4.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); - this.tankLeftBottom.addChild(this.tankLeftWall4); - - //Right Tank - - this.tankRightTop = new ModelRenderer(this, 17, 40); - this.tankRightTop.setRotationPoint(-9.0F, 0.0F, -2.5F); - this.tankRightTop.addBox(0.0F, 0.0F, 0.0F, 4, 1, 4); - - this.tankRightBottom = new ModelRenderer(this, 17, 46); - this.tankRightBottom.setRotationPoint(0.0F, 9.0F, 0.0F); - this.tankRightBottom.addBox(0.0F, 0.0F, 0.0F, 4, 1, 4); - this.tankRightTop.addChild(this.tankRightBottom); - - this.tankRightWall1 = new ModelRenderer(this, 22, 52); - this.tankRightWall1.setRotationPoint(3.0F, -8.0F, 3.0F); - this.tankRightWall1.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); - this.tankRightBottom.addChild(this.tankRightWall1); - - this.tankRightWall2 = new ModelRenderer(this, 27, 52); - this.tankRightWall2.setRotationPoint(3.0F, -8.0F, 0.0F); - this.tankRightWall2.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); - this.tankRightBottom.addChild(this.tankRightWall2); - - this.tankRightWall3 = new ModelRenderer(this, 32, 52); - this.tankRightWall3.setRotationPoint(0.0F, -8.0F, 3.0F); - this.tankRightWall3.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); - this.tankRightBottom.addChild(this.tankRightWall3); - - this.tankRightWall4 = new ModelRenderer(this, 37, 52); - this.tankRightWall4.setRotationPoint(0.0F, -8.0F, 0.0F); - this.tankRightWall4.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); - this.tankRightBottom.addChild(this.tankRightWall4); - - //Bed - - this.bed = new ModelRenderer(this, 31, 0); - this.bed.setRotationPoint(-7.0F, 7.0F, 2.0F); - this.bed.addBox(0.0F, 0.0F, 0.0F, 14, 2, 2); - - this.bedStrapRightTop = new ModelRenderer(this, 40, 5); - this.bedStrapRightTop.setRotationPoint(2.0F, -1.0F, 0.0F); - this.bedStrapRightTop.addBox(0.0F, 0.0F, 0.0F, 1, 1, 3); - this.bed.addChild(this.bedStrapRightTop); - - this.bedStrapRightMid = new ModelRenderer(this, 38, 10); - this.bedStrapRightMid.setRotationPoint(2.0F, 0.0F, 2.0F); - this.bedStrapRightMid.addBox(0.0F, 0.0F, 0.0F, 2, 3, 1); - this.bed.addChild(this.bedStrapRightMid); - - this.bedStrapRightBottom = new ModelRenderer(this, 42, 15); - this.bedStrapRightBottom.setRotationPoint(2.0F, 2.0F, -1.0F); - this.bedStrapRightBottom.addBox(0.0F, 0.0F, 0.0F, 2, 1, 3); - this.bed.addChild(this.bedStrapRightBottom); - - this.bedStrapLeftTop = new ModelRenderer(this, 31, 5); - this.bedStrapLeftTop.setRotationPoint(11.0F, -1.0F, 0.0F); - this.bedStrapLeftTop.addBox(0.0F, 0.0F, 0.0F, 1, 1, 3); - this.bed.addChild(this.bedStrapLeftTop); - - this.bedStrapLeftMid = new ModelRenderer(this, 31, 10); - this.bedStrapLeftMid.setRotationPoint(10.0F, 0.0F, 2.0F); - this.bedStrapLeftMid.addBox(0.0F, 0.0F, 0.0F, 2, 3, 1); - this.bed.addChild(this.bedStrapLeftMid); - - this.bedStrapLeftBottom = new ModelRenderer(this, 31, 15); - this.bedStrapLeftBottom.setRotationPoint(10.0F, 2.0F, -1.0F); - this.bedStrapLeftBottom.addBox(0.0F, 0.0F, 0.0F, 2, 1, 3); - this.bed.addChild(this.bedStrapLeftBottom); - - //Lamp - - this.lampPole1 = new ModelRenderer(this, 32, 24); - this.lampPole1.setRotationPoint(5.0F, -10.0F, -1.0F); - this.lampPole1.addBox(0.0F, 0.0F, 0.0F, 1, 10, 1); - - this.lampPole2 = new ModelRenderer(this, 37, 25); - this.lampPole2.setRotationPoint(1.0F, 0.0F, 0.0F); - this.lampPole2.addBox(0.0F, 0.0F, 0.0F, 4, 1, 1); - this.lampPole1.addChild(this.lampPole2); - - this.lampPole3 = new ModelRenderer(this, 40, 28); - this.lampPole3.setRotationPoint(3.0F, 1.0F, 0.0F); - this.lampPole3.addBox(0.0F, 0.0F, 0.0F, 1, 1, 1); - this.lampPole2.addChild(this.lampPole3); - - this.lampTop = new ModelRenderer(this, 53, 8); - this.lampTop.setRotationPoint(3.5F, 2.0F, 0.5F); - this.lampTop.addBox(-2.5F, 0.0F, -2.5F, 5, 1, 5); - this.lampPole2.addChild(this.lampTop); - - this.lampGlassRight = new ModelRenderer(this, 41, 30); - this.lampGlassRight.setRotationPoint(-2.5F, 1.0F, -2.5F); - this.lampGlassRight.addBox(0.0F, 0.0F, 0.0F, 1, 4, 5); - this.lampTop.addChild(this.lampGlassRight); - - this.lampGlassFront = new ModelRenderer(this, 40, 40); - this.lampGlassFront.setRotationPoint(-1.5F, 1.0F, -2.5F); - this.lampGlassFront.addBox(0.0F, 0.0F, 0.0F, 3, 4, 1); - this.lampTop.addChild(this.lampGlassFront); - - this.lampGlassBack = new ModelRenderer(this, 40, 40); - this.lampGlassBack.setRotationPoint(-1.5F, 1.0F, 1.5F); - this.lampGlassBack.addBox(0.0F, 0.0F, 0.0F, 3, 4, 1); - this.lampTop.addChild(this.lampGlassBack); - - this.lampGlassLeft = new ModelRenderer(this, 41, 30); - this.lampGlassLeft.setRotationPoint(1.5F, 1.0F, -2.5F); - this.lampGlassLeft.addBox(0.0F, 0.0F, 0.0F, 1, 4, 5); - this.lampTop.addChild(this.lampGlassLeft); - - this.lampBottom = new ModelRenderer(this, 53, 23); - this.lampBottom.setRotationPoint(-2.5F, 5.0F, -0.5F); - this.lampBottom.addBox(0.0F, 0.0F, -2.0F, 5, 1, 5); - this.lampTop.addChild(this.lampBottom); - - this.lampLight = new ModelRenderer(this, 57, 15); - this.lampLight.setRotationPoint(8.0F, -7.0F, -2.0F); - this.lampLight.addBox(0.0F, 0.0F, 0.0F, 3, 4, 3); - - //Kitchen - - this.kitchenBase = new ModelRenderer(this, 49, 46); - this.kitchenBase.setRotationPoint(-9.0F, -1.0F, -1.5F); - this.kitchenBase.addBox(0.0F, 0.0F, 0.0F, 3, 1, 2); - - this.kitchen = new ModelRenderer(this, 49, 37); - this.kitchen.setRotationPoint(-3.0F, -2.0F, -1.5F); - this.kitchen.addBox(0.0F, 0.0F, 0.0F, 5, 2, 6); - this.kitchenBase.addChild(this.kitchen); - - //Noses - - this.villagerNose = new ModelRenderer(this, 64, 0); - this.villagerNose.setRotationPoint(-1.0F, 4.0F, 4.0F); - this.villagerNose.addBox(0.0F, 0.0F, 0.0F, 2, 4, 2); - - this.ocelotNose = new ModelRenderer(this, 74, 0); - this.ocelotNose.setRotationPoint(-1.0F, 4.0F, 4.0F); - this.ocelotNose.addBox(0.0F, 0.0F, 0.0F, 3, 2, 1); - - this.pigNose = new ModelRenderer(this, 74, 0); - this.pigNose.setRotationPoint(-2.0F, 4.0F, 4.0F); - this.pigNose.addBox(0.0F, 0.0F, 0.0F, 4, 3, 1); - - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float scale, IInventoryAdventureBackpack backpack) - { - - //scale*=0.9; - @SuppressWarnings("unused") - boolean sleepingbag = backpack.isSBDeployed(); - FluidTank tankLeft = backpack.getLeftTank(); - FluidTank tankRight = backpack.getRightTank(); - setRotationAngles(f, f1, f2, f3, f4, scale, entity); - - GL11.glPushMatrix(); - renderBackpack(backpack, scale); - //renderFluidsInTanks(backpack.getLeftTank(),backpack.getRightTank(),scale); - GL11.glPopMatrix(); - - if (tankLeft != null && tankLeft.getFluid() != null && tankLeft.getFluid().getFluid().getIcon() != null) - { - Vector3 victor = new Vector3((tankLeftTop.rotationPointX * 0.1f - 0.22f), (tankLeftTop.rotationPointY * 0.1f + 0.05f), - (tankLeftTop.rotationPointZ * 0.1f + 0.15f)); - GL11.glPushMatrix(); - CCRenderState.reset(); - CCRenderState.pullLightmap(); - CCRenderState.useNormals = true; - RenderUtils.renderFluidCuboid(tankLeft.getFluid(), new Cuboid6(0f, 0.39f, 0f, 0.15f, 0f, 0.15f).add(victor), - ((1.0F * tankLeft.getFluidAmount()) / (1.0F * tankLeft.getCapacity())), 0.8); - GL11.glPopMatrix(); - - } - - if (tankRight != null && tankRight.getFluid() != null && tankRight.getFluid().getFluid().getIcon() != null) - { - Vector3 victor = new Vector3((tankRightTop.rotationPointX * 0.1f + 0.48f), (tankRightTop.rotationPointY * 0.1f + 0.05f), - (tankRightTop.rotationPointZ * 0.1f + 0.15f)); - GL11.glPushMatrix(); - CCRenderState.reset(); - CCRenderState.pullLightmap(); - CCRenderState.useNormals = true; - RenderUtils.renderFluidCuboid(tankRight.getFluid(), new Cuboid6(0, 0.39, 0, 0.15, 0, 0.15).add(victor), - ((1.0F * tankRight.getFluidAmount()) / (1.0F * tankRight.getCapacity())), 0.8); - GL11.glPopMatrix(); - } - } - - @SuppressWarnings("unused") - private void renderFluidsInTanks(FluidTank tankLeft, FluidTank tankRight, float scale) - { - //Size of the cuboid - //Y-- is up, Y++ is down - float minX = 0f; - float minY = 0.5f; - float minZ = 0f; - - float maxX = 0.17f; - float maxY = 0f; - float maxZ = 0.17f; - - if (tankLeft != null && tankLeft.getFluid() != null && tankLeft.getFluid().getFluid().getIcon() != null) - { - //0.5F, -0.1F, -0.25F - Rotation Points of the top - //X++ to the right, X-- to the left - //Z-- to the front, Z++ to the back - Vector3 victor = new Vector3( - (tankLeftTop.rotationPointX * 0.1f - 0.17f), // - (tankLeftTop.rotationPointY * 0.1f + 0.1f), - (tankLeftTop.rotationPointZ * 0.1f + 0.13f)); - //ChickenStuff - CCRenderState.reset(); - CCRenderState.pullLightmap(); - CCRenderState.useNormals = true; - - Cuboid6 left = new Cuboid6(minX, minY, minZ, maxX, maxY, maxZ); - //Thanks Chickenbones! - RenderUtils.renderFluidCuboid(tankLeft.getFluid(), left.add(victor), ((1.0F * tankLeft.getFluidAmount()) / (1.0F * Constants.basicTankCapacity)), 0.2); - } - - if (tankRight != null && tankRight.getFluid() != null && tankRight.getFluid().getFluid().getIcon() != null) - { - //-0.9F, -0.1F, -0.25F - Rotation points of the top - //X-- to the right, X++ to the left - //Z-- to the front, Z++ to the back - Vector3 victor = new Vector3( - (tankRightTop.rotationPointX * 0.1f + 0.41f), // - (tankRightTop.rotationPointY * 0.1f + 0.1f), - (tankRightTop.rotationPointZ * 0.1f + 0.13f)); - //ChickenStuff - CCRenderState.reset(); - CCRenderState.pullLightmap(); - CCRenderState.useNormals = true; - - Cuboid6 right = new Cuboid6(minX, minY, minZ, maxX, maxY, maxZ); - RenderUtils.renderFluidCuboid(tankRight.getFluid(), right.add(victor), ((1.0F * tankRight.getFluidAmount()) / (1.0F * Constants.basicTankCapacity)), 0.2); - } - - } - - private void renderBackpack(IInventoryAdventureBackpack backpack, float scale) - { - String color = backpack.getColorName(); - - if (color.equals("Quartz") || color.equals("Slime") || color.equals("Snow")) - { - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - //GL11.glEnable(GL11.GL_CULL_FACE); - - this.mainBody.render(scale); - - GL11.glPopMatrix(); - //GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glDisable(GL11.GL_BLEND); - - } else - { - this.mainBody.render(scale); - } - tankLeftTop.render(scale); - tankRightTop.render(scale); - - if (!backpack.isSBDeployed()) bed.render(scale); - - if (color.equals("Pig") || color.equals("Horse")) - { - pigNose.render(scale); - } - if (color.equals("Villager") || color.equals("IronGolem")) - { - villagerNose.render(scale); - } - if (color.equals("Ocelot")) - { - ocelotNose.render(scale); - } - - /*if(color.equals("Standard")) - { - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_CULL_FACE); - this.lampPole1.render(scale); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glDisable(GL11.GL_BLEND); - }*/ - } - - /** - * This is a helper function from Tabula to set the rotation of model parts - */ - public void setRotateAngle(ModelRenderer modelRenderer, float x, float y, float z) - { - modelRenderer.rotateAngleX = x; - modelRenderer.rotateAngleY = y; - modelRenderer.rotateAngleZ = z; - } -} From de90cda911ab42b6e05ba38303498c04143b5e35 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:27:32 -0400 Subject: [PATCH 053/462] Delete ModelCampFire.java --- client/models/ModelCampFire.java | 150 ------------------------------- 1 file changed, 150 deletions(-) delete mode 100644 client/models/ModelCampFire.java diff --git a/client/models/ModelCampFire.java b/client/models/ModelCampFire.java deleted file mode 100644 index f04fd5de..00000000 --- a/client/models/ModelCampFire.java +++ /dev/null @@ -1,150 +0,0 @@ -package com.darkona.adventurebackpack.client.models; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -/** - * campFire - Darkona - * Created using Tabula 4.1.0 - */ -public class ModelCampFire extends ModelBase -{ - public ModelRenderer rock1; - public ModelRenderer rock2; - public ModelRenderer rock3; - public ModelRenderer rock4; - public ModelRenderer rock5; - public ModelRenderer rock6; - public ModelRenderer rock7; - public ModelRenderer rock8; - public ModelRenderer rock9; - public ModelRenderer rock10; - public ModelRenderer rock11; - public ModelRenderer rock12; - public ModelRenderer rock13; - public ModelRenderer rock14; - public ModelRenderer rock15; - public ModelRenderer rock16; - public ModelRenderer rock17; - public ModelRenderer stick1; - public ModelRenderer stick2; - public ModelRenderer stick3; - public ModelRenderer stick4; - public ModelRenderer log; - - public ModelCampFire() - { - this.textureWidth = 32; - this.textureHeight = 32; - this.rock1 = new ModelRenderer(this, 0, 8); - this.rock1.setRotationPoint(0.0F, 24.0F, 0.0F); - this.rock1.addBox(-1.0F, -2.0F, 4.0F, 2, 2, 2, 0.0F); - this.rock8 = new ModelRenderer(this, 0, 8); - this.rock8.setRotationPoint(0.0F, 24.0F, 0.0F); - this.rock8.addBox(-2.0F, -2.0F, -6.0F, 2, 2, 2, 0.0F); - this.log = new ModelRenderer(this, 6, 19); - this.log.setRotationPoint(0.0F, 23.0F, 0.0F); - this.log.addBox(0.0F, -3.0F, -2.0F, 3, 3, 10, 0.0F); - this.setRotateAngle(log, 0.36425021489121656F, 0.0F, 0.0F); - this.rock4 = new ModelRenderer(this, 0, 8); - this.rock4.setRotationPoint(1.0F, 23.0F, 1.0F); - this.rock4.addBox(4.0F, -1.0F, -2.0F, 2, 2, 2, 0.0F); - this.stick4 = new ModelRenderer(this, 0, 17); - this.stick4.setRotationPoint(-5.0F, 24.0F, -1.0F); - this.stick4.addBox(-0.5F, -14.0F, -0.5F, 1, 14, 1, 0.0F); - this.setRotateAngle(stick4, 0.5009094953223726F, -1.9123572614101867F, 0.0F); - this.rock15 = new ModelRenderer(this, 0, 0); - this.rock15.setRotationPoint(0.0F, 24.0F, 0.0F); - this.rock15.addBox(6.0F, -3.0F, 1.0F, 1, 1, 1, 0.0F); - this.stick2 = new ModelRenderer(this, 0, 17); - this.stick2.setRotationPoint(6.0F, 22.0F, 1.0F); - this.stick2.addBox(-0.5F, -14.0F, -0.5F, 1, 14, 1, 0.0F); - this.setRotateAngle(stick2, 0.40980330836826856F, 1.5481070465189704F, 0.0F); - this.rock7 = new ModelRenderer(this, 10, 7); - this.rock7.setRotationPoint(0.0F, 23.0F, 0.0F); - this.rock7.addBox(-5.0F, -2.0F, -5.0F, 3, 3, 3, 0.0F); - this.rock16 = new ModelRenderer(this, 0, 0); - this.rock16.setRotationPoint(0.0F, 24.0F, 0.0F); - this.rock16.addBox(-5.0F, -1.0F, -2.0F, 1, 1, 1, 0.0F); - this.rock5 = new ModelRenderer(this, 0, 8); - this.rock5.setRotationPoint(0.0F, 24.0F, 0.0F); - this.rock5.addBox(-6.0F, -2.0F, -1.0F, 2, 2, 2, 0.0F); - this.rock13 = new ModelRenderer(this, 0, 8); - this.rock13.setRotationPoint(0.0F, 24.0F, 0.0F); - this.rock13.addBox(3.0F, -2.0F, -5.0F, 2, 2, 2, 0.0F); - this.rock6 = new ModelRenderer(this, 0, 0); - this.rock6.setRotationPoint(0.0F, 24.0F, 0.0F); - this.rock6.addBox(2.0F, -1.0F, -6.0F, 1, 1, 1, 0.0F); - this.stick1 = new ModelRenderer(this, 0, 17); - this.stick1.setRotationPoint(-3.0F, 24.0F, 5.0F); - this.stick1.addBox(-0.5F, -14.0F, -0.5F, 1, 14, 1, 0.0F); - this.setRotateAngle(stick1, 0.40980330836826856F, 0.7285004297824331F, 0.6373942428283291F); - this.rock3 = new ModelRenderer(this, 0, 8); - this.rock3.setRotationPoint(0.0F, 24.0F, 0.0F); - this.rock3.addBox(-3.0F, -2.0F, 2.0F, 2, 2, 2, 0.0F); - this.rock10 = new ModelRenderer(this, 0, 8); - this.rock10.setRotationPoint(0.0F, 24.0F, 0.0F); - this.rock10.addBox(0.0F, -2.0F, -7.0F, 2, 2, 2, 0.0F); - this.rock11 = new ModelRenderer(this, 0, 8); - this.rock11.setRotationPoint(0.0F, 24.0F, 0.0F); - this.rock11.addBox(4.0F, -2.0F, 1.0F, 2, 2, 2, 0.0F); - this.rock12 = new ModelRenderer(this, 10, 7); - this.rock12.setRotationPoint(0.0F, 24.0F, 0.0F); - this.rock12.addBox(1.0F, -3.0F, 3.0F, 3, 3, 3, 0.0F); - this.stick3 = new ModelRenderer(this, 0, 17); - this.stick3.setRotationPoint(4.0F, 24.0F, -6.0F); - this.stick3.addBox(-0.5F, -14.0F, -0.5F, 1, 14, 1, 0.0F); - this.setRotateAngle(stick3, -0.5462880558742251F, -0.36425021489121656F, 0.0F); - this.rock17 = new ModelRenderer(this, 0, 0); - this.rock17.setRotationPoint(0.0F, 24.0F, 0.0F); - this.rock17.addBox(4.0F, -1.0F, 3.0F, 1, 1, 1, 0.0F); - this.rock9 = new ModelRenderer(this, 0, 8); - this.rock9.setRotationPoint(-1.0F, 24.0F, 1.0F); - this.rock9.addBox(-4.0F, -2.0F, 0.0F, 2, 2, 2, 0.0F); - this.rock14 = new ModelRenderer(this, 0, 8); - this.rock14.setRotationPoint(0.0F, 24.0F, 0.0F); - this.rock14.addBox(4.0F, -2.0F, -3.0F, 2, 2, 2, 0.0F); - this.rock2 = new ModelRenderer(this, 0, 0); - this.rock2.setRotationPoint(0.0F, 24.0F, 0.0F); - this.rock2.addBox(-2.0F, -1.0F, 4.0F, 1, 1, 1, 0.0F); - } - - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - this.rock1.render(f5); - this.rock8.render(f5); - this.log.render(f5); - this.rock4.render(f5); - this.stick4.render(f5); - this.rock15.render(f5); - this.stick2.render(f5); - this.rock7.render(f5); - this.rock16.render(f5); - this.rock5.render(f5); - this.rock13.render(f5); - this.rock6.render(f5); - this.stick1.render(f5); - this.rock3.render(f5); - this.rock10.render(f5); - this.rock11.render(f5); - this.rock12.render(f5); - this.stick3.render(f5); - this.rock17.render(f5); - this.rock9.render(f5); - this.rock14.render(f5); - this.rock2.render(f5); - } - - /** - * This is a helper function from Tabula to set the rotation of model parts - */ - public void setRotateAngle(ModelRenderer modelRenderer, float x, float y, float z) - { - modelRenderer.rotateAngleX = x; - modelRenderer.rotateAngleY = y; - modelRenderer.rotateAngleZ = z; - } - -} From 3e6c898be75a21dcca00f0780e2cde53f6abdc97 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:27:40 -0400 Subject: [PATCH 054/462] Delete ModelClockworkCrossbow.java --- client/models/ModelClockworkCrossbow.java | 282 ---------------------- 1 file changed, 282 deletions(-) delete mode 100644 client/models/ModelClockworkCrossbow.java diff --git a/client/models/ModelClockworkCrossbow.java b/client/models/ModelClockworkCrossbow.java deleted file mode 100644 index 0580c0d8..00000000 --- a/client/models/ModelClockworkCrossbow.java +++ /dev/null @@ -1,282 +0,0 @@ -package com.darkona.adventurebackpack.client.models; - -import com.darkona.adventurebackpack.client.render.RendererStack; -import com.darkona.adventurebackpack.util.Utils; -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.init.Items; -import net.minecraft.item.ItemStack; -import org.lwjgl.opengl.GL11; - -/** - * clockworkCrossbow - Darkona - * Created using Tabula 4.1.0 - */ -public class ModelClockworkCrossbow extends ModelBase -{ - public ModelRenderer xbowBody; - public ModelRenderer leftArc1; - public ModelRenderer rightArc1; - public ModelRenderer magazine; - public ModelRenderer handle; - public ModelRenderer trigger; - public ModelRenderer handle2; - public ModelRenderer reloader1; - public ModelRenderer wheel; - public ModelRenderer point; - public ModelRenderer sniperLeg1; - public ModelRenderer sniperLeg1_1; - public ModelRenderer hookBolt; - public ModelRenderer leftArc2; - public ModelRenderer leftArc3; - public ModelRenderer stringLeft; - public ModelRenderer rightArc2; - public ModelRenderer rightArc3; - public ModelRenderer stringRight; - public ModelRenderer arrow1; - public ModelRenderer arrow2; - public ModelRenderer arrow3; - public ModelRenderer reloader2; - public ModelRenderer reloader3; - public ModelRenderer shape37; - public ModelRenderer shape38; - public ModelRenderer hookHead; - public ModelRenderer hookTooth1; - public ModelRenderer hookTooth2; - public ModelRenderer hookTooth3; - public ModelRenderer hookTooth4; - public RendererStack arrow; - private ItemStack xbow; - - public ModelClockworkCrossbow() - { - this.textureWidth = 64; - this.textureHeight = 64; - this.hookTooth1 = new ModelRenderer(this, 0, 0); - this.hookTooth1.setRotationPoint(0.0F, -1.0F, 3.0F); - this.hookTooth1.addBox(0.0F, 0.0F, 0.0F, 3, 1, 1, 0.0F); - this.reloader3 = new ModelRenderer(this, 5, 45); - this.reloader3.setRotationPoint(1.0F, 3.0F, 0.0F); - this.reloader3.addBox(0.0F, -1.0F, -1.0F, 5, 2, 2, 0.0F); - this.shape38 = new ModelRenderer(this, 0, 50); - this.shape38.setRotationPoint(-0.7F, 7.3F, -0.5F); - this.shape38.addBox(0.0F, 0.0F, 0.0F, 1, 2, 1, 0.0F); - this.setRotateAngle(shape38, 0.0F, 0.0F, -1.1344640137963142F); - this.hookTooth4 = new ModelRenderer(this, 0, 0); - this.hookTooth4.setRotationPoint(0.0F, 3.0F, -1.0F); - this.hookTooth4.addBox(0.0F, 0.0F, 0.0F, 3, 1, 1, 0.0F); - - this.stringLeft = new ModelRenderer(this, 56, 36); - this.stringLeft.setRotationPoint(7.3F, 0.3F, 2.0F); - this.stringLeft.addBox(-0.5F, 0.0F, -0.5F, 1, 22, 1, 0.0F); - this.setRotateAngle(stringLeft, 1.5707963267948966F, -0.5235987755982988F, 0.0F); - this.stringRight = new ModelRenderer(this, 56, 36); - this.stringRight.setRotationPoint(7.3F, 0.3F, -2.0F); - this.stringRight.addBox(-0.5F, 0.0F, -0.5F, 1, 22, 1, 0.0F); - this.setRotateAngle(stringRight, -1.5707963267948966F, 0.5235987755982988F, 0.0F); - - this.wheel = new ModelRenderer(this, 32, 17); - this.wheel.setRotationPoint(-4.0F, 4.0F, 9.0F); - this.wheel.addBox(0.0F, -2.5F, -2.5F, 1, 5, 5, 0.0F); - this.reloader1 = new ModelRenderer(this, 0, 41); - this.reloader1.setRotationPoint(3.0F, 3.0F, 11.0F); - this.reloader1.addBox(0.0F, -0.5F, -0.5F, 7, 1, 1, 0.0F); - this.sniperLeg1 = new ModelRenderer(this, 0, 50); - this.sniperLeg1.setRotationPoint(-2.0F, 3.0F, -12.0F); - this.sniperLeg1.addBox(-0.5F, 0.0F, -0.5F, 1, 7, 1, 0.0F); - this.setRotateAngle(sniperLeg1, 0.0F, 0.0F, 0.4363323129985824F); - this.trigger = new ModelRenderer(this, 0, 20); - this.trigger.setRotationPoint(-1.0F, 4.0F, 9.0F); - this.trigger.addBox(0.0F, 0.0F, 0.0F, 2, 4, 3, 0.0F); - - this.shape37 = new ModelRenderer(this, 0, 50); - this.shape37.setRotationPoint(0.3F, 6.6F, -0.5F); - this.shape37.addBox(0.0F, 0.0F, 0.0F, 1, 2, 1, 0.0F); - this.setRotateAngle(shape37, 0.0F, 0.0F, 1.1344640137963142F); - this.sniperLeg1_1 = new ModelRenderer(this, 0, 50); - this.sniperLeg1_1.setRotationPoint(2.0F, 3.0F, -12.0F); - this.sniperLeg1_1.addBox(-0.5F, 0.0F, -0.5F, 1, 7, 1, 0.0F); - this.setRotateAngle(sniperLeg1_1, 0.0F, 0.0F, -0.4363323129985824F); - - - - this.hookTooth2 = new ModelRenderer(this, 0, 0); - this.hookTooth2.setRotationPoint(0.0F, -1.0F, -1.0F); - this.hookTooth2.addBox(0.0F, 0.0F, 0.0F, 3, 1, 1, 0.0F); - - this.arrow1 = new ModelRenderer(this, 0, 0); - this.arrow1.setRotationPoint(10.0F, 1.0F, 3.0F); - this.arrow1.addBox(0.0F, 0.0F, 0.0F, 0, 0, 0, 0.0F); - this.arrow2 = new ModelRenderer(this, 0, 0); - this.arrow2.setRotationPoint(10.0F, 4.0F, 3.0F); - this.arrow2.addBox(0.0F, 0.0F, 0.0F, 0, 0, 0, 0.0F); - this.arrow3 = new ModelRenderer(this, 0, 0); - this.arrow3.setRotationPoint(10.0F, 7.0F, 3.0F); - this.arrow3.addBox(0.0F, 0.0F, 0.0F, 0, 0, 0, 0.0F); - - this.hookHead = new ModelRenderer(this, 0, 0); - this.hookHead.setRotationPoint(-0.5F, -1.0F, -1.0F); - this.hookHead.addBox(0.0F, 0.0F, 0.0F, 1, 3, 3, 0.0F); - this.xbowBody = new ModelRenderer(this, 0, 35); - this.xbowBody.setRotationPoint(0.0F, 0.0F, 0.0F); - this.xbowBody.addBox(-3.0F, 0.0F, -13.0F, 6, 4, 25, 0.0F); - this.hookBolt = new ModelRenderer(this, 18, 12); - this.hookBolt.setRotationPoint(0.5F, -1.0F, -20.0F); - this.hookBolt.addBox(0.0F, 0.0F, 0.0F, 22, 1, 1, 0.0F); - this.setRotateAngle(hookBolt, 0.0F, -1.5707963267948966F, 0.0F); - this.point = new ModelRenderer(this, 45, 16); - this.point.setRotationPoint(-2.0F, 0.0F, -16.0F); - this.point.addBox(0.0F, 0.0F, 0.0F, 4, 2, 3, 0.0F); - - this.rightArc1 = new ModelRenderer(this, 0, 36); - this.rightArc1.setRotationPoint(-2.0F, 0.1F, -13.0F); - this.rightArc1.addBox(-8.0F, 0.0F, 0.0F, 8, 2, 2, 0.0F); - this.setRotateAngle(rightArc1, 0.0F, -0.5235987755982988F, 0.0F); - this.rightArc2 = new ModelRenderer(this, 0, 36); - this.rightArc2.setRotationPoint(-8.0F, 0.0F, 0.0F); - this.rightArc2.addBox(0.0F, 0.0F, -2.0F, 8, 2, 2, 0.0F); - this.setRotateAngle(rightArc2, 0.0F, -2.367539130330308F, 0.0F); - this.rightArc3 = new ModelRenderer(this, 0, 36); - this.rightArc3.setRotationPoint(8.0F, 0.0F, 0.0F); - this.rightArc3.addBox(0.0F, 0.0F, -2.0F, 8, 2, 2, 0.0F); - this.setRotateAngle(rightArc3, 0.0F, 0.7853981633974483F, 0.0F); - - this.leftArc1 = new ModelRenderer(this, 0, 36); - this.leftArc1.setRotationPoint(2.0F, 0.1F, -13.0F); - this.leftArc1.addBox(0.0F, 0.0F, 0.0F, 8, 2, 2, 0.0F); - this.setRotateAngle(leftArc1, 0.0F, 0.5235987755982988F, 0.0F); - this.leftArc2 = new ModelRenderer(this, 0, 36); - this.leftArc2.setRotationPoint(8.0F, 0.0F, 0.0F); - this.leftArc2.addBox(0.0F, 0.0F, 0.0F, 8, 2, 2, 0.0F); - this.setRotateAngle(leftArc2, 0.0F, -0.7853981633974483F, 0.0F); - this.leftArc3 = new ModelRenderer(this, 0, 36); - this.leftArc3.setRotationPoint(8.0F, 0.0F, 0.0F); - this.leftArc3.addBox(0.0F, 0.0F, 0.0F, 8, 2, 2, 0.0F); - this.setRotateAngle(leftArc3, 0.0F, -0.7853981633974483F, 0.0F); - - - this.reloader2 = new ModelRenderer(this, 0, 44); - this.reloader2.setRotationPoint(6.0F, 1.0F, 0.0F); - this.reloader2.addBox(0.0F, -0.5F, -0.5F, 1, 4, 1, 0.0F); - this.handle2 = new ModelRenderer(this, 39, 53); - this.handle2.setRotationPoint(-1.0F, 0.0F, 12.0F); - this.handle2.addBox(0.0F, 0.0F, 0.0F, 2, 4, 3, 0.0F); - this.handle = new ModelRenderer(this, 39, 40); - this.handle.setRotationPoint(-1.0F, 5.0F, 14.0F); - this.handle.addBox(0.0F, -3.0F, 1.0F, 2, 10, 3, 0.0F); - this.setRotateAngle(handle, 1.0016444577195458F, 0.0F, 0.0F); - this.magazine = new ModelRenderer(this, 0, 16); - this.magazine.setRotationPoint(-5.0F, 1.0F, -7.0F); - this.magazine.addBox(0.0F, 0.0F, 0.0F, 10, 6, 12, 0.0F); - this.hookTooth3 = new ModelRenderer(this, 0, 0); - this.hookTooth3.setRotationPoint(0.0F, 3.0F, 3.0F); - this.hookTooth3.addBox(0.0F, 0.0F, 0.0F, 3, 1, 1, 0.0F); - - - this.hookHead.addChild(this.hookTooth1); - this.reloader2.addChild(this.reloader3); - this.sniperLeg1_1.addChild(this.shape38); - this.hookHead.addChild(this.hookTooth4); - this.leftArc3.addChild(this.stringLeft); - this.sniperLeg1.addChild(this.shape37); - this.leftArc1.addChild(this.leftArc2); - this.rightArc3.addChild(this.stringRight); - this.magazine.addChild(this.arrow3); - this.hookHead.addChild(this.hookTooth2); - this.magazine.addChild(this.arrow2); - this.hookBolt.addChild(this.hookHead); - this.rightArc1.addChild(this.rightArc2); - this.rightArc2.addChild(this.rightArc3); - this.magazine.addChild(this.arrow1); - this.leftArc2.addChild(this.leftArc3); - this.reloader1.addChild(this.reloader2); - this.hookHead.addChild(this.hookTooth3); - - arrow = new RendererStack(this, true); - arrow.stack = new ItemStack(Items.arrow, 1); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack xbow) - { - this.xbow = xbow; - render(entity,f,f1,f2,f3,f4,f5); - } - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - - this.wheel.render(f5); - this.reloader1.render(f5); - this.sniperLeg1.render(f5); - this.trigger.render(f5); - - this.sniperLeg1_1.render(f5); - this.xbowBody.render(f5); - //this.hookBolt.render(f5); - this.point.render(f5); - - this.handle2.render(f5); - this.handle.render(1/18f); - this.magazine.render(f5); - - - ModelRenderer[] arrows = {arrow1, arrow2, arrow3}; - - - setRotateAngle(arrow, Utils.degreesToRadians(-90), Utils.degreesToRadians(0), Utils.degreesToRadians(0)); - for (ModelRenderer model : arrows) - { - arrow.setRotationPoint(model.rotationPointX, model.rotationPointY, model.rotationPointZ); - setOffset(arrow, -.25f, .1f, -.2f); - arrow.render(f5); - setOffset(arrow, -.75f, .1f, -.2f); - arrow.render(f5); - } - if(xbow != null && xbow.hasTagCompound() && xbow.stackTagCompound.hasKey("Shot")) - { - if((xbow.stackTagCompound.getByte("Shot")>0)) - { - setRotateAngle(stringLeft, 1.5707963267948966F, -0.5235987755982988F, 0.0F); - setRotateAngle(stringRight, -1.5707963267948966F, 0.5235987755982988F, 0.0F); - }else - { - renderNormal(); - } - }else{ - renderNormal(); - } - this.leftArc1.render(f5); - this.rightArc1.render(f5); - } - - private void renderNormal() - { - setRotateAngle(stringLeft, 1.5707963267948966F, 0.0F, 0.0F); - setRotateAngle(stringRight, -1.5707963267948966F, 0.0F, 0.0F); - setOffset(arrow, -.0f, -.0f, -.2f); - setRotateAngle(arrow, Utils.degreesToRadians(-90), Utils.degreesToRadians(0), Utils.degreesToRadians(90)); - arrow.setRotationPoint(xbowBody.rotationPointX, xbowBody.rotationPointY, xbowBody.rotationPointZ); - GL11.glPushMatrix(); - GL11.glScalef(1.0f,1.0f,2f); - arrow.render(1 / 14); - GL11.glPopMatrix(); - } - - /** - * This is a helper function from Tabula to set the rotation of model parts - */ - public void setRotateAngle(ModelRenderer modelRenderer, float x, float y, float z) - { - modelRenderer.rotateAngleX = x; - modelRenderer.rotateAngleY = y; - modelRenderer.rotateAngleZ = z; - } - - public void setOffset(ModelRenderer modelRenderer, float x, float y, float z) - { - modelRenderer.offsetX = x; - modelRenderer.offsetY = y; - modelRenderer.offsetZ = z; - } -} From daa84155fe61d0c18c19a0e3fd3fc646b716672d Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:27:46 -0400 Subject: [PATCH 055/462] Delete ModelCoalJetpack.java --- client/models/ModelCoalJetpack.java | 200 ---------------------------- 1 file changed, 200 deletions(-) delete mode 100644 client/models/ModelCoalJetpack.java diff --git a/client/models/ModelCoalJetpack.java b/client/models/ModelCoalJetpack.java deleted file mode 100644 index d0af05d2..00000000 --- a/client/models/ModelCoalJetpack.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.darkona.adventurebackpack.client.models; - -import codechicken.lib.vec.Vector3; -import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import org.lwjgl.opengl.GL11; - -import java.util.List; - - -public class ModelCoalJetpack extends ModelWearable { - public ModelRenderer Base; - public ModelRenderer tubeStraightLeft; - public ModelRenderer tubeStraightRight; - public ModelRenderer tubeEndLeft; - public ModelRenderer tubeEndRight; - public ModelRenderer tankWallLeft; - public ModelRenderer tankWallRight; - public ModelRenderer fireBox; - public ModelRenderer tankTop; - public ModelRenderer tankBottom; - public ModelRenderer pressureTank; - public ModelRenderer waterTube1; - public ModelRenderer waterTube2; - public ModelRenderer tubeBendLeft; - public ModelRenderer tubeBendRight; - private ItemStack jetpack; - - @SuppressWarnings("unchecked") - public ModelCoalJetpack() { - this.textureWidth = 64; - this.textureHeight = 32; - - this.tubeStraightRight = new ModelRenderer(this, 0, 14); - this.tubeStraightRight.setRotationPoint(-3.0F, 1.0F, 8.3F); - this.tubeStraightRight.addBox(-5.8F, 0.0F, 0.0F, 6, 1, 1, 0.0F); - - this.tubeEndLeft = new ModelRenderer(this, 0, 17); - this.tubeEndLeft.setRotationPoint(7.6F, 1.7F, 8.3F); - this.tubeEndLeft.addBox(0.0F, 0.0F, 0.0F, 1, 4, 1, -0.1F); - - this.setRotateAngle(tubeEndLeft, 0.0F, 0.0F, -0.2617993877991494F); - this.tankBottom = new ModelRenderer(this, 10, 20); - this.tankBottom.setRotationPoint(-1.0F, 8.0F, 3.0F); - this.tankBottom.addBox(-3.0F, 1.0F, 0.0F, 3, 1, 3, 0.0F); - this.tubeBendLeft = new ModelRenderer(this, 0, 14); - this.tubeBendLeft.setRotationPoint(-2.0F, 1.0F, 2.0F); - this.tubeBendLeft.addBox(0.0F, 0.0F, 0.0F, 5, 1, 1, 0.0F); - this.setRotateAngle(tubeBendLeft, 0.0F, -0.8080874436733745F, 0.0F); - this.waterTube2 = new ModelRenderer(this, 10, 17); - this.waterTube2.setRotationPoint(0.0F, 1.0F, 0.0F); - this.waterTube2.addBox(-2.0F, 1.0F, 1.0F, 2, 1, 1, 0.0F); - this.tubeEndRight = new ModelRenderer(this, 0, 17); - this.tubeEndRight.setRotationPoint(-7.7F, 1.6F, 8.3F); - this.tubeEndRight.addBox(-1.0F, 0.0F, 0.0F, 1, 4, 1, -0.1F); - this.setRotateAngle(tubeEndRight, 0.0F, 0.0F, 0.2617993877991494F); - this.Base = new ModelRenderer(this, 0, 0); - this.Base.setRotationPoint(0.0F, 0.0F, 0.0F); - this.Base.addBox(-4.0F, 0.0F, 2.0F, 8, 12, 1, 0.0F); - this.waterTube1 = new ModelRenderer(this, 10, 17); - this.waterTube1.setRotationPoint(0.0F, 1.0F, 0.0F); - this.waterTube1.addBox(-2.0F, 1.0F, 1.0F, 1, 1, 1, 0.0F); - this.tubeBendRight = new ModelRenderer(this, 0, 14); - this.tubeBendRight.setRotationPoint(-2.0F, 1.0F, 2.0F); - this.tubeBendRight.addBox(-5.0F, 0.0F, 0.0F, 5, 1, 1, 0.0F); - this.setRotateAngle(tubeBendRight, 0.0F, 0.7976154681614086F, 0.0F); - this.tankWallLeft = new ModelRenderer(this, 3, 23); - this.tankWallLeft.setRotationPoint(-1.0F, 1.0F, 1.0F); - this.tankWallLeft.addBox(0.0F, 6.0F, 2.0F, 1, 1, 3, 0.0F); - this.tankWallRight = new ModelRenderer(this, 5, 17); - this.tankWallRight.setRotationPoint(-1.0F, 1.0F, 3.0F); - this.tankWallRight.addBox(-3.0F, 0.0F, 2.0F, 1, 8, 1, 0.0F); - this.pressureTank = new ModelRenderer(this, 19, 0); - this.pressureTank.setRotationPoint(2.0F, 0.0F, 3.0F); - this.pressureTank.addBox(-3.0F, 0.0F, 0.0F, 5, 7, 3, 0.0F); - this.fireBox = new ModelRenderer(this, 26, 25); - this.fireBox.setRotationPoint(2.0F, 8.0F, 3.0F); - this.fireBox.addBox(-3.0F, 0.0F, 0.0F, 5, 4, 3, 0.0F); - this.tankTop = new ModelRenderer(this, 10, 20); - this.tankTop.setRotationPoint(-4.0F, 0.0F, 3.0F); - this.tankTop.addBox(0.0F, 0.0F, 0.0F, 3, 1, 3, 0.0F); - this.tubeStraightLeft = new ModelRenderer(this, 0, 14); - this.tubeStraightLeft.setRotationPoint(2.7F, 1.0F, 8.3F); - this.tubeStraightLeft.addBox(0.0F, 0.0F, 0.0F, 6, 1, 1, 0.0F); - - this.Base.addChild(this.tankBottom); - this.pressureTank.addChild(this.tubeBendLeft); - this.waterTube1.addChild(this.waterTube2); - this.tankBottom.addChild(this.waterTube1); - this.pressureTank.addChild(this.tubeBendRight); - this.Base.addChild(this.pressureTank); - this.Base.addChild(this.fireBox); - this.Base.addChild(this.tankTop); - - bipedBody.addChild(Base); - bipedBody.addChild(tubeStraightLeft); - bipedBody.addChild(tubeStraightRight); - bipedBody.addChild(tubeEndLeft); - bipedBody.addChild(tubeEndRight); - bipedBody.addChild(tankWallLeft); - bipedBody.addChild(tankWallRight); - - - float offsetZ = 0.08F; - float offsetY = 0.0F; - for (ModelRenderer part : (List) bipedBody.childModels) - { - setOffset(part, part.offsetX + 0, part.offsetY + offsetY, part.offsetZ + offsetZ); - } - } - - public ModelCoalJetpack setWearable(ItemStack wearable) - { - this.jetpack = wearable; - return this; - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack stack) - { - this.jetpack = stack; - render(entity, f, f1,f2,f3,f4,f5); - } - - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - isSneak = (entity != null && entity.isSneaking()); - - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - - if (entity != null && entity instanceof EntityPlayer) - { - GL11.glPushMatrix(); - - GL11.glTranslatef(bipedBody.offsetX, bipedBody.offsetY, bipedBody.offsetZ); - GL11.glColor4f(1, 1, 1, 1); - - if (bipedBody.rotateAngleX == 0.0F && bipedBody.rotateAngleY == 0.0F && bipedBody.rotateAngleZ == 0.0F) - { - if (bipedBody.rotationPointX == 0.0F && bipedBody.rotationPointY == 0.0F && bipedBody.rotationPointZ == 0.0F) - { - renderSteamPack(f5); - } else - { - GL11.glTranslatef(bipedBody.rotationPointX * f5, bipedBody.rotationPointY * f5, bipedBody.rotationPointZ * f5); - renderSteamPack(f5); - GL11.glTranslatef(-bipedBody.rotationPointX * f5, -bipedBody.rotationPointY * f5, -bipedBody.rotationPointZ * f5); - } - } else - { - GL11.glPushMatrix(); - GL11.glTranslatef(bipedBody.rotationPointX * f5, bipedBody.rotationPointY * f5, bipedBody.rotationPointZ * f5); - - if (bipedBody.rotateAngleZ != 0.0F) - { - GL11.glRotatef(bipedBody.rotateAngleZ * (180F / (float) Math.PI), 0.0F, 0.0F, 1.0F); - } - - if (bipedBody.rotateAngleY != 0.0F) - { - GL11.glRotatef(bipedBody.rotateAngleY * (180F / (float) Math.PI), 0.0F, 1.0F, 0.0F); - } - - if (bipedBody.rotateAngleX != 0.0F) - { - GL11.glRotatef(bipedBody.rotateAngleX * (180F / (float) Math.PI), 1.0F, 0.0F, 0.0F); - } - renderSteamPack(f5); - GL11.glPopMatrix(); - } - GL11.glTranslatef(-bipedBody.offsetX, -bipedBody.offsetY, -(bipedBody.offsetZ)); - GL11.glPopMatrix(); - } - - } - - public void renderSteamPack(float f5) - { - InventoryCoalJetpack inv = new InventoryCoalJetpack(jetpack); - - this.fireBox.setTextureOffset((inv.getBurnTicks() > 0) ? 9 : 26, 25); - - tubeStraightRight.render(f5); - tubeEndLeft.render(f5); - tubeEndRight.render(f5); - Base.render(f5); - tankWallLeft.render(f5); - tankWallRight.render(f5); - tubeStraightLeft.render(f5); - - GL11.glPushMatrix(); - renderFluidInTank(inv.getWaterTank(), new Vector3(0, .5f, 0), new Vector3(.155f, 0, .135f), new Vector3(0.18f, 0.0625f, -0.045f), tankTop); - GL11.glPopMatrix(); - - } - -} From 63cb48db83c9e06c1c4be22b8bc76b77408dd70d Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:27:52 -0400 Subject: [PATCH 056/462] Delete ModelCopterPack.java --- client/models/ModelCopterPack.java | 280 ----------------------------- 1 file changed, 280 deletions(-) delete mode 100644 client/models/ModelCopterPack.java diff --git a/client/models/ModelCopterPack.java b/client/models/ModelCopterPack.java deleted file mode 100644 index 27f3c147..00000000 --- a/client/models/ModelCopterPack.java +++ /dev/null @@ -1,280 +0,0 @@ -package com.darkona.adventurebackpack.client.models; - -import codechicken.lib.vec.Vector3; -import com.darkona.adventurebackpack.inventory.InventoryCopterPack; -import com.darkona.adventurebackpack.item.ItemCopterPack; -import com.darkona.adventurebackpack.util.Utils; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import org.lwjgl.opengl.GL11; - -import java.util.List; - -/** - * Created on 31/12/2014 - * - * @author Darkona - */ -public class ModelCopterPack extends ModelWearable -{ - - public static ModelCopterPack instance = new ModelCopterPack(); - public ModelRenderer Base; - public ModelRenderer EngineBody; - public ModelRenderer TankTop; - - public ModelRenderer EnginePistonLeft; - public ModelRenderer EnginePistonRight; - public ModelRenderer Axis; - public ModelRenderer Blade1; - public ModelRenderer Blade2; - public ModelRenderer Blade3; - public ModelRenderer Blade4; - public ModelRenderer TankWallLeftBack; - public ModelRenderer TankWallRightBack; - public ModelRenderer TankWallLeftFront; - public ModelRenderer TankWallRightFront; - public ModelRenderer TankBottom; - public ModelRenderer FuelLine1; - public ModelRenderer FuelLine2; - public ModelRenderer Escape1; - public ModelRenderer Escape2; - public ModelRenderer Escape3; - public ModelRenderer EscapeFilter; - private ItemStack copterPack; - - @SuppressWarnings("unchecked") - private void init() - { - this.textureWidth = 64; - this.textureHeight = 64; - - this.Base = new ModelRenderer(this, 0, 0); - this.Base.setRotationPoint(0.0F, 0.0F, 0.0F); - this.Base.addBox(-4.0F, 0.0F, 2.0F, 8, 12, 1); - - - //TANK - - this.TankTop = new ModelRenderer(this, 0, 33); - this.TankTop.setRotationPoint(1.0F, 0.0F, 3.0F); - this.TankTop.addBox(0.0F, 0.0F, 0.0F, 5, 1, 5, 0.0F); - this.Base.addChild(this.TankTop); - - this.TankWallLeftFront = new ModelRenderer(this, 0, 40); - this.TankWallLeftFront.setRotationPoint(0.0F, 0.0F, 0.0F); - this.TankWallLeftFront.addBox(4.0F, 1.0F, 0.0F, 1, 4, 1, 0.0F); - this.TankTop.addChild(this.TankWallLeftFront); - - this.TankWallLeftBack = new ModelRenderer(this, 0, 32); - this.TankWallLeftBack.setRotationPoint(0.0F, 0.0F, 0.0F); - this.TankWallLeftBack.addBox(4.0F, 1.0F, 4.0F, 1, 4, 1, 0.0F); - this.TankTop.addChild(this.TankWallLeftBack); - - this.TankWallRightFront = new ModelRenderer(this, 16, 40); - this.TankWallRightFront.setRotationPoint(0.0F, 0.0F, 0.0F); - this.TankWallRightFront.addBox(0.0F, 1.0F, 0.0F, 1, 4, 1, 0.0F); - this.TankTop.addChild(this.TankWallRightFront); - - this.TankWallRightBack = new ModelRenderer(this, 16, 32); - this.TankWallRightBack.setRotationPoint(0.0F, 0.0F, 0.0F); - this.TankWallRightBack.addBox(0.0F, 1.0F, 4.0F, 1, 4, 1, 0.0F); - this.TankTop.addChild(this.TankWallRightBack); - - this.TankBottom = new ModelRenderer(this, 0, 41); - this.TankBottom.setRotationPoint(0.0F, 0.0F, 0.0F); - this.TankBottom.addBox(0.0F, 5.0F, 0.0F, 5, 1, 5, 0.0F); - this.TankTop.addChild(this.TankBottom); - - this.FuelLine1 = new ModelRenderer(this, 15, 48); - this.FuelLine1.setRotationPoint(0.0F, 5.0F, 0.0F); - this.FuelLine1.addBox(2.0F, 1.0F, 2.0F, 1, 4, 1, 0.0F); - this.TankBottom.addChild(this.FuelLine1); - - this.FuelLine2 = new ModelRenderer(this, 0, 48); - this.FuelLine2.setRotationPoint(0.0F, 8.0F, 0.0F); - this.FuelLine2.addBox(1.0F, 1.0F, 2.0F, 1, 1, 1, 0.0F); - this.TankBottom.addChild(this.FuelLine2); - - - //ENGINE - this.EngineBody = new ModelRenderer(this, 0, 23); - this.EngineBody.setRotationPoint(0.0F, 0.0F, 0.0F); - this.EngineBody.addBox(-2.0F, 8.0F, 3.0F, 4, 4, 4); - this.Base.addChild(this.EngineBody); - - this.EnginePistonLeft = new ModelRenderer(this, 0, 18); - this.EnginePistonLeft.setRotationPoint(0.0F, 8.0F, 5.0F); - this.EnginePistonLeft.addBox(1.7F, 1.0F, -1.0F, 4, 2, 2); - this.setRotateAngle(EnginePistonLeft, 0.0F, -0.7853981633974483F, 0.0F); - this.EngineBody.addChild(this.EnginePistonLeft); - - this.EnginePistonRight = new ModelRenderer(this, 13, 18); - this.EnginePistonRight.setRotationPoint(0.0F, 8.0F, 5.0F); - this.EnginePistonRight.addBox(1.7F, 1.0F, -1.0F, 4, 2, 2); - this.setRotateAngle(EnginePistonRight, 0.0F, -2.356194490192345F, 0.0F); - this.EngineBody.addChild(this.EnginePistonRight); - - this.Axis = new ModelRenderer(this, 25, 22); - this.Axis.setRotationPoint(0.0F, 8.0F, 5.75F); - this.Axis.addBox(-0.5F, -25.0F, -0.5F, 1, 25, 1); - //this.EngineBody.addChild(this.Axis); - - this.Blade1 = new ModelRenderer(this, 29, 0); - this.Blade1.setRotationPoint(0.0F, -25.0F, 0.0F); - this.Blade1.addBox(0.0F, -0.5F, -1.0F, 15, 1, 2); - this.Axis.addChild(this.Blade1); - - this.Blade2 = new ModelRenderer(this, 30, 4); - this.Blade2.setRotationPoint(0.0F, -25.0F, 0.0F); - this.Blade2.addBox(-1.0F, -0.5F, 0.0F, 2, 1, 15); - this.Axis.addChild(this.Blade2); - - this.Blade3 = new ModelRenderer(this, 29, 0); - this.Blade3.setRotationPoint(0.0F, -25.0F, 0.0F); - this.Blade3.addBox(0.0F, -0.5F, -1.0F, 15, 1, 2); - this.setRotateAngle(Blade3, 0.0F, 0.0F, 3.141592653589793F); - this.Axis.addChild(this.Blade3); - - this.Blade4 = new ModelRenderer(this, 30, 4); - this.Blade4.setRotationPoint(0.0F, -25.0F, 0.0F); - this.Blade4.addBox(-1.0F, -0.5F, 0.0F, 2, 1, 15); - this.setRotateAngle(Blade4, -3.141592653589793F, 0.0F, 0.0F); - this.Axis.addChild(this.Blade4); - - //ESCAPE - - this.Escape1 = new ModelRenderer(this, 9, 35); - this.Escape1.setRotationPoint(-4.0F, 9.0F, 4.0F); - this.Escape1.addBox(0.0F, 0.0F, 0.0F, 2, 1, 1); - this.Base.addChild(this.Escape1); - - this.Escape2 = new ModelRenderer(this, 38, 40); - this.Escape2.setRotationPoint(-4.0F, 0.0F, 4.0F); - this.Escape2.addBox(0.0F, 0.0F, 0.0F, 1, 9, 1); - this.Base.addChild(this.Escape2); - - this.Escape3 = new ModelRenderer(this, 6, 24); - this.Escape3.setRotationPoint(-4.0F, 0.0F, 5.0F); - this.Escape3.addBox(0.0F, 0.0F, 0.0F, 1, 1, 2); - this.Base.addChild(this.Escape3); - - this.EscapeFilter = new ModelRenderer(this, 35, 28); - this.EscapeFilter.setRotationPoint(-4.4F, 2.0F, 3.5F); - this.EscapeFilter.addBox(0.0F, 0.0F, 0.0F, 2, 5, 2); - this.Base.addChild(this.EscapeFilter); - - this.bipedBody.addChild(this.Base); - - float offsetZ = 0.1F; - float offsetY = 0.0F; - for (ModelRenderer part : (List) bipedBody.childModels) - { - setOffset(part, part.offsetX + 0, part.offsetY + offsetY, part.offsetZ + offsetZ); - } - } - - public ModelCopterPack setWearable(ItemStack wearable) - { - this.copterPack = wearable; - return this; - } - public ModelCopterPack(ItemStack wearable) - { - this.copterPack = wearable; - init(); - } - - public ModelCopterPack() - { - init(); - } - - private void renderCopterPack(Entity entity, float scale) - { - InventoryCopterPack copterInv = new InventoryCopterPack(this.copterPack); - copterInv.openInventory(); - Axis.isHidden = true; - if (copterPack != null && copterPack.stackTagCompound != null && copterPack.stackTagCompound.hasKey("status")) - { - if (copterPack.stackTagCompound.getByte("status") != ItemCopterPack.OFF_MODE) - { - Axis.isHidden = false; - int degrees; - if (entity.onGround || (entity.isSneaking())) - { - degrees = 16; - } else - { - degrees = entity.motionY > 0 ? 36 : 28; - } - float deg = Utils.radiansToDegrees(this.Axis.rotateAngleY); - this.Axis.rotateAngleY = (deg <= 360 + degrees) ? Utils.degreesToRadians(deg + degrees) : 0; - } - } - this.Base.render(scale); - this.Axis.render(scale); - renderFluidInTank(copterInv.getFuelTank(), new Vector3(0, .25f, 0), new Vector3(.25f, 0, .25f), new Vector3(0f, 0.0625f, 0.0f), TankTop); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack stack) - { - this.copterPack = stack; - render(entity, f, f1,f2,f3,f4,f5); - } - - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - isSneak = (entity != null && entity.isSneaking()); - - if (entity == null) Axis.isHidden = true; - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - if (entity != null && entity instanceof EntityPlayer) - { - GL11.glPushMatrix(); - - GL11.glTranslatef(bipedBody.offsetX, bipedBody.offsetY, bipedBody.offsetZ); - GL11.glColor4f(1, 1, 1, 1); - - if (bipedBody.rotateAngleX == 0.0F && bipedBody.rotateAngleY == 0.0F && bipedBody.rotateAngleZ == 0.0F) - { - if (bipedBody.rotationPointX == 0.0F && bipedBody.rotationPointY == 0.0F && bipedBody.rotationPointZ == 0.0F) - { - renderCopterPack(entity, f5); - - } else - { - GL11.glTranslatef(bipedBody.rotationPointX * f5, bipedBody.rotationPointY * f5, bipedBody.rotationPointZ * f5); - renderCopterPack(entity, f5); - GL11.glTranslatef(-bipedBody.rotationPointX * f5, -bipedBody.rotationPointY * f5, -bipedBody.rotationPointZ * f5); - } - } else - { - GL11.glPushMatrix(); - GL11.glTranslatef(bipedBody.rotationPointX * f5, bipedBody.rotationPointY * f5, bipedBody.rotationPointZ * f5); - - if (bipedBody.rotateAngleZ != 0.0F) - { - GL11.glRotatef(bipedBody.rotateAngleZ * (180F / (float) Math.PI), 0.0F, 0.0F, 1.0F); - } - - if (bipedBody.rotateAngleY != 0.0F) - { - GL11.glRotatef(bipedBody.rotateAngleY * (180F / (float) Math.PI), 0.0F, 1.0F, 0.0F); - } - - if (bipedBody.rotateAngleX != 0.0F) - { - GL11.glRotatef(bipedBody.rotateAngleX * (180F / (float) Math.PI), 1.0F, 0.0F, 0.0F); - } - renderCopterPack(entity, f5); - GL11.glPopMatrix(); - } - GL11.glTranslatef(-bipedBody.offsetX, -bipedBody.offsetY, -(bipedBody.offsetZ)); - GL11.glPopMatrix(); - } - } -} \ No newline at end of file From a4219f2de14e8bd597cdc81308e9394eab36e442 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:27:59 -0400 Subject: [PATCH 057/462] Delete ModelFullArmor.java --- client/models/ModelFullArmor.java | 42 ------------------------------- 1 file changed, 42 deletions(-) delete mode 100644 client/models/ModelFullArmor.java diff --git a/client/models/ModelFullArmor.java b/client/models/ModelFullArmor.java deleted file mode 100644 index d769fabf..00000000 --- a/client/models/ModelFullArmor.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.darkona.adventurebackpack.client.models; - -import net.minecraft.client.model.ModelBiped; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; - -/** - * Created on 19/10/2014 - * - * @author Darkona - */ -public class ModelFullArmor extends ModelBiped -{ - public ModelFullArmor() - { - super(0.2F); - } - - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - - setRotationAngles(f,f1,f2,f3,f4,f5,entity); - if(entity instanceof EntityLivingBase) - { - EntityLivingBase owner = (EntityLivingBase)entity; - this.isSneak = owner.isSneaking(); - this.onGround = entity.onGround ? 1 : 0; - this.heldItemRight = (owner.getHeldItem() != null) ? 1 : 0; - this.isRiding = entity.isRiding(); - if(owner instanceof EntityPlayer) - { - EntityPlayer player = (EntityPlayer) owner; - this.aimedBow = player.isUsingItem() && player.getItemInUse() != null && player.getItemInUse().getItemUseAction() == EnumAction.bow; - this.heldItemRight = (player.getCurrentEquippedItem() != null) ? 1 : 0; - } - } - super.render(entity, f, f1, f2, f3, f4, f5); - } -} \ No newline at end of file From c92c7143e0d8f93646f33fb72574586868959318 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:28:11 -0400 Subject: [PATCH 058/462] Delete ModelInflatableBoat.java --- client/models/ModelInflatableBoat.java | 172 ------------------------- 1 file changed, 172 deletions(-) delete mode 100644 client/models/ModelInflatableBoat.java diff --git a/client/models/ModelInflatableBoat.java b/client/models/ModelInflatableBoat.java deleted file mode 100644 index bb91d0f8..00000000 --- a/client/models/ModelInflatableBoat.java +++ /dev/null @@ -1,172 +0,0 @@ -package com.darkona.adventurebackpack.client.models; - -import com.darkona.adventurebackpack.entity.EntityInflatableBoat; -import com.darkona.adventurebackpack.util.Utils; -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import org.lwjgl.opengl.GL11; - -/** - * InflatableBoat - Darkona - * Created using Tabula 4.1.0 - */ -public class ModelInflatableBoat extends ModelBase -{ - public ModelRenderer boatSides1; - public ModelRenderer boatSides2; - public ModelRenderer boatSides3; - public ModelRenderer boatSides4; - public ModelRenderer boatSides5; - public ModelRenderer EngineBody; - public ModelRenderer Axis; - public ModelRenderer EnginePistonLeft; - public ModelRenderer EnginePistonRight; - public ModelRenderer TankTop; - public ModelRenderer TankBottom; - public ModelRenderer TankWallRightFront; - public ModelRenderer TankWallLeftFront; - public ModelRenderer TankWallRightBack; - public ModelRenderer TankWallLeftBack; - public ModelRenderer Blade1; - public ModelRenderer Blade2; - public ModelRenderer Blade3; - public ModelRenderer Blade4; - - public ModelInflatableBoat() - { - this.textureWidth = 64; - this.textureHeight = 64; - this.boatSides4 = new ModelRenderer(this, 0, 36); - this.boatSides4.setRotationPoint(0.0F, 4.0F, -9.0F); - this.boatSides4.addBox(-10.0F, -7.0F, -1.0F, 20, 6, 3, 0.0F); - this.setRotateAngle(boatSides4, 0.0F, 3.141592653589793F, 0.0F); - this.Axis = new ModelRenderer(this, 25, 55); - this.Axis.setRotationPoint(16.0F, 1.0F, 0.0F); - this.Axis.addBox(-0.5F, -6.8F, -0.5F, 1, 8, 1, 0.0F); - this.setRotateAngle(Axis, 3.141592653589793F, 0.045553093477052F, -0.4363323129985824F); - this.Blade3 = new ModelRenderer(this, 20, 48); - this.Blade3.setRotationPoint(0.0F, -7.0F, 0.0F); - this.Blade3.addBox(0.0F, -0.5F, -1.0F, 4, 1, 2, 0.0F); - this.setRotateAngle(Blade3, -0.3490658503988659F, 0.0F, 3.141592653589793F); - this.TankWallRightFront = new ModelRenderer(this, 16, 59); - this.TankWallRightFront.setRotationPoint(0.0F, 0.0F, 0.0F); - this.TankWallRightFront.addBox(0.0F, 1.0F, 0.0F, 1, 4, 1, 0.0F); - this.EnginePistonLeft = new ModelRenderer(this, 0, 55); - this.EnginePistonLeft.setRotationPoint(0.0F, 0.0F, 2.0F); - this.EnginePistonLeft.addBox(1.7F, 1.0F, -1.0F, 4, 2, 2, 0.0F); - this.setRotateAngle(EnginePistonLeft, 0.0F, -0.7853981633974483F, 0.0F); - this.boatSides1 = new ModelRenderer(this, 0, 10); - this.boatSides1.setRotationPoint(0.0F, 4.0F, 0.0F); - this.boatSides1.addBox(-12.0F, -9.0F, -3.0F, 24, 18, 4, 0.0F); - this.setRotateAngle(boatSides1, 1.5707963267948966F, 0.0F, 0.0F); - this.boatSides2 = new ModelRenderer(this, 0, 0); - this.boatSides2.setRotationPoint(-11.0F, 4.0F, 0.0F); - this.boatSides2.addBox(-11.0F, -7.0F, -1.3F, 22, 6, 3, 0.0F); - this.setRotateAngle(boatSides2, 0.0F, 4.6898742330339624F, 0.0F); - this.TankTop = new ModelRenderer(this, 32, 58); - this.TankTop.setRotationPoint(2.5F, -6.0F, -0.5F); - this.TankTop.addBox(0.0F, 0.0F, 0.0F, 5, 1, 5, 0.0F); - this.setRotateAngle(TankTop, 0.0F, -1.5707963267948966F, 0.0F); - this.Blade1 = new ModelRenderer(this, 20, 48); - this.Blade1.setRotationPoint(0.0F, -7.0F, 0.0F); - this.Blade1.addBox(0.0F, -0.5F, -1.0F, 4, 1, 2, 0.0F); - this.setRotateAngle(Blade1, -0.3490658503988659F, 0.0F, 0.0F); - this.TankBottom = new ModelRenderer(this, 32, 58); - this.TankBottom.setRotationPoint(0.0F, 0.0F, 0.0F); - this.TankBottom.addBox(0.0F, 5.0F, 0.0F, 5, 1, 5, 0.0F); - this.boatSides3 = new ModelRenderer(this, 0, 0); - this.boatSides3.setRotationPoint(11.0F, 4.0F, 0.0F); - this.boatSides3.addBox(-11.0F, -7.0F, -1.0F, 22, 6, 3, 0.0F); - this.setRotateAngle(boatSides3, 0.0F, 1.5707963267948966F, 0.0F); - this.Blade4 = new ModelRenderer(this, 30, 48); - this.Blade4.setRotationPoint(0.0F, -7.0F, 0.0F); - this.Blade4.addBox(-1.0F, -0.5F, 0.0F, 2, 1, 4, 0.0F); - this.setRotateAngle(Blade4, -3.141592653589793F, 0.0F, 0.3490658503988659F); - this.TankWallRightBack = new ModelRenderer(this, 16, 59); - this.TankWallRightBack.setRotationPoint(0.0F, 0.0F, 0.0F); - this.TankWallRightBack.addBox(0.0F, 1.0F, 4.0F, 1, 4, 1, 0.0F); - this.boatSides5 = new ModelRenderer(this, 0, 36); - this.boatSides5.setRotationPoint(0.0F, 4.0F, 9.0F); - this.boatSides5.addBox(-10.0F, -7.0F, -1.0F, 20, 6, 3, 0.0F); - this.EngineBody = new ModelRenderer(this, 0, 46); - this.EngineBody.setRotationPoint(13.3F, -3.0F, 0.0F); - this.EngineBody.addBox(-2.0F, 0.0F, 0.0F, 4, 4, 4, 0.0F); - this.setRotateAngle(EngineBody, 0.0F, 1.5707963267948966F, 0.0F); - this.TankWallLeftFront = new ModelRenderer(this, 16, 59); - this.TankWallLeftFront.setRotationPoint(0.0F, 0.0F, 0.0F); - this.TankWallLeftFront.addBox(4.0F, 1.0F, 0.0F, 1, 4, 1, 0.0F); - this.Blade2 = new ModelRenderer(this, 30, 48); - this.Blade2.setRotationPoint(0.0F, -7.0F, 0.0F); - this.Blade2.addBox(-1.0F, -0.5F, 0.0F, 2, 1, 4, 0.0F); - this.setRotateAngle(Blade2, 0.0F, 0.0F, -0.3490658503988659F); - this.TankWallLeftBack = new ModelRenderer(this, 16, 59); - this.TankWallLeftBack.setRotationPoint(0.0F, 0.0F, 0.0F); - this.TankWallLeftBack.addBox(4.0F, 1.0F, 4.0F, 1, 4, 1, 0.0F); - this.EnginePistonRight = new ModelRenderer(this, 13, 55); - this.EnginePistonRight.setRotationPoint(0.0F, 0.0F, 2.0F); - this.EnginePistonRight.addBox(1.7F, 1.0F, -1.0F, 4, 2, 2, 0.0F); - this.setRotateAngle(EnginePistonRight, 0.0F, -2.356194490192345F, 0.0F); - this.Axis.addChild(this.Blade3); - this.TankTop.addChild(this.TankWallRightFront); - this.EngineBody.addChild(this.EnginePistonLeft); - this.EngineBody.addChild(this.TankTop); - this.Axis.addChild(this.Blade1); - this.TankTop.addChild(this.TankBottom); - this.Axis.addChild(this.Blade4); - this.TankTop.addChild(this.TankWallRightBack); - this.TankTop.addChild(this.TankWallLeftFront); - this.Axis.addChild(this.Blade2); - this.TankTop.addChild(this.TankWallLeftBack); - this.EngineBody.addChild(this.EnginePistonRight); - } - - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - if(Utils.notNullAndInstanceOf(entity,EntityInflatableBoat.class)) - { - EntityInflatableBoat theBoat = (EntityInflatableBoat)entity; - - if(theBoat.isMotorized() && theBoat.isInflated()) - { - Axis.isHidden = EngineBody.isHidden = false; - }else - { - Axis.isHidden = EngineBody.isHidden = true; - } - - GL11.glPushMatrix(); - GL11.glScalef(theBoat.inflation,theBoat.inflation,theBoat.inflation); - - this.boatSides5.render(f5); - this.boatSides3.render(f5); - this.boatSides2.render(f5); - this.boatSides1.render(f5); - this.boatSides4.render(f5); - this.Axis.render(f5); - this.EngineBody.render(f5); - - - GL11.glPopMatrix(); - }else{ - this.boatSides5.render(f5); - this.boatSides3.render(f5); - this.boatSides2.render(f5); - this.Axis.render(f5); - this.boatSides1.render(f5); - this.boatSides4.render(f5); - this.EngineBody.render(f5); - } - } - - /** - * This is a helper function from Tabula to set the rotation of model parts - */ - public void setRotateAngle(ModelRenderer modelRenderer, float x, float y, float z) - { - modelRenderer.rotateAngleX = x; - modelRenderer.rotateAngleY = y; - modelRenderer.rotateAngleZ = z; - } -} From c3e2cbb12ac9b795128e644a0f28376a5fd8d7c5 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:28:54 -0400 Subject: [PATCH 059/462] Delete ModelSleepingBag.java --- client/models/ModelSleepingBag.java | 71 ----------------------------- 1 file changed, 71 deletions(-) delete mode 100644 client/models/ModelSleepingBag.java diff --git a/client/models/ModelSleepingBag.java b/client/models/ModelSleepingBag.java deleted file mode 100644 index e1c52911..00000000 --- a/client/models/ModelSleepingBag.java +++ /dev/null @@ -1,71 +0,0 @@ -// Date: 14/10/2014 18:47:55 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - - -package com.darkona.adventurebackpack.client.models; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelSleepingBag extends ModelBase -{ - //fields - ModelRenderer footer; - ModelRenderer header; - ModelRenderer pillow; - - public ModelSleepingBag() - { - textureWidth = 64; - textureHeight = 64; - - footer = new ModelRenderer(this, 0, 0); - header = new ModelRenderer(this, 0, 17); - pillow = new ModelRenderer(this, 0, 34); - - - footer.addBox(-8F, 0F, 0F, 16, 1, 16); - footer.setRotationPoint(0F, 23F, -8F); - footer.setTextureSize(64, 64); - footer.mirror = true; - setRotation(footer, 0F, 0F, 0F); - - header.addBox(-16F, 0F, 16F, 16, 1, 16); - header.setRotationPoint(8F, 23F, -8F); - header.setTextureSize(64, 64); - header.mirror = true; - setRotation(header, 0F, 0F, 0F); - - pillow.addBox(-6F, -1F, 26F, 12, 1, 6); - pillow.setRotationPoint(0F, 23F, -8F); - pillow.setTextureSize(64, 64); - pillow.mirror = true; - setRotation(pillow, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - footer.render(f5); - header.render(f5); - pillow.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} From 0985b834a63ba3037c773048f1c7732dad3c2594 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:28:59 -0400 Subject: [PATCH 060/462] Delete ModelWearable.java --- client/models/ModelWearable.java | 70 -------------------------------- 1 file changed, 70 deletions(-) delete mode 100644 client/models/ModelWearable.java diff --git a/client/models/ModelWearable.java b/client/models/ModelWearable.java deleted file mode 100644 index 6f85c9af..00000000 --- a/client/models/ModelWearable.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.darkona.adventurebackpack.client.models; - -import codechicken.lib.render.RenderUtils; -import codechicken.lib.vec.Cuboid6; -import codechicken.lib.vec.Vector3; -import net.minecraft.client.model.ModelBiped; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidTank; -import org.lwjgl.opengl.GL11; - -/** - * Created on 10/01/2015 - * - * @author Darkona - */ -public abstract class ModelWearable extends ModelBiped -{ - - protected void startBlending() - { - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - } - - protected void stopBlending() - { - GL11.glDisable(GL11.GL_BLEND); - } - - public void setRotateAngle(ModelRenderer modelRenderer, float x, float y, float z) - { - modelRenderer.rotateAngleX = x; - modelRenderer.rotateAngleY = y; - modelRenderer.rotateAngleZ = z; - } - - public void setOffset(ModelRenderer modelRenderer, float x, float y, float z) - { - modelRenderer.offsetX = x; - modelRenderer.offsetY = y; - modelRenderer.offsetZ = z; - } - - public void setRotationPoints(ModelRenderer modelRenderer, float x, float y, float z) - { - modelRenderer.rotationPointX = x; - modelRenderer.rotationPointY = y; - modelRenderer.rotationPointZ = z; - } - - public abstract void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack stack); - - public void renderFluidInTank(FluidTank tank, Vector3 minCoords, Vector3 maxCoords, Vector3 offset, ModelRenderer parent) - { - if (tank != null && tank.getFluid() != null && tank.getFluid().getFluid().getIcon() != null) - { - Vector3 victor = new Vector3( - (parent.rotationPointX * 0.1f + parent.offsetX * 0.1 + offset.x) , // - (parent.rotationPointY * 0.1f + parent.offsetY * 0.1 + offset.y), - (parent.rotationPointZ * 0.1f + parent.offsetZ * 0.1 + offset.z)); - - Cuboid6 cat = new Cuboid6(minCoords.x,minCoords.y,minCoords.z, maxCoords.x, maxCoords.y, maxCoords.z); - //Thanks Chickenbones! - RenderUtils.renderFluidCuboid(tank.getFluid(), cat.add(victor),((1.0F * tank.getFluidAmount()) / (1.0F * tank.getCapacity())), 0.8); - } - } - -} From d2c79f58f630aa1527fcc839ae56bdba6b20aa05 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:29:08 -0400 Subject: [PATCH 061/462] Delete RendererAdventureBackpackBlock.java --- .../RendererAdventureBackpackBlock.java | 86 ------------------- 1 file changed, 86 deletions(-) delete mode 100644 client/render/RendererAdventureBackpackBlock.java diff --git a/client/render/RendererAdventureBackpackBlock.java b/client/render/RendererAdventureBackpackBlock.java deleted file mode 100644 index d2ac4432..00000000 --- a/client/render/RendererAdventureBackpackBlock.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.darkona.adventurebackpack.client.render; - -import com.darkona.adventurebackpack.AdventureBackpack; -import com.darkona.adventurebackpack.block.TileAdventureBackpack; -import com.darkona.adventurebackpack.client.models.ModelBackpackBlock; -import com.darkona.adventurebackpack.reference.BackpackNames; -import com.darkona.adventurebackpack.util.Resources; -import com.darkona.adventurebackpack.util.Utils; -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; - -/** - * Created on 12/10/2014 - * - * @author Darkona - */ - -@SuppressWarnings("unused") -public class RendererAdventureBackpackBlock extends TileEntitySpecialRenderer -{ - - // private ModelAdventureBackpackBlock model; - private ModelBackpackBlock model; - - public RendererAdventureBackpackBlock() - { - this.model = new ModelBackpackBlock(); - } - - @Override - public void renderTileEntityAt(TileEntity te, double x, double y, double z, float par8) - { - int dir = te.getBlockMetadata(); - if ((dir & 8) >= 8) - { - dir -= 8; - } - if ((dir & 4) >= 4) - { - dir -= 4; - } - - GL11.glPushMatrix(); - GL11.glEnable(GL12.GL_RESCALE_NORMAL); - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.5f, (float) z + 0.5F); - - GL11.glPushMatrix(); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - - GL11.glPushMatrix(); - if (dir == 0) - { - GL11.glRotatef(-180F, 0.0F, 1.0F, 0.0F); - } - if (dir % 2 != 0) - { - GL11.glRotatef(dir * (-90F), 0.0F, 1.0F, 0.0F); - } - if (dir % 2 == 0) - { - GL11.glRotatef(dir * (-180F), 0.0F, 1.0F, 0.0F); - } - ResourceLocation modelTexture; - if (BackpackNames.getBackpackColorName((TileAdventureBackpack) te).equals("Standard")) - { - modelTexture = Resources.backpackTextureFromString(Utils.getHoliday()); - } else - { - modelTexture = Resources.backpackTextureFromColor((TileAdventureBackpack) te); - } - - bindTexture(modelTexture); - model.render(null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 1 / 20F, (TileAdventureBackpack) te); - - GL11.glDisable(GL12.GL_RESCALE_NORMAL); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - - } - - -} From 9ab71ee3b4c651ba016387572199dfb9ff02ed5e Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:29:14 -0400 Subject: [PATCH 062/462] Delete RendererCampFire.java --- client/render/RendererCampFire.java | 46 ----------------------------- 1 file changed, 46 deletions(-) delete mode 100644 client/render/RendererCampFire.java diff --git a/client/render/RendererCampFire.java b/client/render/RendererCampFire.java deleted file mode 100644 index 205659ef..00000000 --- a/client/render/RendererCampFire.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.darkona.adventurebackpack.client.render; - -import com.darkona.adventurebackpack.client.models.ModelCampFire; -import com.darkona.adventurebackpack.util.Resources; -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; - -/** - * Created on 05/01/2015 - * - * @author Darkona - */ -public class RendererCampFire extends TileEntitySpecialRenderer -{ - - // private ModelAdventureBackpackBlock model; - private ModelCampFire model; - - public RendererCampFire() - { - this.model = new ModelCampFire(); - } - - @Override - public void renderTileEntityAt(TileEntity te, double x, double y, double z, float par8) - { - ResourceLocation modelTexture = Resources.modelTextures("campFire"); - GL11.glPushMatrix(); - GL11.glEnable(GL12.GL_RESCALE_NORMAL); - GL11.glTranslatef((float) x + 0.5F, (float) y + 1.2f, (float) z + 0.5F); - GL11.glPushMatrix(); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - - bindTexture(modelTexture); - model.render(null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 1 / 20F); - - GL11.glDisable(GL12.GL_RESCALE_NORMAL); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - } - - -} From c943713d8166a90c699cc8451eb012fe0ca7d1dd Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:29:21 -0400 Subject: [PATCH 063/462] Delete RendererHose.java --- client/render/RendererHose.java | 84 --------------------------------- 1 file changed, 84 deletions(-) delete mode 100644 client/render/RendererHose.java diff --git a/client/render/RendererHose.java b/client/render/RendererHose.java deleted file mode 100644 index 50a74a98..00000000 --- a/client/render/RendererHose.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.darkona.adventurebackpack.client.render; - -import com.darkona.adventurebackpack.config.ConfigHandler; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.entity.RenderItem; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; -import net.minecraftforge.client.IItemRenderer; -import org.lwjgl.opengl.GL11; - -/** - * Created on 13/10/2014 - * - * @author Darkona - */ -public class RendererHose implements IItemRenderer -{ - - private static RenderItem renderHose = new RenderItem(); - private FontRenderer fontRenderer; - private Tessellator tessellator = Tessellator.instance; - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) - { - return type == ItemRenderType.INVENTORY; - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) - { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack hose, Object... data) - { - - if (type == ItemRenderType.INVENTORY) - { - // ====================Render the item===================== // - GL11.glColor4f(1, 1, 1, 1); - IIcon icon = hose.getItem().getIcon(hose, 0); - renderHose.renderIcon(0, 0, icon, 16, 16); - fontRenderer = Minecraft.getMinecraft().fontRenderer; - - if (hose.hasTagCompound()) - { - String amount = Integer.toString(hose.getTagCompound().getInteger("amount")); - String name = hose.getTagCompound().getString("fluid"); - String mode; - switch (hose.getTagCompound().getInteger("mode")) - { - case 0: - mode = "Suck"; - break; - case 1: - mode = "Spill"; - break; - case 2: - mode = "Drink"; - break; - default: - mode = "Useless"; - break; - } - GL11.glPushMatrix(); - GL11.glScalef(0.5f, 0.5f, 0.5f); - if (fontRenderer != null) - { - fontRenderer.drawString(mode, 0, 0, 0xFFFFFF); - if (!ConfigHandler.TANKS_OVERLAY) - { - fontRenderer.drawString(amount, 0, 18, 0xFFFFFF); - fontRenderer.drawString(name, 0, 24, 0xFFFFFF); - } - } - GL11.glPopMatrix(); - } - } - } -} From ebdf35ba4918bb82367338592ea321c1be331b38 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:29:27 -0400 Subject: [PATCH 064/462] Delete RendererInflatableBoat.java --- client/render/RendererInflatableBoat.java | 73 ----------------------- 1 file changed, 73 deletions(-) delete mode 100644 client/render/RendererInflatableBoat.java diff --git a/client/render/RendererInflatableBoat.java b/client/render/RendererInflatableBoat.java deleted file mode 100644 index 6a83ec67..00000000 --- a/client/render/RendererInflatableBoat.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.darkona.adventurebackpack.client.render; - -import com.darkona.adventurebackpack.client.models.ModelInflatableBoat; -import com.darkona.adventurebackpack.entity.EntityInflatableBoat; -import com.darkona.adventurebackpack.util.Resources; -import net.minecraft.client.renderer.entity.Render; -import net.minecraft.entity.Entity; -import net.minecraft.util.MathHelper; -import net.minecraft.util.ResourceLocation; -import org.lwjgl.opengl.GL11; - -/** - * Created on 05/01/2015 - * - * @author Darkona - */ -public class RendererInflatableBoat extends Render -{ - - private ResourceLocation boatTexture = Resources.modelTextures("inflatableBoat"); - private ModelInflatableBoat boatModel = new ModelInflatableBoat(); - - public RendererInflatableBoat() - { - this.shadowSize = 0.5F; - } - - public void doRender(EntityInflatableBoat entity, double x, double y, double z, float var1, float var2) - { - GL11.glPushMatrix(); - GL11.glTranslatef((float) x, (float) y, (float) z); - GL11.glRotatef(180.0F - var1, 0.0F, 1.0F, 0.0F); - float f2 = (float) entity.getTimeSinceHit() - var2; - float f3 = entity.getDamageTaken() - var2; - - if (f3 < 0.0F) - { - f3 = 0.0F; - } - - if (f2 > 0.0F) - { - GL11.glRotatef(MathHelper.sin(f2) * f2 * f3 / 10.0F * (float) entity.getForwardDirection(), 1.0F, 0.0F, 0.0F); - } - - float f4 = 0.75F; - GL11.glScalef(f4, f4, f4); - GL11.glScalef(1.0F / f4, 1.0F / f4, 1.0F / f4); - this.bindEntityTexture(entity); - GL11.glScalef(-1.0F, -1.0F, 1.0F); - this.boatModel.render(entity, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - } - - - /** - * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture. - * - * @param p_110775_1_ - */ - @Override - protected ResourceLocation getEntityTexture(Entity p_110775_1_) - { - return boatTexture; - } - - - @Override - public void doRender(Entity entity, double posX, double posY, double posZ, float p_76986_8_, float p_76986_9_) - { - this.doRender((EntityInflatableBoat) entity, posX, posY, posZ, p_76986_8_, p_76986_9_); - } -} From 04d83177a4e724b1b89f4d4017c8dca43d6040ff Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:29:34 -0400 Subject: [PATCH 065/462] Delete RendererItemAdventureHat.java --- client/render/RendererItemAdventureHat.java | 176 -------------------- 1 file changed, 176 deletions(-) delete mode 100644 client/render/RendererItemAdventureHat.java diff --git a/client/render/RendererItemAdventureHat.java b/client/render/RendererItemAdventureHat.java deleted file mode 100644 index e770243a..00000000 --- a/client/render/RendererItemAdventureHat.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.darkona.adventurebackpack.client.render; - - -import com.darkona.adventurebackpack.client.models.ModelAdventureHat; -import com.darkona.adventurebackpack.util.Resources; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; -import org.lwjgl.opengl.GL11; - - -/** - * Created by Darkona on 11/10/2014. - */ - - -public class RendererItemAdventureHat implements IItemRenderer -{ - - private final ModelAdventureHat model; - - public RendererItemAdventureHat() - { - model = ModelAdventureHat.instance; - } - - public boolean handleRenderType(ItemStack item, IItemRenderer.ItemRenderType type) - { - switch (type) - { - case INVENTORY: - return true; - case ENTITY: - return true; - case EQUIPPED: - return true; - case EQUIPPED_FIRST_PERSON: - return true; - case FIRST_PERSON_MAP: - return false; - } - return false; - } - - public boolean shouldUseRenderHelper(IItemRenderer.ItemRenderType type, ItemStack item, IItemRenderer.ItemRendererHelper helper) - { - switch (type) - { - case INVENTORY: - return true; - case ENTITY: - return true; - case EQUIPPED: - return true; - case EQUIPPED_FIRST_PERSON: - return true; - case FIRST_PERSON_MAP: - return false; - } - return false; - } - - public void renderItem(IItemRenderer.ItemRenderType type, ItemStack item, Object... data) - { - ResourceLocation modelTexture = Resources.modelTextures("adventureHat"); - Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); - switch (type) - { - case INVENTORY: - - { - GL11.glPushMatrix(); - GL11.glColor4f(1, 1, 1, 128); - - GL11.glPushMatrix(); - GL11.glTranslatef(-0.5f, -1.0f, -0.5f); - - GL11.glPushMatrix(); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(180F, 0.0F, 1.0F, 0.0F); - GL11.glPushMatrix(); - GL11.glScalef(1.5f, 1.5f, 1.5f); - - model.render((Entity) null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.05F); - - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - } - break; - case ENTITY: - Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); - { - GL11.glPushMatrix(); - GL11.glColor4f(1, 1, 1, 128); - - GL11.glPushMatrix(); - GL11.glTranslatef(0f, 0f, 0f); - - GL11.glPushMatrix(); - GL11.glRotatef(180, 0, 0, 1); - - GL11.glPushMatrix(); - GL11.glScalef(1.0f, 1.0f, 1.0f); - - model.render((Entity) null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.05F); - - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - } - break; - case EQUIPPED: - Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); - - GL11.glPushMatrix(); - GL11.glColor4f(1, 1, 1, 128); - GL11.glPushMatrix(); - GL11.glScalef(1.0f, 1.0f, 1.0f); - - GL11.glPushMatrix(); - GL11.glRotatef(180, 0, 0, 1); - - GL11.glPushMatrix(); - GL11.glRotatef(90, 0, 1, 0); - - GL11.glPushMatrix(); - GL11.glRotatef(-95, 1, 0, 0); - - GL11.glPushMatrix(); - GL11.glTranslatef(0.0f, 1.2f, -.6f); - - model.render((Entity) null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.05F); - - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - break; - case EQUIPPED_FIRST_PERSON: - Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); - - GL11.glPushMatrix(); - GL11.glColor4f(1, 1, 1, 128); - - GL11.glPushMatrix(); - GL11.glTranslatef(-.1f, 0f, 0.0f); - - GL11.glPushMatrix(); - GL11.glScalef(1.0f, 1.0f, 1.0f); - - GL11.glPushMatrix(); - GL11.glRotatef(180, 0, 0, 1); - - GL11.glPushMatrix(); - GL11.glRotatef(180, 0, 1, 0); - - model.render((Entity) null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.05F); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - break; - case FIRST_PERSON_MAP: - break; - } - } - -} \ No newline at end of file From bbfa4ec7b230d767fb004555c6e2080eeb2a0a12 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:29:42 -0400 Subject: [PATCH 066/462] Delete RendererItemAdventureBackpack.java --- .../render/RendererItemAdventureBackpack.java | 197 ------------------ 1 file changed, 197 deletions(-) delete mode 100644 client/render/RendererItemAdventureBackpack.java diff --git a/client/render/RendererItemAdventureBackpack.java b/client/render/RendererItemAdventureBackpack.java deleted file mode 100644 index f2644b59..00000000 --- a/client/render/RendererItemAdventureBackpack.java +++ /dev/null @@ -1,197 +0,0 @@ -package com.darkona.adventurebackpack.client.render; - -import com.darkona.adventurebackpack.AdventureBackpack; -import com.darkona.adventurebackpack.client.models.ModelBackpackBlock; -import com.darkona.adventurebackpack.inventory.InventoryBackpack; -import com.darkona.adventurebackpack.reference.BackpackNames; -import com.darkona.adventurebackpack.util.Resources; - -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.EntityClientPlayerMP; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; -import net.minecraftforge.event.entity.player.ItemTooltipEvent; -import net.minecraft.client.renderer.entity.Render; -import net.minecraft.client.renderer.entity.RenderManager; -import net.minecraft.client.renderer.entity.RenderPlayer; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.client.renderer.EntityRenderer; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraftforge.client.event.RenderPlayerEvent; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.client.entity.AbstractClientPlayer; -import org.lwjgl.opengl.GL11; - -/** - * Created on 12/10/2014 - * - * @author Darkona - */ -@SuppressWarnings("unused") -public class RendererItemAdventureBackpack implements IItemRenderer -{ - private final ModelBackpackBlock model; - private Minecraft mc; - - public RendererItemAdventureBackpack() - { - model = new ModelBackpackBlock(); - } - - public boolean handleRenderType(ItemStack item, IItemRenderer.ItemRenderType type) - { - switch (type) - { - case INVENTORY: - return true; - case ENTITY: - return true; - case EQUIPPED: - return true; - case EQUIPPED_FIRST_PERSON: - return true; - case FIRST_PERSON_MAP: - return false; - } - return false; - } - - public boolean shouldUseRenderHelper(IItemRenderer.ItemRenderType type, ItemStack item, IItemRenderer.ItemRendererHelper helper) - { - switch (type) - { - case INVENTORY: - return true; - case ENTITY: - return true; - case EQUIPPED: - return false; - case EQUIPPED_FIRST_PERSON: - return false; - case FIRST_PERSON_MAP: - return false; - } - return false; - } - - public void renderItem(IItemRenderer.ItemRenderType type, ItemStack backpack, Object... data) - { - InventoryBackpack inv = new InventoryBackpack(backpack); - ResourceLocation modelTexture; - if (BackpackNames.getBackpackColorName(backpack).equals("Standard")) - { - modelTexture = Resources.backpackTextureFromString(AdventureBackpack.instance.Holiday); - } else - { - modelTexture = Resources.backpackTextureFromColor(inv); - } - switch (type) - { - - case INVENTORY: - Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); - { - GL11.glPushMatrix(); - GL11.glColor4f(1, 1, 1, 128); - - GL11.glPushMatrix(); - GL11.glTranslatef(-0.5f, 0f, -0.5f); - - GL11.glPushMatrix(); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - - GL11.glPushMatrix(); - GL11.glScalef(1.9f, 1.9f, 1.9f); - - model.render(null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.05F, inv); - - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - } - break; - - case ENTITY: - Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); - { - GL11.glPushMatrix(); - GL11.glColor4f(1, 1, 1, 128); - - GL11.glPushMatrix(); - GL11.glTranslatef(0f, 1f, 0f); - - GL11.glPushMatrix(); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - - GL11.glPushMatrix(); - GL11.glScalef(1.2f, 1.2f, 1.2f); - - model.render(null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.05F, inv); - - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - } - break; - - case EQUIPPED: - Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); - - GL11.glPushMatrix(); - GL11.glColor4f(1, 1, 1, 128); - - GL11.glPushMatrix(); - GL11.glTranslatef(0.8f, 0.8f, 0.0f); - - GL11.glPushMatrix(); - GL11.glScalef(0.9f, 0.9f, 0.9f); - - GL11.glPushMatrix(); - GL11.glRotatef(180, 0, 0, 1); - GL11.glRotatef(90, 0, 1, 0); - - GL11.glPushMatrix(); - GL11.glRotatef(-45, 0, 1, 0); - model.render(null, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.05f, inv); - - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - break; - - case EQUIPPED_FIRST_PERSON: - Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); - - GL11.glPushMatrix(); - GL11.glColor4f(1, 1, 1, 128); - - GL11.glPushMatrix(); - GL11.glTranslatef(1f, 0.8f, 0.8f); - - GL11.glPushMatrix(); - GL11.glScalef(1.5f, 1.5f, 1.5f); - - GL11.glPushMatrix(); - GL11.glRotatef(195, 0, 0, 1); - - GL11.glPushMatrix(); - GL11.glRotatef(180, 0, 1, 0); - model.render(null, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.05f, inv); - - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - break; - case FIRST_PERSON_MAP: - break; - } - } - } \ No newline at end of file From 3afe6a80687c62c9a90f5785a17bf28ceb45dcda Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:30:10 -0400 Subject: [PATCH 067/462] Delete FluidEffectRegistry.java --- fluids/FluidEffectRegistry.java | 118 -------------------------------- 1 file changed, 118 deletions(-) delete mode 100644 fluids/FluidEffectRegistry.java diff --git a/fluids/FluidEffectRegistry.java b/fluids/FluidEffectRegistry.java deleted file mode 100644 index 02834e54..00000000 --- a/fluids/FluidEffectRegistry.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.darkona.adventurebackpack.fluids; - -import adventurebackpack.api.FluidEffect; -import com.darkona.adventurebackpack.fluids.effects.*; -import com.darkona.adventurebackpack.util.LogHelper; -import com.google.common.collect.BiMap; -import com.google.common.collect.HashBiMap; -import com.google.common.collect.ImmutableMap; -import net.minecraft.entity.Entity; -import net.minecraft.world.World; -import net.minecraftforge.fluids.Fluid; - -import java.util.ArrayList; -import java.util.Map; - -/** - * Created on 12/10/2014 - * - * @author Darkona - */ -public class FluidEffectRegistry -{ - static BiMap EFFECT_REGISTRY = HashBiMap.create(); - - public static FluidEffect WATER_EFFECT; - public static FluidEffect LAVA_EFFECT; - public static FluidEffect MILK_EFFECT; - public static FluidEffect MELON_EFFECT; - public static FluidEffect SOUP_EFFECT; - - private static int effectIDCounter = 0; - - public static void init() - { - EFFECT_REGISTRY.clear(); - WATER_EFFECT = new WaterEffect(); - LAVA_EFFECT = new LavaEffect(); - MILK_EFFECT = new MilkEffect(); - MELON_EFFECT = new MelonJuiceEffect(); - SOUP_EFFECT = new MushroomStewEffect(); - } - - /** - * @param effect - * @return - */ - public static int registerFluidEffect(FluidEffect effect) - { - String className = effect.getClass().getName(); - if (!EFFECT_REGISTRY.containsKey(className) && effect.fluid != null) - { - EFFECT_REGISTRY.put(className, effect); - effect.setEffectID(effectIDCounter); - LogHelper.info("Registered the class " + className + " as a FluidEffect for " + effect.fluid.getName() + " with the ID " + effectIDCounter); - effectIDCounter++; - return effectIDCounter; - } - return -1; - } - - public static Map getRegisteredFluidEffects() - { - return ImmutableMap.copyOf(EFFECT_REGISTRY); - } - - public static String[] getRegisteredFluids() - { - String[] result = new String[EFFECT_REGISTRY.size()]; - int counter = 0; - for (FluidEffect effect : getRegisteredFluidEffects().values()) - { - result[counter++] = effect.fluid.getName(); - } - return result; - } - - public static boolean hasFluidEffect(Fluid fluid) - { - for (FluidEffect effect : getRegisteredFluidEffects().values()) - { - if (fluid == effect.fluid) - { - return true; - } - } - return false; - } - - public static ArrayList getEffectsForFluid(Fluid fluid) - { - ArrayList effectsForFluid = new ArrayList(); - for (FluidEffect effect : EFFECT_REGISTRY.values()) - { - if (fluid == effect.fluid) - { - effectsForFluid.add(effect); - } - } - return effectsForFluid; - } - - public static boolean executeFluidEffectsForFluid(Fluid fluid, Entity entity, World world) - { - boolean executed = false; - for (FluidEffect effect : EFFECT_REGISTRY.values()) - { - if (effect != null) - { - if (effect.fluid == fluid) - { - effect.affectDrinker(world, entity); - executed = true; - } - } - } - return executed; - } -} From f9b6efed39d56ad52a06857b3ad6d9ad9dad7b87 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:30:15 -0400 Subject: [PATCH 068/462] Delete TankWrapper.java --- fluids/TankWrapper.java | 39 --------------------------------------- 1 file changed, 39 deletions(-) delete mode 100644 fluids/TankWrapper.java diff --git a/fluids/TankWrapper.java b/fluids/TankWrapper.java deleted file mode 100644 index fc1f472f..00000000 --- a/fluids/TankWrapper.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.darkona.adventurebackpack.fluids; - -import net.minecraftforge.fluids.Fluid; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidTank; - -/** - * Created on 17/01/2015 - * - * @author Darkona - */ -public class TankWrapper extends FluidTank -{ - public TankWrapper(int capacity) - { - super(capacity); - } - - public TankWrapper(FluidStack stack, int capacity) - { - super(stack, capacity); - } - - public TankWrapper(Fluid fluid, int amount, int capacity) - { - super(fluid, amount, capacity); - } - - public boolean isFull() - { - return this.fluid != null && this.getFluidAmount() == this.capacity; - } - - public boolean isEmpty() - { - return this.fluid == null || (this.getFluidAmount() == this.capacity); - } - -} From 732687c8a4c6b91ccb5b2fca1d1e92669e2dc411 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:30:22 -0400 Subject: [PATCH 069/462] Delete FluidMelonJuice.java --- fluids/FluidMelonJuice.java | 50 ------------------------------------- 1 file changed, 50 deletions(-) delete mode 100644 fluids/FluidMelonJuice.java diff --git a/fluids/FluidMelonJuice.java b/fluids/FluidMelonJuice.java deleted file mode 100644 index 3805c3ab..00000000 --- a/fluids/FluidMelonJuice.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.darkona.adventurebackpack.fluids; - -import com.darkona.adventurebackpack.client.Icons; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import net.minecraftforge.fluids.Fluid; -import net.minecraftforge.fluids.FluidStack; - -/** - * Created by Darkona on 12/10/2014. - */ -public class FluidMelonJuice extends Fluid -{ - - public FluidMelonJuice() - { - super("melonJuice"); - setUnlocalizedName("melonJuice"); - } - - @Override - public IIcon getStillIcon() - { - return Icons.melonJuiceStill; - } - - @Override - public IIcon getIcon() - { - return Icons.melonJuiceStill; - } - - @Override - public IIcon getFlowingIcon() - { - return Icons.melonJuiceFlowing; - } - - @Override - public int getColor(FluidStack stack) - { - return 0xc31d08; - } - - @Override - public boolean isGaseous(World world, int x, int y, int z) - { - return false; - } -} From c31027b87423ce460a2486cfe5d5e943e6d74dd6 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:30:28 -0400 Subject: [PATCH 070/462] Delete FluidMushroomStew.java --- fluids/FluidMushroomStew.java | 54 ----------------------------------- 1 file changed, 54 deletions(-) delete mode 100644 fluids/FluidMushroomStew.java diff --git a/fluids/FluidMushroomStew.java b/fluids/FluidMushroomStew.java deleted file mode 100644 index ebbcec88..00000000 --- a/fluids/FluidMushroomStew.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.darkona.adventurebackpack.fluids; - -import com.darkona.adventurebackpack.client.Icons; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import net.minecraftforge.fluids.Fluid; -import net.minecraftforge.fluids.FluidStack; - -/** - * Created on 11/01/2015 - * - * @author Darkona - */ -public class FluidMushroomStew extends Fluid -{ - public FluidMushroomStew() - { - super("mushroomStew"); - setDensity(1200); - setViscosity(1200); - setLuminosity(0); - } - - @Override - public IIcon getStillIcon() - { - return Icons.mushRoomStewStill; - } - - @Override - public IIcon getIcon() - { - return Icons.mushRoomStewStill; - } - - @Override - public IIcon getFlowingIcon() - { - return Icons.mushRoomStewFlowing; - } - - @Override - public int getColor(FluidStack stack) - { - //Color color1 = new Color(205,140,111); - return 0xcd8c6f; - } - - @Override - public boolean isGaseous(World world, int x, int y, int z) - { - return false; - } -} From 241e593d220a6ace2798b9040b558dad2999b022 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:30:34 -0400 Subject: [PATCH 071/462] Delete FluidMilk.java --- fluids/FluidMilk.java | 57 ------------------------------------------- 1 file changed, 57 deletions(-) delete mode 100644 fluids/FluidMilk.java diff --git a/fluids/FluidMilk.java b/fluids/FluidMilk.java deleted file mode 100644 index ca06b4cd..00000000 --- a/fluids/FluidMilk.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.darkona.adventurebackpack.fluids; - - -import com.darkona.adventurebackpack.client.Icons; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import net.minecraftforge.fluids.Fluid; -import net.minecraftforge.fluids.FluidStack; - -/** - * Created on 12/10/2014. - * @author Javier Darkona - */ -public class FluidMilk extends Fluid -{ - - public FluidMilk() - { - super("milk"); - setDensity(1200); - setViscosity(1200); - setLuminosity(0); - } - - - @Override - public IIcon getStillIcon() - { - return Icons.milkStill; - } - - @Override - public IIcon getIcon() - { - return Icons.milkStill; - } - - @Override - public IIcon getFlowingIcon() - { - return Icons.milkStill; - } - - @Override - public int getColor(FluidStack stack) - { - return 0xffffff; - } - - @Override - public boolean isGaseous(World world, int x, int y, int z) - { - return false; - } - - -} \ No newline at end of file From f3d05f87c2eca84c38ba41bd5592d9d63483af4e Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:30:41 -0400 Subject: [PATCH 072/462] Delete FuelEffect.java --- fluids/effects/FuelEffect.java | 47 ---------------------------------- 1 file changed, 47 deletions(-) delete mode 100644 fluids/effects/FuelEffect.java diff --git a/fluids/effects/FuelEffect.java b/fluids/effects/FuelEffect.java deleted file mode 100644 index bef8dab5..00000000 --- a/fluids/effects/FuelEffect.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.darkona.adventurebackpack.fluids.effects; - -import adventurebackpack.api.FluidEffect; -import com.darkona.adventurebackpack.util.Utils; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.world.World; -import net.minecraftforge.fluids.FluidRegistry; - -/** - * Created on 12/10/2014 - * - * @author Darkona - */ - - -public class FuelEffect extends FluidEffect -{ - - public FuelEffect() - { - super(FluidRegistry.getFluid("fuel"), 20); - } - - /** - * This method determines what will happen to the player when drinking the - * corresponding fluid. For example set potion effects, set player on fire, - * heal, fill hunger, etc. You can use the world parameter to make - * conditions based on where the player is. - * - * @param world The World. - * @param player The Player. - */ - @Override - public void affectDrinker(World world, Entity entity) - { - if (entity instanceof EntityPlayer) - { - EntityPlayer player = (EntityPlayer) entity; - player.addPotionEffect(new PotionEffect(Potion.confusion.getId(), this.timeInTicks, 2)); - player.addPotionEffect(new PotionEffect(Potion.moveSlowdown.getId(), this.timeInTicks, 1)); - player.addPotionEffect(new PotionEffect(Potion.poison.getId(), Utils.secondsToTicks(8), 0)); - } - } -} From c71f1a6fc7cecbd64f7d50a49c9370fa02de3e08 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:30:47 -0400 Subject: [PATCH 073/462] Delete WaterEffect.java --- fluids/effects/WaterEffect.java | 46 --------------------------------- 1 file changed, 46 deletions(-) delete mode 100644 fluids/effects/WaterEffect.java diff --git a/fluids/effects/WaterEffect.java b/fluids/effects/WaterEffect.java deleted file mode 100644 index 5b79427a..00000000 --- a/fluids/effects/WaterEffect.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.darkona.adventurebackpack.fluids.effects; - -import adventurebackpack.api.FluidEffect; -import com.darkona.adventurebackpack.util.Utils; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraftforge.common.BiomeDictionary; -import net.minecraftforge.fluids.FluidRegistry; - -/** - * Created on 12/10/2014. - * - * @author Javier Darkona - */ -@SuppressWarnings("unused") -public class WaterEffect extends FluidEffect -{ - - public WaterEffect() - { - super(FluidRegistry.WATER, 7); - } - - @Override - public void affectDrinker(World world, Entity entity) - { - if (entity instanceof EntityPlayer) - { - EntityPlayer player = (EntityPlayer) entity; - { - // player.getFoodStats().addStats(1, 0.1f); - if (player.isBurning()) - { - player.extinguish(); - }else { - player.addPotionEffect(new PotionEffect(Potion.regeneration.id, Utils.secondsToTicks(timeInSeconds), 0)); - } - } - - } - } -} From 141ff2f1133e0b577e7344d5ab166d8419516646 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:30:51 -0400 Subject: [PATCH 074/462] Delete OilEffect.java --- fluids/effects/OilEffect.java | 40 ----------------------------------- 1 file changed, 40 deletions(-) delete mode 100644 fluids/effects/OilEffect.java diff --git a/fluids/effects/OilEffect.java b/fluids/effects/OilEffect.java deleted file mode 100644 index 76c9f508..00000000 --- a/fluids/effects/OilEffect.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.darkona.adventurebackpack.fluids.effects; - -import adventurebackpack.api.FluidEffect; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.world.World; -import net.minecraftforge.fluids.FluidRegistry; - -/** - * Created by Darkona on 12/10/2014. - */ -public class OilEffect extends FluidEffect -{ - public OilEffect() - { - super(FluidRegistry.getFluid("oil"), 20); - } - - /** - * This method determines what will happen to the player when drinking the - * corresponding fluid. For example set potion effects, set player on fire, - * heal, fill hunger, etc. You can use the world parameter to make - * conditions based on where the player is. - * - * @param world The World. - * @param entity The Player. - */ - @Override - public void affectDrinker(World world, Entity entity) - { - if (entity instanceof EntityPlayer) - { - EntityPlayer player = (EntityPlayer) entity; - player.addPotionEffect(new PotionEffect(Potion.confusion.getId(), this.timeInTicks, 2)); - player.addPotionEffect(new PotionEffect(Potion.poison.getId(), this.timeInTicks / 2, 1)); - } - } -} From 210d9dae12037d0e74be8da10bbbedeac9eedb6b Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:30:57 -0400 Subject: [PATCH 075/462] Delete MushroomStewEffect.java --- fluids/effects/MushroomStewEffect.java | 30 -------------------------- 1 file changed, 30 deletions(-) delete mode 100644 fluids/effects/MushroomStewEffect.java diff --git a/fluids/effects/MushroomStewEffect.java b/fluids/effects/MushroomStewEffect.java deleted file mode 100644 index 037d7ddf..00000000 --- a/fluids/effects/MushroomStewEffect.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.darkona.adventurebackpack.fluids.effects; - -import adventurebackpack.api.FluidEffect; -import com.darkona.adventurebackpack.init.ModFluids; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.world.World; -import net.minecraftforge.fluids.FluidRegistry; - -/** - * Created on 11/01/2015 - * - * @author Darkona - */ -@SuppressWarnings("unused") -public class MushroomStewEffect extends FluidEffect -{ - public MushroomStewEffect() - { - super(FluidRegistry.getFluid("mushroomstew")); - } - @Override - public void affectDrinker(World world, Entity entity) - { - if(entity instanceof EntityPlayer) - { - ((EntityPlayer)entity).getFoodStats().addStats(6,0.6F); - } - } -} From 4ed3f741eca798c59cd98454a9bf74cfc5e5d565 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:31:04 -0400 Subject: [PATCH 076/462] Delete MilkEffect.java --- fluids/effects/MilkEffect.java | 29 ----------------------------- 1 file changed, 29 deletions(-) delete mode 100644 fluids/effects/MilkEffect.java diff --git a/fluids/effects/MilkEffect.java b/fluids/effects/MilkEffect.java deleted file mode 100644 index 36f0e860..00000000 --- a/fluids/effects/MilkEffect.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.darkona.adventurebackpack.fluids.effects; - -import adventurebackpack.api.FluidEffect; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.world.World; -import net.minecraftforge.fluids.FluidRegistry; - -/** - * Created on 12/10/2014. - * - * @author Javier Darkona - */ -public class MilkEffect extends FluidEffect -{ - public MilkEffect() - { - super(FluidRegistry.getFluid("milk"), 7); - } - - @Override - public void affectDrinker(World world, Entity entity) - { - if (entity instanceof EntityPlayer) - { - ((EntityPlayer) entity).clearActivePotions(); - } - } -} From 9febe4a81424d9d3c413157335717c9b72b371de Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:31:08 -0400 Subject: [PATCH 077/462] Delete MelonJuiceEffect.java --- fluids/effects/MelonJuiceEffect.java | 42 ---------------------------- 1 file changed, 42 deletions(-) delete mode 100644 fluids/effects/MelonJuiceEffect.java diff --git a/fluids/effects/MelonJuiceEffect.java b/fluids/effects/MelonJuiceEffect.java deleted file mode 100644 index 362e848a..00000000 --- a/fluids/effects/MelonJuiceEffect.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.darkona.adventurebackpack.fluids.effects; - -import adventurebackpack.api.FluidEffect; -import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; -import com.darkona.adventurebackpack.init.ModFluids; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.world.World; - -/** - * Created by Darkona on 12/10/2014. - */ -public class MelonJuiceEffect extends FluidEffect -{ - - public MelonJuiceEffect() - { - super(ModFluids.melonJuice, 30); - } - - /** - * This method determines what will happen to the player when drinking the - * corresponding fluid. For example set potion effects, set player on fire, - * heal, fill hunger, etc. You can use the world parameter to make - * conditions based on where the player is. - * - * @param world The World. - * @param player The Player. - */ - @Override - public void affectDrinker(World world, Entity entity) - { - if (entity instanceof EntityPlayer) - { - EntityPlayer player = (EntityPlayer) entity; - player.addPotionEffect(new PotionEffect(Potion.digSpeed.getId(), timeInTicks, 0)); - FluidEffectRegistry.WATER_EFFECT.affectDrinker(world, player); - } - } -} From 69da3aae53c2b854f8400d857e1f8569ecec89c4 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:31:13 -0400 Subject: [PATCH 078/462] Delete LavaEffect.java --- fluids/effects/LavaEffect.java | 34 ---------------------------------- 1 file changed, 34 deletions(-) delete mode 100644 fluids/effects/LavaEffect.java diff --git a/fluids/effects/LavaEffect.java b/fluids/effects/LavaEffect.java deleted file mode 100644 index 704cf129..00000000 --- a/fluids/effects/LavaEffect.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.darkona.adventurebackpack.fluids.effects; - -import adventurebackpack.api.FluidEffect; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.world.World; -import net.minecraftforge.fluids.FluidRegistry; - -/** - * Created by Darkona on 12/10/2014. - */ -public class LavaEffect extends FluidEffect -{ - public LavaEffect() - { - super(FluidRegistry.LAVA, 15); - } - - @Override - public void affectDrinker(World world, Entity entity) - { - if (entity instanceof EntityPlayer) - { - EntityPlayer player = (EntityPlayer) entity; - player.setFire(timeInSeconds); - player.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, timeInSeconds * 20 * 6, 2, false)); - player.addPotionEffect(new PotionEffect(Potion.jump.id, timeInSeconds * 20 * 6, 0, false)); - player.addPotionEffect(new PotionEffect(Potion.digSlowdown.id, timeInSeconds * 20 * 6, 3, false)); - } - } - -} From 1cd431bfe1e28264a64aac2dfecc53d5bbc88c7f Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:31:24 -0400 Subject: [PATCH 079/462] Delete ClientEventHandler.java --- handlers/ClientEventHandler.java | 120 ------------------------------- 1 file changed, 120 deletions(-) delete mode 100644 handlers/ClientEventHandler.java diff --git a/handlers/ClientEventHandler.java b/handlers/ClientEventHandler.java deleted file mode 100644 index 2cdb9bc7..00000000 --- a/handlers/ClientEventHandler.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.darkona.adventurebackpack.handlers; - -import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.common.ServerActions; -import com.darkona.adventurebackpack.init.ModNetwork; -import com.darkona.adventurebackpack.inventory.SlotTool; -import com.darkona.adventurebackpack.item.ItemAdventureBackpack; -import com.darkona.adventurebackpack.item.ItemHose; -import com.darkona.adventurebackpack.network.CycleToolPacket; -import com.darkona.adventurebackpack.reference.BackpackNames; -import com.darkona.adventurebackpack.util.Wearing; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.EntityClientPlayerMP; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.EnumChatFormatting; -import net.minecraftforge.client.event.MouseEvent; -import net.minecraftforge.event.entity.player.ItemTooltipEvent; -import net.minecraftforge.fluids.FluidTank; - -/** - * Created on 17/10/2014 - * - * @author Darkona - */ -public class ClientEventHandler -{ - /** - * Makes the tool tips of the backpacks have the Tank information displayed below. - */ - @SubscribeEvent - @SideOnly(Side.CLIENT) - public void toolTips(ItemTooltipEvent event) - { - if (event.itemStack.getItem() instanceof ItemAdventureBackpack) - { - NBTTagCompound compound = event.itemStack.stackTagCompound; - FluidTank tank = new FluidTank(Constants.basicTankCapacity); - String tankInfo = ""; - if (compound != null) - { - if (compound.hasKey("leftTank")) - { - tank.readFromNBT(compound.getCompoundTag("leftTank")); - String name = tank.getFluid() == null ? "" : tank.getFluid().getLocalizedName(); - tankInfo = EnumChatFormatting.BLUE + "Left Tank: " + tank.getFluidAmount() + "/" + tank.getCapacity() + " " + name; - - event.toolTip.add(tankInfo); - } - if (compound.hasKey("rightTank")) - { - tank.readFromNBT(compound.getCompoundTag("rightTank")); - String name = tank.getFluid() == null ? "" : tank.getFluid().getLocalizedName(); - tankInfo = EnumChatFormatting.RED + "Right Tank: " + tank.getFluidAmount() + "/" + tank.getCapacity() + " " + name; - - event.toolTip.add(tankInfo); - } - } - } - } - - /** - * @param event - */ - @SubscribeEvent - @SideOnly(Side.CLIENT) - public void mouseWheelDetect(MouseEvent event) - { - /*Special thanks go to MachineMuse, both for inspiration and the event. God bless you girl.*/ - Minecraft mc = Minecraft.getMinecraft(); - int dWheel = event.dwheel; - if (dWheel != 0) - { - //LogHelper.debug("Mouse Wheel moving"); - EntityClientPlayerMP player = mc.thePlayer; - boolean hasCape = player.func_152122_n(); - hasCape = event.buttonstate && hasCape; - @SuppressWarnings("unused") - float f4; - - if (hasCape && !player.isInvisible() && !player.getHideCape()) - if (player != null && !player.isDead && player.isSneaking()) - { - ItemStack backpack = Wearing.getWearingBackpack(player); - if (backpack != null && backpack.getItem() instanceof ItemAdventureBackpack) - { - if (player.getCurrentEquippedItem() != null) - { - int slot = player.inventory.currentItem; - ItemStack heldItem = player.inventory.getStackInSlot(slot); - Item theItem = heldItem.getItem(); - - if (SlotTool.isValidTool(heldItem) || - (BackpackNames.getBackpackColorName(backpack).equals("Skeleton") && theItem.equals(Items.bow))) - { - ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(dWheel, slot, CycleToolPacket.CYCLE_TOOL_ACTION)); - ServerActions.cycleTool(player, dWheel, slot); - event.setCanceled(true); - } - - if (theItem instanceof ItemHose) - { - ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(dWheel, slot, CycleToolPacket.SWITCH_HOSE_ACTION)); - ServerActions.switchHose(player, ServerActions.HOSE_SWITCH, dWheel, slot); - event.setCanceled(true); - { - - } - } - } - } - } - } - } -} \ No newline at end of file From 8eb13b6bc4504f3a189d8a2a0c38a0890c304c5b Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:31:29 -0400 Subject: [PATCH 080/462] Delete RenderHandler.java --- handlers/RenderHandler.java | 35 ----------------------------------- 1 file changed, 35 deletions(-) delete mode 100644 handlers/RenderHandler.java diff --git a/handlers/RenderHandler.java b/handlers/RenderHandler.java deleted file mode 100644 index 0f0f0a7a..00000000 --- a/handlers/RenderHandler.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.darkona.adventurebackpack.handlers; - -import com.darkona.adventurebackpack.proxy.ClientProxy; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraftforge.client.event.RenderPlayerEvent; - -/** - * Created on 25/12/2014 - * - * @author Darkona - */ -public class RenderHandler -{ - @SubscribeEvent - @SideOnly(Side.CLIENT) - public void playerSpecialsRendering(RenderPlayerEvent.Specials.Pre event) - { - - float rotationY = event.renderer.modelBipedMain.bipedBody.rotateAngleY; - float rotationX = event.renderer.modelBipedMain.bipedBody.rotateAngleX; - float rotationZ = event.renderer.modelBipedMain.bipedBody.rotateAngleZ; - - double x = event.entity.posX; - double y = event.entity.posY; - double z = event.entity.posZ; - - float pitch = event.entity.rotationPitch; - float yaw = event.entity.rotationYaw; - ClientProxy.rendererWearableEquipped.render(event.entity, x, y, z, rotationX, rotationY, rotationZ, pitch, yaw); - - event.renderCape = true; - } -} From c400c71ee692ee47e7355a6ef86cb42883bd39bd Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:31:41 -0400 Subject: [PATCH 081/462] Delete PlayerEventHandler.java --- handlers/PlayerEventHandler.java | 315 ------------------------------- 1 file changed, 315 deletions(-) delete mode 100644 handlers/PlayerEventHandler.java diff --git a/handlers/PlayerEventHandler.java b/handlers/PlayerEventHandler.java deleted file mode 100644 index 617bf025..00000000 --- a/handlers/PlayerEventHandler.java +++ /dev/null @@ -1,315 +0,0 @@ -package com.darkona.adventurebackpack.handlers; - -import com.darkona.adventurebackpack.common.ServerActions; -import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.entity.EntityFriendlySpider; -import com.darkona.adventurebackpack.entity.ai.EntityAIHorseFollowOwner; -import com.darkona.adventurebackpack.init.ModBlocks; -import com.darkona.adventurebackpack.init.ModItems; -import com.darkona.adventurebackpack.item.IBackWearableItem; -import com.darkona.adventurebackpack.playerProperties.BackpackProperty; -import com.darkona.adventurebackpack.proxy.ServerProxy; -import com.darkona.adventurebackpack.reference.BackpackNames; -import com.darkona.adventurebackpack.util.LogHelper; -import com.darkona.adventurebackpack.util.Utils; -import com.darkona.adventurebackpack.util.Wearing; -import cpw.mods.fml.common.eventhandler.Event; -import cpw.mods.fml.common.eventhandler.EventPriority; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.common.gameevent.PlayerEvent; -import cpw.mods.fml.common.gameevent.TickEvent; -import net.minecraft.entity.EntityCreature; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.monster.EntitySpider; -import net.minecraft.entity.passive.EntityHorse; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemNameTag; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.ChunkCoordinates; -import net.minecraftforge.event.entity.EntityEvent; -import net.minecraftforge.event.entity.EntityJoinWorldEvent; -import net.minecraftforge.event.entity.living.LivingDeathEvent; -import net.minecraftforge.event.entity.living.LivingEvent; -import net.minecraftforge.event.entity.living.LivingFallEvent; -import net.minecraftforge.event.entity.player.EntityInteractEvent; -import net.minecraftforge.event.entity.player.PlayerWakeUpEvent; -import com.darkona.adventurebackpack.develop.msg; - -/** - * Created on 11/10/2014 - * Handle ALL the events! - * - * @author Darkona - * @see com.darkona.adventurebackpack.client.ClientActions - */ -public class PlayerEventHandler -{ - @SuppressWarnings("unused") - private static int tickCounter = 0; - @SubscribeEvent - public void registerBackpackProperty(EntityEvent.EntityConstructing event) - { - if (event.entity instanceof EntityPlayer && BackpackProperty.get((EntityPlayer) event.entity) == null) - { - BackpackProperty.register((EntityPlayer) event.entity); - /*if (!event.entity.worldObj.isRemote) - { - AdventureBackpack.proxy.joinPlayer((EntityPlayer)event.entity); - }*/ - } - - } - @SubscribeEvent - public void joinPlayer(EntityJoinWorldEvent event) - { - if (!event.world.isRemote) - { - if (Utils.notNullAndInstanceOf(event.entity, EntityPlayer.class)) - { - EntityPlayer player = (EntityPlayer) event.entity; - LogHelper.info("Joined EntityPlayer of name: " + event.entity.getCommandSenderName()); - BackpackProperty.syncToNear(player); - msg.handleJoin(player); - NBTTagCompound playerData = ServerProxy.extractPlayerProps(player.getUniqueID()); - if (playerData != null) - { - BackpackProperty.get(player).loadNBTData(playerData); - BackpackProperty.syncToNear(player); - BackpackProperty.sync(player); - LogHelper.info("Stored properties retrieved"); - } - } - } - - } - - @SubscribeEvent - public NBTTagCompound playerLogsIn(PlayerEvent.PlayerLoggedInEvent event) - { - if (event.player instanceof EntityPlayerMP) - { - BackpackProperty.sync(event.player); - return new NBTTagCompound(); - } - return null; - } - - @SubscribeEvent - public void playerTravelsAcrossDimensions(PlayerEvent.PlayerChangedDimensionEvent event) - { - if (event.player instanceof EntityPlayerMP) - { - BackpackProperty.sync(event.player); - } - } - - /** - * Used for the Piston Boots to give them their amazing powers. - * - * @param event - */ - @SubscribeEvent - public void onPlayerJump(LivingEvent.LivingJumpEvent event) - { - if (event.entity != null && - event.entityLiving instanceof EntityPlayer) - { - EntityPlayer player = (EntityPlayer) event.entity; - - - if (Wearing.isWearingBoots(player) && player.onGround) - { - ServerActions.pistonBootsJump(player); - } - } - } - - /** - * Used by the Piston boots to lessen the fall damage. It's hacky, but I don't care. - * - * @param event - */ - @SubscribeEvent - public void onFall(LivingFallEvent event) - { - if (event.entity != null) - { - if (event.entityLiving instanceof EntityCreature && ConfigHandler.FIX_LEAD) - { - EntityCreature creature = (EntityCreature) event.entityLiving; - if (creature.getLeashed() && creature.getLeashedToEntity() != null && creature.getLeashedToEntity() instanceof EntityPlayer) - { - EntityPlayer player = (EntityPlayer) creature.getLeashedToEntity(); - if (creature.motionY > -2.0f && player.motionY > -2.0f) - { - event.setCanceled(true); - } - } - } - - if (event.entityLiving instanceof EntityFriendlySpider) - { - if (((EntityFriendlySpider) event.entityLiving).riddenByEntity != null - && ((EntityFriendlySpider) event.entityLiving).riddenByEntity instanceof EntityPlayer - && event.distance < 5) - { - event.setCanceled(true); - } - } - - if (event.entityLiving instanceof EntityPlayer) - { - if (Wearing.isWearingBoots(((EntityPlayer) event.entityLiving)) && event.distance < 8) - { - event.setCanceled(true); - } - if(Wearing.isWearingTheRightBackpack((EntityPlayer)event.entityLiving,"IronGolem") && ConfigHandler.BACKPACK_ABILITIES) - { - event.setCanceled(true); - } - } - } - } - - - @SubscribeEvent(priority = EventPriority.LOW) - public void playerDies(LivingDeathEvent event) - { - if (Utils.notNullAndInstanceOf(event.entity, EntityPlayer.class)) - { - EntityPlayer player = (EntityPlayer) event.entity; - if (!player.worldObj.isRemote) - { - //LogHelper.info("Player died"); - BackpackProperty props = BackpackProperty.get(player); - - if (props.hasWearable()) - { - //We want to keep the wearables on the player if KeepInventory is active. - if (!player.getEntityWorld().getGameRules().getGameRuleBooleanValue("keepInventory")) - { - //So if it isn't, we drop it like it's hot, drop it like it's hot, drop it like it's hot. - ((IBackWearableItem) props.getWearable().getItem()).onPlayerDeath(player.worldObj, player, props.getWearable()); - } - } - - if (props.isForcedCampFire()) - { - ChunkCoordinates lastCampFire = BackpackProperty.get(player).getCampFire(); - if (lastCampFire != null) - { - player.setSpawnChunk(lastCampFire, false, player.dimension); - } - //Set the forced spawn coordinates on the campfire. False, because the player must respawn at spawn point if there's no campfire. - } - ServerProxy.storePlayerProps(player); - } - } - event.setResult(Event.Result.ALLOW); - } - - @SubscribeEvent - public void playerCraftsBackpack(PlayerEvent.ItemCraftedEvent event) - { - if (event.crafting.getItem() == ModItems.adventureBackpack) - { - LogHelper.info("Player crafted a backpack, and that backpack's appearance is: " + event.crafting.getTagCompound().getString("colorName")); - if (BackpackNames.getBackpackColorName(event.crafting).equals("Dragon")) - { - event.player.dropPlayerItemWithRandomChoice(new ItemStack(Blocks.dragon_egg, 1), false); - event.player.playSound("mob.enderdragon.growl", 1.0f, 5.0f); - } - } - } - - @SubscribeEvent - public void interactWithCreatures(EntityInteractEvent event) - { - EntityPlayer player = event.entityPlayer; - if (!event.entityPlayer.worldObj.isRemote) - { - if (Utils.notNullAndInstanceOf(event.target, EntitySpider.class)) - { - if (Wearing.isWearingTheRightBackpack(player, "Spider")) - { - EntityFriendlySpider pet = new EntityFriendlySpider(event.target.worldObj); - pet.setLocationAndAngles(event.target.posX, event.target.posY, event.target.posZ, event.target.rotationYaw, event.target.rotationPitch); - event.target.setDead(); - event.entityPlayer.worldObj.spawnEntityInWorld(pet); - event.entityPlayer.mountEntity(pet); - } - } - if (Utils.notNullAndInstanceOf(event.target, EntityHorse.class)) - { - ItemStack stack = player.getCurrentEquippedItem(); - EntityHorse horse = (EntityHorse) event.target; - if (stack != null && stack.getItem() != null && stack.getItem() instanceof ItemNameTag && stack.hasDisplayName()) - { - if (horse.getCustomNameTag() == null || horse.getCustomNameTag().equals("") && horse.isTame()) - { - horse.setTamedBy(player); - horse.tasks.addTask(4, new EntityAIHorseFollowOwner(horse, 1.5d, 2.0f, 20.0f)); - - if (horse.getAttributeMap().getAttributeInstance(SharedMonsterAttributes.followRange) != null) - { - horse.getAttributeMap().getAttributeInstance(SharedMonsterAttributes.followRange).setBaseValue(100.0D); - LogHelper.info("The horse follow range is now: " + horse.getEntityAttribute(SharedMonsterAttributes.followRange).getBaseValue()); - } - } - } - } - } - event.setResult(Event.Result.ALLOW); - } - - @SubscribeEvent - public void playerWokeUp(PlayerWakeUpEvent event) - { - if (event.entity.worldObj.isRemote) return; - ChunkCoordinates bedLocation = event.entityPlayer.getBedLocation(event.entityPlayer.dimension); - if (bedLocation != null && event.entityPlayer.worldObj.getBlock(bedLocation.posX, bedLocation.posY, bedLocation.posZ) == ModBlocks.blockSleepingBag) - { - //If the player wakes up in one of those super confortable SleepingBags (tm) (Patent Pending) - BackpackProperty.get(event.entityPlayer).setForceCampFire(true); - LogHelper.info("Player just woke up in a sleeping bag, forcing respawn in the last lighted campfire, if there's any"); - } else - { - //If it's a regular bed or whatever - BackpackProperty.get(event.entityPlayer).setForceCampFire(false); - } - } - - - @SubscribeEvent - public void tickPlayer(TickEvent.PlayerTickEvent event) - { - if (event.player != null && !event.player.isDead && Wearing.isWearingWearable(event.player)) - { - if(event.phase == TickEvent.Phase.START) - { - BackpackProperty.get(event.player).executeWearableUpdateProtocol(); - } - if (event.phase == TickEvent.Phase.END) - { - if (event.side.isServer()) - { - BackpackProperty.syncToNear(event.player); -// if (Utils.notNullAndInstanceOf(event.player.openContainer, IWearableContainer.class)) -// { -// //playerMP.sendContainerAndContentsToPlayer(playerMP.openContainer, playerMP.openContainer.getInventory()); -// BackpackProperty.syncToNear(event.player); -// }else -// { -// BackpackProperty.syncToNear(event.player); -// } - } - } - } - } - - -} - From a8e116a8ee71f785f3aa932de7c673d60ec7d9df Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:31:48 -0400 Subject: [PATCH 082/462] Delete KeybindHandler.java --- handlers/KeybindHandler.java | 108 ----------------------------------- 1 file changed, 108 deletions(-) delete mode 100644 handlers/KeybindHandler.java diff --git a/handlers/KeybindHandler.java b/handlers/KeybindHandler.java deleted file mode 100644 index be15a885..00000000 --- a/handlers/KeybindHandler.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.darkona.adventurebackpack.handlers; - -import com.darkona.adventurebackpack.common.ServerActions; -import com.darkona.adventurebackpack.config.Keybindings; -import com.darkona.adventurebackpack.entity.EntityFriendlySpider; -import com.darkona.adventurebackpack.init.ModNetwork; -import com.darkona.adventurebackpack.item.ItemHose; -import com.darkona.adventurebackpack.network.*; -import com.darkona.adventurebackpack.reference.Key; -import com.darkona.adventurebackpack.util.Wearing; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.common.gameevent.InputEvent; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; - -/** - * Created by Darkona on 11/10/2014. - */ -public class KeybindHandler -{ - - private static Key getPressedKeyBinding() - { - if (Keybindings.openBackpack.isPressed()) - { - return Key.INVENTORY_KEY; - } - if (Keybindings.toggleHose.isPressed()) - { - return Key.TOGGLE_KEY; - } - - if (Minecraft.getMinecraft().gameSettings.keyBindJump.isPressed()) - { - return Key.JUMP; - } - return Key.UNKNOWN; - } - - @SubscribeEvent - public void handleKeyInputEvent(InputEvent.KeyInputEvent event) - { - Key keypressed = getPressedKeyBinding(); - Minecraft mc = Minecraft.getMinecraft(); - EntityPlayer player = mc.thePlayer; - - if(player != null) - { - if (keypressed == Key.INVENTORY_KEY) - { - if (mc.inGameHasFocus) - { - ModNetwork.net.sendToServer(new SyncPropertiesPacket.Message()); - if (Wearing.isWearingBackpack(player)) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_KEYBIND)); - } - if (Wearing.isWearingCopter(player)) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.COPTER_GUI, GUIPacket.FROM_KEYBIND)); - } - if (Wearing.isWearingSteam(player)) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.JETPACK_GUI, GUIPacket.FROM_KEYBIND)); - } - } - } - - if (keypressed == Key.TOGGLE_KEY) - { - if(player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemHose) - { - ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(0, (player).inventory.currentItem, CycleToolPacket.TOGGLE_HOSE_TANK)); - ServerActions.switchHose(player, ServerActions.HOSE_TOGGLE, 0, (player).inventory.currentItem); - } - if (Wearing.isWearingCopter(player)) - { - if (!player.isSneaking()) - { - ModNetwork.net.sendToServer(new WearableModePacket.Message(WearableModePacket.COPTER_TOGGLE, "")); - ServerActions.toggleCopterPack(player, Wearing.getWearingCopter(player), WearableModePacket.COPTER_TOGGLE); - } else - { - ModNetwork.net.sendToServer(new WearableModePacket.Message(WearableModePacket.COPTER_ON_OFF, "")); - ServerActions.toggleCopterPack(player, Wearing.getWearingCopter(player), WearableModePacket.COPTER_ON_OFF); - } - } - if (Wearing.isWearingSteam(player)) - { - if (player.isSneaking()) - { - ModNetwork.net.sendToServer(new WearableModePacket.Message(WearableModePacket.JETPACK_ON_OFF, "")); - ServerActions.toggleSteamJetpack(player, Wearing.getWearingSteam(player), WearableModePacket.JETPACK_ON_OFF); - } - } - } - - if(keypressed == Key.JUMP ) - { - if(player.ridingEntity != null && player.ridingEntity instanceof EntityFriendlySpider) - { - ModNetwork.net.sendToServer(new PlayerActionPacket.ActionMessage(PlayerActionPacket.spiderJump)); - ((EntityFriendlySpider)player.ridingEntity).setJumping(true); - } - } - } - } -} \ No newline at end of file From 7e6770b627a85a53e6dc1e1073223a826807cb1a Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:31:53 -0400 Subject: [PATCH 083/462] Delete GuiHandler.java --- handlers/GuiHandler.java | 142 --------------------------------------- 1 file changed, 142 deletions(-) delete mode 100644 handlers/GuiHandler.java diff --git a/handlers/GuiHandler.java b/handlers/GuiHandler.java deleted file mode 100644 index 1c4a3b20..00000000 --- a/handlers/GuiHandler.java +++ /dev/null @@ -1,142 +0,0 @@ -package com.darkona.adventurebackpack.handlers; - -import com.darkona.adventurebackpack.block.TileAdventureBackpack; -import com.darkona.adventurebackpack.client.gui.GuiAdvBackpack; -import com.darkona.adventurebackpack.client.gui.GuiCopterPack; -import com.darkona.adventurebackpack.client.gui.GuiCoalJetpack; -import com.darkona.adventurebackpack.inventory.*; -import com.darkona.adventurebackpack.util.Wearing; -import cpw.mods.fml.common.network.IGuiHandler; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.world.World; - -/** - * Created on 12/10/2014 - * - * @author Darkona - */ -public class GuiHandler implements IGuiHandler -{ - public static final byte JETPACK_WEARING = 6; - public static final byte JETPACK_HOLDING = 5; - public static final byte COPTER_WEARING = 4; - public static final byte COPTER_HOLDING = 3; - public static final byte BACKPACK_HOLDING = 2; - public static final byte BACKPACK_WEARING = 1; - public static final byte BACKPACK_TILE = 0; - - - public GuiHandler() - { - } - - @Override - public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) - { - switch (ID) - { - case BACKPACK_TILE: - if (world.getTileEntity(x, y, z) != null && world.getTileEntity(x, y, z) instanceof TileAdventureBackpack) - { - return new ContainerBackpack(player, (TileAdventureBackpack) world.getTileEntity(x, y, z), ContainerBackpack.SOURCE_TILE); - } - break; - case BACKPACK_WEARING: - if (Wearing.isWearingBackpack(player)) - { - return new ContainerBackpack(player, new InventoryBackpack(Wearing.getWearingBackpack(player)), ContainerBackpack.SOURCE_WEARING); - } - break; - case BACKPACK_HOLDING: - if (Wearing.isHoldingBackpack(player)) - { - return new ContainerBackpack(player, new InventoryBackpack(Wearing.getHoldingBackpack(player)), ContainerBackpack.SOURCE_HOLDING); - } - break; - case COPTER_HOLDING: - if (Wearing.isHoldingCopter(player)) - { - return new ContainerCopter(player, new InventoryCopterPack(Wearing.getHoldingCopter(player)),false); - } - break; - case COPTER_WEARING: - if (Wearing.isWearingCopter(player)) - { - return new ContainerCopter(player, new InventoryCopterPack(Wearing.getWearingCopter(player)), true); - } - break; - case JETPACK_HOLDING: - if (Wearing.isHoldingSteam(player)) - { - return new ContainerJetpack(player, new InventoryCoalJetpack(Wearing.getHoldingSteam(player)),false); - } - break; - case JETPACK_WEARING: - if (Wearing.isWearingSteam(player)) - { - return new ContainerJetpack(player, new InventoryCoalJetpack(Wearing.getWearingSteam(player)), true); - } - break; - default: - player.closeScreen(); - break; - } - - return null; - - } - - @Override - public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) - { - switch (ID) - { - case BACKPACK_TILE: - if (world.getTileEntity(x, y, z) != null && world.getTileEntity(x, y, z) instanceof TileAdventureBackpack) - { - return new GuiAdvBackpack(player, (TileAdventureBackpack) world.getTileEntity(x, y, z)); - } - break; - case BACKPACK_WEARING: - if (Wearing.isWearingBackpack(player)) - { - return new GuiAdvBackpack(player, new InventoryBackpack(Wearing.getWearingBackpack(player)), true); - } - break; - case BACKPACK_HOLDING: - if (Wearing.isHoldingBackpack(player)) - { - return new GuiAdvBackpack(player, new InventoryBackpack(Wearing.getHoldingBackpack(player)), false); - } - break; - case COPTER_HOLDING: - if (Wearing.isHoldingCopter(player)) - { - return new GuiCopterPack(player, new InventoryCopterPack(Wearing.getHoldingCopter(player)),false); - } - break; - case COPTER_WEARING: - if (Wearing.isWearingCopter(player)) - { - return new GuiCopterPack(player, new InventoryCopterPack(Wearing.getWearingCopter(player)), true); - } - break; - case JETPACK_HOLDING: - if (Wearing.isHoldingSteam(player)) - { - return new GuiCoalJetpack(player, new InventoryCoalJetpack(Wearing.getHoldingSteam(player)),false); - } - break; - case JETPACK_WEARING: - if (Wearing.isWearingSteam(player)) - { - return new GuiCoalJetpack(player, new InventoryCoalJetpack(Wearing.getWearingSteam(player)), true); - } - break; - default: - player.closeScreen(); - break; - } - return null; - } -} From 41779285f07c7b5020926499312924b55f0e62d0 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:31:58 -0400 Subject: [PATCH 084/462] Delete GeneralEventHandler.java --- handlers/GeneralEventHandler.java | 175 ------------------------------ 1 file changed, 175 deletions(-) delete mode 100644 handlers/GeneralEventHandler.java diff --git a/handlers/GeneralEventHandler.java b/handlers/GeneralEventHandler.java deleted file mode 100644 index de24fb6b..00000000 --- a/handlers/GeneralEventHandler.java +++ /dev/null @@ -1,175 +0,0 @@ -package com.darkona.adventurebackpack.handlers; - -import com.darkona.adventurebackpack.common.ServerActions; -import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.entity.ai.EntityAIHorseFollowOwner; -import com.darkona.adventurebackpack.events.WearableEvent; -import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; -import com.darkona.adventurebackpack.init.ModNetwork; -import com.darkona.adventurebackpack.inventory.InventoryBackpack; -import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; -import com.darkona.adventurebackpack.util.Utils; -import com.darkona.adventurebackpack.util.Wearing; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.EntityAITasks; -import net.minecraft.entity.passive.EntityHorse; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Items; -import net.minecraft.item.ItemAppleGold; -import net.minecraft.item.ItemPotion; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.EnumChatFormatting; -import net.minecraftforge.event.entity.EntityJoinWorldEvent; -import net.minecraftforge.event.entity.EntityStruckByLightningEvent; -import net.minecraftforge.event.entity.player.ArrowLooseEvent; -import net.minecraftforge.event.entity.player.ArrowNockEvent; -import net.minecraftforge.event.entity.player.PlayerUseItemEvent; -import net.minecraftforge.fluids.FluidRegistry; - -import java.util.UUID; - -/** - * Created on 17/10/2014 - * - * @author Darkona - */ -public class GeneralEventHandler -{ - /** - * @param event - */ - @SubscribeEvent - public void eatGoldenApple(PlayerUseItemEvent.Finish event) - { - EntityPlayer player = event.entityPlayer; - if (ConfigHandler.BACKPACK_ABILITIES) - { - if (event.item.getItem() instanceof ItemAppleGold && - //((ItemAppleGold) event.item.getItem()).getRarity(event.item) == EnumRarity.epic && - Wearing.isWearingTheRightBackpack(player, "Rainbow")) - { - - InventoryBackpack inv = new InventoryBackpack(Wearing.getWearingBackpack(player)); - if (inv.getLastTime() > 0) return; - inv.setLastTime(Utils.secondsToTicks(150)); - inv.dirtyTime(); - if (!player.worldObj.isRemote) - { - String nyanString = - EnumChatFormatting.RED + "N" + - EnumChatFormatting.GOLD + "Y" + - EnumChatFormatting.YELLOW + "A" + - EnumChatFormatting.GREEN + "N" + - EnumChatFormatting.AQUA + "C" + - EnumChatFormatting.BLUE + "A" + - EnumChatFormatting.DARK_PURPLE + "T"; - player.addChatComponentMessage(new ChatComponentText(nyanString)); - ModNetwork.sendToNearby(new EntitySoundPacket.Message(EntitySoundPacket.NYAN_SOUND, player), player); - } - } - } - - if (event.item.getItem() instanceof ItemPotion - && (event.item.getItem()).getDamage(event.item) == 0) - { - if (!player.worldObj.isRemote) - { - FluidEffectRegistry.executeFluidEffectsForFluid(FluidRegistry.WATER, player, player.getEntityWorld()); - } - } - } - - @SubscribeEvent - public void detectBow(ArrowNockEvent event) - { - if (!ConfigHandler.BACKPACK_ABILITIES) return; - if (Wearing.isWearingTheRightBackpack(event.entityPlayer, "Skeleton")) - { - InventoryBackpack backpack = new InventoryBackpack(Wearing.getWearingBackpack(event.entityPlayer)); - if (backpack.hasItem(Items.arrow)) - { - event.entityPlayer.setItemInUse(event.result, event.result.getMaxItemUseDuration()); - event.setCanceled(true); - } - } - } - - @SubscribeEvent - public void detectArrow(ArrowLooseEvent event) - { - if (!ConfigHandler.BACKPACK_ABILITIES) return; - if (Wearing.isWearingTheRightBackpack(event.entityPlayer, "Skeleton")) - { - InventoryBackpack backpack = new InventoryBackpack(Wearing.getWearingBackpack(event.entityPlayer)); - if (backpack.hasItem(Items.arrow)) - { - ServerActions.leakArrow(event.entityPlayer, event.bow, event.charge); - event.setCanceled(true); - } - } - } - - /** - * @param event - */ - @SubscribeEvent - public void detectLightning(EntityStruckByLightningEvent event) - { - if (event.entity != null && event.entity instanceof EntityPlayer) - { - ServerActions.electrify((EntityPlayer) event.entity); - } - } - - @SubscribeEvent - public void makeHorsesFollowOwner(EntityJoinWorldEvent event) - { - if(!ConfigHandler.BACKPACK_ABILITIES)return; - if(event.entity instanceof EntityHorse) - { - - EntityHorse horse = ((EntityHorse)event.entity); - if(!horse.isDead && horse.isTame() && horse.hasCustomNameTag()) - { - String ownerUUIDstring = horse.func_152119_ch(); - if (ownerUUIDstring != null && !ownerUUIDstring.isEmpty()) - { - boolean set = true; - if(horse.worldObj.func_152378_a(UUID.fromString(ownerUUIDstring)) != null) - { - for (Object entry : horse.tasks.taskEntries) - { - if (((EntityAITasks.EntityAITaskEntry) entry).action instanceof EntityAIHorseFollowOwner) - { - set = false; - } - } - } - if(set) - { - horse.tasks.addTask(4, new EntityAIHorseFollowOwner(horse, 1.5d, 2.0f, 20.0f)); - - if (horse.getAttributeMap().getAttributeInstance(SharedMonsterAttributes.followRange) != null) - { - horse.getAttributeMap().getAttributeInstance(SharedMonsterAttributes.followRange).setBaseValue(100.0D); - } - } - } - } - } - } - - @SubscribeEvent - public void backpackUnequipped(WearableEvent.UnequipWearableEvent event) - { - - - } - - /* @SubscribeEvent - public void listFluids(FluidRegistry.FluidRegisterEvent event) - { - LogHelper.info("Registered fluid " + event.fluidName + " with id " + event.fluidID); - }*/ -} From 1cc6afb0f8e8463d419c86b399b52872cfcbf30f Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:32:10 -0400 Subject: [PATCH 085/462] Delete ArmorAB.java --- item/ArmorAB.java | 66 ----------------------------------------------- 1 file changed, 66 deletions(-) delete mode 100644 item/ArmorAB.java diff --git a/item/ArmorAB.java b/item/ArmorAB.java deleted file mode 100644 index 7e29bb0f..00000000 --- a/item/ArmorAB.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.darkona.adventurebackpack.item; - -import com.darkona.adventurebackpack.CreativeTabAB; -import com.darkona.adventurebackpack.init.ModMaterials; -import com.darkona.adventurebackpack.reference.ModInfo; -import com.darkona.adventurebackpack.util.Resources; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemArmor; -import net.minecraft.item.ItemStack; - -/** - * Created on 11/10/2014. - * @author Javier Darkona - */ -public class ArmorAB extends ItemArmor -{ - - /** - * @param type 2 Chain - * @param renderIndex 0 Helmet, 1 Plate, 2 Pants, 3 Boots - */ - public ArmorAB(int renderIndex, int type) - { - super(ModMaterials.ruggedLeather, renderIndex, type); - setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); - } - - - protected String getUnwrappedUnlocalizedName(String unlocalizedName) - { - return unlocalizedName.substring(unlocalizedName.indexOf(".") + 1); - } - - - @Override - public String getUnlocalizedName(ItemStack stack) - { - return getUnlocalizedName(); - } - - @Override - public String getUnlocalizedName() - { - return String.format("item.%s%s", ModInfo.MOD_ID.toLowerCase() + ":", getUnwrappedUnlocalizedName(super.getUnlocalizedName())); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - itemIcon = iconRegister.registerIcon(this.getUnlocalizedName().substring(this.getUnlocalizedName().indexOf(".") + 1)); - } - - @Override - @SideOnly(Side.CLIENT) - public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) - { - String uName = this.getUnlocalizedName(); - return Resources.modelTextureResourceString(uName.substring(uName.indexOf(":") + 1)) + "_texture.png"; - //return Textures.modelTextureName(getUnwrappedUnlocalizedName(super.getUnlocalizedName())); - } - -} From 2cb762bceb991aa101de142ceac64e6660eb1ee3 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:32:15 -0400 Subject: [PATCH 086/462] Delete IBackWearableItem.java --- item/IBackWearableItem.java | 32 -------------------------------- 1 file changed, 32 deletions(-) delete mode 100644 item/IBackWearableItem.java diff --git a/item/IBackWearableItem.java b/item/IBackWearableItem.java deleted file mode 100644 index c9467e3b..00000000 --- a/item/IBackWearableItem.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.darkona.adventurebackpack.item; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.model.ModelBiped; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraft.world.World; - -/** - * Created on 08/01/2015 - * - * @author Darkona - */ -public interface IBackWearableItem -{ - public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack); - - public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack); - - public void onEquipped(World world, EntityPlayer player, ItemStack stack); - - public void onUnequipped(World world, EntityPlayer player, ItemStack stack); - - @SideOnly(Side.CLIENT) - public ModelBiped getWearableModel(ItemStack wearable); - - @SideOnly(Side.CLIENT) - public ResourceLocation getWearableTexture(ItemStack wearable); - -} From b3fc8449863a13eee2542c98ba6c2c357cd55e68 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:32:20 -0400 Subject: [PATCH 087/462] Delete ItemAB.java --- item/ItemAB.java | 52 ------------------------------------------------ 1 file changed, 52 deletions(-) delete mode 100644 item/ItemAB.java diff --git a/item/ItemAB.java b/item/ItemAB.java deleted file mode 100644 index 3bcf1a16..00000000 --- a/item/ItemAB.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.darkona.adventurebackpack.item; - -import com.darkona.adventurebackpack.CreativeTabAB; -import com.darkona.adventurebackpack.reference.ModInfo; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - -/** - * Created by Darkona on 10/10/2014. - */ -public class ItemAB extends Item -{ - - public ItemAB() - { - super(); - setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); - } - - @Override - public String getUnlocalizedName(ItemStack stack) - { - return String.format("item.%s%s", ModInfo.MOD_ID.toLowerCase() + ":", getUnwrappedUnlocalizedName(super.getUnlocalizedName())); - } - - @Override - public String getUnlocalizedName() - { - return String.format("item.%s%s", ModInfo.MOD_ID.toLowerCase() + ":", getUnwrappedUnlocalizedName(super.getUnlocalizedName())); - } - - public String getUnlocalizedName(String name) - { - return String.format("item.%s%s", ModInfo.MOD_ID.toLowerCase() + ":", name); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - itemIcon = iconRegister.registerIcon(this.getUnlocalizedName().substring(this.getUnlocalizedName().indexOf(".") + 1)); - } - - - protected String getUnwrappedUnlocalizedName(String unlocalizedName) - { - return unlocalizedName.substring(unlocalizedName.indexOf(".") + 1); - } -} From 9cbe29bad2c5c8965ca2278a4e7f410f482ae3a5 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:32:28 -0400 Subject: [PATCH 088/462] Delete ItemAdventureBackpack.java --- item/ItemAdventureBackpack.java | 374 -------------------------------- 1 file changed, 374 deletions(-) delete mode 100644 item/ItemAdventureBackpack.java diff --git a/item/ItemAdventureBackpack.java b/item/ItemAdventureBackpack.java deleted file mode 100644 index f9e0f9cb..00000000 --- a/item/ItemAdventureBackpack.java +++ /dev/null @@ -1,374 +0,0 @@ -package com.darkona.adventurebackpack.item; - -import com.darkona.adventurebackpack.AdventureBackpack; -import com.darkona.adventurebackpack.block.BlockAdventureBackpack; -import com.darkona.adventurebackpack.block.TileAdventureBackpack; -import com.darkona.adventurebackpack.client.models.ModelBackpackArmor; -import com.darkona.adventurebackpack.common.BackpackAbilities; -import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.events.WearableEvent; -import com.darkona.adventurebackpack.init.ModBlocks; -import com.darkona.adventurebackpack.init.ModItems; -import com.darkona.adventurebackpack.init.ModNetwork; -import com.darkona.adventurebackpack.network.GUIPacket; -import com.darkona.adventurebackpack.playerProperties.BackpackProperty; -import com.darkona.adventurebackpack.proxy.ClientProxy; -import com.darkona.adventurebackpack.reference.BackpackNames; -import com.darkona.adventurebackpack.util.BackpackUtils; -import com.darkona.adventurebackpack.util.Resources; -import com.darkona.adventurebackpack.util.Utils; -import com.darkona.adventurebackpack.util.Wearing; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.client.model.ModelBiped; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.ChunkCoordinates; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.ResourceLocation; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.common.util.ForgeDirection; - -import java.util.List; - -/** - * Created on 12/10/2014 - * - * @author Darkona - */ -public class ItemAdventureBackpack extends ItemAB implements IBackWearableItem -{ - - - public ItemAdventureBackpack() - { - super(); - setUnlocalizedName("adventureBackpack"); - setFull3D(); - setMaxStackSize(1); - } - - - public static Item getItemFromBlock(Block block) - { - return block instanceof BlockAdventureBackpack ? ModItems.adventureBackpack : null; - } - - /** - * Return the enchantability factor of the item, most of the timeInSeconds is based on material. - */ - @Override - public int getItemEnchantability() - { - return 0; - } - - /** - * Return whether this item is repairable in an anvil. - * - * @param p_82789_1_ - * @param p_82789_2_ - */ - @Override - public boolean getIsRepairable(ItemStack p_82789_1_, ItemStack p_82789_2_) - { - return false; - } - - /** - * Determines if the durability bar should be rendered for this item. - * Defaults to vanilla stack.isDamaged behavior. - * But modders can use this for any data they wish. - * - * @param stack The current Item Stack - * @return True if it should render the 'durability' bar. - */ - @Override - public boolean showDurabilityBar(ItemStack stack) - { - return false; - } - - /** - * Queries the percentage of the 'Durability' bar that should be drawn. - * - * @param stack The current ItemStack - * @return 1.0 for 100% 0 for 0% - */ - @Override - public double getDurabilityForDisplay(ItemStack stack) - { - return 1; - } - - @Override - public String getItemStackDisplayName(ItemStack stack) - { - return "Adventure Backpack";// + stack.getTagCompound().getString("colorName"); - } - - @Override - public void onCreated(ItemStack stack, World par2World, EntityPlayer par3EntityPlayer) - { - - super.onCreated(stack, par2World, par3EntityPlayer); - BackpackNames.setBackpackColorNameFromDamage(stack, stack.getItemDamage()); - } - - public boolean placeBackpack(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, boolean from) - { - if (!stack.hasTagCompound()) stack.setTagCompound(new NBTTagCompound()); - if (!player.canPlayerEdit(x, y, z, side, stack)) return false; - if (!stack.stackTagCompound.hasKey("colorName") || stack.stackTagCompound.getString("colorName").isEmpty()) - { - stack.stackTagCompound.setString("colorName", "Standard"); - } - - // world.spawnEntityInWorld(new EntityLightningBolt(world, x, y, z)); - BlockAdventureBackpack backpack = ModBlocks.blockBackpack; - - if (y <= 0 || y >= world.getHeight()) - { - return false; - } - if (backpack.canPlaceBlockOnSide(world, x, y, z, side)) - { - if (world.getBlock(x, y, z).getMaterial().isSolid()) - { - switch (side) - { - case 0: - --y; - break; - case 1: - ++y; - break; - case 2: - --z; - break; - case 3: - ++z; - break; - case 4: - --x; - break; - case 5: - ++x; - break; - } - } - if (y <= 0 || y >= world.getHeight()) - { - return false; - } - if (backpack.canPlaceBlockAt(world, x, y, z)) - { - if (world.setBlock(x, y, z, ModBlocks.blockBackpack)) - { - backpack.onBlockPlacedBy(world, x, y, z, player, stack); - world.playSoundAtEntity(player, BlockAdventureBackpack.soundTypeCloth.getStepResourcePath(), 0.5f, 1.0f); - ((TileAdventureBackpack) world.getTileEntity(x, y, z)).loadFromNBT(stack.stackTagCompound); - if (from) - { - player.inventory.decrStackSize(player.inventory.currentItem, 1); - } else - { - BackpackProperty.get(player).setWearable(null); - } - WearableEvent event = new WearableEvent(player, stack); - MinecraftForge.EVENT_BUS.post(event); - return true; - } - } - } - return false; - } - - @Override - public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) - { - return player.canPlayerEdit(x, y, z, side, stack) && placeBackpack(stack, player, world, x, y, z, side, true); - } - - @Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) - { - MovingObjectPosition mop = getMovingObjectPositionFromPlayer(world, player, true); - if (mop == null || mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY) - { - if (world.isRemote) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); - } - } - return stack; - } - - - @Override - public boolean isDamageable() - { - return false; - } - - @Override - public boolean onDroppedByPlayer(ItemStack stack, EntityPlayer player) - { - return true; - } - - @SideOnly(Side.CLIENT) - @Override - public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack stack, int armorSlot) - { - return new ModelBackpackArmor(); - } - - @SideOnly(Side.CLIENT) - @Override - public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) - { - String modelTexture; - if (BackpackNames.getBackpackColorName(stack).equals("Standard")) - { - modelTexture = Resources.backpackTextureFromString(AdventureBackpack.instance.Holiday).toString(); - } else - { - modelTexture = Resources.backpackTexturesStringFromColor(stack); - } - return modelTexture; - } - - @Override - @SuppressWarnings({"rawtypes", "unchecked"}) - @SideOnly(Side.CLIENT) - public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4) - { - NBTTagCompound backpackData = BackpackUtils.getBackpackData(stack); - if (backpackData != null) - { - if (backpackData.hasKey("colorName")) - { - list.add(backpackData.getString("colorName")); - } - } - } - - - @SuppressWarnings({"unchecked", "rawtypes"}) - @Override - @SideOnly(Side.CLIENT) - public void getSubItems(Item item, CreativeTabs par2CreativeTabs, List subItems) - { - for (int i = 0; i < BackpackNames.backpackNames.length; i++) - { - ItemStack bp = new ItemStack(this, 1, 0); - bp.setItemDamage(i); - NBTTagCompound c = new NBTTagCompound(); - c.setString("colorName", BackpackNames.backpackNames[i]); - BackpackUtils.setBackpackData(bp, c); - subItems.add(bp); - } - } - - @Override - public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) - { - - if (!ConfigHandler.BACKPACK_ABILITIES) return; - if (world == null || player == null || stack == null) return; - - if (BackpackAbilities.hasAbility(BackpackNames.getBackpackColorName(stack))) - { - BackpackAbilities.backpackAbilities.executeAbility(player, world, stack); - } - } - - @Override - public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) - { - if(world.isRemote)return; - - if (Wearing.isWearingTheRightBackpack(player, "Creeper")) - { - player.worldObj.createExplosion(player, player.posX, player.posY, player.posZ, 4.0F, false); - } - - if(ConfigHandler.BACKPACK_DEATH_PLACE) - { - if (!tryPlace(world, player, stack)) - { - player.dropPlayerItemWithRandomChoice(stack, false); - BackpackProperty.get(player).setWearable(null); - } - }else{ - player.dropPlayerItemWithRandomChoice(stack, false); - BackpackProperty.get(player).setWearable(null); - } - } - - private boolean tryPlace(World world, EntityPlayer player, ItemStack backpack) - { - int X = (int) player.posX; - int Z = (int) player.posZ; - int positions[] = {0,-1,1,-2,2,-3,3,-4,4,-5,5,-6,6}; - - for (int Y: positions) - { - ChunkCoordinates spawn = - Utils.getNearestEmptyChunkCoordinatesSpiral(world, X, Z, X, (int)player.posY + Y, Z, 12, true, 1, (byte) 0, false); - if (spawn != null) - { - return placeBackpack(backpack, player, world, spawn.posX, spawn.posY, spawn.posZ, ForgeDirection.UP.ordinal(), false); - } - } - return false; - } - - @Override - public void onEquipped(World world, EntityPlayer player, ItemStack stack) - { - - } - - @Override - public void onUnequipped(World world, EntityPlayer player, ItemStack stack) - { - if(BackpackAbilities.hasRemoval(BackpackNames.getBackpackColorName(stack))) - { - BackpackAbilities.backpackAbilities.executeRemoval(player, world, stack); - } - } - - @Override - @SideOnly(Side.CLIENT) - public ModelBiped getWearableModel(ItemStack wearable) - { - return ClientProxy.modelAdventureBackpack.setWearable(wearable); - } - - @Override - @SideOnly(Side.CLIENT) - public ResourceLocation getWearableTexture(ItemStack wearable){ - - ResourceLocation modelTexture; - - if (BackpackNames.getBackpackColorName(wearable).equals("Standard")) - { - modelTexture = Resources.backpackTextureFromString(AdventureBackpack.instance.Holiday); - } else - { - modelTexture = Resources.backpackTextureFromString(BackpackNames.getBackpackColorName(wearable)); - } - return modelTexture; - } - - -} From 9e3f08fdcfeb51160ca7fb96f25e448325fd9295 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:32:35 -0400 Subject: [PATCH 089/462] Delete ItemAdventureHat.java --- item/ItemAdventureHat.java | 42 -------------------------------------- 1 file changed, 42 deletions(-) delete mode 100644 item/ItemAdventureHat.java diff --git a/item/ItemAdventureHat.java b/item/ItemAdventureHat.java deleted file mode 100644 index 9e89dbe9..00000000 --- a/item/ItemAdventureHat.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.darkona.adventurebackpack.item; - -import com.darkona.adventurebackpack.client.models.ModelAdventureHat; -import com.darkona.adventurebackpack.util.Resources; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.model.ModelBiped; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemStack; - -/** - * Created by Darkona on 11/10/2014. - */ -public class ItemAdventureHat extends ArmorAB -{ - - public ItemAdventureHat() - { - super(2, 0); - setUnlocalizedName("adventureHat"); - } - - @Override - @SideOnly(Side.CLIENT) - public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) - { - return new ModelAdventureHat(); - } - - - @SideOnly(Side.CLIENT) - @Override - public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) - { - String modelTexture; - modelTexture = Resources.modelTextures("adventureHat").toString(); - - return modelTexture; - } -} - From f43234fd07bbd8313bc51795a5f6ed48fb712d47 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:32:41 -0400 Subject: [PATCH 090/462] Delete ItemAdventureJacket.java --- item/ItemAdventureJacket.java | 46 ----------------------------------- 1 file changed, 46 deletions(-) delete mode 100644 item/ItemAdventureJacket.java diff --git a/item/ItemAdventureJacket.java b/item/ItemAdventureJacket.java deleted file mode 100644 index a10a9ce8..00000000 --- a/item/ItemAdventureJacket.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.darkona.adventurebackpack.item; - -import com.darkona.adventurebackpack.client.models.ModelFullArmor; -import com.darkona.adventurebackpack.util.Resources; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.model.ModelBiped; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; - -/** - * Created on 11/10/2014 - * - * @author Darkona - */ -@SuppressWarnings("unused") -public class ItemAdventureJacket extends ArmorAB -{ - - public ItemAdventureJacket() - { - super(1, 1); - setUnlocalizedName("adventureSuit"); - } - - @Override - public boolean isValidArmor(ItemStack stack, int armorType, Entity entity) - { - return armorType == 1; - } - - @Override - public IIcon getIcon(ItemStack stack, int pass) - { - return itemIcon; - } - - @Override - @SideOnly(Side.CLIENT) - public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) - { - return Resources.modelTextureResourceString("adventureSuit_texture.png"); - } -} From f4e7896b1b9d7c5fd21826aa7556bcf39a6e4213 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:32:47 -0400 Subject: [PATCH 091/462] Delete ItemAdventurePantaloon.java --- item/ItemAdventurePantaloon.java | 53 -------------------------------- 1 file changed, 53 deletions(-) delete mode 100644 item/ItemAdventurePantaloon.java diff --git a/item/ItemAdventurePantaloon.java b/item/ItemAdventurePantaloon.java deleted file mode 100644 index cbee8b4a..00000000 --- a/item/ItemAdventurePantaloon.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.darkona.adventurebackpack.item; - -import com.darkona.adventurebackpack.client.models.ModelFullArmor; -import com.darkona.adventurebackpack.util.Resources; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.model.ModelBiped; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; - -/** - * Created on 11/10/2014 - * - * @author Darkona - */ -public class ItemAdventurePantaloon extends ArmorAB -{ - - public ItemAdventurePantaloon() - { - super(2, 2); - setUnlocalizedName("pants"); - } - - @Override - public boolean isValidArmor(ItemStack stack, int armorType, Entity entity) - { - return armorType == 2; - } - - @Override - public IIcon getIcon(ItemStack stack, int pass) - { - return itemIcon; - } - - @Override - @SideOnly(Side.CLIENT) - public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) - { - return Resources.modelTextureResourceString("adventurepants_texture.png"); - } - - @Override - @SideOnly(Side.CLIENT) - public ModelBiped getArmorModel(EntityLivingBase entity, ItemStack itemStack, int armorSlot) - { - return new ModelFullArmor(); - } - -} From d61722c3ccd8f7c9f5eb52598af11422f9282a25 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:32:54 -0400 Subject: [PATCH 092/462] Delete ItemCoalJetpack.java --- item/ItemCoalJetpack.java | 292 -------------------------------------- 1 file changed, 292 deletions(-) delete mode 100644 item/ItemCoalJetpack.java diff --git a/item/ItemCoalJetpack.java b/item/ItemCoalJetpack.java deleted file mode 100644 index d849796d..00000000 --- a/item/ItemCoalJetpack.java +++ /dev/null @@ -1,292 +0,0 @@ -package com.darkona.adventurebackpack.item; - -import com.darkona.adventurebackpack.init.ModNetwork; -import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; -import com.darkona.adventurebackpack.network.GUIPacket; -import com.darkona.adventurebackpack.network.PlayerActionPacket; -import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; -import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; -import com.darkona.adventurebackpack.playerProperties.BackpackProperty; -import com.darkona.adventurebackpack.proxy.ClientProxy; -import com.darkona.adventurebackpack.util.Resources; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.Minecraft; -import net.minecraft.client.model.ModelBiped; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraft.world.World; -import net.minecraftforge.common.BiomeDictionary; -import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fluids.FluidStack; - -/** - * Created on 15/01/2015 - * - * @author Darkona - */ -public class ItemCoalJetpack extends ItemAB implements IBackWearableItem -{ - - public static byte OFF_MODE = 0; - public static byte NORMAL_MODE = 1; - - public ItemCoalJetpack() - { - super(); - setUnlocalizedName("CoalJetpack"); - setFull3D(); - setMaxStackSize(1); - } - - @Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) - { - if (world.isRemote) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.JETPACK_GUI, GUIPacket.FROM_HOLDING)); - } - return stack; - } - - private void runFirebox(InventoryCoalJetpack inv) - { - if (inv.getBurnTicks() <= 0) - { - inv.setBurnTicks(inv.consumeFuel()); - inv.currentItemBurnTime = inv.getBurnTicks(); - } - inv.dirtyInventory(); - } - - private void runHeater(InventoryCoalJetpack inv, World world, EntityPlayer player) - { - int temperature = inv.getTemperature(); - int burnTicks = inv.getBurnTicks() - 1; - int coolTicks = inv.getCoolTicks() - 1; - - if (burnTicks > 0) - { - if (temperature < InventoryCoalJetpack.MAX_TEMPERATURE) - { - if (burnTicks % inv.getIncreasingFactor() == 0) - { - ++temperature; - coolTicks = coolTicks < 5000 ? coolTicks + 100 : coolTicks; - } - } - } else if (burnTicks <= 0) - { - inv.currentItemBurnTime = 0; - if (coolTicks % inv.getDecreasingFactor() == 0) - { - temperature = (temperature - 1 >= getBiomeMinTemp(player, world)) ? temperature - 1 : 0; - } - } - inv.setTemperature(temperature); - inv.setCoolTicks(coolTicks); - inv.setBurnTicks(burnTicks <= 0 ? 0 : burnTicks); - } - - private int getBiomeMinTemp(EntityPlayer player, World world) - { - BiomeDictionary.Type[] thisBiomeTypes = BiomeDictionary.getTypesForBiome(world.getBiomeGenForCoords((int) player.posX, (int) player.posZ)); - for (BiomeDictionary.Type type : thisBiomeTypes) - { - if (type == BiomeDictionary.Type.COLD || type == BiomeDictionary.Type.SNOWY) - { - return 0; - } - if (type == BiomeDictionary.Type.HOT || type == BiomeDictionary.Type.BEACH) - { - return 30; - } - if (type == BiomeDictionary.Type.NETHER) - { - return 40; - } - } - return 25; - } - - @Override - public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) - { - InventoryCoalJetpack inv = new InventoryCoalJetpack(stack); - inv.openInventory(); - boolean mustFizzz = !inv.isInUse(); - int CoalConsumed = 13; - boolean canUse = inv.getCoalTank().drain(CoalConsumed,false) != null; - - if (inv.getStatus()) - { - runFirebox(inv); - } - runHeater(inv, world, player); - runLava(inv, world, player); - inv.dirtyBoiler(); - - //Suction - if(player.isInWater()) - { - inv.getWaterTank().fill(new FluidStack(FluidRegistry.WATER,2),true); - } - - //Elevation - if (world.isRemote) - { - if (inv.getStatus() && canUse && Minecraft.getMinecraft().gameSettings.keyBindJump.getIsKeyPressed()) - { - inv.setInUse(true); - ModNetwork.net.sendToServer(new PlayerActionPacket.ActionMessage(PlayerActionPacket.JETPACK_IN_USE)); - if (mustFizzz) - { - ModNetwork.net.sendToServer(new EntitySoundPacket.Message(EntitySoundPacket.JETPACK_FIZZ, player)); - } - } else - { - inv.setInUse(false); - ModNetwork.net.sendToServer(new PlayerActionPacket.ActionMessage(PlayerActionPacket.JETPACK_NOT_IN_USE)); - } - } - - if (inv.isInUse() && canUse) - { - - elevate(player); - inv.getCoalTank().drain(CoalConsumed, true); - if (inv.getCoalTank().getFluidAmount() == 0) - { - inv.setInUse(false); - } - player.moveFlying(player.moveStrafing, player.moveForward, 0.02f); - if(player.fallDistance > 1) - { - player.fallDistance -= 1; - } - if(player.motionY >= 0) - { - player.fallDistance = 0; - } - if(!world.isRemote) - ModNetwork.sendToNearby(new EntityParticlePacket.Message(EntityParticlePacket.JETPACK_PARTICLE, player), player); - - } - inv.closeInventory(); - } - - private void runLava(InventoryCoalJetpack inv, World world, EntityPlayer player) - { - int temperature = inv.getTemperature(); - boolean mustSSSSS = !inv.isLeaking(); - boolean mustBlublub = !inv.isLava(); - boolean Lava = inv.isLava(); - boolean leaking = inv.isLeaking(); - - if (temperature >= 100 && inv.getWaterTank().getFluidAmount() > 0) - { - if(!Lava)Lava = true; - - if (!world.isRemote && mustBlublub) - { - ModNetwork.net.sendTo(new EntitySoundPacket.Message(EntitySoundPacket.BOILING_BUBBLES, player), (EntityPlayerMP) player); - } - } else - { - if (Lava) - { - Lava = false; - } - } - - if (Lava) - { - if (inv.getCoalTank().getFluidAmount() < inv.getCoalTank().getCapacity()) - { - if (inv.getWaterTank().getFluid() != null) - { - int lava = inv.getWaterTank().drain((temperature / 100), true).amount; - inv.getCoalTank().fill(new FluidStack(FluidRegistry.getFluid("lava"), lava * 4), true); - inv.dirtyTanks(); - } - } - } - - if (inv.getCoalTank().getFluidAmount() < inv.getCoalTank().getCapacity() - 100) - { - if (leaking) - { - leaking = false; - } - } else - { - if (!leaking) - { - leaking = true; - if (!world.isRemote && mustSSSSS) - { - ModNetwork.net.sendTo(new EntitySoundPacket.Message(EntitySoundPacket.LEAKING_STEAM, player), (EntityPlayerMP) player); - } - } - } - inv.setLava(Lava); - inv.setLeaking(leaking); - inv.setTemperature(temperature); - } - - public static void elevate(EntityPlayer player) - { - if (player.motionY <= 0.32 && player.posY < 100) - { - player.motionY += 0.1; - } else - { - if (player.posY < 100) player.motionY = Math.max(player.motionY, 0.32); - if (player.posY > 100) player.motionY = 0.32 - ((player.posY % 100) / 100); - } - } - - @Override - public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) - { - onUnequipped(world, player, stack); - player.dropPlayerItemWithRandomChoice(stack.copy(), false); - BackpackProperty.get(player).setWearable(null); - } - - @Override - public void onEquipped(World world, EntityPlayer player, ItemStack stack) - { - InventoryCoalJetpack inv = new InventoryCoalJetpack(stack); - inv.calculateLostTime(); - if(inv.getTemperature() == 0)inv.setTemperature(getBiomeMinTemp(player, world)); - } - - @Override - public void onUnequipped(World world, EntityPlayer player, ItemStack stack) - { - InventoryCoalJetpack inv = new InventoryCoalJetpack(stack); - inv.setLava(false); - inv.setInUse(false); - inv.setLeaking(false); - inv.setStatus(false); - inv.setSystemTime(System.currentTimeMillis()); - inv.markDirty(); - } - - @Override - @SideOnly(Side.CLIENT) - public ModelBiped getWearableModel(ItemStack wearable) - { - return ClientProxy.modelCoalJetpack.setWearable(wearable); - } - - @Override - @SideOnly(Side.CLIENT) - public ResourceLocation getWearableTexture(ItemStack wearable) - { - return Resources.modelTextures("CoalJetpack"); - } -} From 2c79cdaecd8eb04db6041ba70a569804dd0f1079 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:33:08 -0400 Subject: [PATCH 093/462] Delete ItemComponent.java --- item/ItemComponent.java | 264 ---------------------------------------- 1 file changed, 264 deletions(-) delete mode 100644 item/ItemComponent.java diff --git a/item/ItemComponent.java b/item/ItemComponent.java deleted file mode 100644 index 3eb58c02..00000000 --- a/item/ItemComponent.java +++ /dev/null @@ -1,264 +0,0 @@ -package com.darkona.adventurebackpack.item; - -import com.darkona.adventurebackpack.entity.EntityInflatableBoat; -import com.darkona.adventurebackpack.util.LogHelper; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.*; -import net.minecraft.world.World; - -import java.util.HashMap; -import java.util.List; - -/** - * Created on 11/10/2014 - * @author Darkona - * - */ -public class ItemComponent extends ItemAB -{ - private HashMap componentIcons = new HashMap(); - private String[] names = { - "sleepingBag", - "backpackTank", - "hoseHead", - "macheteHandle", - "copterEngine", - "copterBlades", - "inflatableBoat", - "inflatableBoatMotorized", - "hydroBlades", - - }; - - - public ItemComponent() - { - setNoRepair(); - setHasSubtypes(true); - setMaxStackSize(16); - this.setUnlocalizedName("backpackComponent"); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - - for(String name : names){ - IIcon temporalIcon = iconRegister.registerIcon(super.getUnlocalizedName(name).substring(this.getUnlocalizedName().indexOf(".") + 1)); - componentIcons.put(name, temporalIcon); - } - - - itemIcon = iconRegister.registerIcon(super.getUnlocalizedName("sleepingBag").substring(this.getUnlocalizedName().indexOf(".") + 1)); - } - - @Override - public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) - { - return super.getIcon(stack, renderPass, player, usingItem, useRemaining); - } - - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIconFromDamage(int damage) - { - return componentIcons.get(names[damage-1]); - - } - - @Override - public String getUnlocalizedName(ItemStack stack) - { - return super.getUnlocalizedName(names[getDamage(stack)-1]); - - } - - @Override - @SideOnly(Side.CLIENT) - @SuppressWarnings({ "unchecked", "rawtypes" }) - public void getSubItems(Item item, CreativeTabs creativeTabs, List list) - { - for (int i = 1; i <= names.length; i++) - { - list.add(new ItemStack(this, 1, i)); - } - } - - @Override - public boolean onItemUse(ItemStack itemStack, EntityPlayer player, World world, int x, int y, int z, int meta, float f1, float f2, float f3) - { - return false; - /*if (itemStack.getItemDamage() != 1) return true; - if (world.isRemote) - { - return true; - } else if (meta != 1) - { - return false; - } else - { - /* ++y; - BlockSleepingBag blockbed = ModBlocks.blockSleepingBag; - int i1 = MathHelper.floor_double((double) (player.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; - byte b0 = 0; - byte b1 = 0; - - if (i1 == 0) - { - b1 = 1; - } - - if (i1 == 1) - { - b0 = -1; - } - - if (i1 == 2) - { - b1 = -1; - } - - if (i1 == 3) - { - b0 = 1; - } - - if (player.canPlayerEdit(x, y, z, meta, itemStack) && player.canPlayerEdit(x + b0, y, z + b1, meta, itemStack)) - { - if (world.isAirBlock(x, y, z) && world.isAirBlock(x + b0, y, z + b1) && World.doesBlockHaveSolidTopSurface(world, x, y - 1, z) && World.doesBlockHaveSolidTopSurface(world, x + b0, y - 1, z + b1)) - { - world.setBlock(x, y, z, blockbed, i1, 3); - - if (world.getBlock(x, y, z) == blockbed) - { - world.setBlock(x + b0, y, z + b1, blockbed, i1 + 8, 3); - } - - --itemStack.stackSize; - return true; - } else - { - return false; - } - } else - { - return false; - } - }*/ - } - - - private ItemStack placeBoat(ItemStack stack, World world, EntityPlayer player, boolean motorized) - { - float f = 1.0F; - float f1 = player.prevRotationPitch + (player.rotationPitch - player.prevRotationPitch) * f; - float f2 = player.prevRotationYaw + (player.rotationYaw - player.prevRotationYaw) * f; - double d0 = player.prevPosX + (player.posX - player.prevPosX) * (double) f; - double d1 = player.prevPosY + (player.posY - player.prevPosY) * (double) f + 1.62D - (double) player.yOffset; - double d2 = player.prevPosZ + (player.posZ - player.prevPosZ) * (double) f; - Vec3 vec3 = Vec3.createVectorHelper(d0, d1, d2); - float f3 = MathHelper.cos(-f2 * 0.017453292F - (float) Math.PI); - float f4 = MathHelper.sin(-f2 * 0.017453292F - (float) Math.PI); - float f5 = -MathHelper.cos(-f1 * 0.017453292F); - float f6 = MathHelper.sin(-f1 * 0.017453292F); - float f7 = f4 * f5; - float f8 = f3 * f5; - double d3 = 5.0D; - Vec3 vec31 = vec3.addVector((double) f7 * d3, (double) f6 * d3, (double) f8 * d3); - MovingObjectPosition movingobjectposition = world.rayTraceBlocks(vec3, vec31, true); - - if (movingobjectposition == null) - { - return stack; - } else - { - Vec3 vec32 = player.getLook(f); - boolean flag = false; - float f9 = 1.0F; - @SuppressWarnings("rawtypes") - List list = world.getEntitiesWithinAABBExcludingEntity(player, player.boundingBox.addCoord(vec32.xCoord * d3, vec32.yCoord * d3, vec32.zCoord * d3).expand((double) f9, (double) f9, (double) f9)); - int i; - - for (i = 0; i < list.size(); ++i) - { - Entity entity = (Entity) list.get(i); - - if (entity.canBeCollidedWith()) - { - float f10 = entity.getCollisionBorderSize(); - AxisAlignedBB axisalignedbb = entity.boundingBox.expand((double) f10, (double) f10, (double) f10); - - if (axisalignedbb.isVecInside(vec3)) - { - flag = true; - } - } - } - - if (flag) - { - return stack; - } else - { - if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - i = movingobjectposition.blockX; - int j = movingobjectposition.blockY; - int k = movingobjectposition.blockZ; - - if (world.getBlock(i, j, k) == Blocks.snow_layer) - { - --j; - } - - EntityInflatableBoat inflatableBoat = new EntityInflatableBoat(world, i + 0.5, j + 1.0, k + 0.5, motorized); - - inflatableBoat.rotationYaw = (float) (((MathHelper.floor_double((double) (player.rotationYaw * 4.0 / 360.0) + 0.5D) & 3) - 1) * 90); - if (!world.getCollidingBoundingBoxes(inflatableBoat, inflatableBoat.boundingBox.expand(-0.1, -0.1, -0.1)).isEmpty()) - { - return stack; - } - - if (!world.isRemote) - { - world.spawnEntityInWorld(inflatableBoat); - } - - if (!player.capabilities.isCreativeMode) - { - --stack.stackSize; - } - } - return stack; - } - } - } - - - - /** - * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer - * - * @param stack - * @param world - * @param player - */ - @Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) - { - LogHelper.info("Damage: " + stack.getItemDamage()); - if(stack.getItemDamage() == 7)return placeBoat(stack,world,player,false); - if(stack.getItemDamage() == 8)return placeBoat(stack,world,player,true); - return stack; - } -} From afbe85af3a55c35922c548bb24a6bf811dfa539f Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:33:21 -0400 Subject: [PATCH 094/462] Delete ItemCopterPack.java --- item/ItemCopterPack.java | 300 --------------------------------------- 1 file changed, 300 deletions(-) delete mode 100644 item/ItemCopterPack.java diff --git a/item/ItemCopterPack.java b/item/ItemCopterPack.java deleted file mode 100644 index a36ae594..00000000 --- a/item/ItemCopterPack.java +++ /dev/null @@ -1,300 +0,0 @@ -package com.darkona.adventurebackpack.item; - -import com.darkona.adventurebackpack.client.models.ModelCopterPack; -import com.darkona.adventurebackpack.init.ModNetwork; -import com.darkona.adventurebackpack.inventory.InventoryCopterPack; -import com.darkona.adventurebackpack.network.GUIPacket; -import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; -import com.darkona.adventurebackpack.playerProperties.BackpackProperty; -import com.darkona.adventurebackpack.proxy.ClientProxy; -import com.darkona.adventurebackpack.reference.GeneralReference; -import com.darkona.adventurebackpack.util.Resources; -import com.darkona.adventurebackpack.util.Wearing; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.Minecraft; -import net.minecraft.client.model.ModelBiped; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.ChatComponentTranslation; -import net.minecraft.util.ResourceLocation; -import net.minecraft.world.World; - -import java.util.List; - -/** - * Created on 31/12/2014 - * - * @author Darkona - */ -public class ItemCopterPack extends ItemAB implements IBackWearableItem -{ - - public ItemCopterPack() - { - super(); - setUnlocalizedName("copterPack"); - setFull3D(); - setMaxStackSize(1); - } - - public static byte OFF_MODE = 0; - public static byte NORMAL_MODE = 1; - public static byte HOVER_MODE = 2; - - @Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) - { - if (world.isRemote) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.COPTER_GUI, GUIPacket.FROM_HOLDING)); - } - return stack; - } - - @Override - public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isCurrent) - { - } - - - @SuppressWarnings(value = "unchecked") - public void pushEntities(World world, EntityPlayer player, float speed) - { - double posX = player.posX; - double posY = player.posY; - double posZ = player.posZ; - List groundItems = world.getEntitiesWithinAABB( - EntityItem.class, - AxisAlignedBB.getBoundingBox(posX, posY, posZ, - posX + 1.0D, posY + 1.0D, - posZ + 1.0D).expand(4.0D, 4.0D, 4.0D)); - - for (EntityItem groundItem : groundItems) - { - if (!groundItem.isInWater()) - { - if (groundItem.posX > posX) - { - groundItem.motionX = speed; - } - if (groundItem.posX < posX) - { - groundItem.motionX = -speed; - } - - if (groundItem.posZ > posZ) - { - groundItem.motionZ = speed; - } - if (groundItem.posZ < posZ) - { - groundItem.motionZ = -speed; - } - - if (groundItem.posY < posY) - { - groundItem.motionY -= speed; - } - } - } - } - - - @SideOnly(Side.CLIENT) - public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack stack, int armorSlot) - { - return ModelCopterPack.instance.setWearable(stack); - } - - - @SideOnly(Side.CLIENT) - public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) - { - String modelTexture; - modelTexture = Resources.modelTextures("copterPack").toString(); - - return modelTexture; - } - - public static void elevate(EntityPlayer player, ItemStack copter) - { - if (player.posY < 100) player.motionY = Math.max(player.motionY, 0.18); - if (player.posY > 100) player.motionY = 0.18 - ((player.posY % 100) / 100); - } - - @Override - public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) - { - InventoryCopterPack inv = new InventoryCopterPack(Wearing.getWearingCopter(player)); - inv.openInventory(); - boolean canElevate = true; - int fuelConsumption = 0; - if (inv.getStatus() != OFF_MODE) - { - if (player.isInWater()) - { - inv.setStatus(OFF_MODE); - inv.dirtyStatus(); - if (!world.isRemote){ - player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.copterpack.cantwater")); - } - return; - } - if (inv.fuelTank.getFluidAmount() == 0) - { - canElevate = false; - if (player.onGround) - { - inv.setStatus(OFF_MODE); - inv.dirtyStatus(); - if (!world.isRemote) - { - player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.copterpack.off")); - } - return; - //TODO play "backpackOff" sound - } - if (inv.getStatus() == HOVER_MODE) - { - - inv.setStatus(NORMAL_MODE); - inv.dirtyStatus(); - if (!world.isRemote) - { - player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.copterpack.outoffuel")); - } - return; - //TODO play "outofFuel" sound - } - } - } - - if (inv.getStatus() != OFF_MODE) - { - fuelConsumption++; - if (inv.getStatus() == NORMAL_MODE) - { - if (!player.onGround && !player.isSneaking() && player.motionY < 0.0D) - { - player.motionY = player.motionY * 0.6; - } - if (player.isSneaking()) - { - player.motionY = -0.3; - } - } - - if (inv.getStatus() == HOVER_MODE) - { - if (player.isSneaking()) - { - player.motionY = -0.3; - }else{ - fuelConsumption+=2; - player.motionY = 0.0f; - } - } - player.fallDistance = 0; - - //Smoke - if (!world.isRemote) - { - ModNetwork.sendToNearby(new EntityParticlePacket.Message(EntityParticlePacket.COPTER_PARTICLE, player), player); - } - //Sound - - - float factor = 0.05f; - if (!player.onGround) - { - //Airwave - pushEntities(world, player, 0.2f); - //movement boost - player.moveFlying(player.moveStrafing,player.moveForward,factor); - } else - { - pushEntities(world, player, factor + 0.4f); - } - - //Elevation clientside - if (world.isRemote) - { - if (Minecraft.getMinecraft().gameSettings.keyBindJump.getIsKeyPressed()) - { - if (inv.canConsumeFuel(fuelConsumption + 2) && canElevate) - { - elevate(player, stack); - } - } - } - - //Elevation serverside - if (!player.onGround && player.motionY > 0) - { - fuelConsumption += 2; - } - int ticks = inv.tickCounter - 1; - if (inv.fuelTank.getFluid() != null) - { - if(GeneralReference.isValidFuel(inv.getFuelTank().getFluid().getFluid())) - { - fuelConsumption = (int)Math.floor(fuelConsumption * GeneralReference.liquidFuels.get(inv.getFuelTank().getFluid().getFluid().getName())); - } - } - if (ticks <= 0) - { - inv.tickCounter = 3; - inv.consumeFuel(fuelConsumption); - inv.dirtyTanks(); - } else - { - inv.tickCounter = ticks; - } - } - // if(!world.isRemote)inv.closeInventory(); - inv.closeInventory(); - } - - @Override - public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) - { - onUnequipped(world,player,stack); - player.dropPlayerItemWithRandomChoice(stack.copy(),false); - BackpackProperty.get(player).setWearable(null); - } - - @Override - public void onEquipped(World world, EntityPlayer player, ItemStack stack) - { - if(!stack.hasTagCompound())stack.setTagCompound(new NBTTagCompound()); - stack.stackTagCompound.setByte("status",OFF_MODE); - } - - @Override - public void onUnequipped(World world, EntityPlayer player, ItemStack stack) - { - stack.stackTagCompound.setByte("status",OFF_MODE); - } - - @Override - @SideOnly(Side.CLIENT) - public ModelBiped getWearableModel(ItemStack wearable) - { - return ClientProxy.modelCopterPack.setWearable(wearable); - } - - @Override - @SideOnly(Side.CLIENT) - public ResourceLocation getWearableTexture(ItemStack wearable) - { - return Resources.modelTextures("copterPack"); - } - - -} From d35794cb924554fb23b039166c3f679526a501e4 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:33:41 -0400 Subject: [PATCH 095/462] Delete ItemCrossbow.java --- item/ItemCrossbow.java | 205 ----------------------------------------- 1 file changed, 205 deletions(-) delete mode 100644 item/ItemCrossbow.java diff --git a/item/ItemCrossbow.java b/item/ItemCrossbow.java deleted file mode 100644 index fcb50a10..00000000 --- a/item/ItemCrossbow.java +++ /dev/null @@ -1,205 +0,0 @@ -package com.darkona.adventurebackpack.item; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.projectile.EntityArrow; -import net.minecraft.init.Items; -import net.minecraft.item.EnumAction; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; - -/** - * Created on 05/01/2015 - * - * @author Darkona - */ -public class ItemCrossbow extends ItemAB -{ - - public ItemCrossbow() - { - super(); - setFull3D(); - setUnlocalizedName("clockworkCrossbow"); - setMaxStackSize(1); - } - - - /** - * Returns true if players can use this item to affect the world (e.g. placing blocks, placing ender eyes in portal) - * when not in creative - */ - @Override - public boolean canItemEditBlocks() - { - return false; - } - - @Override - public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) - { - return false; - } - - @Override - public boolean isRepairable() - { - return super.isRepairable(); - } - - @Override - public String getItemStackDisplayName(ItemStack stack) - { - return super.getItemStackDisplayName(stack); - } - - @Override - public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) - { - return false; - } - - @Override - public EnumAction getItemUseAction(ItemStack p_77661_1_) - { - return EnumAction.bow; - } - - /** - * Called when item is crafted/smelted. Used only by maps so far. - * - * @param stack - * @param world - * @param player - */ - @Override - public void onCreated(ItemStack stack, World world, EntityPlayer player) - { - super.onCreated(stack, world, player); - - NBTTagCompound xbowProps = new NBTTagCompound(); - - xbowProps.setBoolean("Loaded", false); - xbowProps.setShort("Magazine", (short) 0); - xbowProps.setBoolean("Charging", false); - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) - { - - } - - @Override - public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean current) - { - if(!stack.hasTagCompound()){ - stack.stackTagCompound = new NBTTagCompound(); - stack.stackTagCompound.setByte("Shot",(byte)0); - stack.stackTagCompound.setInteger("Reloading",0); - } - - if(current) - { - byte shot = stack.stackTagCompound.getByte("Shot"); - int reloading = stack.stackTagCompound.getInteger("Reloading"); - if(shot > 0)stack.stackTagCompound.setByte("Shot", (byte)(shot-1)); - if(reloading > 0)stack.stackTagCompound.setInteger("Reloading",reloading-1); - if(entity instanceof EntityPlayer) - { - //((EntityPlayer)entity).setItemInUse(stack,2); - } - } - } - - @Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) - { - if(!stack.hasTagCompound())stack.setTagCompound(new NBTTagCompound()); - if(!stack.stackTagCompound.hasKey("Reloading"))stack.stackTagCompound.setInteger("Reloading",0); - int reloading = stack.stackTagCompound.getInteger("Reloading"); - if(reloading <= 0){ - shootArrow(stack,player.worldObj,player, 1000); - stack.stackTagCompound.setByte("Shot",(byte)4); - int reloadTime = 20; - stack.stackTagCompound.setInteger("Reloading", reloadTime); - - } - return stack; - } - - - @Override - public int getMaxItemUseDuration(ItemStack stack) - { - return Integer.MAX_VALUE; - } - - @Override - public void onPlayerStoppedUsing(ItemStack stack, World world, EntityPlayer player, int counter) - { - } - - public void shootArrow(ItemStack stack, World world, EntityPlayer player, int count) - { - int j = count; - - boolean flag = player.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - - if (flag || player.inventory.hasItem(Items.arrow)) - { - float f = j / 20.0F; - f = (f * f + f * 2.0F) / 3.0F; - - if (f < 0.1D) - { - return; - } - - if (f > 1.0F) - { - f = 1.0F; - } - - EntityArrow entityarrow = new EntityArrow(world, player, f * 3.0F); - f = 1.0f; - - int k = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, stack); - - if (k > 0) - { - entityarrow.setDamage(entityarrow.getDamage() + k * 0.5D + 0.5D); - } - - int l = EnchantmentHelper.getEnchantmentLevel(Enchantment.punch.effectId, stack); - - if (l > 0) - { - entityarrow.setKnockbackStrength(l); - } - - if (EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId, stack) > 0) - { - entityarrow.setFire(100); - } - - world.playSoundAtEntity(player, "adventurebackpack:crossbowshot", 0.5F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F); - - if (flag) - { - entityarrow.canBePickedUp = 2; - } else - { - player.inventory.consumeInventoryItem(Items.arrow); - } - - if (!world.isRemote) - { - world.spawnEntityInWorld(entityarrow); - } - } - } -} From a8edd16f8b0236de4a7be17e8f30564c845ae08e Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:33:47 -0400 Subject: [PATCH 096/462] Delete ItemCrossbowMagazine.java --- item/ItemCrossbowMagazine.java | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 item/ItemCrossbowMagazine.java diff --git a/item/ItemCrossbowMagazine.java b/item/ItemCrossbowMagazine.java deleted file mode 100644 index d5e58560..00000000 --- a/item/ItemCrossbowMagazine.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.darkona.adventurebackpack.item; - -/** - * Created on 21/01/2015 - * - * @author Darkona - */ -public class ItemCrossbowMagazine -{ -} From 4f1bf6070035723e7e31b019786f0115b12b9a55 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:33:54 -0400 Subject: [PATCH 097/462] Delete ItemHose.java --- item/ItemHose.java | 475 --------------------------------------------- 1 file changed, 475 deletions(-) delete mode 100644 item/ItemHose.java diff --git a/item/ItemHose.java b/item/ItemHose.java deleted file mode 100644 index 1ea437d6..00000000 --- a/item/ItemHose.java +++ /dev/null @@ -1,475 +0,0 @@ -package com.darkona.adventurebackpack.item; - -import com.darkona.adventurebackpack.CreativeTabAB; -import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.common.ServerActions; -import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; -import com.darkona.adventurebackpack.init.ModFluids; -import com.darkona.adventurebackpack.inventory.InventoryBackpack; -import com.darkona.adventurebackpack.util.Resources; -import com.darkona.adventurebackpack.util.Utils; -import com.darkona.adventurebackpack.util.Wearing; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.passive.EntityCow; -import net.minecraft.entity.passive.EntityMooshroom; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.EnumAction; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.fluids.*; - -/** - * Created by Darkona on 12/10/2014. - */ -public class ItemHose extends ItemAB -{ - - IIcon drinkIcon; - IIcon spillIcon; - IIcon suckIcon; - final byte HOSE_SUCK_MODE = 0; - final byte HOSE_SPILL_MODE = 1; - final byte HOSE_DRINK_MODE = 2; - - public ItemHose() - { - super(); - setMaxStackSize(1); - setFull3D(); - //.setCreativeTab(CreativeTabs.tabTools) - setNoRepair(); - setUnlocalizedName("backpackHose"); - setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); - } - - - // ================================================ GETTERS =====================================================// - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(ItemStack stack, int pass) - { - switch(getHoseMode(stack)) - { - case HOSE_SUCK_MODE: - return suckIcon; - case HOSE_SPILL_MODE: - return spillIcon; - case HOSE_DRINK_MODE: - return drinkIcon; - default: - return itemIcon; - } - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIconFromDamage(int par1) - { - return itemIcon; - } - - public static int getHoseMode(ItemStack hose) - { - return hose.stackTagCompound != null ? hose.stackTagCompound.getInteger("mode") : -1; - } - - public static int getHoseTank(ItemStack hose) - { - return hose.hasTagCompound() ? hose.getTagCompound().getInteger("tank") : -1; - } - - @Override - public EnumAction getItemUseAction(ItemStack stack) - { - if (stack.stackTagCompound != null && stack.stackTagCompound.hasKey("mode")) - { - return (stack.stackTagCompound.getInteger("mode") == 2) ? EnumAction.drink : EnumAction.none; - } - return EnumAction.none; - } - - @Override - public String getUnlocalizedName(ItemStack stack) - { - String name = "hose_" + (getHoseTank(stack) == 0 ? "leftTank" : getHoseTank(stack) == 1 ? "rightTank" : ""); - switch (getHoseMode(stack)) - { - case 0: - return super.getUnlocalizedName(name + "_suck"); - case 1: - return super.getUnlocalizedName(name + "_spill"); - case 2: - return super.getUnlocalizedName(name + "_drink"); - default: - return super.getUnlocalizedName("hoseUseless"); - } - } - - @Override - public int getMaxItemUseDuration(ItemStack stack) - { - return 24; - } - - @Override - public int getMaxDamage() - { - return 0; - } - - @Override - public int getMaxDamage(ItemStack stack) - { - return 0; - } - - // ================================================ SETTERS =====================================================// - // ================================================= ICONS ======================================================// - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - drinkIcon = iconRegister.registerIcon(Resources.getIconString("hoseDrink")); - spillIcon = iconRegister.registerIcon(Resources.getIconString("hoseSpill")); - suckIcon = iconRegister.registerIcon(Resources.getIconString("hoseSuck")); - itemIcon = iconRegister.registerIcon(Resources.getIconString("hoseLeft")); - } - // ================================================ ACTIONS =====================================================// - - @Override - public void onUpdate(ItemStack stack, World world, Entity entity, int inv_slot, boolean isCurrent) - { - if (entity == null || !(entity instanceof EntityPlayer)) return; - - EntityPlayer player = (EntityPlayer) entity; - if (world.isRemote && player.getItemInUse() != null && player.getItemInUse().getItem().equals(this)) return; - - - NBTTagCompound nbt = stack.hasTagCompound() ? stack.getTagCompound() : new NBTTagCompound(); - ItemStack backpack = Wearing.getWearingBackpack(player); - if (backpack != null) - { - if (nbt.getInteger("tank") == -1) nbt.setInteger("tank", 0); - if (nbt.getInteger("mode") == -1) nbt.setInteger("mode", 0); - InventoryBackpack inv = new InventoryBackpack(backpack); - FluidTank tank = nbt.getInteger("tank") == 0 ? inv.getLeftTank() : inv.getRightTank(); - if (tank != null && tank.getFluid() != null) - { - nbt.setString("fluid", Utils.capitalize(tank.getFluid().getFluid().getName())); - nbt.setInteger("amount", tank.getFluidAmount()); - } else - { - nbt.setInteger("amount", 0); - nbt.setString("fluid", "Empty"); - } - } else - { - nbt.setInteger("amount", 0); - nbt.setString("fluid", "None"); - nbt.setInteger("mode", -1); - nbt.setInteger("tank", -1); - } - stack.setTagCompound(nbt); - } - - @Override - public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) - { - if(!Wearing.isWearingBackpack(player))return true; - - InventoryBackpack inv = new InventoryBackpack(Wearing.getWearingBackpack(player)); - inv.openInventory(); - FluidTank tank = getHoseTank(stack) == 0 ? inv.getLeftTank() : inv.getRightTank(); - TileEntity te = world.getTileEntity(x, y, z); - if (te != null && te instanceof IFluidHandler) - { - IFluidHandler exTank = (IFluidHandler) te; - int accepted = 0; - switch (getHoseMode(stack)) - { - case HOSE_SUCK_MODE: - - accepted = tank.fill(exTank.drain(ForgeDirection.UNKNOWN, Constants.bucket, false), false); - if (accepted > 0) - { - tank.fill(exTank.drain(ForgeDirection.UNKNOWN, accepted, true), true); - te.markDirty(); - inv.dirtyTanks(); - return true; - } - break; - - case HOSE_SPILL_MODE: - - accepted = exTank.fill(ForgeDirection.UNKNOWN, tank.drain(Constants.bucket, false), false); - if (accepted > 0) - { - exTank.fill(ForgeDirection.UNKNOWN, tank.drain(accepted, true), true); - te.markDirty(); - inv.dirtyTanks(); - return true; - } - break; - } - } - return false; - - } - - @Override - public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity) - { - return false; - } - - /** - * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer - * - * @param stack - * @param world - * @param player - */ - @Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) - { - if(!Wearing.isWearingBackpack(player))return stack; - InventoryBackpack inv = new InventoryBackpack(Wearing.getWearingBackpack(player)); - inv.openInventory(); - MovingObjectPosition mop = getMovingObjectPositionFromPlayer(world, player, true); - FluidTank tank = getHoseTank(stack) == 0 ? inv.getLeftTank() : inv.getRightTank(); - if (tank != null) - { - switch (getHoseMode(stack)) - { - case HOSE_SUCK_MODE: // If it's in Suck Mode - - if (mop != null && mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - /* if (!world.canMineBlock(player, mop.blockX, mop.blockY, mop.blockZ)) - { - return stack; - }*/ - - if (!player.canPlayerEdit(mop.blockX, mop.blockY, mop.blockZ, mop.sideHit, null)) - { - return stack; - } - //TODO adjust for Adventure Mode - Fluid fluidBlock = FluidRegistry.lookupFluidForBlock(world.getBlock(mop.blockX, mop.blockY, mop.blockZ)); - if (fluidBlock != null) - { - FluidStack fluid = new FluidStack(fluidBlock, Constants.bucket); - if (tank.getFluid() == null || tank.getFluid().containsFluid(fluid)) - { - int accepted = tank.fill(fluid, false); - if (accepted > 0) - { - world.setBlockToAir(mop.blockX, mop.blockY, mop.blockZ); - tank.fill(new FluidStack(fluidBlock, accepted), true); - } - } - } - inv.dirtyTanks(); - } - break; - - case HOSE_SPILL_MODE: // If it's in Spill Mode - if (mop != null && mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - int x = mop.blockX; - int y = mop.blockY; - int z = mop.blockZ; - if (world.getBlock(x, y, z).isBlockSolid(world, x, y, z, mop.sideHit)) - { - - switch (mop.sideHit) - { - case 0: - --y; - break; - case 1: - ++y; - break; - case 2: - --z; - break; - case 3: - ++z; - break; - case 4: - --x; - break; - case 5: - ++x; - break; - } - } - if (tank.getFluidAmount() > 0) - { - FluidStack fluid = tank.getFluid(); - if (fluid != null) - { - if (fluid.getFluid().canBePlacedInWorld()) - { - Material material = world.getBlock(x, y, z).getMaterial(); - boolean flag = !material.isSolid(); - if (!world.isAirBlock(x, y, z) && !flag) - { - return stack; - } - /* IN HELL DIMENSION No, I won't let you put water in the nether. You freak*/ - if (world.provider.isHellWorld && fluid.getFluid() == FluidRegistry.WATER) - { - tank.drain(Constants.bucket, true); - world.playSoundEffect(x + 0.5F, y + 0.5F, z + 0.5F, "random.fizz", 0.5F, - 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F); - for (int l = 0; l < 12; ++l) - { - world.spawnParticle("largesmoke", x + Math.random(), y + Math.random(), z + Math.random(), 0.0D, 0.0D, 0.0D); - } - } else - { - /* NOT IN HELL DIMENSION. */ - FluidStack drainedFluid = tank.drain(Constants.bucket, false); - if (drainedFluid != null && drainedFluid.amount >= Constants.bucket) - { - if (!world.isRemote && flag && !material.isLiquid()) - { - world.func_147480_a(x, y, z, true); - } - - if (fluid.getFluid().getBlock() == Blocks.water) - { - if (world.setBlock(x, y, z, Blocks.flowing_water, 0, 3)) - { - tank.drain(Constants.bucket, true); - } - } else if (fluid.getFluid().getBlock() == Blocks.lava) - { - if (world.setBlock(x, y, z, Blocks.flowing_lava, 0, 3)) - { - tank.drain(Constants.bucket, true); - } - } else if (world.setBlock(x, y, z, fluid.getFluid().getBlock(), 0, 3)) - { - tank.drain(Constants.bucket, true); - } - } - } - } - } - } - inv.dirtyTanks(); - } - break; - case HOSE_DRINK_MODE: - if (tank.getFluid() != null && tank.getFluidAmount() >= Constants.bucket) - { - if (FluidEffectRegistry.hasFluidEffect(tank.getFluid().getFluid())) - { - player.setItemInUse(stack, this.getMaxItemUseDuration(stack)); - } - } - break; - default: - return stack; - } - } - return stack; - } - - @Override - public boolean onBlockStartBreak(ItemStack itemstack, int X, int Y, int Z, EntityPlayer player) - { - return false; - } - - @Override - public boolean onEntitySwing(EntityLivingBase entityLiving, ItemStack stack) - { - return false; - } - - @Override - public ItemStack onEaten(ItemStack hose, World world, EntityPlayer player) - { - if(!Wearing.isWearingBackpack(player))return hose; - int mode = -1; - int tank = -1; - if (hose.stackTagCompound != null) - { - tank = getHoseTank(hose); - mode = getHoseMode(hose); - } - if (mode == HOSE_DRINK_MODE && tank > -1) - { - InventoryBackpack inv = new InventoryBackpack(Wearing.getWearingBackpack(player)); - inv.openInventory(); - FluidTank backpackTank = (tank == 0) ? inv.getLeftTank() : (tank == 1) ? inv.getRightTank() : null; - if (backpackTank != null) - { - if (ServerActions.setFluidEffect(world, player, backpackTank)) - { - backpackTank.drain(Constants.bucket, true); - inv.dirtyTanks(); - } - } - } - return hose; - } - - @Override - public boolean onDroppedByPlayer(ItemStack item, EntityPlayer player) - { - return true; - } - - // ================================================ BOOLEANS =====================================================// - @Override - public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity) - { - if(!Wearing.isWearingBackpack(player))return false; - InventoryBackpack inventory = new InventoryBackpack(Wearing.getWearingBackpack(player)); - inventory.openInventory(); - if (entity instanceof EntityCow && !(entity instanceof EntityMooshroom)) - { - - FluidTank tank = getHoseTank(stack) == 0 ? inventory.getLeftTank() : inventory.getRightTank(); - tank.fill(new FluidStack(ModFluids.milk, Constants.bucket), true); - inventory.dirtyTanks(); - - ((EntityCow) entity).faceEntity(player, 0.1f, 0.1f); - return true; - } - if (entity instanceof EntityMooshroom) - { - FluidTank tank = getHoseTank(stack) == 0 ? inventory.getLeftTank() : inventory.getRightTank(); - tank.fill(new FluidStack(ModFluids.mushroomStew, Constants.bucket), true); - inventory.dirtyTanks(); - - ((EntityMooshroom) entity).faceEntity(player, 0.1f, 0.1f); - return true; - } - - return false; - } - - @Override - public boolean canHarvestBlock(Block block, ItemStack stack) - { - return FluidRegistry.lookupFluidForBlock(block) != null; - } - -} From 6503d2261c64e28e17eb74b1e327531d7e836246 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:33:59 -0400 Subject: [PATCH 098/462] Delete ToolAB.java --- item/ToolAB.java | 56 ------------------------------------------------ 1 file changed, 56 deletions(-) delete mode 100644 item/ToolAB.java diff --git a/item/ToolAB.java b/item/ToolAB.java deleted file mode 100644 index 1dd5d240..00000000 --- a/item/ToolAB.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.darkona.adventurebackpack.item; - -import com.darkona.adventurebackpack.reference.ModInfo; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemTool; - -import java.util.Set; - -/** - * Created by Darkona on 11/10/2014. - */ -public class ToolAB extends ItemTool -{ - - public ToolAB(ToolMaterial material, @SuppressWarnings("rawtypes") Set breakableBlocks) - { - super(1f, material, breakableBlocks); - //setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); - } - - @Override - public Item setCreativeTab(CreativeTabs tab) - { - return super.setCreativeTab(tab); - } - - @Override - public String getUnlocalizedName(ItemStack stack) - { - return String.format("item.%s%s", ModInfo.MOD_ID.toLowerCase() + ":", getUnwrappedUnlocalizedName(super.getUnlocalizedName())); - } - - @Override - public String getUnlocalizedName() - { - return String.format("item.%s%s", ModInfo.MOD_ID.toLowerCase() + ":", getUnwrappedUnlocalizedName(super.getUnlocalizedName())); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - itemIcon = iconRegister.registerIcon(this.getUnlocalizedName().substring(this.getUnlocalizedName().indexOf(".") + 1)); - } - - - protected String getUnwrappedUnlocalizedName(String unlocalizedName) - { - return unlocalizedName.substring(unlocalizedName.indexOf(".") + 1); - } -} From 7cb8a3c2055cc95b9210885ea0b920d01405ab2e Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:34:03 -0400 Subject: [PATCH 099/462] Delete ItemTelescope.java --- item/ItemTelescope.java | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 item/ItemTelescope.java diff --git a/item/ItemTelescope.java b/item/ItemTelescope.java deleted file mode 100644 index 7a29f6a1..00000000 --- a/item/ItemTelescope.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.darkona.adventurebackpack.item; - -/** - * Created on 15/01/2015 - * - * @author Darkona - */ -public class ItemTelescope extends ItemAB -{ - //Make Telescope item doto list - -} From afcabc85a38ef11a4d4d2ed882b7a9e4ffa76dab Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:34:12 -0400 Subject: [PATCH 100/462] Delete ItemProjectile.java --- item/ItemProjectile.java | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 item/ItemProjectile.java diff --git a/item/ItemProjectile.java b/item/ItemProjectile.java deleted file mode 100644 index a61ed63a..00000000 --- a/item/ItemProjectile.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.darkona.adventurebackpack.item; - -import net.minecraft.item.Item; - -/** - * Created on 07/01/2015 - * - * @author Darkona - */ -public class ItemProjectile extends Item -{ - -} From 7219e4e64ea5c21e19c3b47626200072f737f4e8 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:34:32 -0400 Subject: [PATCH 101/462] Delete ItemJuiceBottle.java --- item/ItemJuiceBottle.java | 71 --------------------------------------- 1 file changed, 71 deletions(-) delete mode 100644 item/ItemJuiceBottle.java diff --git a/item/ItemJuiceBottle.java b/item/ItemJuiceBottle.java deleted file mode 100644 index a8bf3d90..00000000 --- a/item/ItemJuiceBottle.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.darkona.adventurebackpack.item; - -import com.darkona.adventurebackpack.CreativeTabAB; -import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; -import com.darkona.adventurebackpack.init.ModFluids; -import com.darkona.adventurebackpack.util.Resources; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Items; -import net.minecraft.item.EnumAction; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -/** - * Created on 19/10/2014 - * - * @author Darkona - */ -public class ItemJuiceBottle extends ItemAB -{ - - public ItemJuiceBottle() - { - super(); - setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); - setFull3D(); - setUnlocalizedName("melonJuiceBottle"); - setMaxStackSize(1); - } - - - @Override - public ItemStack onEaten(ItemStack stack, World world, EntityPlayer player) - { - FluidEffectRegistry.executeFluidEffectsForFluid(ModFluids.melonJuice, player, world); - return new ItemStack(Items.glass_bottle, 1); - } - - @Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) - { - player.setItemInUse(stack, this.getMaxItemUseDuration(stack)); - return stack; - } - - @Override - public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int meta, float hitX, float hitY, float hitZ) - { - return false; - } - - - @Override - public EnumAction getItemUseAction(ItemStack p_77661_1_) - { - return EnumAction.drink; - } - - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) - { - return 28; - } - - @Override - public void registerIcons(IIconRegister iconRegister) - { - itemIcon = iconRegister.registerIcon(Resources.getIconString("melonJuiceBottle")); - } -} From ce02d6891b88bb42f06ff8af151ecbd40a988cd2 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:34:37 -0400 Subject: [PATCH 102/462] Delete ItemMachete.java --- item/ItemMachete.java | 145 ------------------------------------------ 1 file changed, 145 deletions(-) delete mode 100644 item/ItemMachete.java diff --git a/item/ItemMachete.java b/item/ItemMachete.java deleted file mode 100644 index f4fe484b..00000000 --- a/item/ItemMachete.java +++ /dev/null @@ -1,145 +0,0 @@ -package com.darkona.adventurebackpack.item; - -import com.darkona.adventurebackpack.CreativeTabAB; -import com.darkona.adventurebackpack.init.ModMaterials; -import com.google.common.collect.Sets; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemShears; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.common.IShearable; -import net.minecraftforge.oredict.OreDictionary; - -import java.util.Set; - -/** - * Created on 10/10/2014 - * - * @author Darkona - */ -public class ItemMachete extends ToolAB -{ - @SuppressWarnings("rawtypes") - private static final Set breakableBlocks = Sets.newHashSet(Blocks.pumpkin, - Blocks.web, - Blocks.leaves, - Blocks.leaves2, - Blocks.melon_block, - Blocks.melon_stem, - Blocks.brown_mushroom, - Blocks.red_flower, - Blocks.red_mushroom, - Blocks.cactus, - Blocks.cocoa, - Blocks.hay_block, - Blocks.carrots, - Blocks.potatoes, - Blocks.red_mushroom_block, - Blocks.brown_mushroom_block, - Blocks.reeds, - Blocks.grass, - Blocks.tallgrass, - Blocks.yellow_flower, - Blocks.waterlily, - Blocks.wheat, - Blocks.wool); - @SuppressWarnings("unused") - private float field_150934_a; - - public ItemMachete() - { - - super(ModMaterials.ruggedIron, breakableBlocks); - setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); - setMaxDamage(Items.iron_sword.getMaxDamage() + 250); - this.field_150934_a = ModMaterials.ruggedIron.getDamageVsEntity(); - this.setUnlocalizedName("machete"); - } - - @Override - public float func_150893_a(ItemStack stack, Block block) - { - Material material = block.getMaterial(); - if (material == Material.wood) return 4F; - if (block == Blocks.melon_block) return 2F; - if (block == Blocks.web) return 10F; - for (ItemStack stacky : OreDictionary.getOres("treeLeaves")) - { - if (stacky.getItem() == Item.getItemFromBlock(block)) return 15F; - } - return material == Material.plants || material == Material.vine || material == Material.coral || material == Material.gourd || material == Material.leaves || material == Material.cloth ? 12.0F : 0.5F; - - } - - /** - * Current implementations of this method in child classes do not use the entry argument beside ev. They just raise - * the damage on the stack. - */ - @Override - public boolean hitEntity(ItemStack p_77644_1_, EntityLivingBase p_77644_2_, EntityLivingBase p_77644_3_) - { - p_77644_1_.damageItem(1, p_77644_3_); - return true; - } - - @Override - public boolean onBlockDestroyed(ItemStack stack, World world, Block block, int x, int y, int z, EntityLivingBase entityLivingBase) - { - if (block != Blocks.vine && !(block instanceof IShearable)) - { - return super.onBlockDestroyed(stack, world, block, x, y, z, entityLivingBase); - } else - { - return true; - } - } - - @Override - public boolean onBlockStartBreak(ItemStack itemstack, int x, int y, int z, EntityPlayer player) - { - /* - if (player.worldObj.isRemote) - { - return false; - } - int id = player.worldObj.getBlockId(x, y, z); - for(ItemStack stacky : OreDictionary.getOres("treeLeaves")){ - if (stacky.itemID == id) return false; - } - - if (Block.blocksList[id] instanceof IShearable ) - { - IShearable target = (IShearable)Block.blocksList[id]; - if (target.isShearable(itemstack, player.worldObj, x, y, z)) - { - ArrayList drops = target.onSheared(itemstack, player.worldObj, x, y, z, - EnchantmentHelper.getEnchantmentLevel(Enchantment.fortune.effectId, itemstack)); - Random rand = new Random(); - - for(ItemStack stack : drops) - { - float f = 0.7F; - double d = (double)(rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D; - double d1 = (double)(rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D; - double d2 = (double)(rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D; - EntityItem entityitem = new EntityItem(player.worldObj, (double)x + d, (double)y + d1, (double)z + d2, stack); - entityitem.delayBeforeCanPickup = 10; - player.worldObj.spawnEntityInWorld(entityitem); - } - - itemstack.damageItem(1, player); - player.addStat(StatList.mineBlockStatArray[id], 1); - } - } - return false; - */ - return new ItemStack(new ItemShears()).getItem().onBlockStartBreak(itemstack, x, y, z, player); - } - -} From f071521db1760a32b197bbc4dceb56684a09f9db Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:34:50 -0400 Subject: [PATCH 103/462] Delete ItemPistonBoots.java --- item/ItemPistonBoots.java | 34 ---------------------------------- 1 file changed, 34 deletions(-) delete mode 100644 item/ItemPistonBoots.java diff --git a/item/ItemPistonBoots.java b/item/ItemPistonBoots.java deleted file mode 100644 index ce46c9ba..00000000 --- a/item/ItemPistonBoots.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.darkona.adventurebackpack.item; - - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.world.World; - -/** - * Created by Darkona on 11/10/2014. - */ -public class ItemPistonBoots extends ArmorAB -{ - - public ItemPistonBoots() - { - super(2, 3); - setUnlocalizedName("pistonBoots"); - } - - public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) - { - if (player.isSprinting()) - { - player.stepHeight = 1.001F; - player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 1)); - } else - { - player.stepHeight = 2.5001F; - } - } - -} From 87a92e9b9f823a42851f4ab4bc7e79c52510ebd7 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:34:59 -0400 Subject: [PATCH 104/462] Delete AbstractBackpackRecipe.java --- init/recipes/AbstractBackpackRecipe.java | 171 ----------------------- 1 file changed, 171 deletions(-) delete mode 100644 init/recipes/AbstractBackpackRecipe.java diff --git a/init/recipes/AbstractBackpackRecipe.java b/init/recipes/AbstractBackpackRecipe.java deleted file mode 100644 index c82d955f..00000000 --- a/init/recipes/AbstractBackpackRecipe.java +++ /dev/null @@ -1,171 +0,0 @@ -package com.darkona.adventurebackpack.init.recipes; - -import com.darkona.adventurebackpack.init.ModItems; -import com.darkona.adventurebackpack.reference.BackpackNames; -import com.darkona.adventurebackpack.util.LogHelper; -import net.minecraft.inventory.InventoryCrafting; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; - -import java.lang.reflect.Field; -import java.util.HashMap; -import java.util.Map; - -/** - * Created on 20/10/2014 - * - * @author Darkona - */ -public class AbstractBackpackRecipe implements IRecipe -{ - - final BackpackRecipes br = new BackpackRecipes(); - private ItemStack result; - @SuppressWarnings("unused") - private ItemStack[] recipe; - - public boolean compareStacksForColor(ItemStack stack1, ItemStack stack2) - { - - if (stack1 == null && stack2 == null) - { - return true; - } else if (stack1 != null && stack2 != null) - { - if (stack1.getItem() != stack2.getItem()) - { - return false; - } else - { - return (stack1.getItemDamage() == stack2.getItemDamage()); - } - } - return false; - } - - - public AbstractBackpackRecipe() - { - recipes = new HashMap(); - int i = 0; - for (Field field : BackpackRecipes.class.getFields()) - { - try - { - if (field.getType() == ItemStack[].class) - { - recipes.put(field.getName(), (ItemStack[]) field.get(br)); - i++; - } - } catch (Exception oops) - { - LogHelper.error("Huge mistake during reflection. Some bad things might happen."); - } - } - LogHelper.info("Loaded " + i + " recipes for backpack coloration."); - } - - public HashMap recipes; - - - public ItemStack makeBackpack(ItemStack backpackIn, String colorName) - { - if (backpackIn == null) return null; - - ItemStack newBackpack = backpackIn.copy(); //new ItemStack(ModItems.adventureBackpack,1); - if (backpackIn.stackTagCompound == null) - { - backpackIn.setTagCompound(new NBTTagCompound()); - backpackIn.stackTagCompound.setString("colorName", "Standard"); - } - NBTTagCompound compound = (NBTTagCompound) backpackIn.getTagCompound().copy(); - newBackpack.setTagCompound(compound); - newBackpack.stackTagCompound.setString("colorName", colorName); - return newBackpack; - } - - - public boolean match(ItemStack[] model, InventoryCrafting invC) - { - if (model == null || invC == null) return false; - for (int i = 0; i < invC.getSizeInventory(); i++) - { - ItemStack m = model[i]; - ItemStack c = invC.getStackInSlot(i); - if (!compareStacksForColor(m, c)) - { - return false; - } - if (i == 4) - { - if (!BackpackNames.getBackpackColorName(c).equals("Standard")) - { - return false; - } - } - } - - return true; - } - - @Override - public boolean matches(InventoryCrafting invC, World world) - { - result = null; - if (invC != null) - { - for (Map.Entry recipe : recipes.entrySet()) - { - if (match(recipe.getValue(), invC)) - { - result = makeBackpack(invC.getStackInSlot(4), recipe.getKey()); - break; - } - } - } - return result != null; - } - - /** - * Returns an Item that is the result of this recipe - */ - @Override - public ItemStack getCraftingResult(InventoryCrafting invC) - { - //result = null; - if (invC != null) - { - for (Map.Entry recipe : recipes.entrySet()) - { - if (match(recipe.getValue(), invC)) - { - return makeBackpack(invC.getStackInSlot(4), recipe.getKey()); - } - } - } - return this.result; - // return result.copy(); - } - - /** - * Returns the size of the recipe area - */ - @Override - public int getRecipeSize() - { - return 9; - } - - @Override - public ItemStack getRecipeOutput() - { - ItemStack backpack = new ItemStack(ModItems.adventureBackpack, 1); - backpack.setTagCompound(new NBTTagCompound()); - backpack.stackTagCompound.setString("colorName", "Standard"); - return backpack; - } - - -} From e15e6268fce36baaced3b74eb5d0be0285f302ec Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:35:07 -0400 Subject: [PATCH 105/462] Delete BackpackRecipesList.java --- init/recipes/BackpackRecipesList.java | 688 -------------------------- 1 file changed, 688 deletions(-) delete mode 100644 init/recipes/BackpackRecipesList.java diff --git a/init/recipes/BackpackRecipesList.java b/init/recipes/BackpackRecipesList.java deleted file mode 100644 index a0d92538..00000000 --- a/init/recipes/BackpackRecipesList.java +++ /dev/null @@ -1,688 +0,0 @@ -package com.darkona.adventurebackpack.init.recipes; - -import com.darkona.adventurebackpack.init.ModItems; -import com.darkona.adventurebackpack.reference.BackpackNames; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; -import net.minecraft.item.ItemStack; - -import java.util.List; - -/** - * Created on 20/10/2014 - * - * @author Darkona - */ -public class BackpackRecipesList -{ - - public List recipes; - - public BackpackRecipesList() - { - String[] covered = {"XXX", "XaX", "XXX"}; - ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), 0); - - ItemStack woolWhite = new ItemStack(Blocks.wool, 1, 0); - ItemStack woolOrange = new ItemStack(Blocks.wool, 1, 1); - ItemStack woolMagenta = new ItemStack(Blocks.wool, 1, 2); - ItemStack woolLightBlue = new ItemStack(Blocks.wool, 1, 3); - ItemStack woolYellow = new ItemStack(Blocks.wool, 1, 4); - ItemStack woolLime = new ItemStack(Blocks.wool, 1, 5); - ItemStack woolPink = new ItemStack(Blocks.wool, 1, 6); - ItemStack woolGray = new ItemStack(Blocks.wool, 1, 7); - ItemStack woolLightGray = new ItemStack(Blocks.wool, 1, 8); - ItemStack woolCyan = new ItemStack(Blocks.wool, 1, 9); - ItemStack woolPurple = new ItemStack(Blocks.wool, 1, 10); - ItemStack woolBlue = new ItemStack(Blocks.wool, 1, 11); - ItemStack woolBrown = new ItemStack(Blocks.wool, 1, 12); - ItemStack woolGreen = new ItemStack(Blocks.wool, 1, 13); - ItemStack woolRed = new ItemStack(Blocks.wool, 1, 14); - ItemStack woolBlack = new ItemStack(Blocks.wool, 1, 15); - - - Standard = reviewRecipe( - "LGL", - "TCT", - "LSL", - 'L', Items.leather, - 'G', "ingotGold", - 'T', new ItemStack(ModItems.component, 1, 2), - 'S', new ItemStack(ModItems.component, 1, 1), - 'C', Blocks.chest - ); - - Black = reviewRecipe(covered, - 'X', woolBlack, - 'a', backpack - ); - - Blaze = reviewRecipe( - "BFB", - "BaB", - "PLP", - 'B', Items.blaze_rod, - 'F', Items.fire_charge, - 'a', backpack, - 'P', Items.blaze_powder, - 'L', Items.lava_bucket - ); - - Blue = reviewRecipe(covered, - 'X', woolBlue, - 'a', backpack - ); - - Bookshelf = reviewRecipe( - "BDB", - "BaB", - "bbb", - 'B', Blocks.bookshelf, - 'a', backpack, - 'b', Items.book - ); - - Brown = reviewRecipe(covered, - 'X', woolBrown, - 'a', backpack - ); - - BrownMushroom = reviewRecipe(covered, - 'X', Blocks.brown_mushroom, - 'a', backpack - ); - - Cactus = reviewRecipe( - "CGC", - "CaC", - "SSS", - 'C', Blocks.cactus, - 'G', new ItemStack(Items.dye, 1, 2), - 'a', backpack, - 'S', Blocks.sand - ); - - Cake = reviewRecipe( - "ECE", - "WaW", - "SmS", - 'a', backpack, - 'E', Items.egg, - 'C', Items.cake, - 'W', Items.wheat, - 'S', Items.sugar, - 'm', Items.milk_bucket - ); - - Chest = reviewRecipe( - "CWC", - "WaW", - "CWC", - 'C', Blocks.chest, - 'W', "plankWood", - 'a', backpack - ); - - Chicken = reviewRecipe( - "FnF", - "FaF", - "nEn", - 'F', Items.feather, - 'n', Items.gold_nugget, - 'a', backpack, - 'E', Items.egg - ); - - Coal = reviewRecipe( - "cCc", - "CaC", - "ccc", - 'c', Items.coal, - 'C', "blockCoal", - 'a', backpack - ); - - Cookie = reviewRecipe( - "cCc", - "WaW", - "ccc", - 'c', Items.cookie, - 'C', new ItemStack(Items.dye, 1, 3),//Chocolate - 'W', Items.wheat, - 'a', backpack - ); - - Cow = reviewRecipe( - "BLB", - "BaB", - "LML", - 'B', Items.beef, - 'a', backpack, - 'L', Items.leather, - 'M', Items.milk_bucket - ); - - Creeper = reviewRecipe( - "GHG", - "GaG", - "TNT",//see what I did there? ;D - 'G', Items.gunpowder, - 'H', new ItemStack(Items.skull, 1, 4), //Creeper Skull - 'a', backpack, - 'T', Blocks.tnt, - 'N', Blocks.tnt - ); - - Cyan = reviewRecipe(covered, - 'X', woolCyan, - 'a', backpack - ); - - Diamond = reviewRecipe( - "GDG", - "GaG", - "GdG", - 'G', "blockGlass", - 'D', "blockDiamond", - 'a', backpack, - 'd', "gemDiamond" - ); - - Dragon = reviewRecipe( - "EDE", - "OaO", - "POP", - 'E', Blocks.end_stone, - 'D', new ItemStack(Blocks.dragon_egg, 1), - 'O', Blocks.obsidian, - 'a', backpack, - 'P', Items.ender_pearl - ); - - Egg = reviewRecipe(covered, - 'X', Items.egg, - 'a', backpack - ); - - Emerald = reviewRecipe( - "GEG", - "GaG", - "eGe", - 'G', Blocks.glass, - 'E', Blocks.emerald_block, - 'a', backpack, - 'e', Items.emerald - ); - - End = reviewRecipe( - "eEe", - "EaE", - "eEe", - 'E', Blocks.end_stone, - 'e', Items.ender_eye, - 'a', backpack - ); - - Enderman = reviewRecipe( - "PXP", - "XaX", - "PXP", - 'X', woolBlack, - 'P', Items.ender_pearl, - 'a', backpack - ); - - Ghast = reviewRecipe( - "GFG", - "TaT", - "GTG", - 'G', Items.ghast_tear, - 'F', Items.fire_charge, - 'T', Items.gunpowder, - 'a', backpack - ); - - Glowstone = reviewRecipe( - "GgG", - "GaG", - "GgG", - 'G', Blocks.glowstone, - 'g', "dustGlowstone", - 'a', backpack - ); - - Gold = reviewRecipe( - "FGF", - "FaF", - "gFg", - 'F', "blockGlass", - 'G', "blockGold", - 'a', backpack, - 'g', "ingotGold" - ); - - Gray = reviewRecipe(covered, - 'X', woolGray, - 'a', backpack - ); - - Green = reviewRecipe(covered, - 'X', woolGreen, - 'a', backpack - ); - - Haybale = reviewRecipe(covered, - 'X', Blocks.hay_block, - 'a', backpack - ); - - Iron = reviewRecipe( - "GIG", - "GaG", - "iGi", - 'G', "blockGlass", - 'I', "blockIron", - 'a', backpack, - 'i', Items.iron_ingot - ); - - Lapis = reviewRecipe( - "GLG", - "GaG", - "lGl", - 'G', "blockGlass", - 'L', "blockLapis", - 'l', new ItemStack(Items.dye, 1, 4), - 'a', backpack - ); - - Leather = reviewRecipe(covered, - 'X', Items.leather, - 'a', backpack - ); - - LightBlue = reviewRecipe(covered, - 'X', woolLightBlue, - 'a', backpack - ); - - LightGray = reviewRecipe(covered, - 'X', woolLightGray, - 'a', backpack - ); - - Lime = reviewRecipe(covered, - 'X', woolLime, - 'a', backpack - ); - - Magenta = reviewRecipe(covered, - 'X', woolMagenta, - 'a', backpack - ); - - MagmaCube = reviewRecipe( - "MLM", - "MaM", - "MLM", - 'M', Items.magma_cream, - 'a', backpack, - 'L', Items.lava_bucket - ); - - Melon = reviewRecipe( - "mMm", - "mam", - "msm", - 'm', Items.melon, - 'M', Blocks.melon_block, - 'a', backpack, - 's', Items.melon_seeds - ); - - Mooshroom = reviewRecipe( - "SRL", - "BaB", - "LRS", - 'R', Blocks.red_mushroom, - 'B', Blocks.brown_mushroom, - 'a', backpack, - 'S', Items.mushroom_stew, - 'L', Blocks.mycelium - ); - - Nether = reviewRecipe( - "QwQ", - "NaN", - "QLQ", - 'Q', Items.quartz, - 'N', Blocks.netherrack, - 'w', Items.nether_wart, - 'L', Items.lava_bucket, - 'a', backpack - ); - - Obsidian = reviewRecipe( - covered, - 'X', Blocks.obsidian, - 'a', backpack - ); - - Ocelot = reviewRecipe( - "FYF", - "YaY", - "FYF", - 'F', Items.fish, - 'Y', new ItemStack(Blocks.wool, 1, 4), - 'a', backpack - ); - - Orange = reviewRecipe(covered, - 'X', woolOrange, - 'a', backpack - ); - - Pig = reviewRecipe(covered, - 'X', Items.porkchop, - 'a', backpack - ); - - Pink = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 6), - 'a', backpack - ); - - Pumpkin = reviewRecipe( - "PPP", - "PaP", - "PsP", - 'P', Blocks.pumpkin, - 'a', backpack, - 's', Items.pumpkin_seeds - ); - - Purple = reviewRecipe(covered, - 'X', woolPurple, - 'a', backpack - ); - - Quartz = reviewRecipe( - "QqQ", - "qaq", - "QqQ", - 'Q', Blocks.quartz_block, - 'q', Items.quartz, - 'a', backpack - ); - - Rainbow = reviewRecipe( - "RCP", - "OaB", - "YGF", - 'R', "dyeRed", //RED - 'O', "dyeOrange",//ORANGE - 'Y', "dyeYellow",//YELLOW - 'G', "dyeLime",//LIME - 'F', "dyeCyan",//CYAN - 'B', "dyeBlue",//BLUE - 'P', "dyePurple",//PURPLE - 'C', Items.record_cat, - 'a', backpack - ); - - Red = reviewRecipe(covered, - 'X', woolRed, - 'a', backpack - ); - - RedMushroom = reviewRecipe(covered, - 'X', Blocks.red_mushroom, - 'a', backpack - ); - - Redstone = reviewRecipe( - "rRr", - "RaR", - "rRr", - 'R', "blockRedstone", - 'r', Items.redstone, - 'a', backpack - ); - - Sandstone = reviewRecipe( - "CSC", - "SaS", - "CSC", - 'S', new ItemStack(Blocks.sandstone, 1, 0), - 'C', new ItemStack(Blocks.sandstone, 1, 1), - 'a', backpack - ); - - Sheep = reviewRecipe( - "WPW", - "WaW", - "WWW", - 'W', woolWhite, - 'P', woolPink, - 'a', backpack - ); - - Skeleton = reviewRecipe( - "BSB", - "bab", - "BAB", - 'B', Items.bone, - 'S', new ItemStack(Items.skull, 1, 0),//Skeleton skull - 'b', Items.bow, - 'A', Items.arrow, - 'a', backpack - ); - - Slime = reviewRecipe(covered, - 'X', "slimeball", - 'a', backpack - ); - - Snow = reviewRecipe( - "III", - "SaS", - "sSs", - 'I', Blocks.ice, - 'S', Blocks.snow, - 's', Items.snowball, - 'a', backpack - ); - - Spider = reviewRecipe( - "ESE", - "LaL", - "ESE", - 'E', Items.spider_eye, - 'S', Items.string, - 'L', Blocks.ladder, - 'a', backpack - ); - - White = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 0), - 'a', backpack - ); - - Wither = reviewRecipe( - "SSS", - "sas", - "NsD", - 'S', new ItemStack(Items.skull, 1, 1),//WitherSkelleton Skull - 's', Blocks.soul_sand, - 'N', Items.nether_star, - 'D', Items.diamond, - 'a', backpack - ); - - WitherSkeleton = reviewRecipe( - "BsB", - "SaS", - "CBC", - 'B', Items.bone, - 'S', Items.stone_sword, - 'a', backpack, - 'C', Items.coal, - 's', new ItemStack(Items.skull, 1, 1) - ); - - Wolf = reviewRecipe( - "BWB", - "WaW", - "BWB", - 'B', Items.bone, - 'W', woolWhite, - 'a', backpack - ); - - Yellow = reviewRecipe(covered, - 'X', woolYellow, - 'a', backpack - ); - - Zombie = reviewRecipe( - "FSF", - "FaF", - "FFF", - 'F', Items.rotten_flesh, - 'S', new ItemStack(Items.skull, 1, 2), - 'a', backpack - ); - - Carrot = reviewRecipe(covered, - 'a', backpack, - 'X', Items.carrot - ); - - Silverfish = reviewRecipe( - "CGC", - "CaC", - "CGC", - 'a', backpack, - 'G', woolLightGray, - 'C', new ItemStack(Blocks.stonebrick, 1, 2) - ); - - Sunflower = reviewRecipe( - covered, - 'a', backpack, - 'X', new ItemStack(Blocks.double_plant, 1, 0) - ); - - Horse = reviewRecipe( - "LSL", - "XaX", - "LXL", - 'L', Items.leather, - 'S', Items.saddle, - 'X', Blocks.hay_block, - 'a', backpack); - - Overworld = reviewRecipe( - "BBB", - "GaG", - "CCC", - 'B', new ItemStack(Blocks.wool, 1, 3), - 'G', Blocks.grass, - 'a', backpack, - 'C', "cobblestone" - - ); - - Squid = reviewRecipe( - "BIB", - "IaI", - "BIB", - 'a', backpack, - 'B', woolBlue, - 'I', new ItemStack(Items.dye, 1, 0) - ); - - Sponge = reviewRecipe(covered, - 'X', Blocks.sponge, - 'a', backpack - ); - } - - public final Object[] Silverfish; - public final Object[] Squid; - public final Object[] Sunflower; - public final Object[] Horse; - public final Object[] Overworld; - public final Object[] Carrot; - public final Object[] Black; - public final Object[] Blaze; - public final Object[] Blue; - public final Object[] Bookshelf; - public final Object[] Brown; - public final Object[] BrownMushroom; - public final Object[] Cactus; - public final Object[] Cake; - public final Object[] Chicken; - public final Object[] Chest; - public final Object[] Coal; - public final Object[] Cookie; - public final Object[] Cow; - public final Object[] Creeper; - public final Object[] Cyan; - public final Object[] Diamond; - public final Object[] Dragon; - public final Object[] Egg; - public final Object[] Emerald; - public final Object[] End; - public final Object[] Enderman; - public final Object[] Ghast; - public final Object[] Glowstone; - public final Object[] Gold; - public final Object[] Gray; - public final Object[] Green; - public final Object[] Haybale; - public final Object[] Iron; - public final Object[] Lapis; - public final Object[] Leather; - public final Object[] LightBlue; - public final Object[] LightGray; - public final Object[] Lime; - public final Object[] Magenta; - public final Object[] MagmaCube; - public final Object[] Melon; - public final Object[] Mooshroom; - public final Object[] Nether; - public final Object[] Obsidian; - public final Object[] Ocelot; - public final Object[] Orange; - public final Object[] Pig; - public final Object[] Pink; - public final Object[] Pumpkin; - public final Object[] Purple; - public final Object[] Quartz; - public final Object[] Rainbow; - public final Object[] Red; - public final Object[] RedMushroom; - public final Object[] Redstone; - public final Object[] Sandstone; - public final Object[] Sheep; - public final Object[] Skeleton; - public final Object[] Slime; - public final Object[] Snow; - public final Object[] Spider; - public final Object[] Standard; - public final Object[] Sponge; - public final Object[] White; - public final Object[] Wither; - public final Object[] WitherSkeleton; - public final Object[] Wolf; - public final Object[] Yellow; - public final Object[] Zombie; - - - public static Object[] reviewRecipe(Object... objects) - { - return objects; - } - -} From 238d2bc9106b58f453585296d15e965a0913c029 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:35:16 -0400 Subject: [PATCH 106/462] Delete BackpackRecipes.java --- init/recipes/BackpackRecipes.java | 669 ------------------------------ 1 file changed, 669 deletions(-) delete mode 100644 init/recipes/BackpackRecipes.java diff --git a/init/recipes/BackpackRecipes.java b/init/recipes/BackpackRecipes.java deleted file mode 100644 index 23bd7bbd..00000000 --- a/init/recipes/BackpackRecipes.java +++ /dev/null @@ -1,669 +0,0 @@ -package com.darkona.adventurebackpack.init.recipes; - -import com.darkona.adventurebackpack.init.ModItems; -import net.minecraft.block.Block; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - -import java.util.HashMap; -import java.util.List; - -/** - * Created on 20/10/2014 - * - * @author Darkona - */ -public class BackpackRecipes -{ - - public List recipes; - - public BackpackRecipes() - { - String[] covered = {"XXX", "XaX", "XXX"}; - Black = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 15), - 'a', ModItems.adventureBackpack - ); - - Blaze = reviewRecipe( - "BFB", - "BaB", - "PLP", - 'B', Items.blaze_rod, - 'F', Items.fire_charge, - 'a', ModItems.adventureBackpack, - 'P', Items.blaze_powder, - 'L', Items.lava_bucket - ); - - Blue = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 11), - 'a', ModItems.adventureBackpack - ); - - Bookshelf = reviewRecipe( - "BDB", - "BaB", - "bbb", - 'B', Blocks.bookshelf, - 'a', ModItems.adventureBackpack, - 'b', Items.book - ); - - Brown = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 12), - 'a', ModItems.adventureBackpack - ); - - BrownMushroom = reviewRecipe(covered, - 'X', Blocks.brown_mushroom, - 'a', ModItems.adventureBackpack - ); - - Cactus = reviewRecipe( - "CGC", - "CaC", - "SSS", - 'C', Blocks.cactus, - 'G', new ItemStack(Items.dye, 1, 2), - 'a', ModItems.adventureBackpack, - 'S', Blocks.sand - ); - - Cake = reviewRecipe( - "ECE", - "WaW", - "SmS", - 'a', ModItems.adventureBackpack, - 'E', Items.egg, - 'C', Items.cake, - 'W', Items.wheat, - 'S', Items.sugar, - 'm', Items.milk_bucket - ); - - Chest = reviewRecipe( - "CWC", - "WaW", - "CWC", - 'C', Blocks.chest, - 'W', Blocks.planks, - 'a', ModItems.adventureBackpack - ); - - Chicken = reviewRecipe( - "FnF", - "FaF", - "nEn", - 'F', Items.feather, - 'n', Items.gold_nugget, - 'a', ModItems.adventureBackpack, - 'E', Items.egg - ); - - Coal = reviewRecipe( - "cCc", - "CaC", - "ccc", - 'c', Items.coal, - 'C', Blocks.coal_block, - 'a', ModItems.adventureBackpack - ); - - Cookie = reviewRecipe( - "cCc", - "WaW", - "ccc", - 'c', Items.cookie, - 'C', new ItemStack(Items.dye, 1, 3), - 'W', Items.wheat, - 'a', ModItems.adventureBackpack - ); - - Cow = reviewRecipe( - "BLB", - "BaB", - "LML", - 'B', Items.beef, - 'a', ModItems.adventureBackpack, - 'L', Items.leather, - 'M', Items.milk_bucket - ); - - Creeper = reviewRecipe( - "GHG", - "GaG", - "TNT",//see what I did there? ;D - 'G', Items.gunpowder, - 'H', new ItemStack(Items.skull, 1, 4), //Creeper Skull - 'a', ModItems.adventureBackpack, - 'T', Blocks.tnt, - 'N', Blocks.tnt - ); - - Cyan = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 9), - 'a', ModItems.adventureBackpack - ); - - Diamond = reviewRecipe( - "GDG", - "GaG", - "GdG", - 'G', Blocks.glass, - 'D', Blocks.diamond_block, - 'a', ModItems.adventureBackpack, - 'd', Items.diamond - ); - - Dragon = reviewRecipe( - "EDE", - "OaO", - "POP", - 'E', Blocks.end_stone, - 'D', new ItemStack(Blocks.dragon_egg, 1), - 'O', Blocks.obsidian, - 'a', ModItems.adventureBackpack, - 'P', Items.ender_pearl - ); - - Egg = reviewRecipe(covered, - 'X', Items.egg, - 'a', ModItems.adventureBackpack - ); - - Emerald = reviewRecipe( - "GEG", - "GaG", - "eGe", - 'G', Blocks.glass, - 'E', Blocks.emerald_block, - 'a', ModItems.adventureBackpack, - 'e', Items.emerald - ); - - End = reviewRecipe( - "eEe", - "EaE", - "eEe", - 'E', Blocks.end_stone, - 'e', Items.ender_eye, - 'a', ModItems.adventureBackpack - ); - - Enderman = reviewRecipe( - "PXP", - "XaX", - "PXP", - 'X', new ItemStack(Blocks.wool, 1, 15), - 'P', Items.ender_pearl, - 'a', ModItems.adventureBackpack - ); - - Ghast = reviewRecipe( - "GFG", - "TaT", - "GTG", - 'G', Items.ghast_tear, - 'F', Items.fire_charge, - 'T', Items.gunpowder, - 'a', ModItems.adventureBackpack - ); - - Glowstone = reviewRecipe( - "GgG", - "GaG", - "GgG", - 'G', Blocks.glowstone, - 'g', Items.glowstone_dust, - 'a', ModItems.adventureBackpack - ); - - Gold = reviewRecipe( - "FGF", - "FaF", - "gFg", - 'F', Blocks.glass, - 'G', Blocks.gold_block, - 'a', ModItems.adventureBackpack, - 'g', Items.gold_ingot - ); - - Gray = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 7), - 'a', ModItems.adventureBackpack - ); - - Green = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 13), - 'a', ModItems.adventureBackpack - ); - - Haybale = reviewRecipe(covered, - 'X', Blocks.hay_block, - 'a', ModItems.adventureBackpack - ); - - Iron = reviewRecipe( - "GIG", - "GaG", - "iGi", - 'G', Blocks.glass, - 'I', Blocks.iron_block, - 'a', ModItems.adventureBackpack, - 'i', Items.iron_ingot - ); - - Lapis = reviewRecipe( - "GLG", - "GaG", - "lGl", - 'G', Blocks.glass, - 'L', Blocks.lapis_block, - 'l', new ItemStack(Items.dye, 1, 4), - 'a', ModItems.adventureBackpack - ); - - Leather = reviewRecipe(covered, - 'X', Items.leather, - 'a', ModItems.adventureBackpack - ); - - LightBlue = reviewRecipe( - "XXX", - "XaX", - "XXX", - 'X', new ItemStack(Blocks.wool, 1, 3), - 'a', ModItems.adventureBackpack - ); - - LightGray = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 8), - 'a', ModItems.adventureBackpack - ); - - Lime = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 5), - 'a', ModItems.adventureBackpack - ); - - Magenta = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 2), - 'a', ModItems.adventureBackpack - ); - - MagmaCube = reviewRecipe( - "MLM", - "MaM", - "MLM", - 'M', Items.magma_cream, - 'a', ModItems.adventureBackpack, - 'L', Items.lava_bucket - ); - - Melon = reviewRecipe( - "mMm", - "mam", - "msm", - 'm', Items.melon, - 'M', Blocks.melon_block, - 'a', ModItems.adventureBackpack, - 's', Items.melon_seeds - ); - - Mooshroom = reviewRecipe( - "SRL", - "BaB", - "LRS", - 'R', Blocks.red_mushroom, - 'B', Blocks.brown_mushroom, - 'a', ModItems.adventureBackpack, - 'S', Items.mushroom_stew, - 'L', Blocks.mycelium - ); - - Nether = reviewRecipe( - "QwQ", - "NaN", - "QLQ", - 'Q', Items.quartz, - 'N', Blocks.netherrack, - 'w', Items.nether_wart, - 'L', Items.lava_bucket, - 'a', ModItems.adventureBackpack - ); - - Obsidian = reviewRecipe( - covered, - 'X', Blocks.obsidian, - 'a', ModItems.adventureBackpack - ); - - Ocelot = reviewRecipe( - "FYF", - "YaY", - "FYF", - 'F', Items.fish, - 'Y', new ItemStack(Blocks.wool, 1, 4), - 'a', ModItems.adventureBackpack - ); - - Orange = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 1), - 'a', ModItems.adventureBackpack - ); - - Pig = reviewRecipe(covered, - 'X', Items.porkchop, - 'a', ModItems.adventureBackpack - ); - - Pink = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 6), - 'a', ModItems.adventureBackpack - ); - - Pumpkin = reviewRecipe( - "PPP", - "PaP", - "PsP", - 'P', Blocks.pumpkin, - 'a', ModItems.adventureBackpack, - 's', Items.pumpkin_seeds - ); - - Purple = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 10), - 'a', ModItems.adventureBackpack - ); - - Quartz = reviewRecipe( - "QqQ", - "qaq", - "QqQ", - 'Q', Blocks.quartz_block, - 'q', Items.quartz, - 'a', ModItems.adventureBackpack - ); - - Rainbow = reviewRecipe( - "RCP", - "OaB", - "YGF", - 'R', new ItemStack(Items.dye, 1, 1), //RED - 'O', new ItemStack(Items.dye, 1, 14),//ORANGE - 'Y', new ItemStack(Items.dye, 1, 11),//YELLOW - 'G', new ItemStack(Items.dye, 1, 10),//LIME - 'F', new ItemStack(Items.dye, 1, 6),//CYAN - 'B', new ItemStack(Items.dye, 1, 4),//BLUE - 'P', new ItemStack(Items.dye, 1, 5),//PURPLE - 'C', Items.record_cat, - 'a', ModItems.adventureBackpack - ); - - Red = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 14), - 'a', ModItems.adventureBackpack - ); - - RedMushroom = reviewRecipe(covered, - 'X', Blocks.red_mushroom, - 'a', ModItems.adventureBackpack - ); - - Redstone = reviewRecipe( - "rRr", - "RaR", - "rRr", - 'R', Blocks.redstone_block, - 'r', Items.redstone, - 'a', ModItems.adventureBackpack - ); - - Sandstone = reviewRecipe( - "CSC", - "SaS", - "CSC", - 'S', new ItemStack(Blocks.sandstone, 1, 0), - 'C', new ItemStack(Blocks.sandstone, 1, 1), - 'a', ModItems.adventureBackpack - ); - - Sheep = reviewRecipe( - "WPW", - "WaW", - "WWW", - 'W', new ItemStack(Blocks.wool, 1, 0), - 'P', new ItemStack(Blocks.wool, 1, 6), - 'a', ModItems.adventureBackpack - ); - - Skeleton = reviewRecipe( - "BSB", - "bab", - "BAB", - 'B', Items.bone, - 'S', new ItemStack(Items.skull, 1, 0),//Skeleton skull - 'b', Items.bow, - 'A', Items.arrow, - 'a', ModItems.adventureBackpack - ); - - Slime = reviewRecipe(covered, - 'X', Items.slime_ball, - 'a', ModItems.adventureBackpack - ); - - Snow = reviewRecipe( - "sSs", - "SaS", - "sSs", - 'S', Blocks.snow, - 's', Items.snowball, - 'a', ModItems.adventureBackpack - ); - - Spider = reviewRecipe( - "ESE", - "LaL", - "ESE", - 'E', Items.spider_eye, - 'S', Items.string, - 'L', Blocks.ladder, - 'a', ModItems.adventureBackpack - ); - - White = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 0), - 'a', ModItems.adventureBackpack - ); - - Wither = reviewRecipe( - "SSS", - "sas", - "NsD", - 'S', new ItemStack(Items.skull, 1, 1),//WitherSkelleton Skull - 's', Blocks.soul_sand, - 'N', Items.nether_star, - 'D', Items.diamond, - 'a', ModItems.adventureBackpack - ); - - WitherSkeleton = reviewRecipe( - "BsB", - "SaS", - "CBC", - 'B', Items.bone, - 'S', Items.stone_sword, - 'a', ModItems.adventureBackpack, - 'C', Items.coal, - 's', new ItemStack(Items.skull, 1, 1) - ); - - Wolf = reviewRecipe( - "BWB", - "WaW", - "BWB", - 'B', Items.bone, - 'W', new ItemStack(Blocks.wool, 1, 0), - 'a', ModItems.adventureBackpack - ); - - Yellow = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 4), - 'a', ModItems.adventureBackpack - ); - - Zombie = reviewRecipe( - "FSF", - "FaF", - "FFF", - 'F', Items.rotten_flesh, - 'S', new ItemStack(Items.skull, 1, 2), - 'a', ModItems.adventureBackpack - ); - } - - public final ItemStack[] Black; - public final ItemStack[] Blaze; - public final ItemStack[] Blue; - public final ItemStack[] Bookshelf; - public final ItemStack[] Brown; - public final ItemStack[] BrownMushroom; - public final ItemStack[] Cactus; - public final ItemStack[] Cake; - public final ItemStack[] Chicken; - public final ItemStack[] Chest; - public final ItemStack[] Coal; - public final ItemStack[] Cookie; - public final ItemStack[] Cow; - public final ItemStack[] Creeper; - public final ItemStack[] Cyan; - public final ItemStack[] Diamond; - public final ItemStack[] Dragon; - public final ItemStack[] Egg; - public final ItemStack[] Emerald; - public final ItemStack[] End; - public final ItemStack[] Enderman; - public final ItemStack[] Ghast; - public final ItemStack[] Glowstone; - public final ItemStack[] Gold; - public final ItemStack[] Gray; - public final ItemStack[] Green; - public final ItemStack[] Haybale; - public final ItemStack[] Iron; - public final ItemStack[] Lapis; - public final ItemStack[] Leather; - public final ItemStack[] LightBlue; - public final ItemStack[] LightGray; - public final ItemStack[] Lime; - public final ItemStack[] Magenta; - public final ItemStack[] MagmaCube; - public final ItemStack[] Melon; - public final ItemStack[] Mooshroom; - public final ItemStack[] Nether; - public final ItemStack[] Obsidian; - public final ItemStack[] Ocelot; - public final ItemStack[] Orange; - public final ItemStack[] Pig; - public final ItemStack[] Pink; - public final ItemStack[] Pumpkin; - public final ItemStack[] Purple; - public final ItemStack[] Quartz; - public final ItemStack[] Rainbow; - public final ItemStack[] Red; - public final ItemStack[] RedMushroom; - public final ItemStack[] Redstone; - public final ItemStack[] Sandstone; - public final ItemStack[] Sheep; - public final ItemStack[] Skeleton; - public final ItemStack[] Slime; - public final ItemStack[] Snow; - public final ItemStack[] Spider; - //public final ItemStack[] Sponge; - public final ItemStack[] White; - public final ItemStack[] Wither; - public final ItemStack[] WitherSkeleton; - public final ItemStack[] Wolf; - public final ItemStack[] Yellow; - public final ItemStack[] Zombie; - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - public static ItemStack[] reviewRecipe(Object... objects) - { - String s = ""; - //BackpackRecipe recipe = new BackpackRecipe(); - int i = 0; - int j = 0; - int k = 0; - /*if(objects[i] instanceof String) - { - recipe.name = (String)objects[i]; - i++; - }*/ - if (objects[i] instanceof String[]) - { - String[] astring = (String[]) ((String[]) objects[i++]); - - for (int l = 0; l < astring.length; ++l) - { - String s1 = astring[l]; - ++k; - j = s1.length(); - s = s + s1; - } - } else - { - while (objects[i] instanceof String) - { - String s2 = (String) objects[i++]; - ++k; - j = s2.length(); - s = s + s2; - } - } - - HashMap hashmap; - - for (hashmap = new HashMap(); i < objects.length; i += 2) - { - Character character = (Character) objects[i]; - ItemStack itemstack1 = null; - - if (objects[i + 1] instanceof Item) - { - itemstack1 = new ItemStack((Item) objects[i + 1]); - } else if (objects[i + 1] instanceof Block) - { - itemstack1 = new ItemStack((Block) objects[i + 1], 1); - } else if (objects[i + 1] instanceof ItemStack) - { - itemstack1 = (ItemStack) objects[i + 1]; - } - - hashmap.put(character, itemstack1); - } - - ItemStack[] aitemstack = new ItemStack[j * k]; - - for (int i1 = 0; i1 < j * k; ++i1) - { - char c0 = s.charAt(i1); - - if (hashmap.containsKey(Character.valueOf(c0))) - { - aitemstack[i1] = ((ItemStack) hashmap.get(Character.valueOf(c0))).copy(); - } else - { - aitemstack[i1] = null; - } - } - //recipe.array = aitemstack; - return aitemstack; - } - -} From a5d5cc235b42295fb75965ad131a85907182ed5d Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:35:23 -0400 Subject: [PATCH 107/462] Delete BackpackRecipe.java --- init/recipes/BackpackRecipe.java | 24 ------------------------ 1 file changed, 24 deletions(-) delete mode 100644 init/recipes/BackpackRecipe.java diff --git a/init/recipes/BackpackRecipe.java b/init/recipes/BackpackRecipe.java deleted file mode 100644 index 01d381bb..00000000 --- a/init/recipes/BackpackRecipe.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.darkona.adventurebackpack.init.recipes; - -import net.minecraft.item.ItemStack; - -/** - * Created on 24/12/2014 - * - * @author Darkona - */ -public class BackpackRecipe -{ - public ItemStack[] array; - public String name; - - BackpackRecipe() - { - } - - BackpackRecipe(String name, ItemStack[] array) - { - this.name = name; - this.array = array; - } -} From 96c72f9c7234fe8981fe81df089f4a33be9b7c9f Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:35:28 -0400 Subject: [PATCH 108/462] Delete AbstractBackpackRecipeTwo.java --- init/recipes/AbstractBackpackRecipeTwo.java | 100 -------------------- 1 file changed, 100 deletions(-) delete mode 100644 init/recipes/AbstractBackpackRecipeTwo.java diff --git a/init/recipes/AbstractBackpackRecipeTwo.java b/init/recipes/AbstractBackpackRecipeTwo.java deleted file mode 100644 index fb58f82b..00000000 --- a/init/recipes/AbstractBackpackRecipeTwo.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.darkona.adventurebackpack.init.recipes; - -import com.darkona.adventurebackpack.init.ModItems; -import net.minecraft.inventory.InventoryCrafting; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; - -/** - * Created on 24/12/2014 - * - * @author Darkona - */ -public class AbstractBackpackRecipeTwo implements IRecipe -{ - private ItemStack result; - private ItemStack[] recipe; - private String name; - - public AbstractBackpackRecipeTwo(String name, ItemStack[] recipe) - { - this.recipe = recipe; - this.name = name; - this.result = makeBackpack(new ItemStack(ModItems.adventureBackpack), this.name); - } - - public boolean compareStacks(ItemStack stack1, ItemStack stack2) - { - - if (stack1 == null && stack2 == null) - { - return true; - } else if (stack1 != null && stack2 != null) - { - if (stack1.getItem().equals(stack2.getItem())) - { - /*if(stack1.getItem() instanceof ItemAdventureBackpack) - { - return stack1.stackTagCompound.getString("colorName").equals("Standard"); - }*/ - return ((stack1.getItemDamage() == stack2.getItemDamage())); - } - } - return false; - } - - public static ItemStack makeBackpack(ItemStack backpackIn, String colorName) - { - if (backpackIn == null) return null; - if (backpackIn.stackTagCompound == null) - { - backpackIn.setTagCompound(new NBTTagCompound()); - backpackIn.stackTagCompound.setString("colorName", colorName); - } - ItemStack newBackpack = backpackIn.copy(); - NBTTagCompound compound = (NBTTagCompound) backpackIn.getTagCompound().copy(); - newBackpack.setTagCompound(compound); - newBackpack.stackTagCompound.setString("colorName", colorName); - return newBackpack; - } - - @Override - public boolean matches(InventoryCrafting invC, World world) - { - //LogHelper.info("Matching recipe"); - if (this.recipe == null || invC == null) return false; - for (int i = 0; i < invC.getSizeInventory(); i++) - { - if (!compareStacks(this.recipe[i], invC.getStackInSlot(i))) - { - return false; - } - - } - return true; - } - - @Override - public ItemStack getCraftingResult(InventoryCrafting invC) - { - if (matches(invC, null)) - { - return makeBackpack(invC.getStackInSlot(4), this.name); - } - return null; - } - - @Override - public int getRecipeSize() - { - return 9; - } - - @Override - public ItemStack getRecipeOutput() - { - return result; - } -} From db051ad35a68a8aa2d463f728d6373609d5d34d0 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:35:34 -0400 Subject: [PATCH 109/462] Delete ModBlocks.java --- init/ModBlocks.java | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 init/ModBlocks.java diff --git a/init/ModBlocks.java b/init/ModBlocks.java deleted file mode 100644 index 6d2cab7f..00000000 --- a/init/ModBlocks.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.darkona.adventurebackpack.init; - - -import com.darkona.adventurebackpack.block.*; -import cpw.mods.fml.common.registry.GameRegistry; - -/** - * Created by Darkona on 12/10/2014. - */ -public class ModBlocks -{ - - public static BlockAdventureBackpack blockBackpack = new BlockAdventureBackpack(); - public static BlockSleepingBag blockSleepingBag = new BlockSleepingBag(); - public static BlockCampFire blockCampFire = new BlockCampFire(); - - public static void init() - { - GameRegistry.registerBlock(blockBackpack, "blockBackpack"); - GameRegistry.registerBlock(blockSleepingBag, "blockSleepingBag"); - GameRegistry.registerBlock(blockCampFire, "blockCampFire"); - - GameRegistry.registerTileEntity(TileCampfire.class, "tileCampFire"); - GameRegistry.registerTileEntity(TileAdventureBackpack.class, "adventureBackpackTileEntity"); - } - -} From 416370284a8dcb53e6ecb2c9e57345f1097ffb5a Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:35:40 -0400 Subject: [PATCH 110/462] Delete ModWorldGen.java --- init/ModWorldGen.java | 99 ------------------------------------------- 1 file changed, 99 deletions(-) delete mode 100644 init/ModWorldGen.java diff --git a/init/ModWorldGen.java b/init/ModWorldGen.java deleted file mode 100644 index 795519c4..00000000 --- a/init/ModWorldGen.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.darkona.adventurebackpack.init; - -import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.reference.BackpackNames; -import cpw.mods.fml.common.registry.VillagerRegistry; -import net.minecraft.entity.passive.EntityVillager; -import net.minecraft.init.Items; -import net.minecraft.item.ItemStack; -import net.minecraft.util.WeightedRandomChestContent; -import net.minecraft.village.MerchantRecipe; -import net.minecraft.village.MerchantRecipeList; -import net.minecraftforge.common.ChestGenHooks; - -import java.util.Random; - -/** - * Created on 24/12/2014 - * - * @author Darkona - */ -public class ModWorldGen -{ - public static void init() - { - - //Dungeon Generation - - for (int i = 0; i < BackpackNames.backpackNames.length; i++) - { - if (BackpackNames.backpackNames[i].equals("IronGolem")) - { - ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i); - ChestGenHooks.addItem(ChestGenHooks.VILLAGE_BLACKSMITH, new WeightedRandomChestContent(backpack, 1, 1, 2)); - } else if (BackpackNames.backpackNames[i].equals("Bat")) - { - ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i); - ChestGenHooks.addItem(ChestGenHooks.DUNGEON_CHEST, new WeightedRandomChestContent(backpack, 1, 1, 2)); - ChestGenHooks.addItem(ChestGenHooks.MINESHAFT_CORRIDOR, new WeightedRandomChestContent(backpack, 1, 1, 12)); - } else if (BackpackNames.backpackNames[i].equals("Pigman") && ConfigHandler.PIGMAN_ALLOWED) - { - ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i); - ChestGenHooks.addItem(ChestGenHooks.PYRAMID_DESERT_CHEST, new WeightedRandomChestContent(backpack, 1, 1, 12)); - VillagerRegistry.instance().registerVillageTradeHandler(i, new ModWorldGen.TradeHandler(backpack)); - } else if (BackpackNames.backpackNames[i].equals("Villager")) - { - ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i); - VillagerRegistry.instance().registerVillageTradeHandler(1, new ModWorldGen.TradeHandler(backpack)); - VillagerRegistry.instance().registerVillageTradeHandler(2, new ModWorldGen.TradeHandler(backpack)); - VillagerRegistry.instance().registerVillageTradeHandler(3, new ModWorldGen.TradeHandler(backpack)); - } else if (BackpackNames.backpackNames[i].equals("Standard") && ConfigHandler.BONUS_CHEST_ALLOWED) - { - ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i); - ChestGenHooks.addItem(ChestGenHooks.BONUS_CHEST, new WeightedRandomChestContent(backpack, 0, 1, 5)); - } - } - - //Villager Trade - - - } - - public static class TradeHandler implements VillagerRegistry.IVillageTradeHandler - { - - ItemStack backpack; - - TradeHandler(ItemStack backpack) - { - this.backpack = backpack; - } - - /** - * Called to allow changing the content of the {@link net.minecraft.village.MerchantRecipeList} for the villager - * supplied during creation - * - * @param villager - * @param recipeList - * @param random - */ - @SuppressWarnings("unchecked") - @Override - public void manipulateTradesForVillager(EntityVillager villager, MerchantRecipeList recipeList, Random random) - { - //0 Farmer, 1 Librarian, 2Priest, 3 Blacksmith, 4 Butcher - if (villager.getProfession() == 1 || villager.getProfession() == 2) - { - ItemStack payment = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), 0); - recipeList.add(new MerchantRecipe(new ItemStack(Items.emerald, 10), payment, this.backpack)); - } - if (villager.getProfession() == 3) - { - ItemStack payment = new ItemStack(ModItems.adventureBackpack); - BackpackNames.setBackpackColorName(payment, "IronGolem"); - recipeList.add(new MerchantRecipe(new ItemStack(Items.emerald, 10), payment, this.backpack)); - } - } - } - -} From 000d4bc917d3e68fad0a9833a36d4e76af82166c Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:35:47 -0400 Subject: [PATCH 111/462] Delete ModRecipes.java --- init/ModRecipes.java | 282 ------------------------------------------- 1 file changed, 282 deletions(-) delete mode 100644 init/ModRecipes.java diff --git a/init/ModRecipes.java b/init/ModRecipes.java deleted file mode 100644 index 8445b79b..00000000 --- a/init/ModRecipes.java +++ /dev/null @@ -1,282 +0,0 @@ -package com.darkona.adventurebackpack.init; - -import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.init.recipes.BackpackRecipesList; -import com.darkona.adventurebackpack.reference.BackpackNames; -import com.darkona.adventurebackpack.util.LogHelper; -import cpw.mods.fml.common.registry.GameRegistry; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; -import net.minecraft.item.ItemStack; -import net.minecraftforge.oredict.ShapedOreRecipe; - -import java.lang.reflect.Field; - -/** - * Created on 20/10/2014 - * - * @author Darkona - */ -public class ModRecipes -{ - private static ItemStack bc(int damage) - { - return BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), damage); - } - - public static void init() - { - - //CampFire - GameRegistry.addRecipe(new ShapedOreRecipe(ModBlocks.blockCampFire, - " S ", - "SxS", - "ccc", - 'S', "stickWood", - 'x', Items.coal, - 'c', "cobblestone" - )); - //Inflatable Boat - GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 7), - " ", - "w w", - "sws", - 'w', Blocks.wool, - 's', Blocks.sand - ); - //Sleeping Bag - GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 1), - " X", - "CCC", - 'X', Blocks.wool, - 'C', Blocks.carpet - ); - - //Backpack Tank - GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 2), - "GIG", - "GGG", - "GIG", - 'G', Blocks.glass, - 'I', Items.iron_ingot - ); - - - //Inflatable Boat (Motorized) - GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 8), - " B ", - " E ", - " H ", - 'B', new ItemStack(ModItems.component, 1, 7), - 'H', new ItemStack(ModItems.component, 1, 9), - 'E', new ItemStack(ModItems.component, 1, 5) - ); - - //Hose Nozzle - GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 3), - " G ", - "ILI", - " ", - 'G', Items.gold_ingot, - 'I', Items.iron_ingot, - 'L', Blocks.lever - ); - - //Machete Handle - GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 4), - "YIY", - "BSB", - "RbR", - 'Y', new ItemStack(Items.dye, 1, 11), - 'B', new ItemStack(Items.dye, 1, 4), - 'R', new ItemStack(Items.dye, 1, 1), - 'b', new ItemStack(Items.dye, 1, 0), - 'I', Items.iron_ingot, - 'S', Items.stick - ); - - //Mechete - GameRegistry.addRecipe(new ItemStack(ModItems.machete), - " I ", - " I ", - " H ", - 'I', Items.iron_ingot, - 'H', new ItemStack(ModItems.component, 1, 4) - ); - //Adventure Hats - GameRegistry.addRecipe(new ItemStack(ModItems.adventureHat), - " ", - "nC ", - "LLL", - 'n', Items.gold_nugget, - 'C', Items.leather_helmet, - 'L', Items.leather - ); - //Adventure Suit - GameRegistry.addRecipe(new ItemStack(ModItems.adventureSuit), - " V ", - " W ", - " ", - 'V', Items.leather_chestplate, - 'W', Blocks.wool - ); - //Adventure Pants - GameRegistry.addRecipe(new ItemStack(ModItems.Pantaloon), - " V ", - " W ", - " ", - 'V', Items.leather_leggings, - 'W', Blocks.wool - ); - //Piston Boots - GameRegistry.addRecipe(new ItemStack(ModItems.pistonBoots), - " B ", - "PSP", - 'B', Items.leather_boots, - 'P', Blocks.piston, - 'S', Items.slime_ball - ); - //Melon Juice Bottle - GameRegistry.addShapelessRecipe(new ItemStack(ModItems.melonJuiceBottle), - Items.melon, Items.potionitem - ); - //Hose - GameRegistry.addRecipe(new ItemStack(ModItems.hose), - "NGG", - " G", - 'N', new ItemStack(ModItems.component, 1, 3), - 'G', new ItemStack(Items.dye, 1, 2) - ); - BackpackRecipesList br = new BackpackRecipesList(); - int counter = 0; - for (int i = 0; i < BackpackNames.backpackNames.length; i++) - { - for (Field field : BackpackRecipesList.class.getFields()) - { - try - { - if (field.getName().equals((BackpackNames.backpackNames[i]))) - { - GameRegistry.addRecipe(new ShapedOreRecipe(BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i), (Object[]) field.get(br))); - counter++; - } - } catch (Exception oops) - { - LogHelper.error("Huge mistake during reflection. Some bad things might happen: " + oops.getClass().getName()); - oops.printStackTrace(); - } - } - - } - LogHelper.info("Loaded " + counter + " backpack recipes."); - - //GameRegistry.addRecipe(new AbstractBackpackRecipe()); - /*BackpackRecipes br = new BackpackRecipes(); - int i = 0; - for (Field field : BackpackRecipes.class.getFields()) - { - try - { - if (field.getType() == ItemStack[].class) - { - AbstractBackpackRecipeTwo recipe = new AbstractBackpackRecipeTwo(field.getName(), (ItemStack[]) field.get(br)); - GameRegistry.addRecipe(recipe); - //LogHelper.info("Loaded recipe for " + field.getName() + " backpack."); - i++; - } - } catch (Exception oops) - { - LogHelper.error("Huge mistake during reflection. Some bad things might happen."); - } - } - LogHelper.info("Loaded " + i + " backpack recipes."); - RecipeSorter.register(ModInfo.MOD_ID + ":adventureBackpack", AbstractBackpackRecipeTwo.class, RecipeSorter.Category.SHAPED, "after:minecraft:shapeless"); - */ - } - - public static void conditionalInit() - { - if(ConfigHandler.SADDLE_RECIPE) - { - GameRegistry.addRecipe(new ItemStack(Items.saddle), - "LLL", - "L L", - "I I", - 'L', Items.leather, - 'I', Items.iron_ingot - ); - } - - //change to make it not support BuildCraft there are people out there who dont like that mod - { - //Copter Engine - GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 5), - "IGI", - "PCP", - "FOF", - 'I', Items.iron_ingot, - 'G', Items.gold_ingot, - 'P', Blocks.piston, - 'F', Blocks.furnace, - 'C', Items.cauldron, - 'O', Blocks.obsidian - ); - - //Copter Blades - GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 6), - "III", - " F ", - " F ", - 'I', Items.iron_ingot, - 'F', Blocks.fence - ); - - //Hydro Blades - GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 9), - " F ", - " F ", - "III", - 'I', Items.iron_ingot, - 'F', Blocks.fence - ); - - //Clockwork Crossbow - GameRegistry.addRecipe(new ItemStack(ModItems.cwxbow), - " ", - "BA ", - "SW ", - 'B', Items.bow, - 'A', Items.arrow, - 'S', Items.stick, - 'W', Blocks.planks - ); - - //Copter Pack - GameRegistry.addRecipe(new ItemStack(ModItems.copterPack), - "WBW", - "TEI", - "CDI", - 'W', Blocks.planks, - 'B', new ItemStack(ModItems.component, 1, 6), - 'T', new ItemStack(ModItems.component, 1, 2), - 'E', new ItemStack(ModItems.component, 1, 5), - 'C', new ItemStack(Items.dye, 1, 2), - 'D', Items.diamond, - 'I', Items.iron_ingot - ); - - //CoalJetpack (Broken Test out) - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.CoalJetpack), - "SWT", - "GIG", - "FWS", - 'W', "plankWood", - 'G', "ingotGold", - 'I',"ingotIron", - 'S', "Stone", - 'F', "Furnace", - 'T', new ItemStack(ModItems.component, 1, 2) - )); - } - } -} \ No newline at end of file From d715aade6fa69b988ebf9c95541b6d4789690286 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:35:53 -0400 Subject: [PATCH 112/462] Delete ModNetwork.java --- init/ModNetwork.java | 74 -------------------------------------------- 1 file changed, 74 deletions(-) delete mode 100644 init/ModNetwork.java diff --git a/init/ModNetwork.java b/init/ModNetwork.java deleted file mode 100644 index 14abd2e4..00000000 --- a/init/ModNetwork.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.darkona.adventurebackpack.init; - -import com.darkona.adventurebackpack.network.*; -import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; -import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; -import com.darkona.adventurebackpack.playerProperties.BackpackProperty; -import com.darkona.adventurebackpack.reference.ModInfo; -import cpw.mods.fml.common.network.NetworkRegistry; -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper; -import cpw.mods.fml.relauncher.Side; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.world.WorldServer; - -/** - * Created on 12/10/2014 - * @author Darkona - * - */ -public class ModNetwork -{ - public static SimpleNetworkWrapper net; - public static int messages = 0; - - public static void init() - { - net = NetworkRegistry.INSTANCE.newSimpleChannel(ModInfo.MOD_CHANNEL); - - registerMessage(SyncPropertiesPacket.class, SyncPropertiesPacket.Message.class); - registerMessage(EntityParticlePacket.class, EntityParticlePacket.Message.class); - registerMessage(EntitySoundPacket.class, EntitySoundPacket.Message.class); - - registerMessage(WearableModePacket.class, WearableModePacket.Message.class); - registerMessage(CycleToolPacket.class, CycleToolPacket.CycleToolMessage.class); - registerMessage(GUIPacket.class, GUIPacket.GUImessage.class); - registerMessage(SleepingBagPacket.class, SleepingBagPacket.SleepingBagMessage.class); - registerMessage(CowAbilityPacket.class, CowAbilityPacket.CowAbilityMessage.class); - registerMessage(PlayerActionPacket.class, PlayerActionPacket.ActionMessage.class); - registerMessage(EquipUnequipBackWearablePacket.class, EquipUnequipBackWearablePacket.Message.class); - - } - public static void registerClientSide(Class handler, Class message) - { - net.registerMessage(handler, message, messages, Side.CLIENT); - messages++; - } - - private static void registerMessage(Class handler, Class message) - { - net.registerMessage(handler, message, messages, Side.CLIENT); - net.registerMessage(handler, message, messages, Side.SERVER); - messages++; - } - - public static void sendToNearby(IMessage message, EntityPlayer player) - { - if(player!=null && player.worldObj instanceof WorldServer) - { - try - { - ((WorldServer) player.worldObj).getEntityTracker().func_151248_b(player, ModNetwork.net.getPacketFrom(message)); - } catch (Exception ex) - { - ex.printStackTrace(); - } - } - } - - public static void sendToDimension(IMessage message, EntityPlayer player) - { - net.sendToDimension(message, player.dimension); - BackpackProperty.sync(player); - } -} From 0d8f1e1d15f899119581e6fb853783e94e6c6104 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:36:00 -0400 Subject: [PATCH 113/462] Delete ModMaterials.java --- init/ModMaterials.java | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 init/ModMaterials.java diff --git a/init/ModMaterials.java b/init/ModMaterials.java deleted file mode 100644 index 0a9d94ec..00000000 --- a/init/ModMaterials.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.darkona.adventurebackpack.init; - -import net.minecraft.item.Item; -import net.minecraft.item.ItemArmor; -import net.minecraftforge.common.util.EnumHelper; - -/** - * Created on 11/10/2014 - * @author Darkona - * - */ -public class ModMaterials -{ - - public static Item.ToolMaterial ruggedIron = EnumHelper.addToolMaterial("RUGGED_IRON", 2, 350, 6.5F, 5.2F, 10); - - public static ItemArmor.ArmorMaterial ruggedLeather = EnumHelper.addArmorMaterial("RUGGED_LEATHER", 15, new int[]{2, 5, 4, 2}, 12); -} From 43ad987ac627023ac5c4f9583fbe677bbfeb4343 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:36:06 -0400 Subject: [PATCH 114/462] Delete ModItems.java --- init/ModItems.java | 43 ------------------------------------------- 1 file changed, 43 deletions(-) delete mode 100644 init/ModItems.java diff --git a/init/ModItems.java b/init/ModItems.java deleted file mode 100644 index 504c8d4a..00000000 --- a/init/ModItems.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.darkona.adventurebackpack.init; - -import com.darkona.adventurebackpack.item.*; -import cpw.mods.fml.common.registry.GameRegistry; - -/** - * Created on 10/10/2014 - * @author Darkona - * - */ -public class ModItems -{ - - public static final ItemMachete machete = new ItemMachete(); - public static final ItemComponent component = new ItemComponent(); - public static final ItemHose hose = new ItemHose(); - public static final ArmorAB adventureHat = new ItemAdventureHat(); - public static final ArmorAB pistonBoots = new ItemPistonBoots(); - public static final ArmorAB adventureSuit = new ItemAdventureJacket(); - public static final ItemAdventureBackpack adventureBackpack = new ItemAdventureBackpack(); - public static final ItemJuiceBottle melonJuiceBottle = new ItemJuiceBottle(); - public static final ItemCopterPack copterPack = new ItemCopterPack(); - public static final ItemCrossbow cwxbow = new ItemCrossbow(); - public static final ItemCoalJetpack CoalJetpack = new ItemCoalJetpack(); - public static final ItemAdventurePantaloon Pantaloon = new ItemAdventurePantaloon(); - - public static void init() - { - GameRegistry.registerItem(component, "backpackComponent"); - GameRegistry.registerItem(machete, "machete"); - GameRegistry.registerItem(adventureHat, "adventureHat"); - GameRegistry.registerItem(pistonBoots, "pistonBoots"); - GameRegistry.registerItem(adventureSuit, "adventureSuit"); - GameRegistry.registerItem(adventureBackpack, "adventureBackpack"); - GameRegistry.registerItem(hose, "backpackHose"); - GameRegistry.registerItem(melonJuiceBottle, "melonJuiceBottle"); - GameRegistry.registerItem(cwxbow, "clockworkCrossbow"); - GameRegistry.registerItem(CoalJetpack, "CoalJetpack"); - GameRegistry.registerItem(copterPack, "copterPack"); - GameRegistry.registerItem(Pantaloon, "Pantaloon"); - - } -} From 44068bf15e5097e7ef332d0383f180d87b3a87f1 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:36:24 -0400 Subject: [PATCH 115/462] Delete ModEntities.java --- init/ModEntities.java | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100644 init/ModEntities.java diff --git a/init/ModEntities.java b/init/ModEntities.java deleted file mode 100644 index 7ea8c023..00000000 --- a/init/ModEntities.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.darkona.adventurebackpack.init; - -import com.darkona.adventurebackpack.AdventureBackpack; -import com.darkona.adventurebackpack.entity.EntityFriendlySpider; -import com.darkona.adventurebackpack.entity.EntityInflatableBoat; -import cpw.mods.fml.common.registry.EntityRegistry; - -/** - * Created on 12/10/2014 - * - * @author Darkona - */ -public class ModEntities -{ - - public static void init() - { - //Color color1 = new Color(227,129,216); - // Color color2 = new Color(0, 0, 0); - //int color_int1 = (color1.getRed() << 16) + (color1.getGreen() << 8) + color1.getBlue(); - //int color_int2 = (color2.getRed() << 16) + (color2.getGreen() << 8) + color2.getBlue(); - int counter = 0; - EntityRegistry.registerModEntity(EntityInflatableBoat.class, "inflatableBoat", counter++, AdventureBackpack.instance, 64, 1, true); - - EntityRegistry.registerModEntity(EntityFriendlySpider.class, "rideableSpider", counter++, AdventureBackpack.instance, 64, 2, true); - //EntityRegistry.registerGlobalEntityID(EntityRideableSpider.class, "rideableSpider", EntityRegistry.findGlobalUniqueEntityId(),color_int2,color_int1); - } -} From 0761be562ac0883faef9b7a02825220bb396d0f2 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:36:35 -0400 Subject: [PATCH 116/462] Delete ModFluids.java --- init/ModFluids.java | 40 ---------------------------------------- 1 file changed, 40 deletions(-) delete mode 100644 init/ModFluids.java diff --git a/init/ModFluids.java b/init/ModFluids.java deleted file mode 100644 index b487faa1..00000000 --- a/init/ModFluids.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.darkona.adventurebackpack.init; - -import com.darkona.adventurebackpack.fluids.FluidMelonJuice; -import com.darkona.adventurebackpack.fluids.FluidMilk; -import com.darkona.adventurebackpack.fluids.FluidMushroomStew; -import com.darkona.adventurebackpack.reference.GeneralReference; -import net.minecraft.init.Items; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidContainerRegistry; -import net.minecraftforge.fluids.FluidRegistry; - -/** - * Created on 12/10/2014. - * - * @author Javier Darkona - */ -public class ModFluids -{ - public static FluidMilk milk; - public static FluidMelonJuice melonJuice; - public static FluidMushroomStew mushroomStew; - public static void init() - { - milk = new FluidMilk(); - melonJuice = new FluidMelonJuice(); - mushroomStew = new FluidMushroomStew(); - - FluidRegistry.registerFluid(milk); - FluidContainerRegistry.registerFluidContainer(milk, new ItemStack(Items.milk_bucket), FluidContainerRegistry.EMPTY_BUCKET); - - FluidRegistry.registerFluid(melonJuice); - FluidContainerRegistry.registerFluidContainer(melonJuice, new ItemStack(ModItems.melonJuiceBottle), FluidContainerRegistry.EMPTY_BOTTLE); - - FluidRegistry.registerFluid(mushroomStew); - FluidContainerRegistry.registerFluidContainer(mushroomStew, new ItemStack(Items.mushroom_stew), new ItemStack(Items.bowl)); - - GeneralReference.init(); - } - -} From 05d56b2a49d3434eb3a753f3457385f1cf65acc8 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:37:02 -0400 Subject: [PATCH 117/462] Delete SlotTool.java --- inventory/SlotTool.java | 114 ---------------------------------------- 1 file changed, 114 deletions(-) delete mode 100644 inventory/SlotTool.java diff --git a/inventory/SlotTool.java b/inventory/SlotTool.java deleted file mode 100644 index 7e3870b4..00000000 --- a/inventory/SlotTool.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.darkona.adventurebackpack.inventory; - -import com.darkona.adventurebackpack.item.ItemAdventureBackpack; -import com.darkona.adventurebackpack.item.ItemHose; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.*; - -/** - * Created on 12/10/2014 - * - * @author Darkona - */ -public class SlotTool extends SlotAdventureBackpack -{ - - public SlotTool(IInventory inventory, int id, int x, int y) - { - super(inventory, id, x, y); - } - - @Override - public boolean isItemValid(ItemStack stack) - { - return isValidTool(stack); - } - - public static boolean isValidTool(ItemStack stack) - { - - boolean valid = false; - - String[] validToolNames = { - "wrench", "hammer", "axe", "shovel", "grafter", "scoop", "crowbar", "mattock", "drill",/*"hatchet","excavator","chisel"*/ - }; - - String[] invalidToolNames = { - "bucket", "sword", "dagger", "sabre", "rapier", "shield", "cutlass", "bow", "whip" - }; - - if (stack != null && stack.getMaxStackSize() == 1) - { - Item item = stack.getItem(); - String name = item.getUnlocalizedName().toLowerCase(); - - // Vanilla - if (item instanceof ItemTool || item instanceof ItemHoe || item instanceof ItemShears || item instanceof ItemFishingRod || item instanceof ItemFlintAndSteel) - { - return true; - } - - //Adventure Backpack duh! - if (item instanceof ItemHose || item instanceof ItemAdventureBackpack) - { - return false; - } - - // Just for extra compatibility and/or security and/or less annoyance - for (String toolName : validToolNames) - { - @SuppressWarnings("unused") - String a = toolName; - if (name.contains(toolName)) return true; - } - - for (String toolName : invalidToolNames) - { - @SuppressWarnings("unused") - String a = toolName; - if (name.contains(toolName)) return false; - } - - //And also this because I'm a badass - try - { - // Tinker's Construct - if (item.getClass().getName().contains("tconstruct.items.tools")) return true; - } catch (Exception oops) - { - // oops.printStackTrace(); - } - try - { - //Buildcraft - if (java.lang.Class.forName("buildcraft.api.tools.IToolWrench").isInstance(item)) return true; - } catch (Exception oops) - { - // oops.printStackTrace(); - } - try - { - //IndustrialCraft - if (java.lang.Class.forName("ic2.api.item.IElectricItem").isInstance(item)) return true; - } catch (Exception oops) - { - // oops.printStackTrace(); - } - //Thaumcraft - try - { - //Thermal Expansion - if (java.lang.Class.forName("cofh.core.item.tool").isInstance(item)) return true; - if (java.lang.Class.forName("thermalexpansion.item.tool").isInstance(item)) return true; - } catch (Exception oops) - { - // oops.printStackTrace(); - } - - } - - return valid; - } - - -} From 4071cfa4b901fd30c99d1d9ceb7869fd2fb93433 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:37:08 -0400 Subject: [PATCH 118/462] Delete SlotFuel.java --- inventory/SlotFuel.java | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 inventory/SlotFuel.java diff --git a/inventory/SlotFuel.java b/inventory/SlotFuel.java deleted file mode 100644 index 622d41d6..00000000 --- a/inventory/SlotFuel.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.darkona.adventurebackpack.inventory; - -import net.minecraft.inventory.IInventory; - -/** - * Created on 17/01/2015 - * - * @author Darkona - */ -public class SlotFuel extends SlotAdventureBackpack -{ - public SlotFuel(IInventory p_i1824_1_, int p_i1824_2_, int p_i1824_3_, int p_i1824_4_) - { - super(p_i1824_1_, p_i1824_2_, p_i1824_3_, p_i1824_4_); - } - - - -} From adcb010f7a4abdbd98af0eb82fa4b5b50a785c83 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:37:16 -0400 Subject: [PATCH 119/462] Delete SlotFluid.java --- inventory/SlotFluid.java | 52 ---------------------------------------- 1 file changed, 52 deletions(-) delete mode 100644 inventory/SlotFluid.java diff --git a/inventory/SlotFluid.java b/inventory/SlotFluid.java deleted file mode 100644 index c8b6c397..00000000 --- a/inventory/SlotFluid.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.darkona.adventurebackpack.inventory; - -import com.darkona.adventurebackpack.util.Utils; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidContainerRegistry; - -/** - * Created on 12/10/2014 - * @author Darkona - * - * - */ -public class SlotFluid extends SlotAdventureBackpack -{ - - public SlotFluid(IInventory inventory, int id, int x, int y) - { - super(inventory, id, x, y); - } - - public static boolean valid(ItemStack stack) - { - return ((stack != null) && (FluidContainerRegistry.isContainer(stack))); - } - - @Override - public boolean isItemValid(ItemStack stack) - { - return ((stack != null) && (FluidContainerRegistry.isContainer(stack))); - } - - @Override - public void onSlotChanged() - { - - if (Utils.inServer()) - { - if (inventory instanceof IInventoryTanks) - { - ((IInventoryTanks) this.inventory).updateTankSlots(); - } - } - super.onSlotChanged(); - } - - @Override - public void putStack(ItemStack par1ItemStack) - { - super.putStack(par1ItemStack); - } -} From ac372aec97e641cb5a71383556d8c03e39dc3841 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:37:22 -0400 Subject: [PATCH 120/462] Delete SlotBackpack.java --- inventory/SlotBackpack.java | 34 ---------------------------------- 1 file changed, 34 deletions(-) delete mode 100644 inventory/SlotBackpack.java diff --git a/inventory/SlotBackpack.java b/inventory/SlotBackpack.java deleted file mode 100644 index bcf50b24..00000000 --- a/inventory/SlotBackpack.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.darkona.adventurebackpack.inventory; - -import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; -import com.darkona.adventurebackpack.init.ModBlocks; -import com.darkona.adventurebackpack.item.ItemAdventureBackpack; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - -/** - * Created by Darkona on 12/10/2014. - */ -public class SlotBackpack extends SlotAdventureBackpack -{ - - public SlotBackpack(IInventoryAdventureBackpack inventory, int id, int x, int y) - { - super(inventory, id, x, y); - } - - @Override - public boolean isItemValid(ItemStack stack) - { - return (!(stack.getItem() instanceof ItemAdventureBackpack) && !(stack.getItem() == Item.getItemFromBlock(ModBlocks.blockBackpack))); - } - - @Override - public void onPickupFromSlot(EntityPlayer p_82870_1_, ItemStack p_82870_2_) - { - super.onPickupFromSlot(p_82870_1_, p_82870_2_); - } - - -} From e272c4f09a9e8db89da18800539260f53704d5c0 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:37:29 -0400 Subject: [PATCH 121/462] Delete SlotAdventureBackpack.java --- inventory/SlotAdventureBackpack.java | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100644 inventory/SlotAdventureBackpack.java diff --git a/inventory/SlotAdventureBackpack.java b/inventory/SlotAdventureBackpack.java deleted file mode 100644 index dfc48f5d..00000000 --- a/inventory/SlotAdventureBackpack.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.darkona.adventurebackpack.inventory; - -import com.darkona.adventurebackpack.util.Utils; -import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.Slot; - -/** - * Created on 17/01/2015 - * - * @author Darkona - */ -public abstract class SlotAdventureBackpack extends Slot -{ - public SlotAdventureBackpack(IInventory p_i1824_1_, int p_i1824_2_, int p_i1824_3_, int p_i1824_4_) - { - super(p_i1824_1_, p_i1824_2_, p_i1824_3_, p_i1824_4_); - } - - @Override - public void onSlotChanged() - { - if(Utils.inServer()) - { - if (inventory instanceof IInventoryTanks) - ((IInventoryTanks) this.inventory).dirtyInventory(); - } - } -} From 32f4283e716cd864227c98f47075117d7d2d61d8 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:37:36 -0400 Subject: [PATCH 122/462] Delete InventoryCopterPack.java --- inventory/InventoryCopterPack.java | 286 ----------------------------- 1 file changed, 286 deletions(-) delete mode 100644 inventory/InventoryCopterPack.java diff --git a/inventory/InventoryCopterPack.java b/inventory/InventoryCopterPack.java deleted file mode 100644 index cea48591..00000000 --- a/inventory/InventoryCopterPack.java +++ /dev/null @@ -1,286 +0,0 @@ -package com.darkona.adventurebackpack.inventory; - -import com.darkona.adventurebackpack.item.ItemCopterPack; -import com.darkona.adventurebackpack.reference.GeneralReference; -import com.darkona.adventurebackpack.util.FluidUtils; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraftforge.fluids.FluidContainerRegistry; -import net.minecraftforge.fluids.FluidTank; - -/** - * Created on 02/01/2015 - * - * @author Darkona - */ -public class InventoryCopterPack implements IInventoryTanks -{ - private ItemStack containerStack; - public FluidTank fuelTank = new FluidTank(6000); - public int tickCounter = 0; - public byte status = ItemCopterPack.OFF_MODE; - private ItemStack[] inventory = new ItemStack[2]; - - - - public InventoryCopterPack(ItemStack copterPack) - { - status = ItemCopterPack.OFF_MODE; - containerStack = copterPack; - if(!copterPack.hasTagCompound()) - { - copterPack.stackTagCompound = new NBTTagCompound(); - saveToNBT(copterPack.stackTagCompound); - } - - openInventory(); - } - - public FluidTank getFuelTank() - { - return fuelTank; - } - - public void consumeFuel(int quantity) - { - fuelTank.drain(quantity, true); - dirtyTanks(); - } - - public boolean canConsumeFuel(int quantity) - { - return fuelTank.drain(quantity, false) != null && fuelTank.drain(quantity, false).amount > 0; - } - - @Override - public int getSizeInventory() - { - return inventory.length; - } - - @Override - public ItemStack getStackInSlot(int i) - { - return inventory[i]; - } - - @Override - public ItemStack decrStackSize(int slot, int quantity) - { - ItemStack itemstack = getStackInSlot(slot); - - if (itemstack != null) - { - if (itemstack.stackSize <= quantity) - { - setInventorySlotContents(slot, null); - } else - { - itemstack = itemstack.splitStack(quantity); - } - } - return itemstack; - } - - @Override - public ItemStack getStackInSlotOnClosing(int i) - { - return inventory[i]; - } - - @Override - public void setInventorySlotContents(int slot, ItemStack stack) - { - inventory[slot] = stack; - if (stack != null && stack.stackSize > getInventoryStackLimit()) - { - stack.stackSize = getInventoryStackLimit(); - } - if(FluidContainerRegistry.isFilledContainer(stack) && GeneralReference.isValidFuel(FluidContainerRegistry.getFluidForFilledItem(stack).getFluid())) - { - InventoryActions.transferContainerTank(this, fuelTank, 0); - }else - if(FluidContainerRegistry.isEmptyContainer(stack) && fuelTank.getFluid()!=null && FluidUtils.isContainerForFluid(stack, fuelTank.getFluid().getFluid())) - { - InventoryActions.transferContainerTank(this, fuelTank, 0); - } - dirtyTanks(); - dirtyInventory(); - } - - @Override - public String getInventoryName() - { - return "Copter Pack"; - } - - @Override - public boolean hasCustomInventoryName() - { - return true; - } - - @Override - public int getInventoryStackLimit() - { - return 64; - } - - @Override - public void markDirty() - { - containerStack.stackTagCompound.setTag("fuelTank", fuelTank.writeToNBT(new NBTTagCompound())); - containerStack.stackTagCompound.setByte("status", status); - containerStack.stackTagCompound.setInteger("tickCounter", this.tickCounter); - } - - @Override - public void dirtyTanks() - { - containerStack.stackTagCompound.setTag("fuelTank", fuelTank.writeToNBT(new NBTTagCompound())); - } - - @Override - public void dirtyInventory() - { - - } - - public void dirtyCounter() - { - containerStack.stackTagCompound.setInteger("tickCounter", this.tickCounter); - } - - @Override - public boolean isUseableByPlayer(EntityPlayer player) - { - return true; - } - - @Override - public void openInventory() - { - loadFromNBT(containerStack.stackTagCompound); - } - - @Override - public void closeInventory() - { - saveToNBT(containerStack.stackTagCompound); - } - - public void closeInventoryNoStatus() - { - containerStack.stackTagCompound.setTag("fuelTank", this.fuelTank.writeToNBT(new NBTTagCompound())); - containerStack.stackTagCompound.setInteger("tickCounter", this.tickCounter); - } - - @Override - public boolean isItemValidForSlot(int i, ItemStack stack) - { - return false; - } - - public void onInventoryChanged() - { - - @SuppressWarnings("unused") - ItemStack container = getStackInSlot(0); - - closeInventory(); - } - - @Override - public void setInventorySlotContentsNoSave(int slot, ItemStack stack) - { - if (slot > inventory.length) return; - inventory[slot] = stack; - if (stack != null && stack.stackSize > this.getInventoryStackLimit()) - { - stack.stackSize = this.getInventoryStackLimit(); - } - } - - @Override - public ItemStack decrStackSizeNoSave(int slot, int amount) - { - if (slot < inventory.length && inventory[slot] != null) - { - if (inventory[slot].stackSize > amount) - { - ItemStack result = inventory[slot].splitStack(amount); - return result; - } - ItemStack stack = inventory[slot]; - setInventorySlotContentsNoSave(slot, null); - return stack; - } - return null; - } - - public ItemStack getParentItemStack() - { - return this.containerStack; - } - - - public int getTickCounter() - { - return tickCounter; - } - - public void setTickCounter(int ticks) - { - this.tickCounter = ticks; - } - - public byte getStatus() - { - return status; - } - - @Override - public boolean updateTankSlots() - { - return false; - } - - @Override - public void loadFromNBT(NBTTagCompound compound) - { - fuelTank.readFromNBT(compound.getCompoundTag("fuelTank")); - status = compound.getByte("status"); - tickCounter = compound.getInteger("tickCounter"); - } - - @Override - public void saveToNBT(NBTTagCompound compound) - { - compound.setTag("fuelTank", fuelTank.writeToNBT(new NBTTagCompound())); - compound.setByte("status", status); - compound.setInteger("tickCounter", this.tickCounter); - } - - @Override - public FluidTank[] getTanksArray() - { - FluidTank[] tanks = {fuelTank}; - return tanks; - } - - public void setStatus(byte status) - { - this.status = status; - } - - public void dirtyStatus() - { - containerStack.stackTagCompound.setByte("status", status); - } - - public void setContainerStack(ItemStack containerStack) - { - this.containerStack = containerStack; - } -} From 661fcdd1f79a3ddd51ace929cff5ef3612a71747 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:37:44 -0400 Subject: [PATCH 123/462] Delete ContainerBackpack.java --- inventory/ContainerBackpack.java | 378 ------------------------------- 1 file changed, 378 deletions(-) delete mode 100644 inventory/ContainerBackpack.java diff --git a/inventory/ContainerBackpack.java b/inventory/ContainerBackpack.java deleted file mode 100644 index 205371fc..00000000 --- a/inventory/ContainerBackpack.java +++ /dev/null @@ -1,378 +0,0 @@ -package com.darkona.adventurebackpack.inventory; - -import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; -import com.darkona.adventurebackpack.item.ItemAdventureBackpack; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.*; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.CraftingManager; - -/** - * Created on 12/10/2014 - * @author Darkona - * - */ -public class ContainerBackpack extends Container implements IWearableContainer -{ - - public IInventoryAdventureBackpack inventory; - public static byte SOURCE_TILE = 0; - public static byte SOURCE_WEARING = 1; - public static byte SOURCE_HOLDING = 2; - public byte source; - public InventoryCrafting craftMatrix = new InventoryCrafting(this, 3, 3); - public IInventory craftResult = new InventoryCraftResult(); - EntityPlayer player; - - private final int - PLAYER_HOT_START = 0, - PLAYER_HOT_END = PLAYER_HOT_START + 8, - PLAYER_INV_START = PLAYER_HOT_END + 1, - PLAYER_INV_END = PLAYER_INV_START + 26, - BACK_INV_START = PLAYER_INV_END + 1, - BACK_INV_END = BACK_INV_START + 38, - TOOL_START = BACK_INV_END + 1, - TOOL_END = TOOL_START + 1, - BUCKET_LEFT = TOOL_END + 1, - BUCKET_RIGHT = BUCKET_LEFT + 2; - - public ContainerBackpack(EntityPlayer player, IInventoryAdventureBackpack backpack, byte source) - { - this.player = player; - inventory = backpack; - makeSlots(player.inventory); - inventory.openInventory(); - this.source = source; - } - - public IInventoryAdventureBackpack getInventoryBackpack() - { - return inventory; - } - - private void bindPlayerInventory(InventoryPlayer invPlayer) - { - int startX = 44; - int startY = 125; - - // Player's Hotbar - for (int x = 0; x < 9; x++) - { - addSlotToContainer(new Slot(invPlayer, x, startX + 18 * x, 183)); - } - - // Player's Inventory - for (int y = 0; y < 3; y++) - { - for (int x = 0; x < 9; x++) - { - addSlotToContainer(new Slot(invPlayer, (x + y * 9 + 9), (startX + 18 * x), (startY + y * 18))); - } - } - //Total 36 slots - } - - private void makeSlots(InventoryPlayer invPlayer) - { - - bindPlayerInventory(invPlayer); - - // Backpack Inventory - int startX = 62; - int startY = 7; - int slot = 0; - - // 24 Slots - for (int i = 0; i < 3; i++) - { - for (int j = 0; j < 8; j++) - { - int offsetX = startX + (18 * j); - int offsetY = startY + (18 * i); - addSlotToContainer(new SlotBackpack(inventory, slot++, offsetX, offsetY)); - } - } - - // 15 Slots - startY = 61; - for (int i = 0; i < 3; i++) - { - for (int j = 0; j < 5; j++) - { - int offsetX = startX + (18 * j); - int offsetY = startY + (18 * i); - addSlotToContainer(new SlotBackpack(inventory, slot++, offsetX, offsetY)); - } - } - - //Upper Tool Slot - addSlotToContainer(new SlotTool(inventory, Constants.upperTool, 44, 79));// Upper Tool 16 - //Lower Tool slot - addSlotToContainer(new SlotTool(inventory, Constants.lowerTool, 44, 97));// Lower Tool 17 - - //Bucket Slots - - // bucket in left 18 - addSlotToContainer(new SlotFluid(inventory, Constants.bucketInLeft, 6, 7)); - // bucket out left 19 - addSlotToContainer(new SlotFluid(inventory, Constants.bucketOutLeft, 6, 37)); - // bucket in right 20 - addSlotToContainer(new SlotFluid(inventory, Constants.bucketInRight, 226, 7)); - // bucket out right 21 - addSlotToContainer(new SlotFluid(inventory, Constants.bucketOutRight, 226, 37)); - - - //Craft Matrix - startX = 152; - for (int y = 0; y < 3; y++) - { - for (int x = 0; x < 3; x++) - { - int offsetX = startX + (18 * x); - int offsetY = startY + (18 * y); - addSlotToContainer(new Slot(craftMatrix, (x + y * 3), offsetX, offsetY)); - } - } - addSlotToContainer(new SlotCrafting(invPlayer.player, craftMatrix, craftResult, 0, 226, 97)); - this.onCraftMatrixChanged(craftMatrix); - } - - @Override - public boolean canInteractWith(EntityPlayer player) - { - return inventory.isUseableByPlayer(player); - } - - @Override - public void onCraftMatrixChanged(IInventory par1IInventory) - { - craftResult.setInventorySlotContents(0, CraftingManager.getInstance().findMatchingRecipe(craftMatrix, player.worldObj)); - } - - @Override - public void onContainerClosed(EntityPlayer player) - { - super.onContainerClosed(player); - if(source == SOURCE_WEARING) - { - this.crafters.remove(player); - } - if (!player.worldObj.isRemote) - { - for (int i = 0; i < inventory.getSizeInventory(); i++) - { - ItemStack itemstack = this.inventory.getStackInSlotOnClosing(i); - if (itemstack != null) - { - inventory.setInventorySlotContents(i, null); - player.dropPlayerItemWithRandomChoice(itemstack, false); - } - } - - for (int i = 0; i < 9; i++) - { - ItemStack itemstack = this.craftMatrix.getStackInSlotOnClosing(i); - - if (itemstack != null) - { - player.dropPlayerItemWithRandomChoice(itemstack, false); - } - } - } - } - - @Override - public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) - { - if (slot >= 0 && getSlot(slot) != null && getSlot(slot).getStack() == player.getHeldItem() && source == SOURCE_HOLDING) - { - return null; - } - return super.slotClick(slot, button, flag, player); - } - - @Override - protected boolean mergeItemStack(ItemStack stack, int minSlot, int maxSlot, boolean direction) - { - boolean changesMade = false; - int slotInit = minSlot; - - if (direction) - { - slotInit = maxSlot - 1; - } - - Slot slot; - ItemStack newItemStack; - - if (stack.isStackable()) - { - while (stack.stackSize > 0 && (!direction && slotInit < maxSlot || direction && slotInit >= minSlot)) - { - slot = (Slot) this.inventorySlots.get(slotInit); - newItemStack = slot.getStack(); - - if (newItemStack != null && newItemStack.getItem() == stack.getItem() && (!stack.getHasSubtypes() || stack.getItemDamage() == newItemStack.getItemDamage()) && ItemStack.areItemStackTagsEqual(stack, newItemStack)) - { - - int newStackSize = newItemStack.stackSize + stack.stackSize; - - if (newStackSize <= stack.getMaxStackSize()) - { - stack.stackSize = 0; - newItemStack.stackSize = newStackSize; - slot.onSlotChanged(); - changesMade = true; - } else if (newItemStack.stackSize < stack.getMaxStackSize()) - { - stack.stackSize -= stack.getMaxStackSize() - newItemStack.stackSize; - newItemStack.stackSize = stack.getMaxStackSize(); - slot.onSlotChanged(); - changesMade = true; - } - } - - if (direction) - { - --slotInit; - } else - { - ++slotInit; - } - } - } - - if (stack.stackSize > 0) - { - if (direction) - { - slotInit = maxSlot - 1; - } else - { - slotInit = minSlot; - } - - while (!direction && slotInit < maxSlot || direction && slotInit >= minSlot) - { - slot = (Slot) this.inventorySlots.get(slotInit); - newItemStack = slot.getStack(); - - if (newItemStack == null) - { - slot.putStack(stack.copy()); - slot.onSlotChanged(); - stack.stackSize = 0; - changesMade = true; - break; - } - - if (direction) - { - --slotInit; - } else - { - ++slotInit; - } - } - } - - return changesMade; - } - - @Override - public Slot getSlotFromInventory(IInventory inv, int slot) - { - return super.getSlotFromInventory(inv, slot); - } - - @Override - public ItemStack transferStackInSlot(EntityPlayer player, int i) - { - if(source == SOURCE_WEARING)refresh(); - Slot slot = getSlot(i); - ItemStack result = null; - if (slot != null && slot.getHasStack()) - { - ItemStack stack = slot.getStack(); - result = stack.copy(); - if (i >= 36) - { - if (!mergeItemStack(stack, PLAYER_HOT_START, PLAYER_INV_END + 1, false)) - { - return null; - } - } - if (i < 36) - { - if (SlotTool.isValidTool(stack)) - { - if (!mergeItemStack(stack, TOOL_START, TOOL_END + 1, false)) - { - if (!mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false)) - { - return null; - } - } - } else if (SlotFluid.valid(stack)) - { - if (!mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false)) - { - if (!mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false)) - { - if (!mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false)) - { - return null; - } - } - } - - - } else if (!(stack.getItem() instanceof ItemAdventureBackpack)) - { - if (!mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false)) - { - return null; - } - } - } - if (stack.stackSize == 0) - { - slot.putStack(null); - } else - { - slot.onSlotChanged(); - } - - if (stack.stackSize == result.stackSize) - { - return null; - } - slot.onPickupFromSlot(player, stack); - } - return result; - } - - /** - * Looks for changes made in the container, sends them to every listener. - */ - @Override - public void detectAndSendChanges() - { - refresh(); - super.detectAndSendChanges(); - /* if(source == SOURCE_WEARING && player instanceof EntityPlayerMP) - { - ((EntityPlayerMP) player).sendContainerAndContentsToPlayer(this, inventoryItemStacks); - BackpackProperty.syncToNear(player); - }*/ - } - - @Override - public void refresh() - { - inventory.openInventory(); - this.onCraftMatrixChanged(craftMatrix); - } -} From 216f36e5abae65d67c685950cd426aa12b629342 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:37:55 -0400 Subject: [PATCH 124/462] Delete InventoryCoalJetpack.java --- inventory/InventoryCoalJetpack.java | 493 ---------------------------- 1 file changed, 493 deletions(-) delete mode 100644 inventory/InventoryCoalJetpack.java diff --git a/inventory/InventoryCoalJetpack.java b/inventory/InventoryCoalJetpack.java deleted file mode 100644 index 38f946a3..00000000 --- a/inventory/InventoryCoalJetpack.java +++ /dev/null @@ -1,493 +0,0 @@ -package com.darkona.adventurebackpack.inventory; - -import com.darkona.adventurebackpack.util.FluidUtils; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntityFurnace; -import net.minecraftforge.fluids.FluidContainerRegistry; -import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fluids.FluidTank; - -/** - * Created on 15/01/2015 - * - * @author Darkona - */ -public class InventoryCoalJetpack implements IInventoryTanks -{ - public static final boolean OFF = false; - public static final boolean ON = true; - private FluidTank waterTank = new FluidTank(6000); - private FluidTank CoalTank = new FluidTank(12000); - private ItemStack[] inventory = new ItemStack[3]; - private int temperature = 25; - private boolean status = OFF; - private int burnTicks = 0; - private ItemStack containerStack; - private long systemTime = 0; - private boolean Lava = false; - private boolean leaking = false; - private boolean inUse = false; - public int currentItemBurnTime = 0; - - - public static final int MAX_TEMPERATURE = 200; - public static final int BUCKET_IN_SLOT = 0; - public static final int BUCKET_OUT_SLOT = 1; - public static final int FUEL_SLOT = 2; - private int coolTicks = 5000; - - public InventoryCoalJetpack(final ItemStack jetpack) - { - this.containerStack = jetpack; - if (!containerStack.hasTagCompound()) - { - containerStack.stackTagCompound = new NBTTagCompound(); - closeInventory(); - } - openInventory(); - } - - public int getBurnTimeRemainingScaled(int scale) - { - if (this.currentItemBurnTime == 0) - { - this.currentItemBurnTime = 200; - } - - return this.burnTicks * scale / this.currentItemBurnTime; - } - - @Override - public boolean updateTankSlots() - { - return false; - } - - @Override - public void loadFromNBT(NBTTagCompound compound) - { - if(compound.hasKey("jetpackData")) - { - NBTTagCompound jetpackData = compound.getCompoundTag("jetpackData"); - waterTank.readFromNBT(jetpackData.getCompoundTag("waterTank")); - CoalTank.readFromNBT(jetpackData.getCompoundTag("CoalTank")); - temperature = jetpackData.getInteger("temperature"); - status = jetpackData.getBoolean("status"); - burnTicks = jetpackData.getInteger("burnTicks"); - coolTicks = jetpackData.getInteger("coolTicks"); - systemTime = jetpackData.getLong("systemTime"); - inUse = jetpackData.getBoolean("inUse"); - Lava = jetpackData.getBoolean("lava"); - leaking = jetpackData.getBoolean("leaking"); - currentItemBurnTime = jetpackData.getInteger("currentBurn"); - NBTTagList items = jetpackData.getTagList("inventory", net.minecraftforge.common.util.Constants.NBT.TAG_COMPOUND); - for (int i = 0; i < items.tagCount(); i++) - { - NBTTagCompound item = items.getCompoundTagAt(i); - byte slot = item.getByte("Slot"); - if (slot >= 0 && slot < inventory.length) - { - inventory[slot] = ItemStack.loadItemStackFromNBT(item); - } - } - } - } - - @Override - public void saveToNBT(NBTTagCompound compound) - { - NBTTagCompound jetpackData; - if(compound.hasKey("jetpackData")) - { - jetpackData = compound.getCompoundTag("jetpackData"); - }else - { - jetpackData = new NBTTagCompound(); - } - - jetpackData.setTag("waterTank",waterTank.writeToNBT(new NBTTagCompound())); - jetpackData.setTag("CoalTank",CoalTank.writeToNBT(new NBTTagCompound())); - jetpackData.setInteger("temperature", temperature); - jetpackData.setBoolean("status", status); - jetpackData.setInteger("burnTicks", burnTicks); - jetpackData.setInteger("coolTicks", coolTicks); - jetpackData.setLong("systemTime",systemTime); - jetpackData.setBoolean("inUse", inUse); - jetpackData.setBoolean("lava",Lava); - jetpackData.setBoolean("leaking",leaking); - jetpackData.setInteger("currentBurn",currentItemBurnTime); - NBTTagList items = new NBTTagList(); - for (int i = 0; i < inventory.length; i++) - { - ItemStack stack = inventory[i]; - if (stack != null) - { - NBTTagCompound item = new NBTTagCompound(); - item.setByte("Slot", (byte) i); - stack.writeToNBT(item); - items.appendTag(item); - } - } - jetpackData.setTag("inventory", items); - compound.setTag("jetpackData",jetpackData); - } - - @Override - public FluidTank[] getTanksArray() - { - FluidTank[] tanks = {waterTank,CoalTank}; - return tanks; - } - - @Override - public void dirtyInventory() - { - NBTTagList items = new NBTTagList(); - for (int i = 0; i < inventory.length; i++) - { - ItemStack stack = inventory[i]; - if (stack != null) - { - NBTTagCompound item = new NBTTagCompound(); - item.setByte("Slot", (byte) i); - stack.writeToNBT(item); - items.appendTag(item); - } - } - containerStack.stackTagCompound.getCompoundTag("jetpackData").setTag("inventory", items); - } - - @Override - public void dirtyTanks() - { - containerStack.stackTagCompound.getCompoundTag("jetPackData").setTag("waterTank",waterTank.writeToNBT(new NBTTagCompound())); - containerStack.stackTagCompound.getCompoundTag("jetPackData").setTag("CoalTank",CoalTank.writeToNBT(new NBTTagCompound())); - } - - public void dirtyBoiler() - { - NBTTagCompound jetpackData = containerStack.stackTagCompound.getCompoundTag("jetPackData"); - jetpackData.setBoolean("lava", Lava); - jetpackData.setBoolean("leaking", leaking); - jetpackData.setInteger("temperature", temperature); - jetpackData.setInteger("burnTicks", burnTicks); - jetpackData.setInteger("coolTicks", coolTicks); - jetpackData.setInteger("currentBurn",currentItemBurnTime); - } - - public int consumeFuel() - { - int result = 0; - if(isFuel(inventory[FUEL_SLOT])) - { - result = TileEntityFurnace.getItemBurnTime(inventory[FUEL_SLOT]); - --inventory[FUEL_SLOT].stackSize; - if(inventory[FUEL_SLOT].stackSize == 0) - { - inventory[FUEL_SLOT] = inventory[FUEL_SLOT].getItem().getContainerItem(inventory[FUEL_SLOT]); - } - dirtyInventory(); - } - return result; - } - - public boolean isFuel(ItemStack stack) - { - return TileEntityFurnace.isItemFuel(stack); - } - - - - @Override - public void setInventorySlotContentsNoSave(int slot, ItemStack stack) - { - if (slot > inventory.length) return; - inventory[slot] = stack; - if (stack != null && stack.stackSize > this.getInventoryStackLimit()) - { - stack.stackSize = this.getInventoryStackLimit(); - } - } - - @Override - public ItemStack decrStackSizeNoSave(int slot, int amount) - { - if (slot < inventory.length && inventory[slot] != null) - { - if (inventory[slot].stackSize > amount) - { - ItemStack result = inventory[slot].splitStack(amount); - return result; - } - ItemStack stack = inventory[slot]; - setInventorySlotContentsNoSave(slot, null); - return stack; - } - return null; - } - - @Override - public int getSizeInventory() - { - return inventory.length; - } - - @Override - public ItemStack getStackInSlot(int slot) - { - return inventory[slot]; - } - - @Override - public ItemStack decrStackSize(int slot, int quantity) - { - ItemStack itemstack = getStackInSlot(slot); - - if (itemstack != null) - { - if (itemstack.stackSize <= quantity) - { - if(slot == FUEL_SLOT) - { - setInventorySlotContents(slot, itemstack.getItem().getContainerItem(itemstack)); - } - else - { - setInventorySlotContents(slot, null); - } - } else - { - itemstack = itemstack.splitStack(quantity); - } - } - return itemstack; - } - - @Override - public ItemStack getStackInSlotOnClosing(int i) - { - return (i == 0 || i== 1) ? inventory[i] : null; - } - - @Override - public void setInventorySlotContents(int slot, ItemStack stack) - { - inventory[slot] = stack; - if (stack != null && stack.stackSize > getInventoryStackLimit()) - { - stack.stackSize = getInventoryStackLimit(); - } - if(slot < FUEL_SLOT)onInventoryChanged(); - dirtyInventory(); - -} - - public void onInventoryChanged() - { - for (int i = 0; i < inventory.length; i++) - { - if (i == 0) - { - ItemStack container = getStackInSlot(i); - if(FluidContainerRegistry.isFilledContainer(container) && FluidUtils.isContainerForFluid(container, FluidRegistry.WATER)) - { - InventoryActions.transferContainerTank(this, waterTank, i); - }else - if(FluidContainerRegistry.isEmptyContainer(container) && waterTank.getFluid()!=null && FluidUtils.isContainerForFluid(container, FluidRegistry.WATER)) - { - InventoryActions.transferContainerTank(this, waterTank, i); - } - } - } - markDirty(); - } - @Override - public String getInventoryName() - { - return "Coal Jetpack"; - } - - @Override - public boolean hasCustomInventoryName() - { - return true; - } - - @Override - public int getInventoryStackLimit() - { - return 64; - } - - @Override - public void markDirty() - { - saveToNBT(containerStack.stackTagCompound); - } - - @Override - public boolean isUseableByPlayer(EntityPlayer p_70300_1_) - { - return true; - } - - @Override - public void openInventory() - { - loadFromNBT(containerStack.stackTagCompound); - } - - @Override - public void closeInventory() - { - saveToNBT(containerStack.stackTagCompound); - } - - @Override - public boolean isItemValidForSlot(int slot, ItemStack stack) - { - if(slot == BUCKET_IN_SLOT)return SlotFluid.valid(stack) && FluidUtils.isContainerForFluid(stack, FluidRegistry.WATER); - if(slot == FUEL_SLOT)return TileEntityFurnace.isItemFuel(stack); - return false; - } - - public ItemStack getParentItemStack() - { - return containerStack; - } - - public FluidTank getWaterTank() - { - return waterTank; - } - - public FluidTank getCoalTank() - { - return CoalTank; - } - - public boolean getStatus() - { - return status; - } - - public void setStatus(boolean status) - { - this.status = status; - } - - public int getTemperature() - { - return temperature; - } - - public void setTemperature(int temperature) - { - this.temperature = temperature; - } - - public boolean isInUse() - { - return inUse; - } - - public void setInUse(boolean inUse) - { - this.inUse = inUse; - } - - public boolean isLava() - { - return Lava; - } - - public void setLava(boolean Lava) - { - this.Lava = Lava; - } - - public boolean isLeaking() - { - return leaking; - } - - public void setLeaking(boolean leaking) - { - this.leaking = leaking; - } - - public long getSystemTime() - { - return systemTime; - } - - public void setSystemTime(long systemTime) - { - this.systemTime = systemTime; - } - - public int getBurnTicks() - { - return burnTicks; - } - - public void setBurnTicks(int burnTicks) - { - this.burnTicks = burnTicks; - } - - public ItemStack[] getInventory() - { - return inventory; - } - - public void setInventory(ItemStack[] inventory) - { - this.inventory = inventory; - } - - public int getIncreasingFactor() - { - if(temperature < 50)return 20; - if(temperature < 100)return 15; - if(temperature < 150)return 10; - return 5; - } - - public int getDecreasingFactor() - { - if(temperature > 150)return 40; - if(temperature > 100)return 80; - if(temperature > 50)return 120; - return 5; - } - public int getCoolTicks() - { - return coolTicks; - } - - public void setCoolTicks(int coolTicks) - { - this.coolTicks = coolTicks; - } - - public void setContainerStack(ItemStack containerStack) - { - this.containerStack = containerStack; - } - - public ItemStack getContainerStack() - { - return containerStack; - } - - public void calculateLostTime() - { - @SuppressWarnings("unused") - long elapsedTimesince = System.currentTimeMillis() - systemTime; - - } -} From 3e5820cc8e2317d049e625fa05b40527dfe65d44 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:38:04 -0400 Subject: [PATCH 125/462] Delete InventoryBackpack.java --- inventory/InventoryBackpack.java | 408 ------------------------------- 1 file changed, 408 deletions(-) delete mode 100644 inventory/InventoryBackpack.java diff --git a/inventory/InventoryBackpack.java b/inventory/InventoryBackpack.java deleted file mode 100644 index 51e96f05..00000000 --- a/inventory/InventoryBackpack.java +++ /dev/null @@ -1,408 +0,0 @@ -package com.darkona.adventurebackpack.inventory; - - -import com.darkona.adventurebackpack.block.BlockAdventureBackpack; -import com.darkona.adventurebackpack.block.TileAdventureBackpack; -import com.darkona.adventurebackpack.common.BackpackAbilities; -import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; -import com.darkona.adventurebackpack.item.ItemAdventureBackpack; -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraftforge.fluids.FluidContainerRegistry; -import net.minecraftforge.fluids.FluidTank; - -/** - * Created on 12/10/2014 - * - * @author Darkona - */ -public class InventoryBackpack implements IInventoryAdventureBackpack -{ - public ItemStack[] inventory = new ItemStack[Constants.inventorySize]; - private FluidTank leftTank = new FluidTank(Constants.basicTankCapacity); - private FluidTank rightTank = new FluidTank(Constants.basicTankCapacity); - - public ItemStack getContainerStack() - { - return containerStack; - } - - public void setContainerStack(ItemStack containerStack) - { - this.containerStack = containerStack; - } - - private ItemStack containerStack; - private String colorName = "Standard"; - private int lastTime = 0; - private boolean special = false; - public NBTTagCompound extendedProperties = new NBTTagCompound(); - - public InventoryBackpack(ItemStack backpack) - { - containerStack = backpack; - if(!backpack.hasTagCompound()) - { - backpack.stackTagCompound = new NBTTagCompound(); - saveToNBT(backpack.stackTagCompound); - } - loadFromNBT(backpack.stackTagCompound); - } - - @Override - public FluidTank getLeftTank() - { - return leftTank; - } - - @Override - public FluidTank getRightTank() - { - return rightTank; - } - - @Override - public ItemStack[] getInventory() - { - return inventory; - } - - @Override - public TileAdventureBackpack getTile() - { - return null; - } - - @Override - public ItemStack getParentItemStack() - { - return this.containerStack; - } - - @Override - public String getColorName() - { - return colorName; - } - - @Override - public int getLastTime() - { - return this.lastTime; - } - - @Override - public NBTTagCompound getExtendedProperties() - { - return extendedProperties; - } - - @Override - public void setExtendedProperties(NBTTagCompound properties) - { - this.extendedProperties = properties; - } - - @Override - public boolean isSpecial() - { - return special; - } - - @Override - public void saveTanks(NBTTagCompound compound) - { - compound.setTag("rightTank", rightTank.writeToNBT(new NBTTagCompound())); - compound.setTag("leftTank", leftTank.writeToNBT(new NBTTagCompound())); - } - - @Override - public void loadTanks(NBTTagCompound compound) - { - leftTank.readFromNBT(compound.getCompoundTag("leftTank")); - rightTank.readFromNBT(compound.getCompoundTag("rightTank")); - } - - @Override - public boolean hasItem(Item item) - { - return InventoryActions.hasItem(this, item); - } - - @Override - public void consumeInventoryItem(Item item) - { - InventoryActions.consumeItemInInventory(this, item); - } - - - @Override - public boolean isSBDeployed() - { - return false; - } - - @Override - public void setLastTime(int time) - { - this.lastTime = time; - } - - @Override - public void setInventorySlotContents(int slot, ItemStack stack) - { - if (slot > inventory.length) return; - inventory[slot] = stack; - if (stack != null && stack.stackSize > this.getInventoryStackLimit()) - { - stack.stackSize = this.getInventoryStackLimit(); - } - dirtyInventory(); - } - - @Override - public void setInventorySlotContentsNoSave(int slot, ItemStack stack) - { - if (slot > inventory.length) return; - inventory[slot] = stack; - if (stack != null && stack.stackSize > this.getInventoryStackLimit()) - { - stack.stackSize = this.getInventoryStackLimit(); - } - } - - @Override - public ItemStack decrStackSize(int slot, int quantity) - { - ItemStack itemstack = getStackInSlot(slot); - if (itemstack != null) - { - if (itemstack.stackSize <= quantity) - { - setInventorySlotContents(slot, null); - } else - { - itemstack = itemstack.splitStack(quantity); - } - } - return itemstack; - } - @Override - public ItemStack decrStackSizeNoSave(int slot, int quantity) - { - ItemStack stack = getStackInSlot(slot); - if (stack != null) - { - if (stack.stackSize <= quantity) - { - setInventorySlotContentsNoSave(slot, null); - } else - { - stack = stack.splitStack(quantity); - } - } - return stack; - } - - public boolean updateTankSlots() - { - return InventoryActions.transferContainerTank(this, getLeftTank(), Constants.bucketInLeft) || - InventoryActions.transferContainerTank(this, getRightTank(), Constants.bucketInRight); - } - - @Override - public void loadFromNBT(NBTTagCompound compound) - { - if(compound.hasKey("backpackData")) - { - NBTTagCompound backpackData = compound.getCompoundTag("backpackData"); - NBTTagList items = backpackData.getTagList("ABPItems", net.minecraftforge.common.util.Constants.NBT.TAG_COMPOUND); - for (int i = 0; i < items.tagCount(); i++) - { - NBTTagCompound item = items.getCompoundTagAt(i); - byte slot = item.getByte("Slot"); - if (slot >= 0 && slot < inventory.length) - { - inventory[slot] = ItemStack.loadItemStackFromNBT(item); - } - } - - leftTank.readFromNBT(backpackData.getCompoundTag("leftTank")); - rightTank.readFromNBT(backpackData.getCompoundTag("rightTank")); - colorName = backpackData.getString("colorName"); - lastTime = backpackData.getInteger("lastTime"); - special = backpackData.getBoolean("special"); - extendedProperties = backpackData.getCompoundTag("extendedProperties"); - } - } - - @Override - public void saveToNBT(NBTTagCompound compound) - { - // if(Utils.inServer()) - // { - NBTTagCompound backpackData = new NBTTagCompound(); - NBTTagList items = new NBTTagList(); - for (int i = 0; i < inventory.length; i++) - { - ItemStack stack = inventory[i]; - if (stack != null) - { - NBTTagCompound item = new NBTTagCompound(); - item.setByte("Slot", (byte) i); - stack.writeToNBT(item); - items.appendTag(item); - } - } - backpackData.removeTag("ABPItems"); - backpackData.setTag("ABPItems", items); - backpackData.setString("colorName", colorName); - backpackData.setInteger("lastTime", lastTime); - backpackData.setBoolean("special", BackpackAbilities.hasAbility(colorName)); - backpackData.setTag("extendedProperties", extendedProperties); - backpackData.setTag("rightTank", rightTank.writeToNBT(new NBTTagCompound())); - backpackData.setTag("leftTank", leftTank.writeToNBT(new NBTTagCompound())); - - compound.setTag("backpackData",backpackData); - //} - } - - @Override - public FluidTank[] getTanksArray() - { - FluidTank[] array = {leftTank,rightTank}; - return array; - } - - @Override - public ItemStack getStackInSlotOnClosing(int slot) - { - if (slot == Constants.bucketInLeft || slot == Constants.bucketInRight || slot == Constants.bucketOutLeft || slot == Constants.bucketOutRight) - { - return inventory[slot]; - } - return null; - } - - @Override - public String getInventoryName() - { - return "Adventure Backpack"; - } - - @Override - public boolean hasCustomInventoryName() - { - return true; - } - - @Override - public int getInventoryStackLimit() - { - return 64; - } - - @Override - public void markDirty() - { - - saveToNBT(containerStack.stackTagCompound); - } - - @Override - public boolean isUseableByPlayer(EntityPlayer player) - { - return true; - } - - @Override - public void openInventory() - { - loadFromNBT(containerStack.stackTagCompound); - } - - @Override - public void closeInventory() - { - /* if(Utils.inServer()) - {*/ - saveToNBT(containerStack.stackTagCompound); - // } - } - - @Override - public boolean isItemValidForSlot(int slot, ItemStack stack) - { - if (stack.getItem() instanceof ItemAdventureBackpack || Block.getBlockFromItem(stack.getItem()) instanceof BlockAdventureBackpack) - { - return false; - } - if (slot == Constants.bucketInRight || slot == Constants.bucketInLeft) - { - return FluidContainerRegistry.isContainer(stack); - } - - return !(slot == Constants.upperTool || slot == Constants.lowerTool) || SlotTool.isValidTool(stack); - } - - @Override - public int getSizeInventory() - { - return inventory.length; - } - - @Override - public ItemStack getStackInSlot(int slot) - { - return inventory[slot]; - } - - public void dirtyTanks() - { - containerStack.stackTagCompound.getCompoundTag("backpackData").setTag("leftTank",leftTank.writeToNBT(new NBTTagCompound())); - containerStack.stackTagCompound.getCompoundTag("backpackData").setTag("rightTank",rightTank.writeToNBT(new NBTTagCompound())); - } - - public void dirtyTime() - { - containerStack.stackTagCompound.getCompoundTag("backpackData").setInteger("lastTime",lastTime); - } - - public void dirtyExtended() - { - containerStack.stackTagCompound.getCompoundTag("backpackData").removeTag("extendedProperties"); - containerStack.stackTagCompound.getCompoundTag("backpackData").setTag("extendedProperties",extendedProperties); - } - - public void dirtyInventory() - { - if(updateTankSlots()){ - dirtyTanks(); - } - NBTTagList items = new NBTTagList(); - for (int i = 0; i < inventory.length; i++) - { - ItemStack stack = inventory[i]; - if (stack != null) - { - NBTTagCompound item = new NBTTagCompound(); - item.setByte("Slot", (byte) i); - stack.writeToNBT(item); - items.appendTag(item); - } - } - containerStack.stackTagCompound.getCompoundTag("backpackData").removeTag("ABPItems"); - containerStack.stackTagCompound.getCompoundTag("backpackData").setTag("ABPItems", items); - } - - public boolean hasBlock(Block block) - { - return InventoryActions.hasBlockItem(this, block); - } -} - From 7bba6ada56d068b8309f495be7eb239754b67e36 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:38:12 -0400 Subject: [PATCH 126/462] Delete ContainerCopter.java --- inventory/ContainerCopter.java | 166 --------------------------------- 1 file changed, 166 deletions(-) delete mode 100644 inventory/ContainerCopter.java diff --git a/inventory/ContainerCopter.java b/inventory/ContainerCopter.java deleted file mode 100644 index 74560074..00000000 --- a/inventory/ContainerCopter.java +++ /dev/null @@ -1,166 +0,0 @@ -package com.darkona.adventurebackpack.inventory; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.Slot; -import net.minecraft.item.ItemStack; - -/** - * Created on 03/01/2015 - * - * @author Darkona - */ -public class ContainerCopter extends Container implements IWearableContainer -{ - - public InventoryCopterPack inventory; - private final int - PLAYER_HOT_START = 0; - private final int PLAYER_HOT_END = PLAYER_HOT_START + 8; - private final int PLAYER_INV_START = PLAYER_HOT_END + 1; - private final int PLAYER_INV_END = PLAYER_INV_START + 26; - EntityPlayer player; - boolean wearing; - - public ContainerCopter(EntityPlayer player, InventoryCopterPack copterPack, boolean wearing) - { - this.inventory = copterPack; - makeSlots(player.inventory); - inventory.openInventory(); - this.player = player; - this.wearing = wearing; - } - - private void bindPlayerInventory(InventoryPlayer invPlayer) - { - int startX = 8; - int startY = 84; - - // Player's Hotbar - for (int x = 0; x < 9; x++) - { - addSlotToContainer(new Slot(invPlayer, x, startX + 18 * x, 142)); - } - - // Player's Inventory - for (int y = 0; y < 3; y++) - { - for (int x = 0; x < 9; x++) - { - addSlotToContainer(new Slot(invPlayer, (x + y * 9 + 9), (startX + 18 * x), (startY + y * 18))); - } - } - //Total 36 slots - } - - private void makeSlots(InventoryPlayer invPlayer) - { - - bindPlayerInventory(invPlayer); - int slot = 0; - //Bucket Slots - // bucket in - addSlotToContainer(new SlotFluid(inventory, slot++, 44, 23)); - // bucket out - addSlotToContainer(new SlotFluid(inventory, slot++, 44, 53)); - } - - @Override - public boolean canInteractWith(EntityPlayer p_75145_1_) - { - return true; - } - - @Override - public void onContainerClosed(EntityPlayer player) - { - super.onContainerClosed(player); - if (wearing) - { - this.crafters.remove(player); - } - if (!player.worldObj.isRemote) - { - for (int i = 0; i < inventory.getSizeInventory(); i++) - { - ItemStack itemstack = this.inventory.getStackInSlotOnClosing(i); - if (itemstack != null) - { - inventory.setInventorySlotContents(i, null); - player.dropPlayerItemWithRandomChoice(itemstack, false); - } - } - } - } - - @Override - public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) - { - if (slot >= 0 && getSlot(slot) != null && getSlot(slot).getStack() == player.getHeldItem() && !wearing) - { - return null; - } - return super.slotClick(slot, button, flag, player); - } - - - @Override - public ItemStack transferStackInSlot(EntityPlayer player, int i) - { - Slot slot = getSlot(i); - ItemStack result = null; - - if (slot != null && slot.getHasStack()) - { - ItemStack stack = slot.getStack(); - result = stack.copy(); - if (i >= 36) - { - if (!mergeItemStack(stack, PLAYER_HOT_START, PLAYER_INV_END + 1, false)) - { - return null; - } - } - if (i < 36) - { - if (SlotFluid.valid(stack)) - { - int COPTER_INV_START = PLAYER_INV_END + 1; - if (!mergeItemStack(stack, COPTER_INV_START, COPTER_INV_START + 1, false)) - { - return null; - } - } - } - - if (stack.stackSize == 0) - { - slot.putStack(null); - } else - { - slot.onSlotChanged(); - } - - if (stack.stackSize == result.stackSize) - { - return null; - } - slot.onPickupFromSlot(player, stack); - } - return result; - } - - @Override - public void detectAndSendChanges() - { - refresh(); - super.detectAndSendChanges(); - } - - @Override - public void refresh() - { - inventory.openInventory(); - } -} From 99d59c869485f7c615242452e0e76c6850570590 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:38:19 -0400 Subject: [PATCH 127/462] Delete InventoryActions.java --- inventory/InventoryActions.java | 165 -------------------------------- 1 file changed, 165 deletions(-) delete mode 100644 inventory/InventoryActions.java diff --git a/inventory/InventoryActions.java b/inventory/InventoryActions.java deleted file mode 100644 index e4884903..00000000 --- a/inventory/InventoryActions.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.darkona.adventurebackpack.inventory; - -import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; -import com.darkona.adventurebackpack.util.FluidUtils; -import net.minecraft.block.Block; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidContainerRegistry; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidTank; - -/** - * Created on 16/10/2014 - * - * @author Darkona - */ -public class InventoryActions -{ - - /** - * What a complicated mess. I hated every minute of coding this. - * This code takes a fluid container item. If its filled, it empties it out into a tank. - * If its empty, it drains the tank into the item. Then it puts the resulting filled or empty item - * into a different slot, consuming the first one. If there is no empty container, such as the Forestry Cells, - * it simply fills the tank. - * - * @param inventory The inventory type thing that will have its tank updated. - * @param tank The tank that's going to be updated. - * @param slotIn The slot in which the fluid container item must be to update the tank. - * @return True if the tank was filled and the resulting filled or empty container item was placed in the other slot. - */ - public static boolean transferContainerTank(IInventoryTanks inventory, FluidTank tank, int slotIn) - { - ItemStack stackIn = inventory.getStackInSlot(slotIn); - if (tank == null || stackIn == null) return false; - - //Set slot out for whatever number the output slot should be. - int slotOut = slotIn + 1; - - //CONTAINER ===========> TANK - if (FluidContainerRegistry.isFilledContainer(stackIn)) - { - //See if the tank can accept moar fluid. - int fill = tank.fill(FluidContainerRegistry.getFluidForFilledItem(stackIn), false); - - if (fill > 0)//If can accept the fluid - { - //Get the empty container for the input, if there's any. - ItemStack stackOut = FluidContainerRegistry.drainFluidContainer(stackIn); - - if (inventory.getStackInSlot(slotOut) == null || stackOut == null) - { - - tank.fill(FluidContainerRegistry.getFluidForFilledItem(stackIn), true); - //inventory.dirtyTanks(); - inventory.decrStackSizeNoSave(slotIn, 1); - inventory.setInventorySlotContentsNoSave(slotOut, stackOut); - //inventory.dirtyInventory(); - return true; - } else if (inventory.getStackInSlot(slotOut).getItem() == stackOut.getItem()) - { - int maxStack = inventory.getStackInSlot(slotOut).getMaxStackSize(); - if (maxStack > 1 && (inventory.getStackInSlot(slotOut).stackSize + 1) <= maxStack) - { - - tank.fill(FluidContainerRegistry.getFluidForFilledItem(stackIn), true); - //inventory.dirtyTanks(); - inventory.decrStackSizeNoSave(slotIn, 1); - inventory.getStackInSlot(slotOut).stackSize++; - // inventory.dirtyInventory(); - return true; - } - } - } - } - - //TANK =====> CONTAINER - - if (tank.getFluid() != null && tank.getFluidAmount() > 0 && FluidUtils.isEmptyContainerForFluid(stackIn, tank.getFluid().getFluid())) - { - //How much fluid can this container hold. - int amount = FluidContainerRegistry.getContainerCapacity(tank.getFluid(), stackIn); - //Let's see how much can we drain this tank - FluidStack drain = tank.drain(amount, false); - - ItemStack stackOut = FluidContainerRegistry.fillFluidContainer(drain, stackIn); - - if (drain.amount == amount) - { - if (inventory.getStackInSlot(slotOut) == null) - { - tank.drain(amount, true); - //inventory.dirtyTanks(); - inventory.decrStackSizeNoSave(slotIn, 1); - inventory.setInventorySlotContentsNoSave(slotOut, stackOut); - //inventory.dirtyInventory(); - return true; - } else - if (stackOut.getItem() != null - && stackOut.getItem() == inventory.getStackInSlot(slotOut).getItem()) - { - int maxStack = inventory.getStackInSlot(slotOut).getMaxStackSize(); - if (maxStack > 1 && (inventory.getStackInSlot(slotOut).stackSize + 1) <= maxStack) - { - tank.drain(amount, true); - //inventory.dirtyTanks(); - inventory.decrStackSizeNoSave(slotIn, 1); - inventory.getStackInSlot(slotOut).stackSize++; - // inventory.dirtyInventory(); - return true; - } - } - } - } - return false; - } - - public static void consumeItemInInventory(IInventory backpack, Item item) - { - int i = -1; - for (int j = 0; j < Constants.inventorySize - 7; ++j) - { - if (backpack.getStackInSlot(j) != null && backpack.getStackInSlot(j).getItem() == item) - { - i = j; - break; - } - } - if (i >= 0) - { - backpack.decrStackSize(i,1); - } - } - - public static boolean hasItem(IInventoryAdventureBackpack backpack, Item item) - { - ItemStack[] inventory = backpack.getInventory(); - for (int i = 0; i < inventory.length; i++) - { - if (inventory[i] != null && - inventory[i].getItem().equals(item)) - { - return true; - } - } - return false; - } - - public static boolean hasBlockItem(IInventoryAdventureBackpack backpack, Block item) - { - ItemStack[] inventory = backpack.getInventory(); - for (int i = 0; i < inventory.length; i++) - { - if (inventory[i] != null && - inventory[i].getItem().equals(Item.getItemFromBlock(item))) - { - return true; - } - } - return false; - } - -} From 6af3ad15c5fa1edcd899bca7a49c58a5e7b91772 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:38:23 -0400 Subject: [PATCH 128/462] Delete IWearableContainer.java --- inventory/IWearableContainer.java | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 inventory/IWearableContainer.java diff --git a/inventory/IWearableContainer.java b/inventory/IWearableContainer.java deleted file mode 100644 index 5f0faaee..00000000 --- a/inventory/IWearableContainer.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.darkona.adventurebackpack.inventory; - -/** - * Created on 12/01/2015 - * - * @author Darkona - */ -public interface IWearableContainer -{ - public void refresh(); -} From 54bd3d815f23d9309788aa2da926492b189a79c5 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:38:29 -0400 Subject: [PATCH 129/462] Delete IInventoryTanks.java --- inventory/IInventoryTanks.java | 24 ------------------------ 1 file changed, 24 deletions(-) delete mode 100644 inventory/IInventoryTanks.java diff --git a/inventory/IInventoryTanks.java b/inventory/IInventoryTanks.java deleted file mode 100644 index 8c5e30a6..00000000 --- a/inventory/IInventoryTanks.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.darkona.adventurebackpack.inventory; - -import net.minecraft.nbt.NBTTagCompound; -import net.minecraftforge.fluids.FluidTank; - -/** - * Created on 12/01/2015 - * - * @author Darkona - */ -public interface IInventoryTanks extends IAsynchronousInventory -{ - public boolean updateTankSlots(); - - public void loadFromNBT(NBTTagCompound compound); - - public void saveToNBT(NBTTagCompound compound); - - public FluidTank[] getTanksArray(); - - public void dirtyInventory(); - - public void dirtyTanks(); -} From 94e78e642eb7240e64aaed357e58bf02f61cf819 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:38:42 -0400 Subject: [PATCH 130/462] Delete IAsynchronousInventory.java --- inventory/IAsynchronousInventory.java | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 inventory/IAsynchronousInventory.java diff --git a/inventory/IAsynchronousInventory.java b/inventory/IAsynchronousInventory.java deleted file mode 100644 index 49c15233..00000000 --- a/inventory/IAsynchronousInventory.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.darkona.adventurebackpack.inventory; - -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; - -/** - * Created on 12/01/2015 - * - * @author Darkona - */ -public interface IAsynchronousInventory extends IInventory -{ - public void setInventorySlotContentsNoSave(int slot, ItemStack stack); - - public ItemStack decrStackSizeNoSave(int slot, int amount); -} From b1bb008ce32d75e99f675861e2a7d7d48e99e96b Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:38:51 -0400 Subject: [PATCH 131/462] Delete ContainerJetpack.java --- inventory/ContainerJetpack.java | 176 -------------------------------- 1 file changed, 176 deletions(-) delete mode 100644 inventory/ContainerJetpack.java diff --git a/inventory/ContainerJetpack.java b/inventory/ContainerJetpack.java deleted file mode 100644 index 5e51ca7b..00000000 --- a/inventory/ContainerJetpack.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.darkona.adventurebackpack.inventory; - -import com.darkona.adventurebackpack.playerProperties.BackpackProperty; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.Slot; -import net.minecraft.item.ItemStack; - -/** - * Created on 15/01/2015 - * - * @author Darkona - */ -public class ContainerJetpack extends Container implements IWearableContainer -{ - InventoryCoalJetpack inventory; - EntityPlayer player; - private final int - PLAYER_HOT_START = 0; - private final int PLAYER_HOT_END = PLAYER_HOT_START + 8; - private final int PLAYER_INV_START = PLAYER_HOT_END + 1; - private final int PLAYER_INV_END = PLAYER_INV_START + 26; - boolean wearing; - - public ContainerJetpack(EntityPlayer player, InventoryCoalJetpack inventory, boolean wearing) - { - this.player = player; - this.inventory = inventory; - makeSlots(player.inventory); - this.inventory.openInventory(); - this.wearing = wearing; - } - - private void bindPlayerInventory(InventoryPlayer invPlayer) - { - int startX = 8; - int startY = 84; - - // Player's Hotbar - for (int x = 0; x < 9; x++) - { - addSlotToContainer(new Slot(invPlayer, x, startX + 18 * x, 142)); - } - - // Player's Inventory - for (int y = 0; y < 3; y++) - { - for (int x = 0; x < 9; x++) - { - addSlotToContainer(new Slot(invPlayer, (x + y * 9 + 9), (startX + 18 * x), (startY + y * 18))); - } - } - //Total 36 slots - } - - private void makeSlots(InventoryPlayer invPlayer) - { - - bindPlayerInventory(invPlayer); - - //Bucket Slots - // bucket in - addSlotToContainer(new SlotFluid(inventory, InventoryCoalJetpack.BUCKET_IN_SLOT, 30, 22)); - // bucket out - addSlotToContainer(new SlotFluid(inventory, InventoryCoalJetpack.BUCKET_OUT_SLOT, 30, 52)); - // fuel - addSlotToContainer(new SlotFuel(inventory,InventoryCoalJetpack.FUEL_SLOT, 77, 64)); - - } - @Override - public boolean canInteractWith(EntityPlayer p_75145_1_) - { - return true; - } - - @Override - public void detectAndSendChanges() - { - if(wearing) - { - refresh(); - super.detectAndSendChanges(); - if (wearing && player instanceof EntityPlayerMP) - { - ((EntityPlayerMP) player).sendContainerAndContentsToPlayer(this, inventoryItemStacks); - BackpackProperty.syncToNear(player); - } - }else{ - super.detectAndSendChanges(); - } - } - - public void onContainerClosed(EntityPlayer player) - { - super.onContainerClosed(player); - if (wearing) - { - this.crafters.remove(player); - } - if (!player.worldObj.isRemote) - { - for (int i = 0; i < 3; i++) - { - ItemStack itemstack = this.inventory.getStackInSlotOnClosing(i); - if (itemstack != null) - { - inventory.setInventorySlotContents(i, null); - player.dropPlayerItemWithRandomChoice(itemstack, false); - } - } - } - } - - @Override - public ItemStack transferStackInSlot(EntityPlayer player, int i) - { - refresh(); - Slot slot = getSlot(i); - ItemStack result = null; - - if (slot != null && slot.getHasStack()) - { - ItemStack stack = slot.getStack(); - result = stack.copy(); - if (i >= 36) - { - if (!mergeItemStack(stack, PLAYER_HOT_START, PLAYER_INV_END + 1, false)) - { - return null; - } - } - if (i < 36) - { - if (SlotFluid.valid(stack)) - { - int JETPACK_INV_START = PLAYER_INV_END + 1; - if (!mergeItemStack(stack, JETPACK_INV_START, JETPACK_INV_START + 1, false)) - { - - } - } - else - { - int JETPACK_FUEL_START = PLAYER_INV_END + 3; - if (inventory.isFuel(stack) && !mergeItemStack(stack, JETPACK_FUEL_START, JETPACK_FUEL_START + 1, false)) - { - return null; - } - } - } - - if (stack.stackSize == 0) - { - slot.putStack(null); - } else - { - slot.onSlotChanged(); - } - - if (stack.stackSize == result.stackSize) - { - return null; - } - slot.onPickupFromSlot(player, stack); - } - return result; - } - - @Override - public void refresh() - { - inventory.openInventory(); - } -} From 3c4739f72fe5b6e5d3ee52d7752c7c99d0ad29d4 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:39:07 -0400 Subject: [PATCH 132/462] Delete BackpackAbilities.java --- common/BackpackAbilities.java | 791 ---------------------------------- 1 file changed, 791 deletions(-) delete mode 100644 common/BackpackAbilities.java diff --git a/common/BackpackAbilities.java b/common/BackpackAbilities.java deleted file mode 100644 index 0357f80f..00000000 --- a/common/BackpackAbilities.java +++ /dev/null @@ -1,791 +0,0 @@ -package com.darkona.adventurebackpack.common; - -import com.darkona.adventurebackpack.block.TileAdventureBackpack; -import com.darkona.adventurebackpack.entity.ai.EntityAIAvoidPlayerWithBackpack; -import com.darkona.adventurebackpack.init.ModFluids; -import com.darkona.adventurebackpack.init.ModNetwork; -import com.darkona.adventurebackpack.inventory.InventoryBackpack; -import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; -import com.darkona.adventurebackpack.reference.BackpackNames; -import com.darkona.adventurebackpack.util.LogHelper; -import com.darkona.adventurebackpack.util.Utils; -import net.minecraft.entity.Entity; -import net.minecraft.entity.ai.EntityAIBase; -import net.minecraft.entity.ai.EntityAITasks; -import net.minecraft.entity.monster.EntityCreeper; -import net.minecraft.entity.passive.EntityWolf; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Items; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; -import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fluids.FluidStack; - -import java.util.Iterator; -import java.util.List; - -/** - * Created on 12/10/2014 - * - * @author Darkona - * @see com.darkona.adventurebackpack.block.TileAdventureBackpack - * @see com.darkona.adventurebackpack.item.ItemAdventureBackpack - * @see com.darkona.adventurebackpack.block.BlockAdventureBackpack - */ -public class BackpackAbilities -{ - - public static BackpackAbilities backpackAbilities = new BackpackAbilities(); - public static BackpackRemovals backpackRemovals = new BackpackRemovals(); - - /** - * - * @param colorName - * @return - */ - public static boolean hasAbility(String colorName) - { - for (String valid : validWearingBackpacks) - { - if (valid.equals(colorName)) - { - return true; - } - } - return false; - } - - public static boolean hasRemoval(String colorName) - { - for (String valid : validRemovalBackpacks) - { - if (valid.equals(colorName)) - { - return true; - } - } - return false; - } - - /** - * Executes the ability of any given backpack, be it on the ground or be it on a player. - * - * @param player An entity player, can be null in the case of the tile entity. - * @param world This is necessary, so get it from wherever you can inside the class you're calling this. - * @param backpack An object representing a backpack, either in its ItemStack form or its TileEntity form. - */ - public void executeAbility(EntityPlayer player, World world, Object backpack) - { - if (backpack instanceof ItemStack) - { - String colorName = BackpackNames.getBackpackColorName((ItemStack)backpack); - try - { - //This is black magic and shouldn't be attempted by the faint of heart. - this.getClass() - .getMethod("item" + colorName, EntityPlayer.class, World.class, ItemStack.class). - invoke(backpackAbilities, player, world, backpack); - } catch (Exception oops) - { - //NOBODY CARES - } - } - - if (backpack instanceof TileAdventureBackpack) - { - String colorName = ((TileAdventureBackpack) backpack).getColorName(); - try - { - /* - This is witchery, witchery I say! - But seriously, if you want to know how this works just pay very close attention: - invoke will execute any method of a given class, okay? so this should be obvious. - Look at the names of the methods in this class and you'll figure it out. - You have to indicate exactly the classes that the method should use as parameters so - be very careful with "getMethod". - */ - this.getClass() - .getMethod("tile" + colorName, World.class, TileAdventureBackpack.class) - .invoke(backpackAbilities, world, backpack); - } catch (Exception oops) - { - //Seriously, nobody cares if this can't work, this is just so the game won't explode. - } - } - - } - - public void executeRemoval(EntityPlayer player, World world,ItemStack backpack ) - { - - String colorName = BackpackNames.getBackpackColorName(backpack); - try - { - //This is black magic and shouldn't be attempted by the faint of heart. - backpackRemovals.getClass() - .getMethod("item" + colorName, EntityPlayer.class, World.class, ItemStack.class). - invoke(backpackRemovals, player, world, backpack); - } catch (Exception oops) - { - LogHelper.error("---Something bad happened when removing a backpack---"); - oops.printStackTrace(); - } - } - /** - * These are the colorNames of the backpacks that have abilities when being worn. - */ - private static String[] validWearingBackpacks = { - "Bat", "Squid", "Pigman", "Cactus", "Cow", "Pig", "Dragon", "Slime", "Chicken", "Wolf", "Ocelot", "Creeper", "Rainbow", "Melon", "Sunflower","Mooshroom"}; - - private static String[] validRemovalBackpacks = { - "Bat", "Squid", "Dragon", "Rainbow" - }; - /** - * These are the colorNames of the backpacks that have abilities while being blocks. Note that not all the - * backpacks that have particularities while in block form necessarily have abilities. - * - * @see com.darkona.adventurebackpack.block.BlockAdventureBackpack - */ - @SuppressWarnings("unused") - private static String[] validTileBackpacks = {"Cactus","Melon"}; - - /** - * Detects if a player is under the rain. For detecting when it is Under The Sea (maybe to sing a nice Disney tune) - * it won't work, there's a different method for that, isInWater - * - * @param player The player - * @return True if the player is outside and it's raining. - */ - private boolean isUnderRain(EntityPlayer player) - { - return player.worldObj.canLightningStrikeAt(MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY), - MathHelper.floor_double(player.posZ)) - || player.worldObj.canLightningStrikeAt(MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY + player.height), - MathHelper.floor_double(player.posZ)); - } - - /** - * This backpack will feed you while you stay in the sun, slowly. At the very least you shouldn't starve. - * @param player - * @param world - * @param backpack - */ - public void itemSunflower(EntityPlayer player, World world, ItemStack backpack) - { - InventoryBackpack inv = new InventoryBackpack(backpack); - - if (inv.getLastTime() <= 0) - { - if(world.isDaytime() && - /*!world.isRemote &&*/ - world.canBlockSeeTheSky(MathHelper.floor_double(player.posX),MathHelper.floor_double(player.posY+1),MathHelper.floor_double(player.posZ))) { - player.getFoodStats().addStats(2, 0.2f); - //LogHelper.info("OMNOMNOMNOM"); - } - inv.setLastTime(Utils.secondsToTicks(120)); - }else{ - inv.setLastTime(inv.getLastTime() - 1); - } - inv.dirtyTime(); - } - - /** - * Nana nana nana nana Bat - Batpack! See in the dark! - * @param player - * @param world - * @param backpack - */ - public void itemBat(EntityPlayer player, World world, ItemStack backpack) - { - //Shameless rip-off from Machinemuse. Thanks Claire, I don't have to reinvent the wheel thanks to you. - //I will use a different potion id to avoid conflicting with her modular suits - PotionEffect nightVision = null; - if (player.isPotionActive(Potion.nightVision.id)) { - nightVision = player.getActivePotionEffect(Potion.nightVision); - } - if (nightVision == null || nightVision.getDuration() < 40 && nightVision.getAmplifier() != -4) - { - player.addPotionEffect(new PotionEffect(Potion.nightVision.id, 5000, -4)); - } - } - - public void itemSquid(EntityPlayer player, World world, ItemStack backpack) - { - if (player.isInWater()) - { - player.addPotionEffect(new PotionEffect(Potion.waterBreathing.getId(), 1, -5)); - itemBat(player, world, backpack); - }else{ - backpackRemovals.itemSquid(player,world, backpack); - } - } - - public void itemIronGolem(EntityPlayer player, World world, ItemStack backpack) - { - - } - - public void itemPigman(EntityPlayer player, World world, ItemStack backpack) - { - PotionEffect potion = null; - if (player.isPotionActive(Potion.fireResistance.id)) { - potion = player.getActivePotionEffect(Potion.fireResistance); - } - if (potion == null || potion.getDuration() < 5 && potion.getAmplifier() != -5) - { - player.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 5000, -5)); - } - } - - /** - * Mirroring real life cactii, the Cactus Backpack fills with water slowly or rapidly depending where is the player. - * If it's raining it will fill 1milibucket of water each tick. - * If the player is in water it will fill 2milibuckets of water each tick. - * The quantities can be combined. - * - * @param player The player. No, seriously. - * @param world The world the player is in. - * @param backpack The backpack the player is wearing. This should be rechecked like 20 times by now, so - * I'm not checking. - */ - public void itemCactus(EntityPlayer player, World world, ItemStack backpack) - { - //lastTime is in ticks for this backpack. - if(world.isRemote)return; - InventoryBackpack inv = new InventoryBackpack(backpack); - int drops = 0; - if (player.isInWater()) - { - drops += 2; - } - if (isUnderRain(player)) - { - drops += 1; - } - - if (inv.getLastTime() <= 0 && drops > 0) - { - inv.setLastTime(5); - FluidStack raindrop = new FluidStack(FluidRegistry.WATER, drops); - inv.getLeftTank().fill(raindrop, true); - inv.getRightTank().fill(raindrop, true); - }else{ - inv.setLastTime(inv.getLastTime() - 1); - } - inv.dirtyTime(); - inv.dirtyTanks(); - } - - /** - * The Pig Backpack will annoy you and your friends! This beautiful design by 豚, will do as the pigs do when they - * are frolicking around in the green pastures and terrifying slaughterhouses of the Minecraft world, after a random - * number of seconds. It's not so frequent as I'd like. - * Translation for pigs: Oink oink oink Oink! squee oink oink Minecraft Oink oink. "Oink" oink oink. - * - * @param player The player - * @param world The world object - * @param backpack The backpack the player is wearing. - */ - public void itemPig(EntityPlayer player, World world, ItemStack backpack) - { - //lastTime is in seconds for this backpack. - InventoryBackpack inv = new InventoryBackpack(backpack); - int oinkTime = inv.getLastTime() - 1; - if (oinkTime <= 0) - { - world.playSoundAtEntity(player, "mob.pig.say", 0.8f, 1f); - oinkTime = Utils.secondsToTicks(world.rand.nextInt(61)); - } - inv.setLastTime(oinkTime); - inv.dirtyTime(); - } - - /** - * Squishy! The Slime Backpack has an incredibly useless "ability". Makes the player leave a slimy trail of - * particles whenever he or she is running, and make that splishy splashy squishy sound on each step as well!. - * - * @param player - * @param world - * @param backpack - */ - public void itemSlime(EntityPlayer player, World world, ItemStack backpack) - { - //lastTime is in Ticks for this backpack. - //0 is Full Moon, 1 is Waning Gibbous, 2 is Last Quarter, 3 is Waning Crescent, - // 4 is New Moon, 5 is Waxing Crescent, 6 is First Quarter and 7 is Waxing Gibbous - if (world.getMoonPhase() == 0 && !world.isDaytime()) - { - player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 100, 0)); - } - if (player.onGround) - { - - if ((player.moveForward == 0 && player.moveStrafing == 0) && (Math.abs(player.moveForward) < 3 && Math.abs(player.moveStrafing)<3) ) - { - player.addVelocity(player.motionX *= 0.828, 0, player.motionZ *= 0.828); - } - if (player.isSprinting()) - { - InventoryBackpack inv = new InventoryBackpack(backpack); - int slimeTime = inv.getLastTime() > 0 ? inv.getLastTime() - 1 : 5; - if (slimeTime <= 0) - { - if (!world.isRemote) - { - ModNetwork.sendToNearby(new EntityParticlePacket.Message(EntityParticlePacket.SLIME_PARTICLE, player), player); - } - world.playSoundAtEntity(player, "mob.slime.small", 0.6F, (world.rand.nextFloat() - world.rand.nextFloat()) * 1F); - slimeTime = 5; - } - inv.setLastTime(slimeTime); - inv.dirtyTime(); - } - } - } - - /** - * The Chicken Backpack will go and *plop* an egg for you randomly each so many seconds. It's very rare though. - * - * @param player - * @param world - * @param backpack - */ - public void itemChicken(EntityPlayer player, World world, ItemStack backpack) - { - InventoryBackpack inv = new InventoryBackpack(backpack); - int eggTime = inv.getLastTime() - 1 ; - if (eggTime <= 0) - { - player.playSound("mob.chicken.plop", 1.0F, (world.rand.nextFloat() - world.rand.nextFloat()) * 0.3F + 1.0F); - if (!world.isRemote) player.dropItem(Items.egg, 1); - eggTime = Utils.secondsToTicks(200 + 10 * world.rand.nextInt(10)); - } - inv.setLastTime(eggTime); - inv.dirtyTime(); - } - - /** - * The Melon Backpack, like his cousin the Cactus Backpack, will fill itself, but with delicious - * and refreshing Melon Juice, if the backpack is wet in any way. - * - * @param player - * @param world - * @param backpack - */ - public void itemMelon(EntityPlayer player, World world, ItemStack backpack) - { - //lastTime is in ticks for this backpack. - if(world.isRemote)return; - InventoryBackpack inv = new InventoryBackpack(backpack); - int drops = 0; - if (player.isInWater()) - { - drops += 2; - } - if (isUnderRain(player)) - { - drops += 1; - } - - if (inv.getLastTime() <= 0 && drops > 0) - { - inv.setLastTime(5); - FluidStack raindrop = new FluidStack(ModFluids.melonJuice, drops); - inv.getLeftTank().fill(raindrop, true); - inv.getRightTank().fill(raindrop, true); - }else{ - inv.setLastTime(inv.getLastTime() - 1); - } - inv.dirtyTime(); - inv.dirtyTanks(); - } - - /** - * The Dragon Backpack does something awesome. - * - * @param player - * @param world - * @param backpack - */ - public void itemDragon(EntityPlayer player, World world, ItemStack backpack) - { - itemPigman(player,world,backpack); - itemSquid(player, world, backpack); - PotionEffect potion = null; - if (player.isPotionActive(Potion.regeneration.id)) { - potion = player.getActivePotionEffect(Potion.regeneration); - } - if (potion == null || potion.getDuration() < 40 && potion.getAmplifier() != -5) - { - player.addPotionEffect(new PotionEffect(Potion.regeneration.getId(), 5000, -5)); - } - potion = null; - if (player.isPotionActive(Potion.damageBoost.id)) { - potion = player.getActivePotionEffect(Potion.damageBoost); - } - if (potion == null || potion.getDuration() < 40 && potion.getAmplifier() != -5) { - player.addPotionEffect(new PotionEffect(Potion.damageBoost.getId(), 5000, -5)); - } - } - - /** - * Sneaky! Scare your friends! Or your enemies! - * Sneak on another player to make them jump in confusion as they think one of those green bastards is behind him/her. - * You can only do it once every so often. A couple of minutes. Remember, you must be sneaking. - * - * @param player - * @param world - * @param backpack - * @see com.darkona.adventurebackpack.handlers.PlayerEventHandler - */ - @SuppressWarnings("unchecked") - public void itemCreeper(EntityPlayer player, World world, ItemStack backpack) - { - //lastTime is in seconds for this ability - InventoryBackpack inv = new InventoryBackpack(backpack); - int pssstTime = inv.getLastTime() - 1; - - if (pssstTime <= 0) - { - pssstTime = 20; - if (player.isSneaking()) - { - List entities = player.worldObj.getEntitiesWithinAABBExcludingEntity(player, - AxisAlignedBB.getBoundingBox(player.posX, player.posY, player.posZ, - player.posX + 1.0D, player.posY + 1.0D, - player.posZ + 1.0D).expand(5.0D, 1.0D, 5.0D)); - if (entities.isEmpty()) - { - pssstTime -= 1; - return; - } - - for (Entity entity : entities) - { - if (entity instanceof EntityPlayer) - { - if (player.getDistanceToEntity(entity) <= 3) - { - world.playSoundAtEntity(player, "creeper.primed", 1.2F, 0.5F); - pssstTime = Utils.secondsToTicks(120); - } - } - } - } - } - inv.setLastTime(pssstTime); - inv.markDirty(); - } - - private FluidStack milkStack = new FluidStack(FluidRegistry.getFluid("milk"), 1); - private FluidStack soupStack = new FluidStack(FluidRegistry.getFluid("mushroomstew"), 1); - @SuppressWarnings("unused") - private FluidStack lavaStack = new FluidStack(FluidRegistry.LAVA, 1); - - /** - * The Cow Backpack fills itself with milk when there is wheat in the backpack's inventory, but it will do so slowly - * and will eat the wheat. It's like having a cow in your backpack. Each 16 wheat makes a bucket. It only happens - * when it is being worn. For not-player related milk generation go get a cow. Moo! - * - * @param player - * @param world - * @param backpack - */ - public void itemCow(EntityPlayer player, World world, ItemStack backpack) - { - if (world.isRemote) return; - InventoryBackpack inv = new InventoryBackpack(backpack); - inv.openInventory(); - - if (inv.getLeftTank().fill(milkStack, false) <= 0 && inv.getRightTank().fill(milkStack, false) <= 0) - { - return; - } - //Set Cow Properties - int wheatConsumed = 0; - int milkTime = -1; - if (inv.getExtendedProperties() != null) - { - if (inv.extendedProperties.hasKey("wheatConsumed")) - { - wheatConsumed = inv.extendedProperties.getInteger("wheatConsumed"); - milkTime = inv.extendedProperties.getInteger("milkTime") - 1; - } - } - - int eatTime = (inv.getLastTime() - 1 >= 0) ? inv.getLastTime() - 1 : 0; - if (inv.hasItem(Items.wheat) && eatTime <= 0 && milkTime <= 0) - { - eatTime = 20; - //LogHelper.info("Consuming Wheat in " + ((world.isRemote) ? "Client" : "Server")); - inv.consumeInventoryItem(Items.wheat); - wheatConsumed++; - inv.dirtyInventory(); - } - - int factor = 1; - if (wheatConsumed == 16) - { - wheatConsumed = 0; - milkTime = (1000 * factor) - factor; - world.playSoundAtEntity(player, "mob.cow.say", 1f, 1f); - } - - if (milkTime >= 0 && (milkTime % factor == 0)) - { - if (inv.getLeftTank().fill(milkStack, true) <= 0) - { - inv.getRightTank().fill(milkStack, true); - } - inv.dirtyTanks(); - } - if (milkTime < -1) milkTime = -1; - inv.extendedProperties.setInteger("wheatConsumed", wheatConsumed); - inv.extendedProperties.setInteger("milkTime", milkTime); - inv.setLastTime(eatTime); - // inv.setLastTime(eatTime); - inv.dirtyExtended(); - //inv.dirtyTanks(); - inv.dirtyTime(); - //inv.dirtyInventory(); - - //So naughty!!! - } - - public void itemMooshroom(EntityPlayer player, World world, ItemStack backpack) - { - if (world.isRemote) return; - InventoryBackpack inv = new InventoryBackpack(backpack); - inv.openInventory(); - - if (inv.getLeftTank().fill(soupStack, false) <= 0 && inv.getRightTank().fill(soupStack, false) <= 0) - { - return; - } - //Set Cow Properties - int wheatConsumed = 0; - int milkTime = -1; - if (inv.getExtendedProperties() != null) - { - if (inv.extendedProperties.hasKey("wheatConsumed")) - { - wheatConsumed = inv.extendedProperties.getInteger("wheatConsumed"); - milkTime = inv.extendedProperties.getInteger("milkTime") - 1; - } - } - - int eatTime = (inv.getLastTime() - 1 >= 0) ? inv.getLastTime() - 1 : 0; - if (inv.hasItem(Items.wheat) && eatTime <= 0 && milkTime <= 0) - { - eatTime = 20; - //LogHelper.info("Consuming Wheat in " + ((world.isRemote) ? "Client" : "Server")); - inv.consumeInventoryItem(Items.wheat); - wheatConsumed++; - inv.dirtyInventory(); - } - - int factor = 1; - if (wheatConsumed == 16) - { - wheatConsumed = 0; - milkTime = (1000 * factor) - factor; - world.playSoundAtEntity(player, "mob.cow.say", 1f, 1f); - } - - if (milkTime >= 0 && (milkTime % factor == 0)) - { - if (inv.getLeftTank().fill(soupStack, true) <= 0) - { - inv.getRightTank().fill(soupStack, true); - } - inv.dirtyTanks(); - } - if (milkTime < -1) milkTime = -1; - inv.extendedProperties.setInteger("wheatConsumed", wheatConsumed); - inv.extendedProperties.setInteger("milkTime", milkTime); - inv.setLastTime(eatTime); - // inv.setLastTime(eatTime); - inv.dirtyExtended(); - //inv.dirtyTanks(); - inv.dirtyTime(); - //inv.dirtyInventory(); - - //So naughty!!! - } - - /** - * The Wolf Backpack is a handy one if you're out in the wild. It checks around for any wolves that may lurk around. - * If any of them gets mad at you, it will smell the scent of it's kin on you and promptly forget about the whole - * deal. Smelling like dog is awesome. - * - * @param player the player - * @param world the world - * @param backpack the backpack - */ - @SuppressWarnings("unchecked") - public void itemWolf(EntityPlayer player, World world, ItemStack backpack) - { - //lastTime is in Ticks for this backpack - InventoryBackpack inv = new InventoryBackpack(backpack); - int lastCheckTime = inv.getLastTime() - 1; - - if (lastCheckTime <= 0) - { - lastCheckTime = 20; - List wolves = world.getEntitiesWithinAABB( - EntityWolf.class, - AxisAlignedBB.getBoundingBox(player.posX, player.posY, player.posZ, - player.posX + 1.0D, player.posY + 1.0D, - player.posZ + 1.0D).expand(16.0D, 4.0D, 16.0D)); - if (wolves.isEmpty()) return; - - for (EntityWolf wolf : wolves) - { - if (wolf.isAngry() && wolf.getAttackTarget() == player) - { - wolf.setAngry(false); - wolf.setAttackTarget(null); - wolf.setRevengeTarget(null); - Iterator i2 = wolf.targetTasks.taskEntries.iterator(); - while (i2.hasNext()) - { - ((EntityAIBase) i2.next()).resetTask(); - } - } - } - } - inv.setLastTime(lastCheckTime); - inv.dirtyTime(); - } - - /** - * The Blaze Backpack will make you inmune to fire and lava and burning and heat and... not really. You're supposed - * to die a fiery death if you are not careful, but this backpack will protect you against those burning fire - * elemental inhabitants of the Nether. Any blast of fire directed your way will be stopped, deflected or whatever. - * - * @param player - * @param world - * @param backpack - */ - public void itemBlaze(EntityPlayer player, World world, ItemStack backpack) - { - - } - - /** - * Like actual Ocelots and Cats, the Ocelot Backpack will scare the hell out of Creepers, so they won't creep on you - * while you're busy doing something else, paying no attention whatsoever at your surroundings like a mindless chicken. - * - * @param player - * @param world - * @param backpack - */ - @SuppressWarnings("unchecked") - public void itemOcelot(EntityPlayer player, World world, ItemStack backpack) - { - //lastTime in this backpack is in Ticks. - InventoryBackpack inv = new InventoryBackpack(backpack); - int lastCheckTime = inv.getLastTime() - 1; - if (lastCheckTime <= 0) - { - lastCheckTime = 20; - List creepers = player.worldObj.getEntitiesWithinAABB( - EntityCreeper.class, - AxisAlignedBB.getBoundingBox(player.posX, player.posY, player.posZ, - player.posX + 1.0D, player.posY + 1.0D, - player.posZ + 1.0D).expand(16.0D, 4.0D, 16.0D)); - - for (EntityCreeper creeper : creepers) - { - boolean set = true; - EntityAIAvoidPlayerWithBackpack task = new EntityAIAvoidPlayerWithBackpack(creeper, EntityPlayer.class, 10.0F, 1.0, 1.3, "Ocelot"); - - for (Object entry : creeper.tasks.taskEntries) - { - if (((EntityAITasks.EntityAITaskEntry) entry).action instanceof EntityAIAvoidPlayerWithBackpack) - { - set = false; - break; - } - } - - if (set) - { - //System.out.println("Found creeper who doesn't know to fear the backpack, making it a pussy now"); - creeper.tasks.addTask(3, task); - } - } - } - inv.setLastTime(lastCheckTime); - inv.markDirty(); - } - - - public void itemRainbow(EntityPlayer player, World world, ItemStack backpack) - { - InventoryBackpack inv = new InventoryBackpack(backpack); - int noteTime = inv.getLastTime() - 1; - if (noteTime >= 0 && noteTime < Utils.secondsToTicks(147)) - { - player.setSprinting(true); - player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 100, 0)); - player.addPotionEffect((new PotionEffect(Potion.jump.getId(), 100, 0))); - if (noteTime % 2 == 0) - { - //Visuals.NyanParticles(player, world); - if (!world.isRemote) - { - ModNetwork.sendToNearby(new EntityParticlePacket.Message(EntityParticlePacket.NYAN_PARTICLE, player), player); - } - } - } - PotionEffect potion = null; - if (player.isPotionActive(Potion.moveSpeed.id)) { - potion = player.getActivePotionEffect(Potion.moveSpeed); - } - if (potion == null || potion.getDuration() < 40 && potion.getAmplifier() != -5) { - player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 500, -5)); - } - inv.setLastTime(noteTime); - inv.markDirty(); - } - /* ==================================== TILE ABILITIES ==========================================*/ - - private void fillWithRain(World world, TileAdventureBackpack backpack, FluidStack fluid, int time) - { - if (world.isRaining() && world.canBlockSeeTheSky(backpack.xCoord, backpack.yCoord, backpack.zCoord)) - { - int dropTime = backpack.getLastTime() - 1; - if (dropTime <= 0) - { - backpack.getRightTank().fill(fluid, true); - backpack.getLeftTank().fill(fluid, true); - dropTime = time; - backpack.markDirty(); - } - backpack.setLastTime(dropTime); - } - } - - /** - * Like real life cactii, this backpack will fill slowly while it's raining with refreshing water. - * - * @param world - * @param backpack - */ - public void tileCactus(World world, TileAdventureBackpack backpack) - { - fillWithRain(world, backpack, new FluidStack(FluidRegistry.WATER, 2), 5); - } - - - public void tileMelon(World world, TileAdventureBackpack backpack) - { - fillWithRain(world, backpack, new FluidStack(ModFluids.melonJuice, 2), 5); - } - -} From 4f5d4011d048e04a7be98340330238b75c4724fb Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:39:14 -0400 Subject: [PATCH 133/462] Delete BackpackRemovals.java --- common/BackpackRemovals.java | 124 ----------------------------------- 1 file changed, 124 deletions(-) delete mode 100644 common/BackpackRemovals.java diff --git a/common/BackpackRemovals.java b/common/BackpackRemovals.java deleted file mode 100644 index f899b331..00000000 --- a/common/BackpackRemovals.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.darkona.adventurebackpack.common; - -import com.darkona.adventurebackpack.inventory.InventoryBackpack; -import com.darkona.adventurebackpack.util.Wearing; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.world.World; - -/** - * Created on 09/01/2015 - * - * @author Darkona - */ -public class BackpackRemovals -{ - public void itemBat(EntityPlayer player, World world, ItemStack backpack) - { - PotionEffect potion = null; - if (player.isPotionActive(Potion.nightVision.id)) { - potion = player.getActivePotionEffect(Potion.nightVision); - - if (potion != null && potion.getAmplifier() == -4) { - if (player.worldObj.isRemote) { - player.removePotionEffectClient(Potion.nightVision.id); - } else { - player.removePotionEffect(Potion.nightVision.id); - } - } - } - } - - public void itemSquid(EntityPlayer player, World world, ItemStack backpack) - { - itemBat(player, world, backpack); - PotionEffect potion = null; - if (player.isPotionActive(Potion.waterBreathing.id)) { - potion = player.getActivePotionEffect(Potion.waterBreathing); - - if (potion != null && potion.getAmplifier() == -5) { - if (player.worldObj.isRemote) { - player.removePotionEffectClient(Potion.waterBreathing.id); - } else { - player.removePotionEffect(Potion.waterBreathing.id); - } - } - } - } - - public void itemPigman(EntityPlayer player, World world, ItemStack backpack) - { - PotionEffect potion = null; - if (player.isPotionActive(Potion.fireResistance.id)) { - potion = player.getActivePotionEffect(Potion.fireResistance); - - if (potion != null && potion.getAmplifier() == -5) { - if (player.worldObj.isRemote) { - player.removePotionEffectClient(Potion.fireResistance.id); - } else { - player.removePotionEffect(Potion.fireResistance.id); - } - } - } - } - public void itemDragon(EntityPlayer player, World world, ItemStack backpack) - { - itemBat(player, world, backpack); - itemPigman(player,world,backpack); - PotionEffect potion = null; - if (player.isPotionActive(Potion.damageBoost.id)) { - potion = player.getActivePotionEffect(Potion.damageBoost); - if (potion != null && potion.getAmplifier() == -5) { - if (player.worldObj.isRemote) { - player.removePotionEffectClient(Potion.damageBoost.id); - } else { - player.removePotionEffect(Potion.damageBoost.id); - } - } - } - potion = null; - if (player.isPotionActive(Potion.regeneration.id)) { - potion = player.getActivePotionEffect(Potion.regeneration); - - if (potion != null && potion.getAmplifier() == -5) { - if (player.worldObj.isRemote) { - player.removePotionEffectClient(Potion.regeneration.id); - } else { - player.removePotionEffect(Potion.regeneration.id); - } - } - } - } - - public void itemRainbow(EntityPlayer player, World world, ItemStack backpack) - { - InventoryBackpack inv = new InventoryBackpack(Wearing.getWearingBackpack(player)); - if (inv.getLastTime() > 0) return; - inv.setLastTime(0); - inv.dirtyTime(); - PotionEffect potion = null; - if (player.isPotionActive(Potion.moveSpeed.id)) { - potion = player.getActivePotionEffect(Potion.moveSpeed); - if (potion != null && potion.getAmplifier() == 2) { - if (player.worldObj.isRemote) { - player.removePotionEffectClient(Potion.moveSpeed.id); - } else { - player.removePotionEffect(Potion.moveSpeed.id); - } - } - } - potion = null; - if (player.isPotionActive(Potion.jump.id)) { - potion = player.getActivePotionEffect(Potion.jump); - if (potion != null && potion.getAmplifier() == 2) { - if (player.worldObj.isRemote) { - player.removePotionEffectClient(Potion.jump.id); - } else { - player.removePotionEffect(Potion.jump.id); - } - } - } - } -} From 9beba0b2349f3f5c35589f47dba5bac9d90ac788 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:39:36 -0400 Subject: [PATCH 134/462] Delete ServerActions.java --- common/ServerActions.java | 424 -------------------------------------- 1 file changed, 424 deletions(-) delete mode 100644 common/ServerActions.java diff --git a/common/ServerActions.java b/common/ServerActions.java deleted file mode 100644 index f4eb3e9e..00000000 --- a/common/ServerActions.java +++ /dev/null @@ -1,424 +0,0 @@ -package com.darkona.adventurebackpack.common; - -import com.darkona.adventurebackpack.block.TileAdventureBackpack; -import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; -import com.darkona.adventurebackpack.init.ModNetwork; -import com.darkona.adventurebackpack.inventory.InventoryBackpack; -import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; -import com.darkona.adventurebackpack.item.ItemCopterPack; -import com.darkona.adventurebackpack.item.ItemHose; -import com.darkona.adventurebackpack.network.WearableModePacket; -import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; -import com.darkona.adventurebackpack.reference.BackpackNames; -import com.darkona.adventurebackpack.util.LogHelper; -import com.darkona.adventurebackpack.util.Wearing; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.projectile.EntityArrow; -import net.minecraft.init.Items; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.ChatComponentTranslation; -import net.minecraft.world.World; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidTank; - -import java.util.Random; - -/** - * Created on 23/12/2014 - * - * @author Darkona - */ -public class ServerActions -{ - public static final boolean HOSE_SWITCH = false; - public static final boolean HOSE_TOGGLE = true; - - /** - * Cycles tools. In a cycle. The tool in your hand with the tools in the special tool slots of the backpack, to be precise. - * - * @param player - Duh - * @param direction - An integer indicating the direction of the switch. Nobody likes to swith always inthe same - * direction all the timeInSeconds. That's stupid. - * @param slot The slot that will be switched with the backpack. - */ - public static void cycleTool(EntityPlayer player, int direction, int slot) - { - try - { - InventoryBackpack backpack = Wearing.getBackpackInv(player, true); - ItemStack current = player.getCurrentEquippedItem(); - backpack.openInventory(); - if (direction < 0) - { - //LogHelper.info("Item of class " + backpack.getStackInSlot(Constants.lowerTool).getItem().getClass().getName()); - player.inventory.mainInventory[slot] = backpack.getStackInSlot(Constants.upperTool); - backpack.setInventorySlotContentsNoSave(Constants.upperTool, backpack.getStackInSlot(Constants.lowerTool)); - backpack.setInventorySlotContentsNoSave(Constants.lowerTool, current); - - } else - { - if (direction > 0) - { - player.inventory.mainInventory[slot] = backpack.getStackInSlot(Constants.lowerTool); - backpack.setInventorySlotContentsNoSave(Constants.lowerTool, backpack.getStackInSlot(Constants.upperTool)); - backpack.setInventorySlotContentsNoSave(Constants.upperTool, current); - } - } - backpack.markDirty(); - player.inventory.closeInventory(); - } catch (Exception oops) - { - LogHelper.debug("Exception trying to cycle tools."); - oops.printStackTrace(); - } - } - - /** - * @param world The world. Like, the WHOLE world. That's a lot of stuff. Do stuff with it, like detecting biomes - * or whatever. - * @param player Is a player. To whom the nice or evil effects you're going to apply will affect. - * See? I know the proper use of the words "effect" & "affect". - * @param tank The tank that holds the fluid, whose effect will affect the player that's in the world. - * @return If the effect can be applied, and it is actually applied, returns true. - */ - public static boolean setFluidEffect(World world, EntityPlayer player, FluidTank tank) - { - FluidStack drained = tank.drain(Constants.bucket, false); - boolean done = false; - if (drained != null && drained.amount >= Constants.bucket && FluidEffectRegistry.hasFluidEffect(drained.getFluid())) - { - done = FluidEffectRegistry.executeFluidEffectsForFluid(drained.getFluid(), player, world); - } - return done; - } - - /** - * @param player Duh! - * @param direction The direction in which the hose modes will switch. - * @param action The type of the action to be performed on the hose. - * Can be HOSE_SWITCH for mode or HOSE_TOGGLE for tank - * @param slot The slot in which the hose gleefully frolicks in the inventory. - */ - public static void switchHose(EntityPlayer player, boolean action, int direction, int slot) - { - - ItemStack hose = player.inventory.mainInventory[slot]; - if (hose != null && hose.getItem() instanceof ItemHose) - { - NBTTagCompound tag = hose.hasTagCompound() ? hose.stackTagCompound : new NBTTagCompound(); - if (!action) - { - int mode = ItemHose.getHoseMode(hose); - if (direction > 0) - { - mode = (mode + 1) % 3; - } else if (direction < 0) - { - mode = (mode - 1 < 0) ? 2 : mode - 1; - } - tag.setInteger("mode", mode); - } - - if (action) - { - int tank = ItemHose.getHoseTank(hose); - tank = (tank + 1) % 2; - tag.setInteger("tank", tank); - } - hose.setTagCompound(tag); - } - } - - /** - * Electrifying! Transforms a backpack into its electrified version. Shhh this is kinda secret, ok? - * - * @param player The player wearing the backpack. - */ - public static void electrify(EntityPlayer player) - { - ItemStack backpack = Wearing.getWearingBackpack(player); - if (BackpackNames.getBackpackColorName(backpack).equals("Pig")) - { - BackpackNames.setBackpackColorName(backpack, "Pigman"); - } - if (BackpackNames.getBackpackColorName(backpack).equals("Diamond")) - { - BackpackNames.setBackpackColorName(backpack, "Electric"); - } - } - - /** - * @param player - * @param bow - * @param charge - */ - public static void leakArrow(EntityPlayer player, ItemStack bow, int charge) - { - World world = player.worldObj; - Random itemRand = new Random(); - InventoryBackpack backpack = new InventoryBackpack(Wearing.getWearingBackpack(player)); - - //this is all vanilla code for the bow - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, bow) > 0; - - if (flag || backpack.hasItem(Items.arrow)) - { - float f = (float) charge / 20.0F; - f = (f * f + f * 2.0F) / 3.0F; - if ((double) f < 0.1D) - { - return; - } - if (f > 1.0F) - { - f = 1.0F; - } - EntityArrow entityarrow = new EntityArrow(world, player, f * 2.0F); - if (f == 1.0F) - { - entityarrow.setIsCritical(true); - } - int power = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, bow); - if (power > 0) - { - entityarrow.setDamage(entityarrow.getDamage() + (double) power * 0.5D + 0.5D); - } - int punch = EnchantmentHelper.getEnchantmentLevel(Enchantment.punch.effectId, bow); - if (punch > 0) - { - entityarrow.setKnockbackStrength(punch); - } - if (EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId, bow) > 0) - { - entityarrow.setFire(100); - } - - bow.damageItem(1, player); - world.playSoundAtEntity(player, "random.bow", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F); - - if (flag) - { - entityarrow.canBePickedUp = 2; - } else - { - /* - * From here, instead of leaking an arrow to the player inventory, which may be full and then it would be - * pointless, leak an arrow straight from the backpack ^_^ - * - * It could be possible to switch a whole stack with the player inventory, fire the arrow, and then - * switch back, but that's stupid. - * - * That's how you make a quiver (for vanilla bows at least, or anything that uses the events and vanilla - * arrows) Until we have an event that fires when a player consumes items in his/her inventory. - * - * I should make a pull request. Too lazy, though. - * */ - backpack.consumeInventoryItem(Items.arrow); - backpack.dirtyInventory(); - } - - if (!world.isRemote) - { - world.spawnEntityInWorld(entityarrow); - } - } - } - - /** - * @param player - * @param coordX - * @param coordY - * @param coordZ - */ - public static void toggleSleepingBag(EntityPlayer player, int coordX, int coordY, int coordZ) - { - World world = player.worldObj; - if (world.getTileEntity(coordX, coordY, coordZ) instanceof TileAdventureBackpack) - { - TileAdventureBackpack te = (TileAdventureBackpack) world.getTileEntity(coordX, coordY, coordZ); - if (!te.isSBDeployed()) - { - int can[] = canDeploySleepingBag(world, coordX, coordY, coordZ); - if (can[0] > -1) - { - if (te.deploySleepingBag(player, world, can[1], can[2], can[3], can[0])) - { - player.closeScreen(); - } - } else if (world.isRemote) - { - player.addChatComponentMessage(new ChatComponentText("Can't deploy the sleeping bag! Check the surrounding area.")); - } - } else - { - te.removeSleepingBag(world); - } - player.closeScreen(); - } - - } - - public static int[] canDeploySleepingBag(World world, int coordX, int coordY, int coordZ) - { - TileAdventureBackpack te = (TileAdventureBackpack) world.getTileEntity(coordX, coordY, coordZ); - int newMeta = -1; - - if (!te.isSBDeployed()) - { - int meta = world.getBlockMetadata(coordX, coordY, coordZ); - switch (meta & 3) - { - case 0: - --coordZ; - if (world.isAirBlock(coordX, coordY, coordZ) && world.getBlock(coordX, coordY - 1, coordZ).getMaterial().isSolid()) - { - if (world.isAirBlock(coordX, coordY, coordZ - 1) && world.getBlock(coordX, coordY - 1, coordZ - 1).getMaterial().isSolid()) - { - newMeta = 2; - } - } - break; - case 1: - ++coordX; - if (world.isAirBlock(coordX, coordY, coordZ) && world.getBlock(coordX, coordY - 1, coordZ).getMaterial().isSolid()) - { - if (world.isAirBlock(coordX + 1, coordY, coordZ) && world.getBlock(coordX + 1, coordY - 1, coordZ).getMaterial().isSolid()) - { - newMeta = 3; - } - } - break; - case 2: - ++coordZ; - if (world.isAirBlock(coordX, coordY, coordZ) && world.getBlock(coordX, coordY - 1, coordZ).getMaterial().isSolid()) - { - if (world.isAirBlock(coordX, coordY, coordZ + 1) && world.getBlock(coordX, coordY - 1, coordZ + 1).getMaterial().isSolid()) - { - newMeta = 0; - } - } - break; - case 3: - --coordX; - if (world.isAirBlock(coordX, coordY, coordZ) && world.getBlock(coordX, coordY - 1, coordZ).getMaterial().isSolid()) - { - if (world.isAirBlock(coordX - 1, coordY, coordZ) && world.getBlock(coordX - 1, coordY - 1, coordZ).getMaterial().isSolid()) - { - newMeta = 1; - } - } - break; - default: - break; - } - } - int result[] = {newMeta, coordX, coordY, coordZ}; - return result; - } - - /** - * Adds vertical inertia to the movement in the Y axis of the player, and makes Newton's Laws cry. - * In other words, makes you jump higher. - * Also it plays a nice sound effect that will probably get annoying after a while. - * - * @param player - The player performing the jump. - */ - public static void pistonBootsJump(EntityPlayer player) - { - //TODO add configuration for the playing of the sound effect. - //TODO Maybe configurable jump height too, because why not. - player.playSound("tile.piston.out", 0.5F, player.getRNG().nextFloat() * 0.25F + 0.6F); - player.motionY += 0.30; - player.jumpMovementFactor += 0.3; - } - - public static void toggleCopterPack(EntityPlayer player, ItemStack copter, byte type) - { - String message = ""; - boolean actionPerformed = false; - - if (!copter.hasTagCompound()) - { - copter.stackTagCompound = new NBTTagCompound(); - } - if (!copter.stackTagCompound.hasKey("status")) - { - copter.stackTagCompound.setByte("status", ItemCopterPack.OFF_MODE); - } - - byte mode = copter.stackTagCompound.getByte("status"); - byte newMode = ItemCopterPack.OFF_MODE; - - if (type == WearableModePacket.COPTER_ON_OFF) - { - if (mode == ItemCopterPack.OFF_MODE) - { - newMode = ItemCopterPack.NORMAL_MODE; - message = "adventurebackpack:messages.copterpack.normal"; - actionPerformed = true; - if (!player.worldObj.isRemote) - { - ModNetwork.sendToNearby(new EntitySoundPacket.Message(EntitySoundPacket.COPTER_SOUND,player), player); - - } - } else - { - newMode = ItemCopterPack.OFF_MODE; - message = "adventurebackpack:messages.copterpack.off"; - actionPerformed = true; - } - } - - if (type == WearableModePacket.COPTER_TOGGLE && mode != ItemCopterPack.OFF_MODE) - { - if (mode == ItemCopterPack.NORMAL_MODE) - { - newMode = ItemCopterPack.HOVER_MODE; - message = "adventurebackpack:messages.copterpack.hover"; - actionPerformed = true; - } - if (mode == ItemCopterPack.HOVER_MODE) - { - newMode = ItemCopterPack.NORMAL_MODE; - message = "adventurebackpack:messages.copterpack.normal"; - actionPerformed = true; - } - } - - if (actionPerformed) - { - copter.stackTagCompound.setByte("status", newMode); - if (player.worldObj.isRemote) - { - player.addChatComponentMessage(new ChatComponentTranslation(message)); - } - - } - } - - public static void toggleSteamJetpack(EntityPlayer player, ItemStack jetpack, byte on_off) - { - InventoryCoalJetpack inv = new InventoryCoalJetpack(jetpack); - if(inv.getStatus()) - { - inv.setStatus(false); - inv.markDirty(); - if (player.worldObj.isRemote) - { - player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.jetpack.off")); - } - }else{ - inv.setStatus(true); - inv.markDirty(); - if (player.worldObj.isRemote) - { - player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.jetpack.on")); - } - } - } -} From 8c918bbf09988f163c8ac744abb20da19a406649 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:39:42 -0400 Subject: [PATCH 135/462] Delete Constants.java --- common/Constants.java | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100644 common/Constants.java diff --git a/common/Constants.java b/common/Constants.java deleted file mode 100644 index ab583709..00000000 --- a/common/Constants.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.darkona.adventurebackpack.common; - -import net.minecraftforge.fluids.FluidContainerRegistry; - -/** - * Created on 11/10/2014. - * @author Javier Darkona - */ -public class Constants -{ - - public static final int inventorySize = 45; - public static final int bucket = FluidContainerRegistry.BUCKET_VOLUME; - public static final int basicTankCapacity = bucket * 4; - public static final int advancedTankCapacity = bucket * 8; - public static final int heroicTankCapacity = bucket * 12; - - //Inventory Special Slots - private static final int endOfInventory = inventorySize - 7; - public static final int upperTool = endOfInventory + 1; - public static final int lowerTool = upperTool + 1; - - public static final int bucketInLeft = lowerTool + 1; - public static final int bucketOutLeft = bucketInLeft + 1; - public static final int bucketInRight = bucketOutLeft + 1; - public static final int bucketOutRight = bucketInRight + 1; - -} From 77d84e45d53619e32f8387e8c88b3dc71f4b6dcc Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:39:50 -0400 Subject: [PATCH 136/462] Delete IInventoryAdventureBackpack.java --- common/IInventoryAdventureBackpack.java | 53 ------------------------- 1 file changed, 53 deletions(-) delete mode 100644 common/IInventoryAdventureBackpack.java diff --git a/common/IInventoryAdventureBackpack.java b/common/IInventoryAdventureBackpack.java deleted file mode 100644 index 9d058966..00000000 --- a/common/IInventoryAdventureBackpack.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.darkona.adventurebackpack.common; - -import com.darkona.adventurebackpack.block.TileAdventureBackpack; -import com.darkona.adventurebackpack.inventory.IInventoryTanks; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraftforge.fluids.FluidTank; - -/** - * Created by Darkona on 12/10/2014. - */ -public interface IInventoryAdventureBackpack extends IInventoryTanks -{ - - public FluidTank getLeftTank(); - - public FluidTank getRightTank(); - - public ItemStack[] getInventory(); - - public TileAdventureBackpack getTile(); - - public ItemStack getParentItemStack(); - - public String getColorName(); - - public int getLastTime(); - - public NBTTagCompound getExtendedProperties(); - - public void setExtendedProperties(NBTTagCompound properties); - - public boolean isSpecial(); - - public void saveTanks(NBTTagCompound compound); - - public void loadTanks(NBTTagCompound compound); - - public boolean hasItem(Item item); - - void consumeInventoryItem(Item item); - - boolean isSBDeployed(); - - void setLastTime(int time); - - - public void dirtyTime(); - - public void dirtyExtended(); - -} From ce5a572e0e5aa35a2af069298b58f2f63da1b618 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:40:00 -0400 Subject: [PATCH 137/462] Delete WearableEvent.java --- events/WearableEvent.java | 39 --------------------------------------- 1 file changed, 39 deletions(-) delete mode 100644 events/WearableEvent.java diff --git a/events/WearableEvent.java b/events/WearableEvent.java deleted file mode 100644 index c16b3670..00000000 --- a/events/WearableEvent.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.darkona.adventurebackpack.events; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraftforge.event.entity.player.PlayerEvent; - -/** - * Created on 16/10/2014 - * - * @author Darkona - */ -public class WearableEvent extends PlayerEvent -{ - - public final ItemStack wearable; - - public WearableEvent(EntityPlayer player, ItemStack wearable) - { - super(player); - this.wearable = wearable; - } - - public static class UnequipWearableEvent extends WearableEvent - { - public UnequipWearableEvent(EntityPlayer player, ItemStack wearable) - { - super(player, wearable); - } - } - - public static class EquipWearableEvent extends WearableEvent - { - public EquipWearableEvent(EntityPlayer player, ItemStack wearable) - { - super(player, wearable); - } - } - -} From a6632470cc2511c09db4f7d09a9bfb31ba45538b Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:40:09 -0400 Subject: [PATCH 138/462] Delete AvoidEntitySelector.java --- entity/ai/AvoidEntitySelector.java | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 entity/ai/AvoidEntitySelector.java diff --git a/entity/ai/AvoidEntitySelector.java b/entity/ai/AvoidEntitySelector.java deleted file mode 100644 index 5c066815..00000000 --- a/entity/ai/AvoidEntitySelector.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.darkona.adventurebackpack.entity.ai; - -import net.minecraft.command.IEntitySelector; -import net.minecraft.entity.Entity; - -public class AvoidEntitySelector implements IEntitySelector -{ - - - final EntityAIAvoidPlayerWithBackpack entityAvoiderAI; - - AvoidEntitySelector(EntityAIAvoidPlayerWithBackpack par1EntityAIAvoidEntity) - { - this.entityAvoiderAI = par1EntityAIAvoidEntity; - } - - - /** - * Return whether the specified com.darkona.adventurebackpack.entity is applicable to this filter. - */ - public boolean isEntityApplicable(Entity par1Entity) - { - return par1Entity.isEntityAlive() && EntityAIAvoidPlayerWithBackpack.func_98217_a(this.entityAvoiderAI).getEntitySenses().canSee(par1Entity); - } - -} From 8f6c5cec892692ce5d4235ae47c030f67eb81cf9 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:40:32 -0400 Subject: [PATCH 139/462] Delete EntityAIAvoidPlayerWithBackpack.java --- .../ai/EntityAIAvoidPlayerWithBackpack.java | 156 ------------------ 1 file changed, 156 deletions(-) delete mode 100644 entity/ai/EntityAIAvoidPlayerWithBackpack.java diff --git a/entity/ai/EntityAIAvoidPlayerWithBackpack.java b/entity/ai/EntityAIAvoidPlayerWithBackpack.java deleted file mode 100644 index 0e4b4959..00000000 --- a/entity/ai/EntityAIAvoidPlayerWithBackpack.java +++ /dev/null @@ -1,156 +0,0 @@ -package com.darkona.adventurebackpack.entity.ai; - -import com.darkona.adventurebackpack.reference.BackpackNames; -import com.darkona.adventurebackpack.util.Wearing; -import net.minecraft.command.IEntitySelector; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityCreature; -import net.minecraft.entity.ai.EntityAIBase; -import net.minecraft.entity.ai.RandomPositionGenerator; -import net.minecraft.entity.passive.EntityTameable; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.pathfinding.PathEntity; -import net.minecraft.pathfinding.PathNavigate; -import net.minecraft.util.Vec3; - -import java.util.List; - -/** - * Created by Darkona on 12/10/2014. - */ -public class EntityAIAvoidPlayerWithBackpack extends EntityAIBase -{ - private String backpackName; - - public final IEntitySelector field_98218_a = new AvoidEntitySelector(this); - - /** - * The com.darkona.adventurebackpack.entity we are attached to - */ - public EntityCreature theEntity; - private double farSpeed; - private double nearSpeed; - private Entity closestLivingEntity; - private float distanceFromEntity; - - /** - * The PathEntity of our com.darkona.adventurebackpack.entity - */ - private PathEntity entityPathEntity; - - /** - * The PathNavigate of our com.darkona.adventurebackpack.entity - */ - private PathNavigate entityPathNavigate; - - /** - * The class of the com.darkona.adventurebackpack.entity we should avoid - */ - @SuppressWarnings("rawtypes") - private Class targetEntityClass; - - public EntityAIAvoidPlayerWithBackpack(EntityCreature par1EntityCreature, @SuppressWarnings("rawtypes") Class par2Class, float par3, double par4, double par6, String colorName) - { - this.theEntity = par1EntityCreature; - this.targetEntityClass = par2Class; - this.distanceFromEntity = par3; - this.farSpeed = par4; - this.nearSpeed = par6; - this.entityPathNavigate = par1EntityCreature.getNavigator(); - this.setMutexBits(1); - this.backpackName = colorName; - } - - /** - * Returns whether the EntityAIBase should begin execution. - */ - public boolean shouldExecute() - { - if (this.targetEntityClass == EntityPlayer.class) - { - if (this.theEntity instanceof EntityTameable && ((EntityTameable) this.theEntity).isTamed()) - { - return false; - } - - List list = this.theEntity.worldObj.selectEntitiesWithinAABB(this.targetEntityClass, this.theEntity.boundingBox.expand(this.distanceFromEntity, 3.0D, this.distanceFromEntity), this.field_98218_a); - - if (list.isEmpty()) - { - return false; - } - - for (Object player : list) - { - if (BackpackNames.getBackpackColorName(Wearing.getWearingBackpack((EntityPlayer) player)).equals(backpackName)) - { - this.closestLivingEntity = (Entity) player; - } - } - - if (this.closestLivingEntity == null) - { - return false; - } - - - Vec3 vec3 = RandomPositionGenerator.findRandomTargetBlockAwayFrom(this.theEntity, 16, 7, Vec3.createVectorHelper(this.closestLivingEntity.posX, this.closestLivingEntity.posY, this.closestLivingEntity.posZ)); - - if (vec3 == null) - { - return false; - } else if (this.closestLivingEntity.getDistanceSq(vec3.xCoord, vec3.yCoord, vec3.zCoord) < this.closestLivingEntity.getDistanceSqToEntity(this.theEntity)) - { - return false; - } else - { - this.entityPathEntity = this.entityPathNavigate.getPathToXYZ(vec3.xCoord, vec3.yCoord, vec3.zCoord); - return this.entityPathEntity != null && this.entityPathEntity.isDestinationSame(vec3); - } - } - return false; - } - - /** - * Returns whether an in-progress EntityAIBase should continue executing - */ - public boolean continueExecuting() - { - return !this.entityPathNavigate.noPath(); - } - - /** - * Execute a one shot task or start executing a continuous task - */ - public void startExecuting() - { - this.entityPathNavigate.setPath(this.entityPathEntity, this.farSpeed); - } - - /** - * Resets the task - */ - public void resetTask() - { - this.closestLivingEntity = null; - } - - /** - * Updates the task - */ - public void updateTask() - { - if (this.theEntity.getDistanceSqToEntity(this.closestLivingEntity) < 49.0D) - { - this.theEntity.getNavigator().setSpeed(this.nearSpeed); - } else - { - this.theEntity.getNavigator().setSpeed(this.farSpeed); - } - } - - static EntityCreature func_98217_a(EntityAIAvoidPlayerWithBackpack par0EntityAIAvoidEntity) - { - return par0EntityAIAvoidEntity.theEntity; - } -} From 21fa78b3a8ec1893d56065dc9237e3e5783755e2 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:41:12 -0400 Subject: [PATCH 140/462] Delete EntityAIHorseFollowOwner.java --- entity/ai/EntityAIHorseFollowOwner.java | 107 ------------------------ 1 file changed, 107 deletions(-) delete mode 100644 entity/ai/EntityAIHorseFollowOwner.java diff --git a/entity/ai/EntityAIHorseFollowOwner.java b/entity/ai/EntityAIHorseFollowOwner.java deleted file mode 100644 index 8cbe2825..00000000 --- a/entity/ai/EntityAIHorseFollowOwner.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.darkona.adventurebackpack.entity.ai; - -import com.darkona.adventurebackpack.util.Wearing; -import net.minecraft.entity.ai.EntityAIBase; -import net.minecraft.entity.passive.EntityHorse; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.pathfinding.PathNavigate; -import net.minecraft.world.World; - -import java.util.UUID; - -/** - * Created on 09/01/2015 - * - * @author Darkona - */ -public class EntityAIHorseFollowOwner extends EntityAIBase -{ - private EntityHorse theHorse; - private EntityPlayer theOwner; - World theWorld; - private double speed; - private PathNavigate petPathfinder; - private int tickCounter; - float maxDist; - float minDist; - private boolean avoidWater; - @SuppressWarnings("unused") - private static final String __OBFID = "CL_00001585"; - - public EntityAIHorseFollowOwner(EntityHorse horse, double speed, float minDist, float maxDist) - { - theHorse = horse; - theWorld = horse.worldObj; - theOwner = theWorld.func_152378_a(UUID.fromString(theHorse.func_152119_ch())); - this.speed = speed * 2; - petPathfinder = horse.getNavigator(); - this.minDist = minDist; - this.maxDist = maxDist; - } - - - public double getDistanceSquaredToOwner() - { - double relX = theHorse.posX - theOwner.posX; - double relY = theHorse.posY - theOwner.posY; - double relZ = theHorse.posZ - theOwner.posZ; - return relX * relX + relY * relY + relZ * relZ; - } - - - - public boolean shouldExecute() - { - if(!theHorse.isTame() || theHorse.getLeashed() || !theHorse.hasCustomNameTag())return false; - if (theOwner == null) { - theOwner = theWorld.func_152378_a(UUID.fromString(theHorse.func_152119_ch())); - if (theOwner == null) - { - return false; - } - } - if(!Wearing.isWearingTheRightBackpack(theOwner, "Horse"))return false; - if (theHorse.getDistanceSqToEntity(theOwner) < minDist * minDist * 20) { - return false; - } - return true; - } - - public boolean continueExecuting() - { - return (Wearing.isWearingTheRightBackpack(theOwner,"Horse") && !this.petPathfinder.noPath() && theHorse.getDistanceSqToEntity(theOwner) > this.maxDist * this.maxDist * 2); - } - - public void startExecuting() - { - tickCounter = 0; - avoidWater = this.theHorse.getNavigator().getAvoidsWater(); - petPathfinder = theHorse.getNavigator(); - } - - public void resetTask() - { - theOwner = null; - petPathfinder.clearPathEntity(); - theHorse.getNavigator().setAvoidsWater(this.avoidWater); - } - - - public void updateTask() - { - //theHorse.getLookHelper().setLookPositionWithEntity(theOwner, 10.0F, this.theHorse.getVerticalFaceSpeed()); - if (--tickCounter <= 0) - { - tickCounter = 10; - if (!theHorse.getLeashed()) - { - if (!petPathfinder.tryMoveToEntityLiving(theOwner, speed)) - { - return; - } - } - } - } - - -} From 0a813699e668bbe453f2b709dad0ab04971c6281 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:41:25 -0400 Subject: [PATCH 141/462] Delete SteamFX.java --- entity/fx/SteamFX.java | 87 ------------------------------------------ 1 file changed, 87 deletions(-) delete mode 100644 entity/fx/SteamFX.java diff --git a/entity/fx/SteamFX.java b/entity/fx/SteamFX.java deleted file mode 100644 index cab49e21..00000000 --- a/entity/fx/SteamFX.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.darkona.adventurebackpack.entity.fx; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.particle.EntityFX; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.world.World; - -/** - * Created on 19/01/2015 - * - * @author Darkona - */ - -@SideOnly(Side.CLIENT) -public class SteamFX - extends EntityFX -{ - private float smokeParticleScale; - - public SteamFX(World world, double x, double y, double z, double velX, double velY, double velZ) - { - this(world, x, y, z, velX, velY, velZ, 1.0F); - } - - public SteamFX(World world, double x, double y, double z, double velX, double velY, double velZ, float scale) - { - super(world, x, y, z, 0.0D, 0.0D, 0.0D); - this.motionX *= 0.1D; - this.motionY *= 0.1D; - this.motionZ *= 0.1D; - this.motionX += velX; - this.motionY += velY; - this.motionZ += velZ; - this.particleRed = 206; - this.particleGreen = 206; - this.particleBlue = 206; - this.particleScale *= 0.75F; - this.particleScale *= scale; - this.smokeParticleScale = this.particleScale; - this.particleMaxAge = ((int) (8.0D / (Math.random() * 0.8D + 0.2D))); - this.particleMaxAge = ((int) (this.particleMaxAge * scale)); - this.noClip = true; - } - - public void renderParticle(Tessellator par1Tessellator, float par2, float par3, float par4, float par5, float par6, float par7) - { - float age = (this.particleAge + par2) / this.particleMaxAge * 32.0F; - if (age < 0.0F) - { - age = 0.0F; - } - if (age > 1.0F) - { - age = 1.0F; - } - this.particleScale = (this.smokeParticleScale * age); - super.renderParticle(par1Tessellator, par2, par3, par4, par5, par6, par7); - } - - public void onUpdate() - { - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - if (this.particleAge++ >= this.particleMaxAge) - { - setDead(); - } - setParticleTextureIndex(7 - this.particleAge * 8 / this.particleMaxAge); - this.motionY += 0.003; - moveEntity(this.motionX, this.motionY, this.motionZ); - if (this.posY == this.prevPosY) - { - this.motionX *= 1.1D; - this.motionZ *= 1.1D; - } - this.motionX *= 0.9599999785423279D; - this.motionY *= 0.9599999785423279D; - this.motionZ *= 0.9599999785423279D; - if (this.onGround) - { - this.motionX *= 0.699999988079071D; - this.motionZ *= 0.699999988079071D; - } - } -} From 03e28c10d9aac50d0ae4abcd2d5043f35f254f4c Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:41:31 -0400 Subject: [PATCH 142/462] Delete EntityBolt.java --- entity/EntityBolt.java | 62 ------------------------------------------ 1 file changed, 62 deletions(-) delete mode 100644 entity/EntityBolt.java diff --git a/entity/EntityBolt.java b/entity/EntityBolt.java deleted file mode 100644 index 2679a751..00000000 --- a/entity/EntityBolt.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.darkona.adventurebackpack.entity; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.IProjectile; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; - -/** - * Created on 07/01/2015 - * - * @author Darkona - */ -public class EntityBolt extends Entity implements IProjectile -{ - public EntityBolt(World world) - { - super(world); - } - - @Override - protected void entityInit() - { - - } - - /** - * (abstract) Protected helper method to read subclass entity data from NBT. - * - * @param compound - */ - @Override - protected void readEntityFromNBT(NBTTagCompound compound) - { - - } - - /** - * (abstract) Protected helper method to write subclass entity data to NBT. - * - * @param compound - */ - @Override - protected void writeEntityToNBT(NBTTagCompound compound) - { - - } - - /** - * Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction. - * - * @param x - * @param y - * @param z - * @param speedMultiplier - * @param whatever - */ - @Override - public void setThrowableHeading(double x, double y, double z, float speedMultiplier, float whatever) - { - - } -} From 6b390a8132c0c3f5b7784f5b0d2d6f4d2684521f Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:41:37 -0400 Subject: [PATCH 143/462] Delete EntityCrossbowProjectile.java --- entity/EntityCrossbowProjectile.java | 62 ---------------------------- 1 file changed, 62 deletions(-) delete mode 100644 entity/EntityCrossbowProjectile.java diff --git a/entity/EntityCrossbowProjectile.java b/entity/EntityCrossbowProjectile.java deleted file mode 100644 index 38ac208a..00000000 --- a/entity/EntityCrossbowProjectile.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.darkona.adventurebackpack.entity; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.IProjectile; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; - -/** - * Created on 09/01/2015 - * - * @author Darkona - */ -public class EntityCrossbowProjectile extends Entity implements IProjectile -{ - public EntityCrossbowProjectile(World p_i1776_1_) - { - super(p_i1776_1_); - } - - @Override - protected void entityInit() - { - - } - - /** - * (abstract) Protected helper method to read subclass entity data from NBT. - * - * @param p_70037_1_ - */ - @Override - protected void readEntityFromNBT(NBTTagCompound p_70037_1_) - { - - } - - /** - * (abstract) Protected helper method to write subclass entity data to NBT. - * - * @param p_70014_1_ - */ - @Override - protected void writeEntityToNBT(NBTTagCompound p_70014_1_) - { - - } - - /** - * Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction. - * - * @param p_70186_1_ - * @param p_70186_3_ - * @param p_70186_5_ - * @param p_70186_7_ - * @param p_70186_8_ - */ - @Override - public void setThrowableHeading(double p_70186_1_, double p_70186_3_, double p_70186_5_, float p_70186_7_, float p_70186_8_) - { - - } -} From 04315e1d92e0a80131b2132f34b81a27c72c3144 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:41:47 -0400 Subject: [PATCH 144/462] Delete EntityFriendlySpider.java --- entity/EntityFriendlySpider.java | 600 ------------------------------- 1 file changed, 600 deletions(-) delete mode 100644 entity/EntityFriendlySpider.java diff --git a/entity/EntityFriendlySpider.java b/entity/EntityFriendlySpider.java deleted file mode 100644 index 80c73fa0..00000000 --- a/entity/EntityFriendlySpider.java +++ /dev/null @@ -1,600 +0,0 @@ -package com.darkona.adventurebackpack.entity; - -import com.darkona.adventurebackpack.util.Wearing; -import net.minecraft.block.Block; -import net.minecraft.entity.*; -import net.minecraft.entity.ai.*; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; - -import java.util.Random; - -/** - * Created on 11/01/2015 - * - * @author Darkona - */ -public class EntityFriendlySpider extends EntityCreature -{ - - private float prevRearingAmount; - private int jumpTicks; - @SuppressWarnings("unused") - private EntityPlayer owner; - @SuppressWarnings("unused") - private boolean tamed = false; - @SuppressWarnings("unused") - private final EntityAIControlledByPlayer aiControlledByPlayer; - - @Override - protected void entityInit() { - super.entityInit(); - this.dataWatcher.addObject(16, (byte)0); - } - - @Override - protected void applyEntityAttributes() - { - super.applyEntityAttributes(); - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(20.0D); - this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.15D); - this.getEntityAttribute(SharedMonsterAttributes.followRange).setBaseValue(40.0D); - } - - public EntityFriendlySpider(World world) { - super(world); - this.setSize(1.4F, 0.9F); - this.tasks.addTask(0, new EntityAISwimming(this)); - this.tasks.addTask(2, this.aiControlledByPlayer = new EntityAIControlledByPlayer(this, 0.3F)); - this.tasks.addTask(6, new EntityAIWander(this, 0.7D)); - this.tasks.addTask(7, new EntityAIWatchClosest(this, EntityPlayer.class, 6.0F)); - this.tasks.addTask(8, new EntityAILookIdle(this)); - } - @Override - protected boolean isAIEnabled() - { - return true; - } - @Override - public int getTalkInterval() - { - return 300; - } - /** - * Returns the sound this mob makes while it's alive. - */ - @Override - protected String getLivingSound() - { - return "mob.spider.say"; - } - - /** - * Returns the sound this mob makes when it is hurt. - */ - @Override - protected String getHurtSound() - { - return "mob.spider.say"; - } - - /** - * Returns the sound this mob makes on death. - */ - @Override - protected String getDeathSound() - { - return "mob.spider.death"; - } - - @Override - protected void func_145780_a(int x, int y, int z, Block block) - { - this.playSound("mob.spider.step", 0.15F, 1.0F); - } - - @Override - protected String getSwimSound() - { - return "game.hostile.swim"; - } - - @Override - protected String getSplashSound() - { - return "game.hostile.swim.splash"; - } - - @Override - public boolean attackEntityFrom(DamageSource damageSource, float amount) - { - if (this.isEntityInvulnerable()) - { - return false; - } - else if (super.attackEntityFrom(damageSource, amount)) - { - Entity entity = damageSource.getEntity(); - - if (this.riddenByEntity != entity && this.ridingEntity != entity) - { - if (entity != this) - { - this.entityToAttack = entity; - } - - return true; - } - else - { - return true; - } - } - else - { - return false; - } - } - - /** - * Takes a coordinate in and returns a weight to determine how likely this creature will try to path to the block. - * Args: x, y, z - */ - @Override - public float getBlockPathWeight(int p_70783_1_, int p_70783_2_, int p_70783_3_) - { - return 0.5F - this.worldObj.getLightBrightness(p_70783_1_, p_70783_2_, p_70783_3_); - } - - /** - * Checks if the entity's current position is a valid location to spawn this entity. - */ - @Override - public boolean getCanSpawnHere() - { - return false; - } - - @Override - protected boolean func_146066_aG() - { - return true; - } - /** - * Returns the item that this EntityLiving is holding, if any. - */ - @Override - public ItemStack getHeldItem() - { - return null; - } - - /** - * 0: Tool in Hand; 1-4: Armor - * */ - @Override - public ItemStack getEquipmentInSlot(int slot) - { - return null; - } - - /** - * Sets the held item, or an armor slot. Slot 0 is held item. Slot 1-4 is armor. Params: Item, slot - * - * @param slot - * @param stack - */ - @Override - public void setCurrentItemOrArmor(int slot, ItemStack stack) - { - - } - - @Override - public ItemStack[] getLastActiveItems() - { - return new ItemStack[0]; - } - - @Override - public boolean canRiderInteract() { - return false; - } - - @Override - protected boolean interact(EntityPlayer player) { - - try - { - if (!this.worldObj.isRemote && Wearing.isWearingTheRightBackpack(player, "Spider")) - { - player.mountEntity(this); - return true; - } - } catch (Exception oops) - { - return false; - } - return false; - } - - @Override - public boolean canBeSteered() { - return true; - } - - @Override - protected Entity findPlayerToAttack() { - if (this.riddenByEntity != null) - return null; - float f = this.getBrightness(1.0F); - - if (f < 0.5F) - { - double d0 = 16.0D; - return this.worldObj.getClosestVulnerablePlayerToEntity(this, d0); - } else - { - return null; - } - } - - @Override - public boolean canBeCollidedWith() { - return !isDead; - } - - @Override - public boolean shouldRiderFaceForward(EntityPlayer player) { - return true; - } - public boolean isBesideClimbableBlock() - { - return (this.dataWatcher.getWatchableObjectByte(16) & 1) != 0; - } - - /** - * Updates the WatchableObject (Byte) created in entityInit(), setting it to 0x01 if par1 is true or 0x00 if it is - * false. - */ - public void setBesideClimbableBlock(boolean p_70839_1_) - { - byte b0 = this.dataWatcher.getWatchableObjectByte(16); - - if (p_70839_1_) - { - b0 = (byte)(b0 | 1); - } - else - { - b0 &= -2; - } - - this.dataWatcher.updateObject(16, Byte.valueOf(b0)); - } - - @Override - public void onUpdate() { - super.onUpdate(); - if (this.worldObj.isRemote && this.dataWatcher.hasChanges()) - { - this.dataWatcher.func_111144_e(); - } - if (this.riddenByEntity instanceof EntityPlayer) - { - - } - if (this.riddenByEntity != null && this.riddenByEntity.isDead) - { - this.riddenByEntity = null; - } - if (!this.worldObj.isRemote) - { - this.setBesideClimbableBlock(this.isCollidedHorizontally); - } - } - - private void normalLivingUpdateWithNoAI(){ - if (this.jumpTicks > 0) - { - --this.jumpTicks; - } - - if (this.newPosRotationIncrements > 0) - { - double d0 = this.posX + (this.newPosX - this.posX) / (double)this.newPosRotationIncrements; - double d1 = this.posY + (this.newPosY - this.posY) / (double)this.newPosRotationIncrements; - double d2 = this.posZ + (this.newPosZ - this.posZ) / (double)this.newPosRotationIncrements; - double d3 = MathHelper.wrapAngleTo180_double(this.newRotationYaw - (double) this.rotationYaw); - this.rotationYaw = (float)((double)this.rotationYaw + d3 / (double)this.newPosRotationIncrements); - this.rotationPitch = (float)((double)this.rotationPitch + (this.newRotationPitch - (double)this.rotationPitch) / (double)this.newPosRotationIncrements); - --this.newPosRotationIncrements; - this.setPosition(d0, d1, d2); - this.setRotation(this.rotationYaw, this.rotationPitch); - } - else if (!this.isClientWorld()) - { - this.motionX *= 0.98D; - this.motionY *= 0.98D; - this.motionZ *= 0.98D; - } - - if (Math.abs(this.motionX) < 0.005D) - { - this.motionX = 0.0D; - } - - if (Math.abs(this.motionY) < 0.005D) - { - this.motionY = 0.0D; - } - - if (Math.abs(this.motionZ) < 0.005D) - { - this.motionZ = 0.0D; - } - - this.worldObj.theProfiler.startSection("ai"); - - if (this.isMovementBlocked()) - { - this.isJumping = false; - this.moveStrafing = 0.0F; - this.moveForward = 0.0F; - this.randomYawVelocity = 0.0F; - } - else if (this.isClientWorld()) - { - - } - - this.worldObj.theProfiler.endSection(); - this.worldObj.theProfiler.startSection("jump"); - - if (this.isJumping) - { - if (!this.isInWater() && !this.handleLavaMovement()) - { - if (this.onGround && this.jumpTicks == 0) - { - this.jump(); - this.jumpTicks = 10; - } - } - else - { - this.motionY += 0.03999999910593033D; - } - } - else - { - this.jumpTicks = 0; - } - this.setJumping(false); - this.worldObj.theProfiler.endSection(); - this.worldObj.theProfiler.startSection("travel"); - this.moveStrafing *= 0.98F; - this.moveForward *= 0.98F; - this.randomYawVelocity *= 0.9F; - this.moveEntityWithHeading(this.moveStrafing, this.moveForward); - this.worldObj.theProfiler.endSection(); - this.worldObj.theProfiler.startSection("push"); - - if (!this.worldObj.isRemote) - { - this.collideWithNearbyEntities(); - } - - this.worldObj.theProfiler.endSection(); - } - - @Override - public void onLivingUpdate() { - if (this.riddenByEntity != null) - { - normalLivingUpdateWithNoAI(); - } else - { - super.onLivingUpdate(); - } - this.updateArmSwingProgress(); - } - - @Override - public double getMountedYOffset() { - return super.getMountedYOffset(); - } - - @Override - public void moveEntityWithHeading(float strafe, float forward) { - if (this.riddenByEntity != null) - { - this.prevRotationYaw = this.rotationYaw = this.riddenByEntity.rotationYaw; - this.rotationPitch = this.riddenByEntity.rotationPitch * 0.5F; - this.setRotation(this.rotationYaw, this.rotationPitch); - this.rotationYawHead = this.renderYawOffset = this.rotationYaw; - strafe = ((EntityLivingBase)this.riddenByEntity).moveStrafing * 0.5F; - forward = ((EntityLivingBase)this.riddenByEntity).moveForward; - - if (forward <= 0.0F) - { - forward *= 0.25F; - } - this.stepHeight = 1.0F; - this.jumpMovementFactor = this.getAIMoveSpeed() * 0.2F; - - if (!this.worldObj.isRemote) - { - this.setAIMoveSpeed((float)this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).getAttributeValue()); - super.moveEntityWithHeading(strafe, forward); - } - - this.prevLimbSwingAmount = this.limbSwingAmount; - double d0 = this.posX - this.prevPosX; - double d1 = this.posZ - this.prevPosZ; - float f4 = MathHelper.sqrt_double(d0 * d0 + d1 * d1) * 4.0F; - - if (f4 > 1.0F) - { - f4 = 1.0F; - } - - this.limbSwingAmount += (f4 - this.limbSwingAmount) * 0.4F; - this.limbSwing += this.limbSwingAmount; - } - else - { - this.stepHeight = 0.5F; - this.jumpMovementFactor = 0.02F; - super.moveEntityWithHeading(strafe, forward); - } - } - - @Override - public void updateRiderPosition() { - super.updateRiderPosition(); - - if (this.prevRearingAmount > 0.0F) - { - float f = MathHelper.sin(this.renderYawOffset * (float) Math.PI / 180.0F); - float f1 = MathHelper.cos(this.renderYawOffset * (float) Math.PI / 180.0F); - float f2 = 0.7F * this.prevRearingAmount; - float f3 = 0.15F * this.prevRearingAmount; - this.riddenByEntity.setPosition(this.posX + (f2 * f), this.posY + this.getMountedYOffset() + this.riddenByEntity.getYOffset() - + f3, this.posZ - (f2 * f1)); - - if (this.riddenByEntity instanceof EntityLivingBase) - { - ((EntityLivingBase) this.riddenByEntity).renderYawOffset = this.renderYawOffset; - } - } - } - - - public void spiderJump() - { - this.getJumpHelper().setJumping(); - //this.getJumpHelper().doJump(); - } - - public static class GroupData implements IEntityLivingData - { - public int field_111105_a; - @SuppressWarnings("unused") - private static final String __OBFID = "CL_00001700"; - - public void func_111104_a(Random p_111104_1_) - { - int i = p_111104_1_.nextInt(5); - - if (i <= 1) - { - this.field_111105_a = Potion.moveSpeed.id; - } - else if (i <= 2) - { - this.field_111105_a = Potion.damageBoost.id; - } - else if (i <= 3) - { - this.field_111105_a = Potion.regeneration.id; - } - else if (i <= 4) - { - this.field_111105_a = Potion.invisibility.id; - } - } - } - - /** - * Basic mob attack. Default to touch of death in EntityCreature. Overridden by each mob to define their attack. - */ - @Override - protected void attackEntity(Entity p_70785_1_, float p_70785_2_) - { - float f1 = this.getBrightness(1.0F); - - if (f1 > 0.5F && this.rand.nextInt(100) == 0) - { - this.entityToAttack = null; - } - else - { - if (p_70785_2_ > 2.0F && p_70785_2_ < 6.0F && this.rand.nextInt(10) == 0) - { - if (this.onGround) - { - double d0 = p_70785_1_.posX - this.posX; - double d1 = p_70785_1_.posZ - this.posZ; - float f2 = MathHelper.sqrt_double(d0 * d0 + d1 * d1); - this.motionX = d0 / (double)f2 * 0.5D * 0.800000011920929D + this.motionX * 0.20000000298023224D; - this.motionZ = d1 / (double)f2 * 0.5D * 0.800000011920929D + this.motionZ * 0.20000000298023224D; - this.motionY = 0.4000000059604645D; - } - } - else - { - super.attackEntity(p_70785_1_, p_70785_2_); - } - } - } - - @Override - protected Item getDropItem() - { - return Items.string; - } - - /** - * Drop 0-2 items of this living's type. @param par1 - Whether this entity has recently been hit by a player. @param - * par2 - Level of Looting used to kill this mob. - */ - @Override - protected void dropFewItems(boolean p_70628_1_, int p_70628_2_) - { - super.dropFewItems(p_70628_1_, p_70628_2_); - - if (p_70628_1_ && (this.rand.nextInt(3) == 0 || this.rand.nextInt(1 + p_70628_2_) > 0)) - { - this.dropItem(Items.spider_eye, 1); - } - } - - /** - * returns true if this entity is by a ladder, false otherwise - */ - @Override - public boolean isOnLadder() - { - return this.isBesideClimbableBlock(); - } - - /** - * Sets the Entity inside a web block. - */ - @Override - public void setInWeb() {} - - /** - * Get this Entity's EnumCreatureAttribute - */ - @Override - public EnumCreatureAttribute getCreatureAttribute() - { - return EnumCreatureAttribute.ARTHROPOD; - } - - @Override - public boolean isPotionApplicable(PotionEffect p_70687_1_) - { - return p_70687_1_.getPotionID() == Potion.poison.id ? false : super.isPotionApplicable(p_70687_1_); - } -} - From ba0df744fc983f8cd981ebe54ee8e8f465f0aa38 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:41:56 -0400 Subject: [PATCH 145/462] Delete EntityInflatableBoat.java --- entity/EntityInflatableBoat.java | 636 ------------------------------- 1 file changed, 636 deletions(-) delete mode 100644 entity/EntityInflatableBoat.java diff --git a/entity/EntityInflatableBoat.java b/entity/EntityInflatableBoat.java deleted file mode 100644 index 85648fc7..00000000 --- a/entity/EntityInflatableBoat.java +++ /dev/null @@ -1,636 +0,0 @@ -package com.darkona.adventurebackpack.entity; - -import com.darkona.adventurebackpack.init.ModItems; -import com.darkona.adventurebackpack.inventory.IInventoryTanks; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.item.EntityBoat; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; -import net.minecraftforge.fluids.FluidTank; - -import java.util.List; - -/** - * Created on 05/01/2015 - * - * @author Darkona - */ -public class EntityInflatableBoat extends EntityBoat implements IInventoryTanks -{ - @SuppressWarnings("unused") - private FluidTank fuelTank; - private boolean isBoatEmpty; - private double speedMultiplier; - private int boatPosRotationIncrements; - private double boatX; - private double boatY; - private double boatZ; - private double boatYaw; - private double boatPitch; - @SideOnly(Side.CLIENT) - private double velocityX; - @SideOnly(Side.CLIENT) - private double velocityY; - @SideOnly(Side.CLIENT) - private double velocityZ; - private boolean inflated = false; - public float inflation = 0.25f; - - public boolean isMotorized() - { - return motorized; - } - - private boolean motorized; - - public EntityInflatableBoat(World world) - { - super(world); - } - - public EntityInflatableBoat(World world, double posX, double posY, double posZ, boolean motorized) - { - super(world, posX, posY, posZ); - setMotorized(motorized); - fuelTank = new FluidTank(6000); - } - - public boolean isInflated() - { - return inflated; - } - - /** - * Called to update the entity's position/logic. - */ - @Override - public void onUpdate() - { - if(!inflated) - { - inflation += 0.025; - if (inflation >= 1.0f) - { - inflation = 1; - inflated = true; - } - }else{ - inflation = 1; - } - - if (this.getTimeSinceHit() > 0) - { - this.setTimeSinceHit(this.getTimeSinceHit() - 1); - } - - if (this.getDamageTaken() > 0.0F) - { - this.setDamageTaken(this.getDamageTaken() - 1.0F); - } - - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - byte b0 = 5; - double d0 = 0.0D; - - for (int i = 0; i < b0; ++i) - { - double d1 = this.boundingBox.minY + (this.boundingBox.maxY - this.boundingBox.minY) * (i + 0) / b0 - 0.125D; - double d3 = this.boundingBox.minY + (this.boundingBox.maxY - this.boundingBox.minY) * (i + 1) / b0 - 0.125D; - AxisAlignedBB axisalignedbb = AxisAlignedBB.getBoundingBox(this.boundingBox.minX, d1, this.boundingBox.minZ, this.boundingBox.maxX, d3, this.boundingBox.maxZ); - - if (this.worldObj.isAABBInMaterial(axisalignedbb, Material.water)) - { - d0 += 1.0D / (double) b0; - } - } - - double horizontalMotion = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ); - double d2; - double d4; - int j; - - if (horizontalMotion > 0.26249999999999996D) - { - d2 = Math.cos((double) this.rotationYaw * Math.PI / 180.0D); - d4 = Math.sin((double) this.rotationYaw * Math.PI / 180.0D); - - for (j = 0; (double) j < 1.0D + horizontalMotion * 60.0D; ++j) - { - double d5 = (double) (this.rand.nextFloat() * 2.0F - 1.0F); - double d6 = (double) (this.rand.nextInt(2) * 2 - 1) * 0.7D; - double d8; - double d9; - - if (this.rand.nextBoolean()) - { - d8 = this.posX - d2 * d5 * 0.8D + d4 * d6; - d9 = this.posZ - d4 * d5 * 0.8D - d2 * d6; - this.worldObj.spawnParticle("splash", d8, this.posY - 0.125D, d9, this.motionX, this.motionY, this.motionZ); - } else - { - d8 = this.posX + d2 + d4 * d5 * 0.7D; - d9 = this.posZ + d4 - d2 * d5 * 0.7D; - this.worldObj.spawnParticle("splash", d8, this.posY - 0.125D, d9, this.motionX, this.motionY, this.motionZ); - } - } - } - - double d11; - double d12; - - if (this.worldObj.isRemote && this.isBoatEmpty) - { - if (this.boatPosRotationIncrements > 0) - { - d2 = this.posX + (this.boatX - this.posX) / (double) this.boatPosRotationIncrements; - d4 = this.posY + (this.boatY - this.posY) / (double) this.boatPosRotationIncrements; - d11 = this.posZ + (this.boatZ - this.posZ) / (double) this.boatPosRotationIncrements; - d12 = MathHelper.wrapAngleTo180_double(this.boatYaw - (double) this.rotationYaw); - this.rotationYaw = (float) ((double) this.rotationYaw + d12 / (double) this.boatPosRotationIncrements); - this.rotationPitch = (float) ((double) this.rotationPitch + (this.boatPitch - (double) this.rotationPitch) / (double) this.boatPosRotationIncrements); - --this.boatPosRotationIncrements; - this.setPosition(d2, d4, d11); - this.setRotation(this.rotationYaw, this.rotationPitch); - } else - { - d2 = this.posX + this.motionX; - d4 = this.posY + this.motionY; - d11 = this.posZ + this.motionZ; - this.setPosition(d2, d4, d11); - - if (this.onGround) - { - this.motionX *= 0.5D; - this.motionY *= 0.5D; - this.motionZ *= 0.5D; - } - - this.motionX *= 0.9900000095367432D; - this.motionY *= 0.949999988079071D; - this.motionZ *= 0.9900000095367432D; - } - } else - { - if (d0 < 1.0D) - { - d2 = d0 * 2.0D - 1.0D; - this.motionY += 0.03999999910593033D * d2; - } else - { - if (this.motionY < 0.0D) - { - this.motionY /= 2.0D; - } - - this.motionY += 0.007000000216066837D; - } - - if (this.riddenByEntity != null && this.riddenByEntity instanceof EntityLivingBase) - { - EntityLivingBase entitylivingbase = (EntityLivingBase) this.riddenByEntity; - float f = this.riddenByEntity.rotationYaw + -entitylivingbase.moveStrafing * 90.0F; - this.motionX += -Math.sin((double) (f * (float) Math.PI / 180.0F)) * this.speedMultiplier * (double) entitylivingbase.moveForward * 0.05000000074505806D; - this.motionZ += Math.cos((double) (f * (float) Math.PI / 180.0F)) * this.speedMultiplier * (double) entitylivingbase.moveForward * 0.05000000074505806D; - } - - d2 = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ); - - if (d2 > 0.35D) - { - d4 = 0.35D / d2; - this.motionX *= d4; - this.motionZ *= d4; - d2 = 0.35D; - } - - if (d2 > horizontalMotion && this.speedMultiplier < 0.35D) - { - this.speedMultiplier += (0.35D - this.speedMultiplier) / 35.0D; - - if (this.speedMultiplier > 0.35D) - { - this.speedMultiplier = 0.35D; - } - } else - { - this.speedMultiplier -= (this.speedMultiplier - 0.07D) / 35.0D; - - if (this.speedMultiplier < 0.07D) - { - this.speedMultiplier = 0.07D; - } - } - - int l; - - for (l = 0; l < 4; ++l) - { - int i1 = MathHelper.floor_double(this.posX + ((double) (l % 2) - 0.5D) * 0.8D); - j = MathHelper.floor_double(this.posZ + ((double) (l / 2) - 0.5D) * 0.8D); - - for (int j1 = 0; j1 < 2; ++j1) - { - int k = MathHelper.floor_double(this.posY) + j1; - Block block = this.worldObj.getBlock(i1, k, j); - - if (block == Blocks.snow_layer) - { - this.worldObj.setBlockToAir(i1, k, j); - this.isCollidedHorizontally = false; - } else if (block == Blocks.waterlily) - { - this.worldObj.func_147480_a(i1, k, j, true); - this.isCollidedHorizontally = false; - } - } - } - - if (this.onGround) - { - this.motionX *= 0.5D; - this.motionY *= 0.5D; - this.motionZ *= 0.5D; - } - - this.moveEntity(this.motionX, this.motionY, this.motionZ); - - /* if (this.isCollidedHorizontally && d10 > 0.2D) - { - if (!this.worldObj.isRemote && !this.isDead) - { - this.setDead(); - - for (l = 0; l < 3; ++l) - { - this.func_145778_a(Item.getItemFromBlock(Blocks.planks), 1, 0.0F); - } - - for (l = 0; l < 2; ++l) - { - this.func_145778_a(Items.stick, 1, 0.0F); - } - } - } - else - { - this.motionX *= 0.9900000095367432D; - this.motionY *= 0.949999988079071D; - this.motionZ *= 0.9900000095367432D; - }*/ - - this.rotationPitch = 0.0F; - d4 = (double) this.rotationYaw; - d11 = this.prevPosX - this.posX; - d12 = this.prevPosZ - this.posZ; - - if (d11 * d11 + d12 * d12 > 0.001D) - { - d4 = (double) ((float) (Math.atan2(d12, d11) * 180.0D / Math.PI)); - } - - double d7 = MathHelper.wrapAngleTo180_double(d4 - (double) this.rotationYaw); - - if (d7 > 20.0D) - { - d7 = 20.0D; - } - - if (d7 < -20.0D) - { - d7 = -20.0D; - } - - this.rotationYaw = (float) ((double) this.rotationYaw + d7); - this.setRotation(this.rotationYaw, this.rotationPitch); - - if (!this.worldObj.isRemote) - { - @SuppressWarnings("rawtypes") - List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.expand(0.20000000298023224D, 0.0D, 0.20000000298023224D)); - - if (list != null && !list.isEmpty()) - { - for (int k1 = 0; k1 < list.size(); ++k1) - { - Entity entity = (Entity) list.get(k1); - - if (entity != this.riddenByEntity && entity.canBePushed() && entity instanceof EntityBoat) - { - entity.applyEntityCollision(this); - } - } - } - - if (this.riddenByEntity != null && this.riddenByEntity.isDead) - { - this.riddenByEntity = null; - } - } - } - } - - @Override - public boolean attackEntityFrom(DamageSource damageSource, float damage) - { - if (this.isEntityInvulnerable()) - { - return false; - } else if (!this.worldObj.isRemote && !this.isDead) - { - this.setForwardDirection(-this.getForwardDirection()); - this.setTimeSinceHit(10); - this.setDamageTaken(this.getDamageTaken() + damage * 10.0F); - this.setBeenAttacked(); - boolean flag = damageSource.getEntity() instanceof EntityPlayer && ((EntityPlayer) damageSource.getEntity()).capabilities.isCreativeMode; - - if (flag || this.getDamageTaken() > 40.0F) - { - if (this.riddenByEntity != null) - { - this.riddenByEntity.mountEntity(this); - } - - if (!flag) - { - this.entityDropItem(new ItemStack(ModItems.component, 1, motorized ? 8:7), 0.0f); - } - - this.setDead(); - } - - return true; - } else - { - return true; - } - } - - @Override - public EntityItem func_145778_a(Item item, int quantity, float someFloat) - { - return this.entityDropItem(new ItemStack(item, quantity, 0), someFloat); - } - - @Override - public boolean interactFirst(EntityPlayer p_130002_1_) - { - if(inflation < 1.0f) return false; - if (this.riddenByEntity != null && this.riddenByEntity instanceof EntityPlayer && this.riddenByEntity != p_130002_1_) - { - return true; - } - else - { - if (!this.worldObj.isRemote) - { - p_130002_1_.mountEntity(this); - } - - return true; - } - } - - /** - * Save the entity to NBT (calls an abstract helper method to write extra data) - * - * @param compound - */ - @Override - public void writeToNBT(NBTTagCompound compound) - { - super.writeToNBT(compound); - writeEntityToNBT(compound); - } - - /** - * Reads the entity from NBT (calls an abstract helper method to read specialized data) - * - * @param compound - */ - @Override - public void readFromNBT(NBTTagCompound compound) - { - super.readFromNBT(compound); - readEntityFromNBT(compound); - } - - @Override - protected void writeEntityToNBT(NBTTagCompound compound) { - compound.setFloat("Inflation",inflation); - compound.setBoolean("Motorized",motorized); - compound.setBoolean("Inflated",inflated); - } - - @Override - protected void readEntityFromNBT(NBTTagCompound compound) { - if (compound.hasKey("Inflation")) - { - inflation = compound.getFloat("Inflation"); - } - if(compound.hasKey("Motorized")) - { - motorized = compound.getBoolean("Motorized"); - } - if (compound.hasKey("Inflated")) - { - inflated = compound.getBoolean("Inflated"); - } - } - - public void setMotorized(boolean motorized) - { - this.motorized = motorized; - } - - @Override - public boolean updateTankSlots() - { - return false; - } - - @Override - public void loadFromNBT(NBTTagCompound compound) - { - - } - - @Override - public void saveToNBT(NBTTagCompound compound) - { - - } - - @Override - public FluidTank[] getTanksArray() - { - return new FluidTank[0]; - } - - @Override - public void dirtyInventory() - { - - } - - @Override - public void dirtyTanks() - { - - } - - @Override - public void setInventorySlotContentsNoSave(int slot, ItemStack stack) - { - - } - - @Override - public ItemStack decrStackSizeNoSave(int slot, int amount) - { - return null; - } - - /** - * Returns the number of slots in the inventory. - */ - @Override - public int getSizeInventory() - { - return 0; - } - - /** - * Returns the stack in slot i - * - * @param p_70301_1_ - */ - @Override - public ItemStack getStackInSlot(int p_70301_1_) - { - return null; - } - - /** - * Removes from an inventory slot (first arg) up to a specified number (second arg) of items and returns them in a - * new stack. - * - * @param p_70298_1_ - * @param p_70298_2_ - */ - @Override - public ItemStack decrStackSize(int p_70298_1_, int p_70298_2_) - { - return null; - } - - /** - * When some containers are closed they call this on each slot, then drop whatever it returns as an EntityItem - - * like when you close a workbench GUI. - * - * @param p_70304_1_ - */ - @Override - public ItemStack getStackInSlotOnClosing(int p_70304_1_) - { - return null; - } - - /** - * Sets the given item stack to the specified slot in the inventory (can be crafting or armor sections). - * - * @param p_70299_1_ - * @param p_70299_2_ - */ - @Override - public void setInventorySlotContents(int p_70299_1_, ItemStack p_70299_2_) - { - - } - - /** - * Returns the name of the inventory - */ - @Override - public String getInventoryName() - { - return null; - } - - /** - * Returns if the inventory is named - */ - @Override - public boolean hasCustomInventoryName() - { - return false; - } - - /** - * Returns the maximum stack size for a inventory slot. - */ - @Override - public int getInventoryStackLimit() - { - return 0; - } - - /** - * For tile entities, ensures the chunk containing the tile entity is saved to disk later - the game won't think it - * hasn't changed and skip it. - */ - @Override - public void markDirty() - { - - } - - /** - * Do not make give this method the name canInteractWith because it clashes with Container - * - * @param p_70300_1_ - */ - @Override - public boolean isUseableByPlayer(EntityPlayer p_70300_1_) - { - return false; - } - - @Override - public void openInventory() - { - - } - - @Override - public void closeInventory() - { - - } - - /** - * Returns true if automation is allowed to insert the given stack (ignoring stack size) into the given slot. - * - * @param p_94041_1_ - * @param p_94041_2_ - */ - @Override - public boolean isItemValidForSlot(int p_94041_1_, ItemStack p_94041_2_) - { - return false; - } -} From 04ee22182b0342463754ddf44785ff6c00e9a1c3 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:42:05 -0400 Subject: [PATCH 146/462] Delete ChatHandler.java --- develop/ChatHandler.java | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 develop/ChatHandler.java diff --git a/develop/ChatHandler.java b/develop/ChatHandler.java deleted file mode 100644 index 4e6cb600..00000000 --- a/develop/ChatHandler.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.darkona.adventurebackpack.develop; - -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.ChatComponentTranslation; -public class ChatHandler -{ - public static void sendServerMessage(String string) - { - ChatComponentTranslation translation = new ChatComponentTranslation(string, new Object[0]); - MinecraftServer.getServer().getConfigurationManager().sendChatMsg(translation); - } - } From e4df0627aeb0e73f2c14bca535ec3b310d0ed12f Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:42:10 -0400 Subject: [PATCH 147/462] Delete msg.java --- develop/msg.java | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 develop/msg.java diff --git a/develop/msg.java b/develop/msg.java deleted file mode 100644 index f54170a9..00000000 --- a/develop/msg.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.darkona.adventurebackpack.develop; - -import java.util.ArrayList; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.EnumChatFormatting; -import com.darkona.adventurebackpack.develop.ChatHandler; - -public class msg { - public static void loadDev() { - } - private static ArrayList devUUID = new ArrayList(); - static - { - //add uuid to list Developers who had work with this mod - devUUID.add("e23b034b-c2d2-4ae5-ba7a-93fb08de9c69"); - devUUID.add("9932b533-00b3-4d05-bac8-288500df7c9d"); - } - - public static boolean isDev(String uuid) - { - return devUUID.contains(uuid); - } - - public static void handleJoin(EntityPlayer player) - { - if (isDev(player.getUniqueID().toString())) { - ChatHandler.sendServerMessage("" + EnumChatFormatting.AQUA + "~~AdventureBackPack Mod Dev~~ " + EnumChatFormatting.UNDERLINE + player.getDisplayName() + EnumChatFormatting.AQUA + " has joined."); - } - } - } From e2fdd92c77e9377f746c15bb6a3b447ecbfa27de Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:42:14 -0400 Subject: [PATCH 148/462] Delete DeveloperJoining.java --- develop/DeveloperJoining.java | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 develop/DeveloperJoining.java diff --git a/develop/DeveloperJoining.java b/develop/DeveloperJoining.java deleted file mode 100644 index a0b85d7c..00000000 --- a/develop/DeveloperJoining.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.darkona.adventurebackpack.develop; - -import net.minecraft.entity.player.EntityPlayerMP; -import com.darkona.adventurebackpack.develop.msg; - -public class DeveloperJoining -{ - private EntityPlayerMP player; - - public void onPlayerLogin() - { - msg.handleJoin(player); - } - } From eafb648bb054aa8d4a288a948cd8e7329254c93c Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:42:23 -0400 Subject: [PATCH 149/462] Delete ConfigHandler.java --- config/ConfigHandler.java | 88 --------------------------------------- 1 file changed, 88 deletions(-) delete mode 100644 config/ConfigHandler.java diff --git a/config/ConfigHandler.java b/config/ConfigHandler.java deleted file mode 100644 index b9fec03a..00000000 --- a/config/ConfigHandler.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.darkona.adventurebackpack.config; - -import com.darkona.adventurebackpack.reference.ModInfo; -import cpw.mods.fml.client.event.ConfigChangedEvent; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import net.minecraftforge.common.config.Configuration; - -import java.io.File; - -/** - * Created on 10/10/2014. - * @author Javier Darkona - */ -public class ConfigHandler -{ - - - public static Configuration config; - - public static boolean IS_BUILDCRAFT = false; - public static boolean IS_BAUBLES = false; - public static boolean IS_TINKERS = false; - public static boolean IS_THAUM = false; - public static boolean IS_TWILIGHT = false; - public static boolean IS_ENVIROMINE = false; - public static boolean IS_RAILCRAFT = false; - - public static int GUI_TANK_RENDER = 2; - public static boolean BONUS_CHEST_ALLOWED = false; - public static boolean PIGMAN_ALLOWED = false; - - public static boolean BACKPACK_DEATH_PLACE = true; - public static boolean BACKPACK_ABILITIES = true; - - public static boolean ALLOW_COPTER_SOUND = true; - public static boolean ALLOW_JETPACK_SOUNDS = true; - - - public static boolean STATUS_OVERLAY = true; - public static boolean TANKS_OVERLAY = true; - public static boolean HOVERING_TEXT_TANKS = false; - public static boolean SADDLE_RECIPE = true; - public static boolean FIX_LEAD = true; - - - public static void init(File configFile) - { - if (config == null) - { - config = new Configuration(configFile); - loadConfiguration(); - } - } - - - @SuppressWarnings("static-access") - private static void loadConfiguration() - { - GUI_TANK_RENDER = config.getInt("TankRenderType", config.CATEGORY_GENERAL, 3, 1, 3, "1,2 or 3 for different rendering of fluids in the Backpack GUI"); - BONUS_CHEST_ALLOWED = config.getBoolean("BonusBackpack", config.CATEGORY_GENERAL, false, "Include a Standard Adventure Backpack in bonus chest?"); - PIGMAN_ALLOWED = config.getBoolean("PigmanBackpacks", config.CATEGORY_GENERAL, false, "Allow generation of Pigman Backpacks in dungeon loot and villager trades"); - ALLOW_COPTER_SOUND = config.getBoolean("CopterPackSound", config.CATEGORY_GENERAL, true, "Allow playing the CopterPack sound (Client Only, other players may hear it)"); - BACKPACK_ABILITIES = config.getBoolean("BackpackAbilities", config.CATEGORY_GENERAL, true, "Allow the backpacks to execute their special abilities, or be only cosmetic (Doesn't affect lightning transformation) Must be " + - "disabled in both Client and Server to work properly"); - STATUS_OVERLAY = config.getBoolean("StatusOverlay", config.CATEGORY_GENERAL,true, "Show player status effects on screen?"); - TANKS_OVERLAY = config.getBoolean("BackpackOverlay", config.CATEGORY_GENERAL,true, "Show the different wearable overlays on screen?"); - HOVERING_TEXT_TANKS = config.getBoolean("HoveringText", config.CATEGORY_GENERAL,false, "Show hovering text on fluid tanks?"); - FIX_LEAD = config.getBoolean("FixVanillaLead", config.CATEGORY_GENERAL,true, "Fix the vanilla Lead? (Checks mobs falling on a leash to not die of fall damage if they're not falling so fast)"); - BACKPACK_DEATH_PLACE = config.getBoolean("BackpackDeathPlace", config.CATEGORY_GENERAL,true,"Place backpacks as a block when you die?"); - //RECIPES - SADDLE_RECIPE = config.getBoolean("SaddleRecipe", config.CATEGORY_GENERAL,true, "Add recipe for saddle?"); - if (config.hasChanged()) - { - config.save(); - } - } - - @SubscribeEvent - public void onConfigChangeEvent(ConfigChangedEvent.OnConfigChangedEvent event) - { - if (event.modID.equalsIgnoreCase(ModInfo.MOD_ID)) - { - loadConfiguration(); - } - } - - -} From 68909530fe9e1ba28f73f98b0b350d61bb56c5d7 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:42:27 -0400 Subject: [PATCH 150/462] Delete GeneralConfig.java --- config/GeneralConfig.java | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 config/GeneralConfig.java diff --git a/config/GeneralConfig.java b/config/GeneralConfig.java deleted file mode 100644 index 4d86a968..00000000 --- a/config/GeneralConfig.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.darkona.adventurebackpack.config; - -/** - * Created by Darkona on 12/10/2014. - */ -public class GeneralConfig -{ - - - public static final String GUI_TANK_KEY = "Tank_GUI_Resolution"; - public static final String GUI_TANK_COMMENT = "Resolution can take values of 1,2,4,8 or 16, other values will bork your game. The higher the value the smaller the fluids will look in your GUI"; -} - From 5f60e58e2600e4b2bc52f66477ea59916d4190f3 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:42:31 -0400 Subject: [PATCH 151/462] Delete Keybindings.java --- config/Keybindings.java | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 config/Keybindings.java diff --git a/config/Keybindings.java b/config/Keybindings.java deleted file mode 100644 index a8af9db1..00000000 --- a/config/Keybindings.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.darkona.adventurebackpack.config; - -import com.darkona.adventurebackpack.reference.Names; -import net.minecraft.client.settings.KeyBinding; -import org.lwjgl.input.Keyboard; - -/** - * Created on 14/10/2014 - * - * @author Darkona - */ -public class Keybindings -{ - public static KeyBinding openBackpack = new KeyBinding(Names.keys.OPEN_BACKPACK_INVENTORY, Keyboard.KEY_B, Names.keys.CATEGORY); - public static KeyBinding toggleHose = new KeyBinding(Names.keys.TOGGLE_HOSE_TANK, Keyboard.KEY_N, Names.keys.CATEGORY); -// public static KeyBinding jumpKey = -} - - From 6e696ef719811b4bb63bedace829e6a127aff53f Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:42:36 -0400 Subject: [PATCH 152/462] Delete ManualConfigHandler.java --- config/ManualConfigHandler.java | 35 --------------------------------- 1 file changed, 35 deletions(-) delete mode 100644 config/ManualConfigHandler.java diff --git a/config/ManualConfigHandler.java b/config/ManualConfigHandler.java deleted file mode 100644 index 43530cc6..00000000 --- a/config/ManualConfigHandler.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.darkona.adventurebackpack.config; - -import net.minecraftforge.common.config.Configuration; - -import java.io.File; - -/** - * Created on 04/01/2015 - * - * @author Darkona - */ -public class ManualConfigHandler -{ - - public static Configuration config; - - public static void init(File configFile) - { - if (config == null) - { - config = new Configuration(configFile); - loadConfiguration(); - } - } - - private static void loadConfiguration() - { - - if (config.hasChanged()) - { - config.save(); - } - } - -} From 9248b23ee285082d36ca2fe56471da568e467f7f Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:45:02 -0400 Subject: [PATCH 153/462] Made Alot of changes for beta13! --- .../handlers/GuiHandler.java | 10 +- .../handlers/KeybindHandler.java | 6 +- .../handlers/PlayerEventHandler.java | 10 +- .../adventurebackpack/init/ModItems.java | 24 +- .../adventurebackpack/init/ModNetwork.java | 5 +- .../adventurebackpack/init/ModRecipes.java | 125 +++-- .../inventory/ContainerJetpack.java | 10 +- .../inventory/InventoryCoalJetpack.java | 493 ++++++++++++++++++ .../item/ItemAdventureJacket.java | 11 +- .../item/ItemAdventurePantaloon.java | 4 +- .../item/ItemCoalJetpack.java | 292 +++++++++++ .../adventurebackpack/item/ItemTelescope.java | 1 + 12 files changed, 886 insertions(+), 105 deletions(-) create mode 100644 src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java create mode 100644 src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java index 9750abe4..1c4a3b20 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java @@ -3,7 +3,7 @@ import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.client.gui.GuiAdvBackpack; import com.darkona.adventurebackpack.client.gui.GuiCopterPack; -import com.darkona.adventurebackpack.client.gui.GuiSteamJetpack; +import com.darkona.adventurebackpack.client.gui.GuiCoalJetpack; import com.darkona.adventurebackpack.inventory.*; import com.darkona.adventurebackpack.util.Wearing; import cpw.mods.fml.common.network.IGuiHandler; @@ -68,13 +68,13 @@ public Object getServerGuiElement(int ID, EntityPlayer player, World world, int case JETPACK_HOLDING: if (Wearing.isHoldingSteam(player)) { - return new ContainerJetpack(player, new InventorySteamJetpack(Wearing.getHoldingSteam(player)),false); + return new ContainerJetpack(player, new InventoryCoalJetpack(Wearing.getHoldingSteam(player)),false); } break; case JETPACK_WEARING: if (Wearing.isWearingSteam(player)) { - return new ContainerJetpack(player, new InventorySteamJetpack(Wearing.getWearingSteam(player)), true); + return new ContainerJetpack(player, new InventoryCoalJetpack(Wearing.getWearingSteam(player)), true); } break; default: @@ -124,13 +124,13 @@ public Object getClientGuiElement(int ID, EntityPlayer player, World world, int case JETPACK_HOLDING: if (Wearing.isHoldingSteam(player)) { - return new GuiSteamJetpack(player, new InventorySteamJetpack(Wearing.getHoldingSteam(player)),false); + return new GuiCoalJetpack(player, new InventoryCoalJetpack(Wearing.getHoldingSteam(player)),false); } break; case JETPACK_WEARING: if (Wearing.isWearingSteam(player)) { - return new GuiSteamJetpack(player, new InventorySteamJetpack(Wearing.getWearingSteam(player)), true); + return new GuiCoalJetpack(player, new InventoryCoalJetpack(Wearing.getWearingSteam(player)), true); } break; default: diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java index 5e12560d..be15a885 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java @@ -34,8 +34,8 @@ private static Key getPressedKeyBinding() { return Key.JUMP; } - return Key.UNKNOWN; - } + return Key.UNKNOWN; + } @SubscribeEvent public void handleKeyInputEvent(InputEvent.KeyInputEvent event) @@ -105,4 +105,4 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) } } } -} +} \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 78a181fb..617bf025 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -47,7 +47,6 @@ */ public class PlayerEventHandler { - @SuppressWarnings("unused") private static int tickCounter = 0; @SubscribeEvent @@ -63,7 +62,6 @@ public void registerBackpackProperty(EntityEvent.EntityConstructing event) } } - @SubscribeEvent public void joinPlayer(EntityJoinWorldEvent event) { @@ -80,6 +78,7 @@ public void joinPlayer(EntityJoinWorldEvent event) { BackpackProperty.get(player).loadNBTData(playerData); BackpackProperty.syncToNear(player); + BackpackProperty.sync(player); LogHelper.info("Stored properties retrieved"); } } @@ -87,15 +86,16 @@ public void joinPlayer(EntityJoinWorldEvent event) } - @SubscribeEvent - public void playerLogsIn(PlayerEvent.PlayerLoggedInEvent event) + public NBTTagCompound playerLogsIn(PlayerEvent.PlayerLoggedInEvent event) { if (event.player instanceof EntityPlayerMP) { BackpackProperty.sync(event.player); + return new NBTTagCompound(); + } + return null; } - } @SubscribeEvent public void playerTravelsAcrossDimensions(PlayerEvent.PlayerChangedDimensionEvent event) diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModItems.java b/src/main/java/com/darkona/adventurebackpack/init/ModItems.java index 01ae6fbd..504c8d4a 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModItems.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModItems.java @@ -1,6 +1,5 @@ package com.darkona.adventurebackpack.init; -import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.item.*; import cpw.mods.fml.common.registry.GameRegistry; @@ -17,12 +16,13 @@ public class ModItems public static final ItemHose hose = new ItemHose(); public static final ArmorAB adventureHat = new ItemAdventureHat(); public static final ArmorAB pistonBoots = new ItemPistonBoots(); - //public static final ArmorAB adventureSuit = new ItemAdventureJacket(); + public static final ArmorAB adventureSuit = new ItemAdventureJacket(); public static final ItemAdventureBackpack adventureBackpack = new ItemAdventureBackpack(); public static final ItemJuiceBottle melonJuiceBottle = new ItemJuiceBottle(); public static final ItemCopterPack copterPack = new ItemCopterPack(); public static final ItemCrossbow cwxbow = new ItemCrossbow(); - public static final ItemSteamJetpack steamJetpack = new ItemSteamJetpack(); + public static final ItemCoalJetpack CoalJetpack = new ItemCoalJetpack(); + public static final ItemAdventurePantaloon Pantaloon = new ItemAdventurePantaloon(); public static void init() { @@ -30,24 +30,14 @@ public static void init() GameRegistry.registerItem(machete, "machete"); GameRegistry.registerItem(adventureHat, "adventureHat"); GameRegistry.registerItem(pistonBoots, "pistonBoots"); - // GameRegistry.registerItem(adventureSuit, "adventureSuit"); + GameRegistry.registerItem(adventureSuit, "adventureSuit"); GameRegistry.registerItem(adventureBackpack, "adventureBackpack"); GameRegistry.registerItem(hose, "backpackHose"); GameRegistry.registerItem(melonJuiceBottle, "melonJuiceBottle"); GameRegistry.registerItem(cwxbow, "clockworkCrossbow"); + GameRegistry.registerItem(CoalJetpack, "CoalJetpack"); + GameRegistry.registerItem(copterPack, "copterPack"); + GameRegistry.registerItem(Pantaloon, "Pantaloon"); } - - public static void conditionalInit() - { - if (ConfigHandler.IS_BUILDCRAFT) - { - GameRegistry.registerItem(copterPack, "copterPack"); - } - - if (ConfigHandler.IS_RAILCRAFT) - { - GameRegistry.registerItem(steamJetpack, "steamJetpack"); - } - } } diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java b/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java index b1783146..14abd2e4 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java @@ -3,6 +3,7 @@ import com.darkona.adventurebackpack.network.*; import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; +import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.reference.ModInfo; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.network.simpleimpl.IMessage; @@ -38,15 +39,12 @@ public static void init() registerMessage(EquipUnequipBackWearablePacket.class, EquipUnequipBackWearablePacket.Message.class); } - - @SuppressWarnings({ "unchecked", "rawtypes" }) public static void registerClientSide(Class handler, Class message) { net.registerMessage(handler, message, messages, Side.CLIENT); messages++; } - @SuppressWarnings({ "unchecked", "rawtypes" }) private static void registerMessage(Class handler, Class message) { net.registerMessage(handler, message, messages, Side.CLIENT); @@ -71,5 +69,6 @@ public static void sendToNearby(IMessage message, EntityPlayer player) public static void sendToDimension(IMessage message, EntityPlayer player) { net.sendToDimension(message, player.dimension); + BackpackProperty.sync(player); } } diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java index eefb2a6d..8445b79b 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java @@ -19,7 +19,6 @@ */ public class ModRecipes { - @SuppressWarnings("unused") private static ItemStack bc(int damage) { return BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), damage); @@ -37,7 +36,14 @@ public static void init() 'x', Items.coal, 'c', "cobblestone" )); - + //Inflatable Boat + GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 7), + " ", + "w w", + "sws", + 'w', Blocks.wool, + 's', Blocks.sand + ); //Sleeping Bag GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 1), " X", @@ -54,6 +60,17 @@ public static void init() 'G', Blocks.glass, 'I', Items.iron_ingot ); + + + //Inflatable Boat (Motorized) + GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 8), + " B ", + " E ", + " H ", + 'B', new ItemStack(ModItems.component, 1, 7), + 'H', new ItemStack(ModItems.component, 1, 9), + 'E', new ItemStack(ModItems.component, 1, 5) + ); //Hose Nozzle GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 3), @@ -78,7 +95,7 @@ public static void init() 'S', Items.stick ); - + //Mechete GameRegistry.addRecipe(new ItemStack(ModItems.machete), " I ", " I ", @@ -86,7 +103,7 @@ public static void init() 'I', Items.iron_ingot, 'H', new ItemStack(ModItems.component, 1, 4) ); - + //Adventure Hats GameRegistry.addRecipe(new ItemStack(ModItems.adventureHat), " ", "nC ", @@ -95,16 +112,23 @@ public static void init() 'C', Items.leather_helmet, 'L', Items.leather ); -/* + //Adventure Suit GameRegistry.addRecipe(new ItemStack(ModItems.adventureSuit), " V ", " W ", - " P ", + " ", 'V', Items.leather_chestplate, - 'W', Blocks.wool, - 'P', Items.leather_leggings + 'W', Blocks.wool ); -*/ + //Adventure Pants + GameRegistry.addRecipe(new ItemStack(ModItems.Pantaloon), + " V ", + " W ", + " ", + 'V', Items.leather_leggings, + 'W', Blocks.wool + ); + //Piston Boots GameRegistry.addRecipe(new ItemStack(ModItems.pistonBoots), " B ", "PSP", @@ -112,30 +136,17 @@ public static void init() 'P', Blocks.piston, 'S', Items.slime_ball ); - + //Melon Juice Bottle GameRegistry.addShapelessRecipe(new ItemStack(ModItems.melonJuiceBottle), Items.melon, Items.potionitem ); - + //Hose GameRegistry.addRecipe(new ItemStack(ModItems.hose), "NGG", " G", - " G", 'N', new ItemStack(ModItems.component, 1, 3), 'G', new ItemStack(Items.dye, 1, 2) ); - - /*GameRegistry.addRecipe(a, - "LGL", - "TCT", - "LSL", - 'L', Items.leather, - 'G', Items.gold_ingot, - 'T', new ItemStack(ModItems.component, 1, 2), - 'S', new ItemStack(ModItems.component, 1, 1), - 'C', Blocks.chest - );*/ - BackpackRecipesList br = new BackpackRecipesList(); int counter = 0; for (int i = 0; i < BackpackNames.backpackNames.length; i++) @@ -196,7 +207,7 @@ public static void conditionalInit() ); } - if(ConfigHandler.IS_BUILDCRAFT) + //change to make it not support BuildCraft there are people out there who dont like that mod { //Copter Engine GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 5), @@ -220,6 +231,26 @@ public static void conditionalInit() 'F', Blocks.fence ); + //Hydro Blades + GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 9), + " F ", + " F ", + "III", + 'I', Items.iron_ingot, + 'F', Blocks.fence + ); + + //Clockwork Crossbow + GameRegistry.addRecipe(new ItemStack(ModItems.cwxbow), + " ", + "BA ", + "SW ", + 'B', Items.bow, + 'A', Items.arrow, + 'S', Items.stick, + 'W', Blocks.planks + ); + //Copter Pack GameRegistry.addRecipe(new ItemStack(ModItems.copterPack), "WBW", @@ -233,37 +264,19 @@ public static void conditionalInit() 'D', Items.diamond, 'I', Items.iron_ingot ); - } - //Ok let's try getting railcraft stuff. - //Seriously this is hard - if(ConfigHandler.IS_RAILCRAFT) - { - try - { - LogHelper.info("Railcraft is present. Adding Steam Jetpack."); - ItemStack firebox = GameRegistry.findItemStack("Railcraft", "machine.beta.boiler.firebox.solid", 1); - ItemStack boiler = GameRegistry.findItemStack("Railcraft", "machine.beta.boiler.tank.pressure.low", 1); - if(firebox != null && boiler != null) - { - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.steamJetpack), - "BWT", - "GIG", - "xWC", - 'W', "plankWood", - 'G', "ingotGold", - 'I',"ingotIron", - 'B', boiler, - 'x', firebox, - 'C', new ItemStack(Items.dye, 1, 2), - 'T', new ItemStack(ModItems.component, 1, 2) - )); - } - - }catch(Exception ex) - { - ex.printStackTrace(); - } + //CoalJetpack (Broken Test out) + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.CoalJetpack), + "SWT", + "GIG", + "FWS", + 'W', "plankWood", + 'G', "ingotGold", + 'I',"ingotIron", + 'S', "Stone", + 'F', "Furnace", + 'T', new ItemStack(ModItems.component, 1, 2) + )); } } -} +} \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java index ac3de1e8..5e51ca7b 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java @@ -15,7 +15,7 @@ */ public class ContainerJetpack extends Container implements IWearableContainer { - InventorySteamJetpack inventory; + InventoryCoalJetpack inventory; EntityPlayer player; private final int PLAYER_HOT_START = 0; @@ -24,7 +24,7 @@ public class ContainerJetpack extends Container implements IWearableContainer private final int PLAYER_INV_END = PLAYER_INV_START + 26; boolean wearing; - public ContainerJetpack(EntityPlayer player, InventorySteamJetpack inventory, boolean wearing) + public ContainerJetpack(EntityPlayer player, InventoryCoalJetpack inventory, boolean wearing) { this.player = player; this.inventory = inventory; @@ -62,11 +62,11 @@ private void makeSlots(InventoryPlayer invPlayer) //Bucket Slots // bucket in - addSlotToContainer(new SlotFluid(inventory, InventorySteamJetpack.BUCKET_IN_SLOT, 30, 22)); + addSlotToContainer(new SlotFluid(inventory, InventoryCoalJetpack.BUCKET_IN_SLOT, 30, 22)); // bucket out - addSlotToContainer(new SlotFluid(inventory, InventorySteamJetpack.BUCKET_OUT_SLOT, 30, 52)); + addSlotToContainer(new SlotFluid(inventory, InventoryCoalJetpack.BUCKET_OUT_SLOT, 30, 52)); // fuel - addSlotToContainer(new SlotFuel(inventory,InventorySteamJetpack.FUEL_SLOT, 77, 64)); + addSlotToContainer(new SlotFuel(inventory,InventoryCoalJetpack.FUEL_SLOT, 77, 64)); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java new file mode 100644 index 00000000..38f946a3 --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -0,0 +1,493 @@ +package com.darkona.adventurebackpack.inventory; + +import com.darkona.adventurebackpack.util.FluidUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.tileentity.TileEntityFurnace; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidTank; + +/** + * Created on 15/01/2015 + * + * @author Darkona + */ +public class InventoryCoalJetpack implements IInventoryTanks +{ + public static final boolean OFF = false; + public static final boolean ON = true; + private FluidTank waterTank = new FluidTank(6000); + private FluidTank CoalTank = new FluidTank(12000); + private ItemStack[] inventory = new ItemStack[3]; + private int temperature = 25; + private boolean status = OFF; + private int burnTicks = 0; + private ItemStack containerStack; + private long systemTime = 0; + private boolean Lava = false; + private boolean leaking = false; + private boolean inUse = false; + public int currentItemBurnTime = 0; + + + public static final int MAX_TEMPERATURE = 200; + public static final int BUCKET_IN_SLOT = 0; + public static final int BUCKET_OUT_SLOT = 1; + public static final int FUEL_SLOT = 2; + private int coolTicks = 5000; + + public InventoryCoalJetpack(final ItemStack jetpack) + { + this.containerStack = jetpack; + if (!containerStack.hasTagCompound()) + { + containerStack.stackTagCompound = new NBTTagCompound(); + closeInventory(); + } + openInventory(); + } + + public int getBurnTimeRemainingScaled(int scale) + { + if (this.currentItemBurnTime == 0) + { + this.currentItemBurnTime = 200; + } + + return this.burnTicks * scale / this.currentItemBurnTime; + } + + @Override + public boolean updateTankSlots() + { + return false; + } + + @Override + public void loadFromNBT(NBTTagCompound compound) + { + if(compound.hasKey("jetpackData")) + { + NBTTagCompound jetpackData = compound.getCompoundTag("jetpackData"); + waterTank.readFromNBT(jetpackData.getCompoundTag("waterTank")); + CoalTank.readFromNBT(jetpackData.getCompoundTag("CoalTank")); + temperature = jetpackData.getInteger("temperature"); + status = jetpackData.getBoolean("status"); + burnTicks = jetpackData.getInteger("burnTicks"); + coolTicks = jetpackData.getInteger("coolTicks"); + systemTime = jetpackData.getLong("systemTime"); + inUse = jetpackData.getBoolean("inUse"); + Lava = jetpackData.getBoolean("lava"); + leaking = jetpackData.getBoolean("leaking"); + currentItemBurnTime = jetpackData.getInteger("currentBurn"); + NBTTagList items = jetpackData.getTagList("inventory", net.minecraftforge.common.util.Constants.NBT.TAG_COMPOUND); + for (int i = 0; i < items.tagCount(); i++) + { + NBTTagCompound item = items.getCompoundTagAt(i); + byte slot = item.getByte("Slot"); + if (slot >= 0 && slot < inventory.length) + { + inventory[slot] = ItemStack.loadItemStackFromNBT(item); + } + } + } + } + + @Override + public void saveToNBT(NBTTagCompound compound) + { + NBTTagCompound jetpackData; + if(compound.hasKey("jetpackData")) + { + jetpackData = compound.getCompoundTag("jetpackData"); + }else + { + jetpackData = new NBTTagCompound(); + } + + jetpackData.setTag("waterTank",waterTank.writeToNBT(new NBTTagCompound())); + jetpackData.setTag("CoalTank",CoalTank.writeToNBT(new NBTTagCompound())); + jetpackData.setInteger("temperature", temperature); + jetpackData.setBoolean("status", status); + jetpackData.setInteger("burnTicks", burnTicks); + jetpackData.setInteger("coolTicks", coolTicks); + jetpackData.setLong("systemTime",systemTime); + jetpackData.setBoolean("inUse", inUse); + jetpackData.setBoolean("lava",Lava); + jetpackData.setBoolean("leaking",leaking); + jetpackData.setInteger("currentBurn",currentItemBurnTime); + NBTTagList items = new NBTTagList(); + for (int i = 0; i < inventory.length; i++) + { + ItemStack stack = inventory[i]; + if (stack != null) + { + NBTTagCompound item = new NBTTagCompound(); + item.setByte("Slot", (byte) i); + stack.writeToNBT(item); + items.appendTag(item); + } + } + jetpackData.setTag("inventory", items); + compound.setTag("jetpackData",jetpackData); + } + + @Override + public FluidTank[] getTanksArray() + { + FluidTank[] tanks = {waterTank,CoalTank}; + return tanks; + } + + @Override + public void dirtyInventory() + { + NBTTagList items = new NBTTagList(); + for (int i = 0; i < inventory.length; i++) + { + ItemStack stack = inventory[i]; + if (stack != null) + { + NBTTagCompound item = new NBTTagCompound(); + item.setByte("Slot", (byte) i); + stack.writeToNBT(item); + items.appendTag(item); + } + } + containerStack.stackTagCompound.getCompoundTag("jetpackData").setTag("inventory", items); + } + + @Override + public void dirtyTanks() + { + containerStack.stackTagCompound.getCompoundTag("jetPackData").setTag("waterTank",waterTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag("jetPackData").setTag("CoalTank",CoalTank.writeToNBT(new NBTTagCompound())); + } + + public void dirtyBoiler() + { + NBTTagCompound jetpackData = containerStack.stackTagCompound.getCompoundTag("jetPackData"); + jetpackData.setBoolean("lava", Lava); + jetpackData.setBoolean("leaking", leaking); + jetpackData.setInteger("temperature", temperature); + jetpackData.setInteger("burnTicks", burnTicks); + jetpackData.setInteger("coolTicks", coolTicks); + jetpackData.setInteger("currentBurn",currentItemBurnTime); + } + + public int consumeFuel() + { + int result = 0; + if(isFuel(inventory[FUEL_SLOT])) + { + result = TileEntityFurnace.getItemBurnTime(inventory[FUEL_SLOT]); + --inventory[FUEL_SLOT].stackSize; + if(inventory[FUEL_SLOT].stackSize == 0) + { + inventory[FUEL_SLOT] = inventory[FUEL_SLOT].getItem().getContainerItem(inventory[FUEL_SLOT]); + } + dirtyInventory(); + } + return result; + } + + public boolean isFuel(ItemStack stack) + { + return TileEntityFurnace.isItemFuel(stack); + } + + + + @Override + public void setInventorySlotContentsNoSave(int slot, ItemStack stack) + { + if (slot > inventory.length) return; + inventory[slot] = stack; + if (stack != null && stack.stackSize > this.getInventoryStackLimit()) + { + stack.stackSize = this.getInventoryStackLimit(); + } + } + + @Override + public ItemStack decrStackSizeNoSave(int slot, int amount) + { + if (slot < inventory.length && inventory[slot] != null) + { + if (inventory[slot].stackSize > amount) + { + ItemStack result = inventory[slot].splitStack(amount); + return result; + } + ItemStack stack = inventory[slot]; + setInventorySlotContentsNoSave(slot, null); + return stack; + } + return null; + } + + @Override + public int getSizeInventory() + { + return inventory.length; + } + + @Override + public ItemStack getStackInSlot(int slot) + { + return inventory[slot]; + } + + @Override + public ItemStack decrStackSize(int slot, int quantity) + { + ItemStack itemstack = getStackInSlot(slot); + + if (itemstack != null) + { + if (itemstack.stackSize <= quantity) + { + if(slot == FUEL_SLOT) + { + setInventorySlotContents(slot, itemstack.getItem().getContainerItem(itemstack)); + } + else + { + setInventorySlotContents(slot, null); + } + } else + { + itemstack = itemstack.splitStack(quantity); + } + } + return itemstack; + } + + @Override + public ItemStack getStackInSlotOnClosing(int i) + { + return (i == 0 || i== 1) ? inventory[i] : null; + } + + @Override + public void setInventorySlotContents(int slot, ItemStack stack) + { + inventory[slot] = stack; + if (stack != null && stack.stackSize > getInventoryStackLimit()) + { + stack.stackSize = getInventoryStackLimit(); + } + if(slot < FUEL_SLOT)onInventoryChanged(); + dirtyInventory(); + +} + + public void onInventoryChanged() + { + for (int i = 0; i < inventory.length; i++) + { + if (i == 0) + { + ItemStack container = getStackInSlot(i); + if(FluidContainerRegistry.isFilledContainer(container) && FluidUtils.isContainerForFluid(container, FluidRegistry.WATER)) + { + InventoryActions.transferContainerTank(this, waterTank, i); + }else + if(FluidContainerRegistry.isEmptyContainer(container) && waterTank.getFluid()!=null && FluidUtils.isContainerForFluid(container, FluidRegistry.WATER)) + { + InventoryActions.transferContainerTank(this, waterTank, i); + } + } + } + markDirty(); + } + @Override + public String getInventoryName() + { + return "Coal Jetpack"; + } + + @Override + public boolean hasCustomInventoryName() + { + return true; + } + + @Override + public int getInventoryStackLimit() + { + return 64; + } + + @Override + public void markDirty() + { + saveToNBT(containerStack.stackTagCompound); + } + + @Override + public boolean isUseableByPlayer(EntityPlayer p_70300_1_) + { + return true; + } + + @Override + public void openInventory() + { + loadFromNBT(containerStack.stackTagCompound); + } + + @Override + public void closeInventory() + { + saveToNBT(containerStack.stackTagCompound); + } + + @Override + public boolean isItemValidForSlot(int slot, ItemStack stack) + { + if(slot == BUCKET_IN_SLOT)return SlotFluid.valid(stack) && FluidUtils.isContainerForFluid(stack, FluidRegistry.WATER); + if(slot == FUEL_SLOT)return TileEntityFurnace.isItemFuel(stack); + return false; + } + + public ItemStack getParentItemStack() + { + return containerStack; + } + + public FluidTank getWaterTank() + { + return waterTank; + } + + public FluidTank getCoalTank() + { + return CoalTank; + } + + public boolean getStatus() + { + return status; + } + + public void setStatus(boolean status) + { + this.status = status; + } + + public int getTemperature() + { + return temperature; + } + + public void setTemperature(int temperature) + { + this.temperature = temperature; + } + + public boolean isInUse() + { + return inUse; + } + + public void setInUse(boolean inUse) + { + this.inUse = inUse; + } + + public boolean isLava() + { + return Lava; + } + + public void setLava(boolean Lava) + { + this.Lava = Lava; + } + + public boolean isLeaking() + { + return leaking; + } + + public void setLeaking(boolean leaking) + { + this.leaking = leaking; + } + + public long getSystemTime() + { + return systemTime; + } + + public void setSystemTime(long systemTime) + { + this.systemTime = systemTime; + } + + public int getBurnTicks() + { + return burnTicks; + } + + public void setBurnTicks(int burnTicks) + { + this.burnTicks = burnTicks; + } + + public ItemStack[] getInventory() + { + return inventory; + } + + public void setInventory(ItemStack[] inventory) + { + this.inventory = inventory; + } + + public int getIncreasingFactor() + { + if(temperature < 50)return 20; + if(temperature < 100)return 15; + if(temperature < 150)return 10; + return 5; + } + + public int getDecreasingFactor() + { + if(temperature > 150)return 40; + if(temperature > 100)return 80; + if(temperature > 50)return 120; + return 5; + } + public int getCoolTicks() + { + return coolTicks; + } + + public void setCoolTicks(int coolTicks) + { + this.coolTicks = coolTicks; + } + + public void setContainerStack(ItemStack containerStack) + { + this.containerStack = containerStack; + } + + public ItemStack getContainerStack() + { + return containerStack; + } + + public void calculateLostTime() + { + @SuppressWarnings("unused") + long elapsedTimesince = System.currentTimeMillis() - systemTime; + + } +} diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureJacket.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureJacket.java index eaeddc93..a10a9ce8 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureJacket.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureJacket.java @@ -15,12 +15,13 @@ * * @author Darkona */ +@SuppressWarnings("unused") public class ItemAdventureJacket extends ArmorAB { public ItemAdventureJacket() { - super(2, 2); + super(1, 1); setUnlocalizedName("adventureSuit"); } @@ -42,12 +43,4 @@ public String getArmorTexture(ItemStack stack, Entity entity, int slot, String t { return Resources.modelTextureResourceString("adventureSuit_texture.png"); } - - @Override - @SideOnly(Side.CLIENT) - public ModelBiped getArmorModel(EntityLivingBase entity, ItemStack itemStack, int armorSlot) - { - return new ModelFullArmor(); - } - } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventurePantaloon.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventurePantaloon.java index aa84754a..cbee8b4a 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventurePantaloon.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventurePantaloon.java @@ -21,7 +21,7 @@ public class ItemAdventurePantaloon extends ArmorAB public ItemAdventurePantaloon() { super(2, 2); - setUnlocalizedName("adventureSuit"); + setUnlocalizedName("pants"); } @Override @@ -40,7 +40,7 @@ public IIcon getIcon(ItemStack stack, int pass) @SideOnly(Side.CLIENT) public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) { - return Resources.modelTextureResourceString("adventureSuit_texture.png"); + return Resources.modelTextureResourceString("adventurepants_texture.png"); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java new file mode 100644 index 00000000..d849796d --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -0,0 +1,292 @@ +package com.darkona.adventurebackpack.item; + +import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; +import com.darkona.adventurebackpack.network.GUIPacket; +import com.darkona.adventurebackpack.network.PlayerActionPacket; +import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; +import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; +import com.darkona.adventurebackpack.playerProperties.BackpackProperty; +import com.darkona.adventurebackpack.proxy.ClientProxy; +import com.darkona.adventurebackpack.util.Resources; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; +import net.minecraftforge.common.BiomeDictionary; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; + +/** + * Created on 15/01/2015 + * + * @author Darkona + */ +public class ItemCoalJetpack extends ItemAB implements IBackWearableItem +{ + + public static byte OFF_MODE = 0; + public static byte NORMAL_MODE = 1; + + public ItemCoalJetpack() + { + super(); + setUnlocalizedName("CoalJetpack"); + setFull3D(); + setMaxStackSize(1); + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) + { + if (world.isRemote) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.JETPACK_GUI, GUIPacket.FROM_HOLDING)); + } + return stack; + } + + private void runFirebox(InventoryCoalJetpack inv) + { + if (inv.getBurnTicks() <= 0) + { + inv.setBurnTicks(inv.consumeFuel()); + inv.currentItemBurnTime = inv.getBurnTicks(); + } + inv.dirtyInventory(); + } + + private void runHeater(InventoryCoalJetpack inv, World world, EntityPlayer player) + { + int temperature = inv.getTemperature(); + int burnTicks = inv.getBurnTicks() - 1; + int coolTicks = inv.getCoolTicks() - 1; + + if (burnTicks > 0) + { + if (temperature < InventoryCoalJetpack.MAX_TEMPERATURE) + { + if (burnTicks % inv.getIncreasingFactor() == 0) + { + ++temperature; + coolTicks = coolTicks < 5000 ? coolTicks + 100 : coolTicks; + } + } + } else if (burnTicks <= 0) + { + inv.currentItemBurnTime = 0; + if (coolTicks % inv.getDecreasingFactor() == 0) + { + temperature = (temperature - 1 >= getBiomeMinTemp(player, world)) ? temperature - 1 : 0; + } + } + inv.setTemperature(temperature); + inv.setCoolTicks(coolTicks); + inv.setBurnTicks(burnTicks <= 0 ? 0 : burnTicks); + } + + private int getBiomeMinTemp(EntityPlayer player, World world) + { + BiomeDictionary.Type[] thisBiomeTypes = BiomeDictionary.getTypesForBiome(world.getBiomeGenForCoords((int) player.posX, (int) player.posZ)); + for (BiomeDictionary.Type type : thisBiomeTypes) + { + if (type == BiomeDictionary.Type.COLD || type == BiomeDictionary.Type.SNOWY) + { + return 0; + } + if (type == BiomeDictionary.Type.HOT || type == BiomeDictionary.Type.BEACH) + { + return 30; + } + if (type == BiomeDictionary.Type.NETHER) + { + return 40; + } + } + return 25; + } + + @Override + public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) + { + InventoryCoalJetpack inv = new InventoryCoalJetpack(stack); + inv.openInventory(); + boolean mustFizzz = !inv.isInUse(); + int CoalConsumed = 13; + boolean canUse = inv.getCoalTank().drain(CoalConsumed,false) != null; + + if (inv.getStatus()) + { + runFirebox(inv); + } + runHeater(inv, world, player); + runLava(inv, world, player); + inv.dirtyBoiler(); + + //Suction + if(player.isInWater()) + { + inv.getWaterTank().fill(new FluidStack(FluidRegistry.WATER,2),true); + } + + //Elevation + if (world.isRemote) + { + if (inv.getStatus() && canUse && Minecraft.getMinecraft().gameSettings.keyBindJump.getIsKeyPressed()) + { + inv.setInUse(true); + ModNetwork.net.sendToServer(new PlayerActionPacket.ActionMessage(PlayerActionPacket.JETPACK_IN_USE)); + if (mustFizzz) + { + ModNetwork.net.sendToServer(new EntitySoundPacket.Message(EntitySoundPacket.JETPACK_FIZZ, player)); + } + } else + { + inv.setInUse(false); + ModNetwork.net.sendToServer(new PlayerActionPacket.ActionMessage(PlayerActionPacket.JETPACK_NOT_IN_USE)); + } + } + + if (inv.isInUse() && canUse) + { + + elevate(player); + inv.getCoalTank().drain(CoalConsumed, true); + if (inv.getCoalTank().getFluidAmount() == 0) + { + inv.setInUse(false); + } + player.moveFlying(player.moveStrafing, player.moveForward, 0.02f); + if(player.fallDistance > 1) + { + player.fallDistance -= 1; + } + if(player.motionY >= 0) + { + player.fallDistance = 0; + } + if(!world.isRemote) + ModNetwork.sendToNearby(new EntityParticlePacket.Message(EntityParticlePacket.JETPACK_PARTICLE, player), player); + + } + inv.closeInventory(); + } + + private void runLava(InventoryCoalJetpack inv, World world, EntityPlayer player) + { + int temperature = inv.getTemperature(); + boolean mustSSSSS = !inv.isLeaking(); + boolean mustBlublub = !inv.isLava(); + boolean Lava = inv.isLava(); + boolean leaking = inv.isLeaking(); + + if (temperature >= 100 && inv.getWaterTank().getFluidAmount() > 0) + { + if(!Lava)Lava = true; + + if (!world.isRemote && mustBlublub) + { + ModNetwork.net.sendTo(new EntitySoundPacket.Message(EntitySoundPacket.BOILING_BUBBLES, player), (EntityPlayerMP) player); + } + } else + { + if (Lava) + { + Lava = false; + } + } + + if (Lava) + { + if (inv.getCoalTank().getFluidAmount() < inv.getCoalTank().getCapacity()) + { + if (inv.getWaterTank().getFluid() != null) + { + int lava = inv.getWaterTank().drain((temperature / 100), true).amount; + inv.getCoalTank().fill(new FluidStack(FluidRegistry.getFluid("lava"), lava * 4), true); + inv.dirtyTanks(); + } + } + } + + if (inv.getCoalTank().getFluidAmount() < inv.getCoalTank().getCapacity() - 100) + { + if (leaking) + { + leaking = false; + } + } else + { + if (!leaking) + { + leaking = true; + if (!world.isRemote && mustSSSSS) + { + ModNetwork.net.sendTo(new EntitySoundPacket.Message(EntitySoundPacket.LEAKING_STEAM, player), (EntityPlayerMP) player); + } + } + } + inv.setLava(Lava); + inv.setLeaking(leaking); + inv.setTemperature(temperature); + } + + public static void elevate(EntityPlayer player) + { + if (player.motionY <= 0.32 && player.posY < 100) + { + player.motionY += 0.1; + } else + { + if (player.posY < 100) player.motionY = Math.max(player.motionY, 0.32); + if (player.posY > 100) player.motionY = 0.32 - ((player.posY % 100) / 100); + } + } + + @Override + public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) + { + onUnequipped(world, player, stack); + player.dropPlayerItemWithRandomChoice(stack.copy(), false); + BackpackProperty.get(player).setWearable(null); + } + + @Override + public void onEquipped(World world, EntityPlayer player, ItemStack stack) + { + InventoryCoalJetpack inv = new InventoryCoalJetpack(stack); + inv.calculateLostTime(); + if(inv.getTemperature() == 0)inv.setTemperature(getBiomeMinTemp(player, world)); + } + + @Override + public void onUnequipped(World world, EntityPlayer player, ItemStack stack) + { + InventoryCoalJetpack inv = new InventoryCoalJetpack(stack); + inv.setLava(false); + inv.setInUse(false); + inv.setLeaking(false); + inv.setStatus(false); + inv.setSystemTime(System.currentTimeMillis()); + inv.markDirty(); + } + + @Override + @SideOnly(Side.CLIENT) + public ModelBiped getWearableModel(ItemStack wearable) + { + return ClientProxy.modelCoalJetpack.setWearable(wearable); + } + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getWearableTexture(ItemStack wearable) + { + return Resources.modelTextures("CoalJetpack"); + } +} diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemTelescope.java b/src/main/java/com/darkona/adventurebackpack/item/ItemTelescope.java index f391f974..7a29f6a1 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemTelescope.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemTelescope.java @@ -7,5 +7,6 @@ */ public class ItemTelescope extends ItemAB { + //Make Telescope item doto list } From caf2ce44156f97cc462aa34b1923b19d04a681a4 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 20:46:06 -0400 Subject: [PATCH 154/462] Made Alot of changes for beta13! look at the release tab to view the changelog! --- .../client/audio/BoilingBoilerSound.java | 6 +- .../client/audio/JetpackSoundOn.java | 4 +- .../client/audio/LeakingBoilerSound.java | 4 +- .../client/gui/GuiCoalJetpack.java | 202 ++++++++++++++++++ .../client/models/ModelCoalJetpack.java | 200 +++++++++++++++++ .../client/models/ModelFullArmor.java | 2 +- .../client/render/RendererHose.java | 1 - .../common/ServerActions.java | 4 +- 8 files changed, 412 insertions(+), 11 deletions(-) create mode 100644 src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java create mode 100644 src/main/java/com/darkona/adventurebackpack/client/models/ModelCoalJetpack.java diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java index 3e1435a3..5a8b5c8d 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java @@ -1,6 +1,6 @@ package com.darkona.adventurebackpack.client.audio; -import com.darkona.adventurebackpack.inventory.InventorySteamJetpack; +import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; import com.darkona.adventurebackpack.reference.ModInfo; import com.darkona.adventurebackpack.util.Wearing; import net.minecraft.client.audio.MovingSound; @@ -61,8 +61,8 @@ public void update() return; } - InventorySteamJetpack inv = new InventorySteamJetpack(Wearing.getWearingSteam(thePlayer)); - if(inv.isBoiling() && inv.getWaterTank().getFluidAmount() > 0) + InventoryCoalJetpack inv = new InventoryCoalJetpack(Wearing.getWearingSteam(thePlayer)); + if(inv.isLava() && inv.getWaterTank().getFluidAmount() > 0) { xPosF = (float)thePlayer.posX; yPosF = (float)thePlayer.posY; diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java b/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java index 7a16510e..689aae64 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java @@ -1,6 +1,6 @@ package com.darkona.adventurebackpack.client.audio; -import com.darkona.adventurebackpack.inventory.InventorySteamJetpack; +import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; import com.darkona.adventurebackpack.reference.ModInfo; import com.darkona.adventurebackpack.util.Wearing; import net.minecraft.client.audio.MovingSound; @@ -60,7 +60,7 @@ public void update() return; } - InventorySteamJetpack inv = new InventorySteamJetpack(Wearing.getWearingSteam(thePlayer)); + InventoryCoalJetpack inv = new InventoryCoalJetpack(Wearing.getWearingSteam(thePlayer)); if(inv.isInUse()) { xPosF = (float)thePlayer.posX; diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java index 155d5c5d..b544ba41 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java @@ -1,6 +1,6 @@ package com.darkona.adventurebackpack.client.audio; -import com.darkona.adventurebackpack.inventory.InventorySteamJetpack; +import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; import com.darkona.adventurebackpack.reference.ModInfo; import com.darkona.adventurebackpack.util.Wearing; import net.minecraft.client.audio.MovingSound; @@ -60,7 +60,7 @@ public void update() return; } - InventorySteamJetpack inv = new InventorySteamJetpack(Wearing.getWearingSteam(thePlayer)); + InventoryCoalJetpack inv = new InventoryCoalJetpack(Wearing.getWearingSteam(thePlayer)); if(inv.isLeaking()) { xPosF = (float)thePlayer.posX; diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java new file mode 100644 index 00000000..d0e5f193 --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java @@ -0,0 +1,202 @@ +package com.darkona.adventurebackpack.client.gui; + +import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.config.Keybindings; +import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.inventory.ContainerJetpack; +import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; +import com.darkona.adventurebackpack.network.EquipUnequipBackWearablePacket; +import com.darkona.adventurebackpack.util.Resources; +import com.darkona.adventurebackpack.util.Utils; +import com.darkona.adventurebackpack.util.Wearing; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidTank; +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; + +/** + * Created on 15/01/2015 + * + * @author Darkona + */ +public class GuiCoalJetpack extends GuiWithTanks +{ + private static final ResourceLocation texture = Resources.guiTextures("guiSteamJetpack"); + private static GuiTank waterTank = new GuiTank(8, 8,72, 16, ConfigHandler.GUI_TANK_RENDER); + private static GuiTank steamTank = new GuiTank(116, 8,72, 16, ConfigHandler.GUI_TANK_RENDER); + private static GuiImageButtonNormal equipButton = new GuiImageButtonNormal(150, 64, 18, 18); + private static GuiImageButtonNormal unequipButton = new GuiImageButtonNormal(150, 64, 18, 18); + private boolean wearing; + EntityPlayer player; + InventoryCoalJetpack inventory; + int boiling = 0; + public GuiCoalJetpack(EntityPlayer player, InventoryCoalJetpack inventory, boolean wearing) + { + super(new ContainerJetpack(player, inventory,wearing)); + this.wearing = wearing; + this.player = player; + this.inventory = inventory; + xSize = 176; + ySize = 166; + } + + + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int mouseX, int mouseY) + { + inventory.openInventory(); + this.mc.renderEngine.bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(wearing) + { + if(unequipButton.inButton(this,mouseX,mouseY)) + { + unequipButton.draw(this,20,186); + }else + { + unequipButton.draw(this,1,186); + } + }else + { + if(equipButton.inButton(this,mouseX,mouseY)) + { + equipButton.draw(this,20,167); + }else + { + equipButton.draw(this,1,167); + } + } + + + + + + // if(wearing) inventory = new InventorySteamJetpack(Wearing.getWearingSteam(player)); + + + + } + + @Override + protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) + { + this.mc.renderEngine.bindTexture(texture); + if(wearing) inventory = new InventoryCoalJetpack(Wearing.getWearingSteam(player)); + FluidTank water = inventory.getWaterTank(); + FluidTank steam = inventory.getCoalTank(); + GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + if( inventory.isLava() + && steam.getFluidAmount() < steam.getCapacity() + && water.getFluidAmount() > 0) + { + if(boiling < 83) + { + drawTexturedModalRect(28,40,50,172,boiling++,37); + }else boiling = 0; + } + if(inventory.getBurnTicks() > 0) + { + int i1 =inventory.getBurnTimeRemainingScaled(13); + this.drawTexturedModalRect(78, 48 + 12 - i1, 176, 12 - i1, 14, i1 + 1); + } + + int H = Math.round(((float)72 / (float)InventoryCoalJetpack.MAX_TEMPERATURE) * (float)inventory.getTemperature()); + drawTexturedModalRect( 139, 8 + (72- H), 40, 167 + (72 - H), 5, H); + + GL11.glDisable(GL11.GL_BLEND); + GL11.glPopMatrix(); + GL11.glDisable(GL11.GL_LIGHTING); + + + waterTank.draw(this, water); + steamTank.draw(this,steam); + + float factor = 0.7f; + + String show = ((water.getFluidAmount() > 0) ? Utils.capitalize(FluidRegistry.getFluidName(water.getFluid())) : "None")+ "-" + water.getFluidAmount(); + + GL11.glPushMatrix(); + GL11.glTranslatef(70, 10, 0); + GL11.glScalef(factor, factor, factor); + fontRendererObj.drawString(show, 0, 0, 0x373737, false); + GL11.glScalef(1, 1, 1); + GL11.glPopMatrix(); + + show = ((steam.getFluidAmount() > 0) ? Utils.capitalize(FluidRegistry.getFluidName(steam.getFluid())) : "None") + "-" + steam.getFluidAmount(); + + GL11.glPushMatrix(); + GL11.glTranslatef(70, 20, 0); + GL11.glScalef(factor, factor, factor); + fontRendererObj.drawString(show, 0, 0, 0x373737, false); + GL11.glScalef(1, 1, 1); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslatef(145,8,0); + GL11.glScalef(0.9f, 0.9f, 0.9f); + fontRendererObj.drawString((inventory.getTemperature()) + " C", 0, 0, 0x373737, false); + GL11.glScalef(1, 1, 1); + GL11.glPopMatrix(); + + + + + } + + @Override + protected void mouseClicked(int mouseX, int mouseY, int mouseButton) + { + int sneakKey = Minecraft.getMinecraft().gameSettings.keyBindSneak.getKeyCode(); + if(wearing) + { + if(unequipButton.inButton(this,mouseX,mouseY)) + { + ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.UNEQUIP_WEARABLE,false)); + player.closeScreen(); + } + } else + { + if(equipButton.inButton(this,mouseX,mouseY)) + { + ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, Keyboard.isKeyDown(sneakKey))); + player.closeScreen(); + } + } + super.mouseClicked(mouseX, mouseY, mouseButton); + } + + @Override + public int getLeft() + { + return guiLeft; + } + + @Override + public int getTop() + { + return guiTop; + } + + @Override + public float getZLevel() + { + return zLevel; + } + + @Override + protected void keyTyped(char key, int keycode) + { + if (keycode == Keybindings.openBackpack.getKeyCode()) + { + player.closeScreen(); + } + super.keyTyped(key, keycode); + } +} diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelCoalJetpack.java new file mode 100644 index 00000000..d0af05d2 --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelCoalJetpack.java @@ -0,0 +1,200 @@ +package com.darkona.adventurebackpack.client.models; + +import codechicken.lib.vec.Vector3; +import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import org.lwjgl.opengl.GL11; + +import java.util.List; + + +public class ModelCoalJetpack extends ModelWearable { + public ModelRenderer Base; + public ModelRenderer tubeStraightLeft; + public ModelRenderer tubeStraightRight; + public ModelRenderer tubeEndLeft; + public ModelRenderer tubeEndRight; + public ModelRenderer tankWallLeft; + public ModelRenderer tankWallRight; + public ModelRenderer fireBox; + public ModelRenderer tankTop; + public ModelRenderer tankBottom; + public ModelRenderer pressureTank; + public ModelRenderer waterTube1; + public ModelRenderer waterTube2; + public ModelRenderer tubeBendLeft; + public ModelRenderer tubeBendRight; + private ItemStack jetpack; + + @SuppressWarnings("unchecked") + public ModelCoalJetpack() { + this.textureWidth = 64; + this.textureHeight = 32; + + this.tubeStraightRight = new ModelRenderer(this, 0, 14); + this.tubeStraightRight.setRotationPoint(-3.0F, 1.0F, 8.3F); + this.tubeStraightRight.addBox(-5.8F, 0.0F, 0.0F, 6, 1, 1, 0.0F); + + this.tubeEndLeft = new ModelRenderer(this, 0, 17); + this.tubeEndLeft.setRotationPoint(7.6F, 1.7F, 8.3F); + this.tubeEndLeft.addBox(0.0F, 0.0F, 0.0F, 1, 4, 1, -0.1F); + + this.setRotateAngle(tubeEndLeft, 0.0F, 0.0F, -0.2617993877991494F); + this.tankBottom = new ModelRenderer(this, 10, 20); + this.tankBottom.setRotationPoint(-1.0F, 8.0F, 3.0F); + this.tankBottom.addBox(-3.0F, 1.0F, 0.0F, 3, 1, 3, 0.0F); + this.tubeBendLeft = new ModelRenderer(this, 0, 14); + this.tubeBendLeft.setRotationPoint(-2.0F, 1.0F, 2.0F); + this.tubeBendLeft.addBox(0.0F, 0.0F, 0.0F, 5, 1, 1, 0.0F); + this.setRotateAngle(tubeBendLeft, 0.0F, -0.8080874436733745F, 0.0F); + this.waterTube2 = new ModelRenderer(this, 10, 17); + this.waterTube2.setRotationPoint(0.0F, 1.0F, 0.0F); + this.waterTube2.addBox(-2.0F, 1.0F, 1.0F, 2, 1, 1, 0.0F); + this.tubeEndRight = new ModelRenderer(this, 0, 17); + this.tubeEndRight.setRotationPoint(-7.7F, 1.6F, 8.3F); + this.tubeEndRight.addBox(-1.0F, 0.0F, 0.0F, 1, 4, 1, -0.1F); + this.setRotateAngle(tubeEndRight, 0.0F, 0.0F, 0.2617993877991494F); + this.Base = new ModelRenderer(this, 0, 0); + this.Base.setRotationPoint(0.0F, 0.0F, 0.0F); + this.Base.addBox(-4.0F, 0.0F, 2.0F, 8, 12, 1, 0.0F); + this.waterTube1 = new ModelRenderer(this, 10, 17); + this.waterTube1.setRotationPoint(0.0F, 1.0F, 0.0F); + this.waterTube1.addBox(-2.0F, 1.0F, 1.0F, 1, 1, 1, 0.0F); + this.tubeBendRight = new ModelRenderer(this, 0, 14); + this.tubeBendRight.setRotationPoint(-2.0F, 1.0F, 2.0F); + this.tubeBendRight.addBox(-5.0F, 0.0F, 0.0F, 5, 1, 1, 0.0F); + this.setRotateAngle(tubeBendRight, 0.0F, 0.7976154681614086F, 0.0F); + this.tankWallLeft = new ModelRenderer(this, 3, 23); + this.tankWallLeft.setRotationPoint(-1.0F, 1.0F, 1.0F); + this.tankWallLeft.addBox(0.0F, 6.0F, 2.0F, 1, 1, 3, 0.0F); + this.tankWallRight = new ModelRenderer(this, 5, 17); + this.tankWallRight.setRotationPoint(-1.0F, 1.0F, 3.0F); + this.tankWallRight.addBox(-3.0F, 0.0F, 2.0F, 1, 8, 1, 0.0F); + this.pressureTank = new ModelRenderer(this, 19, 0); + this.pressureTank.setRotationPoint(2.0F, 0.0F, 3.0F); + this.pressureTank.addBox(-3.0F, 0.0F, 0.0F, 5, 7, 3, 0.0F); + this.fireBox = new ModelRenderer(this, 26, 25); + this.fireBox.setRotationPoint(2.0F, 8.0F, 3.0F); + this.fireBox.addBox(-3.0F, 0.0F, 0.0F, 5, 4, 3, 0.0F); + this.tankTop = new ModelRenderer(this, 10, 20); + this.tankTop.setRotationPoint(-4.0F, 0.0F, 3.0F); + this.tankTop.addBox(0.0F, 0.0F, 0.0F, 3, 1, 3, 0.0F); + this.tubeStraightLeft = new ModelRenderer(this, 0, 14); + this.tubeStraightLeft.setRotationPoint(2.7F, 1.0F, 8.3F); + this.tubeStraightLeft.addBox(0.0F, 0.0F, 0.0F, 6, 1, 1, 0.0F); + + this.Base.addChild(this.tankBottom); + this.pressureTank.addChild(this.tubeBendLeft); + this.waterTube1.addChild(this.waterTube2); + this.tankBottom.addChild(this.waterTube1); + this.pressureTank.addChild(this.tubeBendRight); + this.Base.addChild(this.pressureTank); + this.Base.addChild(this.fireBox); + this.Base.addChild(this.tankTop); + + bipedBody.addChild(Base); + bipedBody.addChild(tubeStraightLeft); + bipedBody.addChild(tubeStraightRight); + bipedBody.addChild(tubeEndLeft); + bipedBody.addChild(tubeEndRight); + bipedBody.addChild(tankWallLeft); + bipedBody.addChild(tankWallRight); + + + float offsetZ = 0.08F; + float offsetY = 0.0F; + for (ModelRenderer part : (List) bipedBody.childModels) + { + setOffset(part, part.offsetX + 0, part.offsetY + offsetY, part.offsetZ + offsetZ); + } + } + + public ModelCoalJetpack setWearable(ItemStack wearable) + { + this.jetpack = wearable; + return this; + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack stack) + { + this.jetpack = stack; + render(entity, f, f1,f2,f3,f4,f5); + } + + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + isSneak = (entity != null && entity.isSneaking()); + + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + + if (entity != null && entity instanceof EntityPlayer) + { + GL11.glPushMatrix(); + + GL11.glTranslatef(bipedBody.offsetX, bipedBody.offsetY, bipedBody.offsetZ); + GL11.glColor4f(1, 1, 1, 1); + + if (bipedBody.rotateAngleX == 0.0F && bipedBody.rotateAngleY == 0.0F && bipedBody.rotateAngleZ == 0.0F) + { + if (bipedBody.rotationPointX == 0.0F && bipedBody.rotationPointY == 0.0F && bipedBody.rotationPointZ == 0.0F) + { + renderSteamPack(f5); + } else + { + GL11.glTranslatef(bipedBody.rotationPointX * f5, bipedBody.rotationPointY * f5, bipedBody.rotationPointZ * f5); + renderSteamPack(f5); + GL11.glTranslatef(-bipedBody.rotationPointX * f5, -bipedBody.rotationPointY * f5, -bipedBody.rotationPointZ * f5); + } + } else + { + GL11.glPushMatrix(); + GL11.glTranslatef(bipedBody.rotationPointX * f5, bipedBody.rotationPointY * f5, bipedBody.rotationPointZ * f5); + + if (bipedBody.rotateAngleZ != 0.0F) + { + GL11.glRotatef(bipedBody.rotateAngleZ * (180F / (float) Math.PI), 0.0F, 0.0F, 1.0F); + } + + if (bipedBody.rotateAngleY != 0.0F) + { + GL11.glRotatef(bipedBody.rotateAngleY * (180F / (float) Math.PI), 0.0F, 1.0F, 0.0F); + } + + if (bipedBody.rotateAngleX != 0.0F) + { + GL11.glRotatef(bipedBody.rotateAngleX * (180F / (float) Math.PI), 1.0F, 0.0F, 0.0F); + } + renderSteamPack(f5); + GL11.glPopMatrix(); + } + GL11.glTranslatef(-bipedBody.offsetX, -bipedBody.offsetY, -(bipedBody.offsetZ)); + GL11.glPopMatrix(); + } + + } + + public void renderSteamPack(float f5) + { + InventoryCoalJetpack inv = new InventoryCoalJetpack(jetpack); + + this.fireBox.setTextureOffset((inv.getBurnTicks() > 0) ? 9 : 26, 25); + + tubeStraightRight.render(f5); + tubeEndLeft.render(f5); + tubeEndRight.render(f5); + Base.render(f5); + tankWallLeft.render(f5); + tankWallRight.render(f5); + tubeStraightLeft.render(f5); + + GL11.glPushMatrix(); + renderFluidInTank(inv.getWaterTank(), new Vector3(0, .5f, 0), new Vector3(.155f, 0, .135f), new Vector3(0.18f, 0.0625f, -0.045f), tankTop); + GL11.glPopMatrix(); + + } + +} diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelFullArmor.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelFullArmor.java index b9ce460a..d769fabf 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelFullArmor.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelFullArmor.java @@ -15,7 +15,7 @@ public class ModelFullArmor extends ModelBiped { public ModelFullArmor() { - super(0.1F); + super(0.2F); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java index 0f8816e4..50a74a98 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java @@ -20,7 +20,6 @@ public class RendererHose implements IItemRenderer private static RenderItem renderHose = new RenderItem(); private FontRenderer fontRenderer; - @SuppressWarnings("unused") private Tessellator tessellator = Tessellator.instance; @Override diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index 79c48a42..f4eb3e9e 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -4,7 +4,7 @@ import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.inventory.InventoryBackpack; -import com.darkona.adventurebackpack.inventory.InventorySteamJetpack; +import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; import com.darkona.adventurebackpack.item.ItemCopterPack; import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.network.WearableModePacket; @@ -403,7 +403,7 @@ public static void toggleCopterPack(EntityPlayer player, ItemStack copter, byte public static void toggleSteamJetpack(EntityPlayer player, ItemStack jetpack, byte on_off) { - InventorySteamJetpack inv = new InventorySteamJetpack(jetpack); + InventoryCoalJetpack inv = new InventoryCoalJetpack(jetpack); if(inv.getStatus()) { inv.setStatus(false); From 9f027a0aa274f6282124755e10238ffab7eca16b Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 29 Apr 2016 21:35:53 -0400 Subject: [PATCH 155/462] Made Alot of changes for beta13! look at the release tab to view the changelog! --- .../init/recipes/BackpackRecipes.java | 10 ++++++++++ .../init/recipes/BackpackRecipesList.java | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipes.java index 23bd7bbd..48c8ce27 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipes.java @@ -85,6 +85,15 @@ public BackpackRecipes() 'm', Items.milk_bucket ); + ModdedNetwork = reviewRecipe( + "EEE", + "DaD", + "DDD", + 'a', ModItems.adventureBackpack, + 'E', Items.emerald, + 'D', Items.diamond + ); + Chest = reviewRecipe( "CWC", "WaW", @@ -590,6 +599,7 @@ public BackpackRecipes() public final ItemStack[] Wolf; public final ItemStack[] Yellow; public final ItemStack[] Zombie; + public final ItemStack[] ModdedNetwork; @SuppressWarnings({ "unchecked", "rawtypes" }) diff --git a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipesList.java b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipesList.java index a0d92538..c5061f97 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipesList.java +++ b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipesList.java @@ -114,6 +114,15 @@ public BackpackRecipesList() 'm', Items.milk_bucket ); + ModdedNetwork = reviewRecipe( + "EEE", + "DaD", + "DDD", + 'a', backpack, + 'E', Items.emerald, + 'D', Items.diamond + ); + Chest = reviewRecipe( "CWC", "WaW", @@ -678,6 +687,7 @@ public BackpackRecipesList() public final Object[] Wolf; public final Object[] Yellow; public final Object[] Zombie; + public final Object[] ModdedNetwork; public static Object[] reviewRecipe(Object... objects) From dbe0513787e52ef9d5b624c42c5af0cef1462efd Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 2 May 2016 13:12:42 -0400 Subject: [PATCH 156/462] Delete ItemSteamJetpack.java --- .../item/ItemSteamJetpack.java | 293 ------------------ 1 file changed, 293 deletions(-) delete mode 100644 src/main/java/com/darkona/adventurebackpack/item/ItemSteamJetpack.java diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemSteamJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemSteamJetpack.java deleted file mode 100644 index 350665b1..00000000 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemSteamJetpack.java +++ /dev/null @@ -1,293 +0,0 @@ -package com.darkona.adventurebackpack.item; - -import com.darkona.adventurebackpack.init.ModNetwork; -import com.darkona.adventurebackpack.inventory.InventorySteamJetpack; -import com.darkona.adventurebackpack.network.GUIPacket; -import com.darkona.adventurebackpack.network.PlayerActionPacket; -import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; -import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; -import com.darkona.adventurebackpack.playerProperties.BackpackProperty; -import com.darkona.adventurebackpack.proxy.ClientProxy; -import com.darkona.adventurebackpack.util.Resources; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.Minecraft; -import net.minecraft.client.model.ModelBiped; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraft.world.World; -import net.minecraftforge.common.BiomeDictionary; -import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fluids.FluidStack; - -/** - * Created on 15/01/2015 - * - * @author Darkona - */ -public class ItemSteamJetpack extends ItemAB implements IBackWearableItem -{ - - public static byte OFF_MODE = 0; - public static byte NORMAL_MODE = 1; - - public ItemSteamJetpack() - { - super(); - setUnlocalizedName("steamJetpack"); - setFull3D(); - setMaxStackSize(1); - } - - @Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) - { - if (world.isRemote) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.JETPACK_GUI, GUIPacket.FROM_HOLDING)); - } - return stack; - } - - private void runFirebox(InventorySteamJetpack inv) - { - if (inv.getBurnTicks() <= 0) - { - inv.setBurnTicks(inv.consumeFuel()); - inv.currentItemBurnTime = inv.getBurnTicks(); - } - inv.dirtyInventory(); - } - - private void runHeater(InventorySteamJetpack inv, World world, EntityPlayer player) - { - int temperature = inv.getTemperature(); - int burnTicks = inv.getBurnTicks() - 1; - int coolTicks = inv.getCoolTicks() - 1; - //Run the boiler: increase/maintain heat if there's burn ticks, or decrease temperature if there aren't - - if (burnTicks > 0) - { - if (temperature < InventorySteamJetpack.MAX_TEMPERATURE) - { - if (burnTicks % inv.getIncreasingFactor() == 0) - { - ++temperature; - coolTicks = coolTicks < 5000 ? coolTicks + 100 : coolTicks; - } - } - } else if (burnTicks <= 0) - { - inv.currentItemBurnTime = 0; - if (coolTicks % inv.getDecreasingFactor() == 0) - { - temperature = (temperature - 1 >= getBiomeMinTemp(player, world)) ? temperature - 1 : 0; - } - } - inv.setTemperature(temperature); - inv.setCoolTicks(coolTicks); - inv.setBurnTicks(burnTicks <= 0 ? 0 : burnTicks); - } - - private int getBiomeMinTemp(EntityPlayer player, World world) - { - BiomeDictionary.Type[] thisBiomeTypes = BiomeDictionary.getTypesForBiome(world.getBiomeGenForCoords((int) player.posX, (int) player.posZ)); - for (BiomeDictionary.Type type : thisBiomeTypes) - { - if (type == BiomeDictionary.Type.COLD || type == BiomeDictionary.Type.SNOWY) - { - return 0; - } - if (type == BiomeDictionary.Type.HOT || type == BiomeDictionary.Type.BEACH) - { - return 30; - } - if (type == BiomeDictionary.Type.NETHER) - { - return 40; - } - } - return 25; - } - - @Override - public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) - { - InventorySteamJetpack inv = new InventorySteamJetpack(stack); - inv.openInventory(); - boolean mustFizzz = !inv.isInUse(); - int steamConsumed = 13; - boolean canUse = inv.getSteamTank().drain(steamConsumed,false) != null; - - if (inv.getStatus()) - { - runFirebox(inv); - } - runHeater(inv, world, player); - runBoiler(inv, world, player); - inv.dirtyBoiler(); - - //Suction - if(player.isInWater()) - { - inv.getWaterTank().fill(new FluidStack(FluidRegistry.WATER,2),true); - } - - //Elevation - if (world.isRemote) - { - if (inv.getStatus() && canUse && Minecraft.getMinecraft().gameSettings.keyBindJump.getIsKeyPressed()) - { - inv.setInUse(true); - ModNetwork.net.sendToServer(new PlayerActionPacket.ActionMessage(PlayerActionPacket.JETPACK_IN_USE)); - if (mustFizzz) - { - ModNetwork.net.sendToServer(new EntitySoundPacket.Message(EntitySoundPacket.JETPACK_FIZZ, player)); - } - } else - { - inv.setInUse(false); - ModNetwork.net.sendToServer(new PlayerActionPacket.ActionMessage(PlayerActionPacket.JETPACK_NOT_IN_USE)); - } - } - - if (inv.isInUse() && canUse) - { - - elevate(player); - inv.getSteamTank().drain(steamConsumed, true); - if (inv.getSteamTank().getFluidAmount() == 0) - { - inv.setInUse(false); - } - player.moveFlying(player.moveStrafing, player.moveForward, 0.02f); - if(player.fallDistance > 1) - { - player.fallDistance -= 1; - } - if(player.motionY >= 0) - { - player.fallDistance = 0; - } - if(!world.isRemote) - ModNetwork.sendToNearby(new EntityParticlePacket.Message(EntityParticlePacket.JETPACK_PARTICLE, player), player); - - } - inv.closeInventory(); - } - - private void runBoiler(InventorySteamJetpack inv, World world, EntityPlayer player) - { - int temperature = inv.getTemperature(); - boolean mustSSSSS = !inv.isLeaking(); - boolean mustBlublub = !inv.isBoiling(); - boolean boiling = inv.isBoiling(); - boolean leaking = inv.isLeaking(); - - if (temperature >= 100 && inv.getWaterTank().getFluidAmount() > 0) - { - if(!boiling)boiling = true; - - if (!world.isRemote && mustBlublub) - { - ModNetwork.net.sendTo(new EntitySoundPacket.Message(EntitySoundPacket.BOILING_BUBBLES, player), (EntityPlayerMP) player); - } - } else - { - if (boiling) - { - boiling = false; - } - } - - if (boiling) - { - if (inv.getSteamTank().getFluidAmount() < inv.getSteamTank().getCapacity()) - { - if (inv.getWaterTank().getFluid() != null) - { - int steam = inv.getWaterTank().drain((temperature / 100), true).amount; - inv.getSteamTank().fill(new FluidStack(FluidRegistry.getFluid("steam"), steam * 4), true); - inv.dirtyTanks(); - } - } - } - - if (inv.getSteamTank().getFluidAmount() < inv.getSteamTank().getCapacity() - 100) - { - if (leaking) - { - leaking = false; - } - } else - { - if (!leaking) - { - leaking = true; - if (!world.isRemote && mustSSSSS) - { - ModNetwork.net.sendTo(new EntitySoundPacket.Message(EntitySoundPacket.LEAKING_STEAM, player), (EntityPlayerMP) player); - } - } - } - inv.setBoiling(boiling); - inv.setLeaking(leaking); - inv.setTemperature(temperature); - } - - public static void elevate(EntityPlayer player) - { - if (player.motionY <= 0.32 && player.posY < 100) - { - player.motionY += 0.1; - } else - { - if (player.posY < 100) player.motionY = Math.max(player.motionY, 0.32); - if (player.posY > 100) player.motionY = 0.32 - ((player.posY % 100) / 100); - } - } - - @Override - public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) - { - onUnequipped(world, player, stack); - player.dropPlayerItemWithRandomChoice(stack.copy(), false); - BackpackProperty.get(player).setWearable(null); - } - - @Override - public void onEquipped(World world, EntityPlayer player, ItemStack stack) - { - InventorySteamJetpack inv = new InventorySteamJetpack(stack); - inv.calculateLostTime(); - if(inv.getTemperature() == 0)inv.setTemperature(getBiomeMinTemp(player, world)); - } - - @Override - public void onUnequipped(World world, EntityPlayer player, ItemStack stack) - { - InventorySteamJetpack inv = new InventorySteamJetpack(stack); - inv.setBoiling(false); - inv.setInUse(false); - inv.setLeaking(false); - inv.setStatus(false); - inv.setSystemTime(System.currentTimeMillis()); - inv.markDirty(); - } - - @Override - @SideOnly(Side.CLIENT) - public ModelBiped getWearableModel(ItemStack wearable) - { - return ClientProxy.modelSteamJetpack.setWearable(wearable); - } - - @Override - @SideOnly(Side.CLIENT) - public ResourceLocation getWearableTexture(ItemStack wearable) - { - return Resources.modelTextures("steamJetpack"); - } -} From 0f53b41a64dde611215078c8229c5f27bb8969e6 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 2 May 2016 13:13:06 -0400 Subject: [PATCH 157/462] Delete GuiSteamJetpack.java --- .../client/gui/GuiSteamJetpack.java | 202 ------------------ 1 file changed, 202 deletions(-) delete mode 100644 src/main/java/com/darkona/adventurebackpack/client/gui/GuiSteamJetpack.java diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiSteamJetpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiSteamJetpack.java deleted file mode 100644 index e3bda14a..00000000 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiSteamJetpack.java +++ /dev/null @@ -1,202 +0,0 @@ -package com.darkona.adventurebackpack.client.gui; - -import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.config.Keybindings; -import com.darkona.adventurebackpack.init.ModNetwork; -import com.darkona.adventurebackpack.inventory.ContainerJetpack; -import com.darkona.adventurebackpack.inventory.InventorySteamJetpack; -import com.darkona.adventurebackpack.network.EquipUnequipBackWearablePacket; -import com.darkona.adventurebackpack.util.Resources; -import com.darkona.adventurebackpack.util.Utils; -import com.darkona.adventurebackpack.util.Wearing; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fluids.FluidTank; -import org.lwjgl.input.Keyboard; -import org.lwjgl.opengl.GL11; - -/** - * Created on 15/01/2015 - * - * @author Darkona - */ -public class GuiSteamJetpack extends GuiWithTanks -{ - private static final ResourceLocation texture = Resources.guiTextures("guiSteamJetpack"); - private static GuiTank waterTank = new GuiTank(8, 8,72, 16, ConfigHandler.GUI_TANK_RENDER); - private static GuiTank steamTank = new GuiTank(116, 8,72, 16, ConfigHandler.GUI_TANK_RENDER); - private static GuiImageButtonNormal equipButton = new GuiImageButtonNormal(150, 64, 18, 18); - private static GuiImageButtonNormal unequipButton = new GuiImageButtonNormal(150, 64, 18, 18); - private boolean wearing; - EntityPlayer player; - InventorySteamJetpack inventory; - int boiling = 0; - public GuiSteamJetpack(EntityPlayer player, InventorySteamJetpack inventory, boolean wearing) - { - super(new ContainerJetpack(player, inventory,wearing)); - this.wearing = wearing; - this.player = player; - this.inventory = inventory; - xSize = 176; - ySize = 166; - } - - - - @Override - protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int mouseX, int mouseY) - { - inventory.openInventory(); - this.mc.renderEngine.bindTexture(texture); - drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - - if(wearing) - { - if(unequipButton.inButton(this,mouseX,mouseY)) - { - unequipButton.draw(this,20,186); - }else - { - unequipButton.draw(this,1,186); - } - }else - { - if(equipButton.inButton(this,mouseX,mouseY)) - { - equipButton.draw(this,20,167); - }else - { - equipButton.draw(this,1,167); - } - } - - - - - - // if(wearing) inventory = new InventorySteamJetpack(Wearing.getWearingSteam(player)); - - - - } - - @Override - protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) - { - this.mc.renderEngine.bindTexture(texture); - if(wearing) inventory = new InventorySteamJetpack(Wearing.getWearingSteam(player)); - FluidTank water = inventory.getWaterTank(); - FluidTank steam = inventory.getSteamTank(); - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - if( inventory.isBoiling() - && steam.getFluidAmount() < steam.getCapacity() - && water.getFluidAmount() > 0) - { - if(boiling < 83) - { - drawTexturedModalRect(28,40,50,172,boiling++,37); - }else boiling = 0; - } - if(inventory.getBurnTicks() > 0) - { - int i1 =inventory.getBurnTimeRemainingScaled(13); - this.drawTexturedModalRect(78, 48 + 12 - i1, 176, 12 - i1, 14, i1 + 1); - } - - int H = Math.round(((float)72 / (float)InventorySteamJetpack.MAX_TEMPERATURE) * (float)inventory.getTemperature()); - drawTexturedModalRect( 139, 8 + (72- H), 40, 167 + (72 - H), 5, H); - - GL11.glDisable(GL11.GL_BLEND); - GL11.glPopMatrix(); - GL11.glDisable(GL11.GL_LIGHTING); - - - waterTank.draw(this, water); - steamTank.draw(this,steam); - - float factor = 0.7f; - - String show = ((water.getFluidAmount() > 0) ? Utils.capitalize(FluidRegistry.getFluidName(water.getFluid())) : "None")+ "-" + water.getFluidAmount(); - - GL11.glPushMatrix(); - GL11.glTranslatef(70, 10, 0); - GL11.glScalef(factor, factor, factor); - fontRendererObj.drawString(show, 0, 0, 0x373737, false); - GL11.glScalef(1, 1, 1); - GL11.glPopMatrix(); - - show = ((steam.getFluidAmount() > 0) ? Utils.capitalize(FluidRegistry.getFluidName(steam.getFluid())) : "None") + "-" + steam.getFluidAmount(); - - GL11.glPushMatrix(); - GL11.glTranslatef(70, 20, 0); - GL11.glScalef(factor, factor, factor); - fontRendererObj.drawString(show, 0, 0, 0x373737, false); - GL11.glScalef(1, 1, 1); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - GL11.glTranslatef(145,8,0); - GL11.glScalef(0.9f, 0.9f, 0.9f); - fontRendererObj.drawString((inventory.getTemperature()) + " C", 0, 0, 0x373737, false); - GL11.glScalef(1, 1, 1); - GL11.glPopMatrix(); - - - - - } - - @Override - protected void mouseClicked(int mouseX, int mouseY, int mouseButton) - { - int sneakKey = Minecraft.getMinecraft().gameSettings.keyBindSneak.getKeyCode(); - if(wearing) - { - if(unequipButton.inButton(this,mouseX,mouseY)) - { - ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.UNEQUIP_WEARABLE,false)); - player.closeScreen(); - } - } else - { - if(equipButton.inButton(this,mouseX,mouseY)) - { - ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, Keyboard.isKeyDown(sneakKey))); - player.closeScreen(); - } - } - super.mouseClicked(mouseX, mouseY, mouseButton); - } - - @Override - public int getLeft() - { - return guiLeft; - } - - @Override - public int getTop() - { - return guiTop; - } - - @Override - public float getZLevel() - { - return zLevel; - } - - @Override - protected void keyTyped(char key, int keycode) - { - if (keycode == Keybindings.openBackpack.getKeyCode()) - { - player.closeScreen(); - } - super.keyTyped(key, keycode); - } -} From c3eeb035a05f131e150e0ada1d8bd797333d4828 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 2 May 2016 13:52:22 -0400 Subject: [PATCH 158/462] Added files via upload --- .../com/darkona/adventurebackpack/item/ItemComponent.java | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java b/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java index 3eb58c02..a2668f73 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java @@ -76,13 +76,6 @@ public IIcon getIconFromDamage(int damage) } - @Override - public String getUnlocalizedName(ItemStack stack) - { - return super.getUnlocalizedName(names[getDamage(stack)-1]); - - } - @Override @SideOnly(Side.CLIENT) @SuppressWarnings({ "unchecked", "rawtypes" }) @@ -256,7 +249,6 @@ private ItemStack placeBoat(ItemStack stack, World world, EntityPlayer player, b @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - LogHelper.info("Damage: " + stack.getItemDamage()); if(stack.getItemDamage() == 7)return placeBoat(stack,world,player,false); if(stack.getItemDamage() == 8)return placeBoat(stack,world,player,true); return stack; From 7b8091092be8531dc5995ad7c7972fed921aabcf Mon Sep 17 00:00:00 2001 From: runescapejon Date: Tue, 3 May 2016 22:56:45 -0400 Subject: [PATCH 159/462] added Halloween and 4, of July Textures --- .../textures/backpack/Halloween.png | Bin 0 -> 3655 bytes .../adventurebackpack/textures/backpack/USA.png | Bin 0 -> 3467 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/adventurebackpack/textures/backpack/Halloween.png create mode 100644 src/main/resources/assets/adventurebackpack/textures/backpack/USA.png diff --git a/src/main/resources/assets/adventurebackpack/textures/backpack/Halloween.png b/src/main/resources/assets/adventurebackpack/textures/backpack/Halloween.png new file mode 100644 index 0000000000000000000000000000000000000000..6bef10fdfa4afebdeffe4d068c58128462b3c3bd GIT binary patch literal 3655 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/adventurebackpack/textures/backpack/USA.png b/src/main/resources/assets/adventurebackpack/textures/backpack/USA.png new file mode 100644 index 0000000000000000000000000000000000000000..7c788f6a9d03416bd89acb28c29f3a3c506b6b09 GIT binary patch literal 3467 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 Date: Tue, 3 May 2016 22:57:43 -0400 Subject: [PATCH 160/462] Uploading Files for beta14 --- .../develop/texturejoining.java | 14 +++++++++ .../adventurebackpack/develop/texturemsg.java | 30 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 src/main/java/com/darkona/adventurebackpack/develop/texturejoining.java create mode 100644 src/main/java/com/darkona/adventurebackpack/develop/texturemsg.java diff --git a/src/main/java/com/darkona/adventurebackpack/develop/texturejoining.java b/src/main/java/com/darkona/adventurebackpack/develop/texturejoining.java new file mode 100644 index 00000000..52f97d7f --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/develop/texturejoining.java @@ -0,0 +1,14 @@ +package com.darkona.adventurebackpack.develop; + +import net.minecraft.entity.player.EntityPlayerMP; +import com.darkona.adventurebackpack.develop.texturemsg; + +public class texturejoining +{ + private EntityPlayerMP player; + + public void onPlayerLogin() + { + texturemsg.handleJoin(player); + } + } diff --git a/src/main/java/com/darkona/adventurebackpack/develop/texturemsg.java b/src/main/java/com/darkona/adventurebackpack/develop/texturemsg.java new file mode 100644 index 00000000..1c8a914e --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/develop/texturemsg.java @@ -0,0 +1,30 @@ +package com.darkona.adventurebackpack.develop; + +import java.util.ArrayList; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.EnumChatFormatting; +import com.darkona.adventurebackpack.develop.ChatHandler; + +public class texturemsg { + public static void loadDev() { + } + private static ArrayList textureUUID = new ArrayList(); + static + { + //add uuid to list Graphic Designer who had work with this mod + textureUUID.add("a06c96be-f9d0-4074-8cad-500a0c311761"); + textureUUID.add("9932b533-00b3-4d05-bac8-288500df7c9d"); + } + + public static boolean istexture(String uuid) + { + return textureUUID.contains(uuid); + } + + public static void handleJoin(EntityPlayer player) + { + if (istexture(player.getUniqueID().toString())) { + ChatHandler.sendServerMessage("" + EnumChatFormatting.AQUA + "❤AdventureBackPack Mod Graphic Designer❤ " + EnumChatFormatting.UNDERLINE + player.getDisplayName() + EnumChatFormatting.AQUA + " has joined."); + } + } + } From 0f3df40634befbc43e8a3427d3e962cddc6cf09d Mon Sep 17 00:00:00 2001 From: runescapejon Date: Tue, 3 May 2016 22:58:30 -0400 Subject: [PATCH 161/462] Uploading Files for beta14 --- .../com/darkona/adventurebackpack/item/ItemCoalJetpack.java | 4 ++-- .../com/darkona/adventurebackpack/item/ItemCopterPack.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index d849796d..b87ee92a 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -243,8 +243,8 @@ public static void elevate(EntityPlayer player) player.motionY += 0.1; } else { - if (player.posY < 100) player.motionY = Math.max(player.motionY, 0.32); - if (player.posY > 100) player.motionY = 0.32 - ((player.posY % 100) / 100); + if (player.posY < 256) player.motionY = Math.max(player.motionY, 0.32); + if (player.posY > 256) player.motionY = 0.32 - ((player.posY % 256) / 256); } } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java index a36ae594..41909f0a 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java @@ -124,8 +124,8 @@ public String getArmorTexture(ItemStack stack, Entity entity, int slot, String t public static void elevate(EntityPlayer player, ItemStack copter) { - if (player.posY < 100) player.motionY = Math.max(player.motionY, 0.18); - if (player.posY > 100) player.motionY = 0.18 - ((player.posY % 100) / 100); + if (player.posY < 256) player.motionY = Math.max(player.motionY, 0.18); + if (player.posY > 256) player.motionY = 0.18 - ((player.posY % 256) / 256); } @Override From 0503bae99f6c705d10744103910bdd99db7cdc8e Mon Sep 17 00:00:00 2001 From: runescapejon Date: Tue, 3 May 2016 23:04:50 -0400 Subject: [PATCH 162/462] Fix msg bug --- .../java/com/darkona/adventurebackpack/develop/texturemsg.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/develop/texturemsg.java b/src/main/java/com/darkona/adventurebackpack/develop/texturemsg.java index 1c8a914e..036df81c 100644 --- a/src/main/java/com/darkona/adventurebackpack/develop/texturemsg.java +++ b/src/main/java/com/darkona/adventurebackpack/develop/texturemsg.java @@ -24,7 +24,7 @@ public static boolean istexture(String uuid) public static void handleJoin(EntityPlayer player) { if (istexture(player.getUniqueID().toString())) { - ChatHandler.sendServerMessage("" + EnumChatFormatting.AQUA + "❤AdventureBackPack Mod Graphic Designer❤ " + EnumChatFormatting.UNDERLINE + player.getDisplayName() + EnumChatFormatting.AQUA + " has joined."); + ChatHandler.sendServerMessage("" + EnumChatFormatting.AQUA + "~~AdventureBackPack Mod Graphic Designer~~ " + EnumChatFormatting.UNDERLINE + player.getDisplayName() + EnumChatFormatting.AQUA + " has joined."); } } } From 8ef51ae28b537189fe2690c92afd66e91908b4c4 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Wed, 4 May 2016 17:59:29 -0400 Subject: [PATCH 163/462] Fixed a bug --- .../adventurebackpack/item/ItemComponent.java | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java b/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java index a2668f73..89787773 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java @@ -76,9 +76,16 @@ public IIcon getIconFromDamage(int damage) } + @Override + public String getUnlocalizedName(ItemStack stack) + { + return super.getUnlocalizedName(names[getDamage(stack)-1]); + + } + @Override @SideOnly(Side.CLIENT) - @SuppressWarnings({ "unchecked", "rawtypes" }) + @SuppressWarnings("unchecked") public void getSubItems(Item item, CreativeTabs creativeTabs, List list) { for (int i = 1; i <= names.length; i++) @@ -105,38 +112,31 @@ public boolean onItemUse(ItemStack itemStack, EntityPlayer player, World world, int i1 = MathHelper.floor_double((double) (player.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; byte b0 = 0; byte b1 = 0; - if (i1 == 0) { b1 = 1; } - if (i1 == 1) { b0 = -1; } - if (i1 == 2) { b1 = -1; } - if (i1 == 3) { b0 = 1; } - if (player.canPlayerEdit(x, y, z, meta, itemStack) && player.canPlayerEdit(x + b0, y, z + b1, meta, itemStack)) { if (world.isAirBlock(x, y, z) && world.isAirBlock(x + b0, y, z + b1) && World.doesBlockHaveSolidTopSurface(world, x, y - 1, z) && World.doesBlockHaveSolidTopSurface(world, x + b0, y - 1, z + b1)) { world.setBlock(x, y, z, blockbed, i1, 3); - if (world.getBlock(x, y, z) == blockbed) { world.setBlock(x + b0, y, z + b1, blockbed, i1 + 8, 3); } - --itemStack.stackSize; return true; } else @@ -178,8 +178,7 @@ private ItemStack placeBoat(ItemStack stack, World world, EntityPlayer player, b Vec3 vec32 = player.getLook(f); boolean flag = false; float f9 = 1.0F; - @SuppressWarnings("rawtypes") - List list = world.getEntitiesWithinAABBExcludingEntity(player, player.boundingBox.addCoord(vec32.xCoord * d3, vec32.yCoord * d3, vec32.zCoord * d3).expand((double) f9, (double) f9, (double) f9)); + List list = world.getEntitiesWithinAABBExcludingEntity(player, player.boundingBox.addCoord(vec32.xCoord * d3, vec32.yCoord * d3, vec32.zCoord * d3).expand((double) f9, (double) f9, (double) f9)); int i; for (i = 0; i < list.size(); ++i) @@ -253,4 +252,4 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla if(stack.getItemDamage() == 8)return placeBoat(stack,world,player,true); return stack; } -} +} \ No newline at end of file From 036c71e57a54a879f8e65b65f4305dbdc26ab3e4 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Wed, 4 May 2016 17:59:54 -0400 Subject: [PATCH 164/462] Added files via upload From 7905984cb556e07387623a092f6e00f4bc2a4884 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Thu, 5 May 2016 20:37:13 -0400 Subject: [PATCH 165/462] Fixed Crafting bug --- .../darkona/adventurebackpack/init/ModRecipes.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java index 8445b79b..af29c7d9 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java @@ -265,16 +265,16 @@ public static void conditionalInit() 'I', Items.iron_ingot ); - //CoalJetpack (Broken Test out) + //CoalJetpack GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.CoalJetpack), "SWT", "GIG", "FWS", - 'W', "plankWood", - 'G', "ingotGold", - 'I',"ingotIron", - 'S', "Stone", - 'F', "Furnace", + 'W', Blocks.planks, + 'G', Items.gold_ingot, + 'I', Items.iron_ingot, + 'S', Blocks.stone, + 'F', Blocks.furnace, 'T', new ItemStack(ModItems.component, 1, 2) )); } From b110ab62059973d7f9e619c3a9eb5bf0857ef05e Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 6 May 2016 20:42:47 -0400 Subject: [PATCH 166/462] testing new feature --- test.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 test.json diff --git a/test.json b/test.json new file mode 100644 index 00000000..35d7eac9 --- /dev/null +++ b/test.json @@ -0,0 +1,16 @@ +{ + "Dev": { + "capeUrl": "http://xbony2.github.io/resources/capes/nc_cape.png", + "users": [ + "runescapejon", + "ModdedNetwork" + ] + }, + "Guy who just deserves it :P": { + "capeUrl": "http://xbony2.github.io/resources/capes/earth_games_cape.png", + "users": [ + "HorrorCaster", + "HorrorCaster01" + ] + } +} \ No newline at end of file From 98c5393d2e7c1aab2621259acf5a3608a4089a56 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 6 May 2016 21:19:20 -0400 Subject: [PATCH 167/462] Added files via upload --- capes/mn_cape.png | Bin 0 -> 11295 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 capes/mn_cape.png diff --git a/capes/mn_cape.png b/capes/mn_cape.png new file mode 100644 index 0000000000000000000000000000000000000000..85212e2dfa095ed01639f0d66c69ac78ce8bb082 GIT binary patch literal 11295 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 QF#dv+ Date: Fri, 6 May 2016 21:20:18 -0400 Subject: [PATCH 168/462] Update test.json --- test.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test.json b/test.json index 35d7eac9..84b31beb 100644 --- a/test.json +++ b/test.json @@ -1,6 +1,6 @@ { "Dev": { - "capeUrl": "http://xbony2.github.io/resources/capes/nc_cape.png", + "capeUrl": "https://raw.githubusercontent.com/runescapejon/AdventureBackpack2/master/capes/mn_cape.png", "users": [ "runescapejon", "ModdedNetwork" @@ -13,4 +13,4 @@ "HorrorCaster01" ] } -} \ No newline at end of file +} From 3f6bb169bde9da639c54d0cabf43b27dff6159e1 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 6 May 2016 21:31:50 -0400 Subject: [PATCH 169/462] Added files via upload --- capes/fx_cape.png | Bin 0 -> 20365 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 capes/fx_cape.png diff --git a/capes/fx_cape.png b/capes/fx_cape.png new file mode 100644 index 0000000000000000000000000000000000000000..cf8b72ae783fd92bc738526196e7c986267ceddf GIT binary patch literal 20365 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 literal 0 HcmV?d00001 From 4465832555d484a46064c525254be01a857b81dd Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 6 May 2016 21:40:33 -0400 Subject: [PATCH 170/462] Update test.json --- test.json | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/test.json b/test.json index 84b31beb..41b9177e 100644 --- a/test.json +++ b/test.json @@ -6,11 +6,16 @@ "ModdedNetwork" ] }, - "Guy who just deserves it :P": { + "LazerCorn3114": { "capeUrl": "http://xbony2.github.io/resources/capes/earth_games_cape.png", "users": [ - "HorrorCaster", - "HorrorCaster01" + "LazerCorn3114" + ] + }, + "Fxzionz_Pure": { + "capeUrl": "https://github.com/runescapejon/AdventureBackpack2/blob/master/capes/fx_cape.png", + "users": [ + "Fxzionz_Pure" ] } } From 98441c88f44ad99d4d92e7b1adddf6b5c2fd6aa1 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 6 May 2016 21:40:51 -0400 Subject: [PATCH 171/462] Added files via upload --- capes/lazer_cape.png | Bin 0 -> 35167 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 capes/lazer_cape.png diff --git a/capes/lazer_cape.png b/capes/lazer_cape.png new file mode 100644 index 0000000000000000000000000000000000000000..9de109c7e797f8ccd8d2a2e0ac05e90081ec510b GIT binary patch literal 35167 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 T3rQoIZCZJG__^1fBeMSm_}wy> literal 0 HcmV?d00001 From 064383425dfb971a7c344439a8d3b839911ad252 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 6 May 2016 21:41:35 -0400 Subject: [PATCH 172/462] Update test.json --- test.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.json b/test.json index 41b9177e..acc699b1 100644 --- a/test.json +++ b/test.json @@ -7,7 +7,7 @@ ] }, "LazerCorn3114": { - "capeUrl": "http://xbony2.github.io/resources/capes/earth_games_cape.png", + "capeUrl": "https://raw.githubusercontent.com/runescapejon/AdventureBackpack2/master/capes/lazer_cape.png", "users": [ "LazerCorn3114" ] From f88dce56080e51b2ef924116d631cede74ae3bfc Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 6 May 2016 21:41:57 -0400 Subject: [PATCH 173/462] Update test.json --- test.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test.json b/test.json index acc699b1..ad75d198 100644 --- a/test.json +++ b/test.json @@ -3,13 +3,13 @@ "capeUrl": "https://raw.githubusercontent.com/runescapejon/AdventureBackpack2/master/capes/mn_cape.png", "users": [ "runescapejon", - "ModdedNetwork" + "ModdedNetworkss" ] }, "LazerCorn3114": { "capeUrl": "https://raw.githubusercontent.com/runescapejon/AdventureBackpack2/master/capes/lazer_cape.png", "users": [ - "LazerCorn3114" + "ModdedNetwork" ] }, "Fxzionz_Pure": { From 50d497cc32ce6a20368d60a7675cf8f19354f64e Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 6 May 2016 21:57:32 -0400 Subject: [PATCH 174/462] Added files via upload --- capes/lazer_cape.png | Bin 35167 -> 26676 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/capes/lazer_cape.png b/capes/lazer_cape.png index 9de109c7e797f8ccd8d2a2e0ac05e90081ec510b..d75a150e5362ea808575481e54fc0431e93b4b4d 100644 GIT binary patch literal 26676 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 re>}Q8D_tr(`uA>}|2H4pC41 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 T3rQoIZCZJG__^1fBeMSm_}wy> From 327bc31c7e46b42f8da66bc4da366aed0df82599 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 6 May 2016 21:59:02 -0400 Subject: [PATCH 175/462] Update test.json --- test.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.json b/test.json index ad75d198..b9583b2a 100644 --- a/test.json +++ b/test.json @@ -1,6 +1,6 @@ { "Dev": { - "capeUrl": "https://raw.githubusercontent.com/runescapejon/AdventureBackpack2/master/capes/mn_cape.png", + "capeUrl": "https://raw.githubusercontent.com/runescapejon/AdventureBackpack2/master/capes/lazer_cape.png", "users": [ "runescapejon", "ModdedNetworkss" From 98e5cf3924150cc12cf433d969c0becc0fd603e8 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 6 May 2016 22:02:50 -0400 Subject: [PATCH 176/462] Added files via upload --- capes/royal_cape.png | Bin 0 -> 31002 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 capes/royal_cape.png diff --git a/capes/royal_cape.png b/capes/royal_cape.png new file mode 100644 index 0000000000000000000000000000000000000000..11cdb2615fafccb9ee5cfc35866369bb441ef537 GIT binary patch literal 31002 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 Date: Fri, 6 May 2016 22:04:22 -0400 Subject: [PATCH 177/462] Update test.json --- test.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/test.json b/test.json index b9583b2a..6b9d2fcf 100644 --- a/test.json +++ b/test.json @@ -1,6 +1,6 @@ { "Dev": { - "capeUrl": "https://raw.githubusercontent.com/runescapejon/AdventureBackpack2/master/capes/lazer_cape.png", + "capeUrl": "https://raw.githubusercontent.com/runescapejon/AdventureBackpack2/master/capes/royal_cape.png", "users": [ "runescapejon", "ModdedNetworkss" @@ -17,5 +17,11 @@ "users": [ "Fxzionz_Pure" ] + }, + "RoyalDemonic": { + "capeUrl": "https://raw.githubusercontent.com/runescapejon/AdventureBackpack2/master/capes/royal_cape.png", + "users": [ + "RoyalDemonic" + ] } } From 95120fcd99927181fee1fa748574c7edb6ee9556 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 6 May 2016 22:05:25 -0400 Subject: [PATCH 178/462] Update test.json --- test.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test.json b/test.json index 6b9d2fcf..b2060418 100644 --- a/test.json +++ b/test.json @@ -3,13 +3,13 @@ "capeUrl": "https://raw.githubusercontent.com/runescapejon/AdventureBackpack2/master/capes/royal_cape.png", "users": [ "runescapejon", - "ModdedNetworkss" + "ModdedNetwork" ] }, "LazerCorn3114": { "capeUrl": "https://raw.githubusercontent.com/runescapejon/AdventureBackpack2/master/capes/lazer_cape.png", "users": [ - "ModdedNetwork" + "LazerCorn3114" ] }, "Fxzionz_Pure": { From e176d1927ef1dd19c4751cff7c410286aab9c07c Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 6 May 2016 22:08:26 -0400 Subject: [PATCH 179/462] Update test.json --- test.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.json b/test.json index b2060418..e0fb886e 100644 --- a/test.json +++ b/test.json @@ -1,6 +1,6 @@ { "Dev": { - "capeUrl": "https://raw.githubusercontent.com/runescapejon/AdventureBackpack2/master/capes/royal_cape.png", + "capeUrl": "https://github.com/runescapejon/AdventureBackpack2/blob/master/capes/fx_cape.png", "users": [ "runescapejon", "ModdedNetwork" From f545e8c99994fdfa2824d7ea9a213f8d9aebe0ef Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 6 May 2016 22:09:54 -0400 Subject: [PATCH 180/462] Update test.json --- test.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test.json b/test.json index e0fb886e..7ddcc189 100644 --- a/test.json +++ b/test.json @@ -1,6 +1,6 @@ { "Dev": { - "capeUrl": "https://github.com/runescapejon/AdventureBackpack2/blob/master/capes/fx_cape.png", + "capeUrl": "https://raw.githubusercontent.com/runescapejon/AdventureBackpack2/master/capes/fx_cape.png", "users": [ "runescapejon", "ModdedNetwork" @@ -13,7 +13,7 @@ ] }, "Fxzionz_Pure": { - "capeUrl": "https://github.com/runescapejon/AdventureBackpack2/blob/master/capes/fx_cape.png", + "capeUrl": "https://raw.githubusercontent.com/runescapejon/AdventureBackpack2/master/capes/fx_cape.png", "users": [ "Fxzionz_Pure" ] From 5d450ddc67fa6386ac56438e37465ef03ff7a002 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 6 May 2016 22:14:55 -0400 Subject: [PATCH 181/462] Added files via upload From 439acb03eda23877229a24d6c53fa244ccd4e49f Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 6 May 2016 22:15:03 -0400 Subject: [PATCH 182/462] Added files via upload From f645abec303a51215a880290ec1fe13d844d61e8 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sat, 7 May 2016 07:34:37 -0400 Subject: [PATCH 183/462] Added files via upload --- capes/lazer_cape.png | Bin 26676 -> 15020 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/capes/lazer_cape.png b/capes/lazer_cape.png index d75a150e5362ea808575481e54fc0431e93b4b4d..7f3f82f713139098e65f3fecede79026268f8dd7 100644 GIT binary patch literal 15020 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 re>}Q8D_tr(`uA>}|2H4pC41 Date: Sat, 7 May 2016 07:35:18 -0400 Subject: [PATCH 184/462] Update test.json --- test.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.json b/test.json index 7ddcc189..95bb8189 100644 --- a/test.json +++ b/test.json @@ -1,6 +1,6 @@ { "Dev": { - "capeUrl": "https://raw.githubusercontent.com/runescapejon/AdventureBackpack2/master/capes/fx_cape.png", + "capeUrl": "https://raw.githubusercontent.com/runescapejon/AdventureBackpack2/master/capes/lazer_cape.png", "users": [ "runescapejon", "ModdedNetwork" From 6dbd01f1de6705eab108dbf8d0b626dc3476673d Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sat, 7 May 2016 14:47:40 -0400 Subject: [PATCH 185/462] Added files via upload --- capes/test.png | Bin 0 -> 10181 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 capes/test.png diff --git a/capes/test.png b/capes/test.png new file mode 100644 index 0000000000000000000000000000000000000000..da17d7293ee4324e3c337047824b62c34a093189 GIT binary patch literal 10181 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 Date: Sat, 7 May 2016 14:48:39 -0400 Subject: [PATCH 186/462] Update test.json --- test.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.json b/test.json index 95bb8189..68b52661 100644 --- a/test.json +++ b/test.json @@ -1,6 +1,6 @@ { "Dev": { - "capeUrl": "https://raw.githubusercontent.com/runescapejon/AdventureBackpack2/master/capes/lazer_cape.png", + "capeUrl": "https://raw.githubusercontent.com/runescapejon/AdventureBackpack2/master/capes/test.png", "users": [ "runescapejon", "ModdedNetwork" From 1356a5a8202a76af6d9b5b6dc0ae68d781ca8c5f Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sat, 7 May 2016 14:50:59 -0400 Subject: [PATCH 187/462] Added files via upload --- capes/test.png | Bin 10181 -> 7731 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/capes/test.png b/capes/test.png index da17d7293ee4324e3c337047824b62c34a093189..36c99187fe44e5cd7b637e998072146525c42dce 100644 GIT binary patch literal 7731 zcmeHsS5y>Hvu+P*NCEBN5ERK#K@kQNMMNYEf&&AH zAV?G>XUSoZoMt%ff7Uq<_u;Z`A6#~T^wUZCZo1pwdz3aMob z0A%1J1fZq@Z|!NlE&y=(1f`{MH{{jk6gtUsETaD}LAmaEByM=ZdHUy9PHFiRn&(bg zKunfaW%5mCX$n$eONbVt^Ru8Z1M?IqdliO>Vpo z`IUoeisbC)QE@oFBYcyOdY* zI6{!nmIGaIBP0W68lN=vi}0Fi?|Wim$@S$}6eTMqEBcr}&K6Ruw0cS8)Jqtp;#@mr zi+n@rj~@@gCA<#nlvq@>*@WB0JQMk;uysEdhEn-j@uI$`p9@3rfG_SSKK-S>*t99> z@~6|D)HX$(wNDVAg=>^h1lJDM| zuPM8L#Cvs_)tx#?`Vvn@`gYXTBz}gbH~pXT;GFYvTOiFL5O4#R8qp+ z^XR-)emhRc$;&>1t4#I!4dauDE=q=&G6u+Oqd!lM{CW(MZArXsuk^_5JL^d-^~rt4NH{s>VNuS|IuLzXO~aT zAy$#U(REoGrLyndY*#r|KFBqsve4dVP^&E3Lszudf%iK{bC1()zvz2OkIV@8K*?c8 zUQlBBdeVv?)F}7RI1H5$K#&2zt)iFvzm6YnQ>wvLyN}HhZOhH~chXCT-6w6W?gvIx z2|YHj4iiQ-Oh}Mpbl$Waw`*Tly;O3ZqES6yAK^$YvSDQSzu#Yrtpqd%5C$&?Qb)fQ z6ZsT1J}!wGoHFAClDgzpg66FIhDDqGGIyA8xRZ7Yt&ksYukKSHdoMHbSx^Q1aPPaw zp)#$62e1e%xx7BpEL{;~%yodCop7BGagw=a2U~+Qa_*iyM}y1%ThERk_k`f~fS` zH>2myH!O%KvFX72Qt9xW%veI?2^K(h=i@#qKE0d>nZjxxkzor*tOs>0=gL=ed4KSqAKKb37Tq z%*21i6Fy~JygJ*d4} z0*_03e^K#wL8kqZg&-R$Bjwuz2!dq=LHq?_EBsukyIcpc!Sn)??Auv?& z@0NE!?;VC!Lf|fUw@M-1?FtVWPv3A8Ks=obva{)i5sV9vEj>HC#xCB8wA^UEkx>{ygoeYq&|_m zMlwDQh9^@?0n0DOL2s8Y8gh7Z%D1||^z>nQa^iYF4ta|}9<;SSbM}~0h46~6N$%mL z-ev*jd`V<*Q?5})QKP$r5Ktn^4E!YTyF9DnPkesc>(0~xHR5&0^b5M*WBV?yRL1_x z^O*ZB7Xj4ZYH$Tmz!8c-cTAUA!0Tvg#QY%}qJBjlz${NRF5>`Z|Kx72=cW6j$c~&k z5LDmDS_1uqf;Otf`KIK^V=h&8z~D#TD=LmwfzUtHKlMLT3*;qkk)^@%LNh6WT)g%Q zX^MibU-G1G{W9`U|J=ELVza8g0>AMEH%RRbqCr4oFk5^P(^JX#F>GkQku_{n;a-|^ ze0ySSZ6q%MhG+@6Q#_sg=ZO=B(3IEQKNBB;Xz_)HapFhfBegz)Co6xf+>e3f-%p27 z)@|Gi%nE`Y+eUB}d%`TAC~6SpTOp3QWIwl3+zd4Vpf9MDHdqk@?;)ISsaV)s>Vawi zbfXz92qOPxlCN9gM%v-j^vwNv2ERhFqjCSh-zEMYNBaKwXX#zqEsirs-}CiO?8ELk zq@rg9wJV!+H>s4_SN3^@gf_mgRU*^cEtCG~n*!s1(&qIPgW7)K?$7IkqS{8Qo9s0>>jDOf$ z;f;$qh52O{a|AXOK4D+RR%lXp`1(e}P`YA3oj75v?vK^-VC(eMz?XqQ& z9s=FhBx3dHRA&ylru(~jlPqbx84~%h$TKqk@v}>2qMoge@H6AJktXejZVywfqO}Ze zm7Z>C@obp=3^Nz6yO~vJ^u~6%eSPE$PVM=zYrI^0It(S+75xsdJ?Mm(jW2Jg-fFu0 zNA2s_!uMN$23vy~@+pSAQyBTBoH)k@nQIOVTiDIbR=j&N6DSk5VB)7BE)sgg|M{CK zC-9BKZD_qHV0jGPfV+7$y;O(P7_$itq!TB{Q%)g)I#Lk?5jO4~f{cTqbZ3ee?AU(;N&)tx;9r%P7aJW3!PETDV zl~IM%(0M77OvuM7yuGfM5x~XsBR2F_{6w9QCEHkf_cD)aP~Vluo#9EDSn_Lh4sQWw z0Y0816Q*%fb7XA2jrT<2L|&MMVMXOVcw)L>A7kybMn=)ErG5y4+M#30|5ln)bg8-j z+P<7V!E8#u%b)VZO8ZZtS~>5N(b&qGGf5-0S1tQUS(EEGYFJh^hc5|glK}03H=U=A z0CNQsGP`cV`Wte3Gvi*PPS>uS!uIcA6ctrQQP^N1Ii~#>z10}tCh3CTG5)jGri>-F z(%HN+w2q?`;SZy&V)SlS6n;9RHw6^k?uV z(hnP?9W+a3Y$~av>V{#9t-YJiQh~J+WbLMCNXx#AF3__nm(4gztFO{bU;ZQR6_Gj_ z2>GXNj~&8>h#i9e2=0HpHU8|A2G?po%Uvjt9&dhDJcg`)!6GiU(=y@TI{rtL{#Hgn z`O8S4pUkX)M8*G{a~C?8s(Bcd%p>}hX1}h&@gYB={(9tUMMlnP3A@E7ZD-4gTAD(W zv?cl9Q3Un(kIQ;eVv01tWeNPn2smRdbgJ8_Uv9GNi(=iu+It=}9XzKgpVAwG*HHzy zZ9Ie-@fR2Lo)B#EzfOTN0-%gvSK&$L(Ia?}$N{8lcgKp@%p&IO&LpV4*cwf8sS#=? zDzy4(SOo}RVW>Cn_<#p^k=PHt=f`dLQ~=9HI@Sjpk#Y|FaqO9SpszRPL;@AGQV2o> z!g0Cq%WCaH+j%3ZJZ3&{qEEg+*B%!{qtv0&$ViB@6&xn(v9p~%;rmC6%CT<`7kXmC zg-{t=%DOCoP4u*MwxMnx%d2ZZXB1l~Ve(V+CBXNhYX!=2#-pZHv2!KkB$rWM<)dx$ z%s^D}Y}X$kM~$w$g+`lw}5 zug4=aI_nI@skQHXJ}&UehOK6)RJCDTWd|+?TE$Mx&=nmcMi+iJGfeU`A74#xzg+Gl z+5IiVUlO1ei2KN(*0mxL8z5jTHPoH-2yyG8rrGDQe=LDhmI%yV_r0VNMK4tm$m9Er z%GX0-X99>8M8)FJ@b66oQ$2qz4+0WJ>4giqah^6{8%Y zdsXAQ$^MtFERfS@z^43DyeVc2X-cK>{xjW22f-dS&kvg@8DUqqc^m>>k!<*TyrGn` zS6QmLp4IL3Al$d;`4cF0!6fU_Jx~U*fUt?YpMJ7i_GozV(eLBD8@}&fvDC|4*T))< z51@;)knMt*S4HW$-NG(lKoR^NIVK`0a9TcTDxx^6v&u6YD42gKp1yqiZNFnW>S_ZW z=zZ^atbsJl#sU+(vihs7Q3@M<4{l^V&|CUSWkZwtK<%=Ni}H;7zNk zMq6&0R!IlvphMAO7mboTxzvXGD3pF^gJtz%N-%A~JjDzvXLlRcSn&G~f7W)6?m&PA znJuU+Gy%MEfgm$_pO-)ZG=psG+sA&I5gmm%_KtOF*7m*A=}4i3$A3+qPU&6ov-(3+ zB?@Y=xyb%wWWpwlz|s=)X3%U2W1h?B^v?}L6yIF?Hcd70aq)30~ zvjZA`zPna?N&uCNj?Ok6HU*#6T8i=7d#JYBkKCVbymhNuiIyLwLYLx6JL{AhP%61$ z9L{P2cqQOKMSJ#7?Y~?JGvb|DxTvJ-NTU>0$1Q*w6zix5lYR_6=qmp+x|?>)-1fPG z1K-5+K>p9#l}nEz3nPlDOU){W_^hAbm~fBX*6E6gp;CU#9u0rA=i*p<&rkpqm5_(1 zGn{E@qshsEPU^YgtmBC5Cr;+b)pdLb02+$A%L&+&i&>K;yz%N5PZ!G+WkWRDJ-n#l}UOlda!;%emP1dHqEz z2yh`RP(XhccWKeQKA0Rhf@mJ8;^}TW(bQ{j0vkM(zAaeTYK_v~Lwuj%n@ggtb*OR;` zLwJsM)9Vf~();K64Czd~ug{cs3U{ERUmD<0_o3>Mz4hmCo!Q8pdBY#SuskMU@vib} z4Vcx%U>UdbNW02i*2LiAO71Dqlhixx(bm7*7t>2wTCK;v)bVv)I z@Jj#U2LQ8pS>}6Cn1vm=MGN}0;4lP{UB%8v0hFAd$A0mq`rEcTP)KjdJW;4e(NHuL zZ8SY1I$rb|sA}|WL@fho>g!%MtNR} z0FFK(-!rPyqqsPEE@E?=lX5@o$(OPnt<0P&#y0P7b|Pc2(g>?$)nAlgus<@T0*>vd zNM^6)R~X6rpXks#m8<`fZYB$tXju+!ih>;dN?0e+ZnubEJCV^m63{$y>%yJ2anb84 zYB#jp-qgS5;qwl;XdBmmRcx!Yk~FM~q~mOZ+zfTk-yTX=w968H4q5{bARg z`3!7I=sE#Rr@zM9WD#A_m%3_!m?r;t^5oU>ExSbydN!q`tqH!LbBy}rtoMwI^>3|P z2O1X}Sj1gZ-8s-_AqVTQ)Gol@yXj1I^6lf6=wJ`e!)IO$L#5bPfPH{d)Bxd6oGxG{ zFayg#5~X>>k%}xyK_p;zS9i=6mGMp@cE@w#x9?mx-(y|AsU~&<{G{^Hw{neA8eHW0 z3$8RGpe{iimN`)gjKYb zTz^k%JxCey30U#$Cqh%x&vDrrYf%*Mp2CME>A#4Q)qA#lW48O${f`xihb47p8AS_VxZicE_Ne8zrm_+$w}X0D zO<{Wvu!cF;T;t!|;>r?(D$;&u;YeCKG-O?6GXgdJSZz(#OQKJ~8{Z*u=oL%;0^_mG zJ!#)}xQhPjp~v+nb{0UB;$C>ZoLG*Gn^Er_;R|aO{sw#nI=A#-&&LuXTB)=Lgg>i3 z*!wJZ;uJt#IA82m+r{T7$3pxJwtDKgwqdFr^$=USuio1*V10c%U(_MUd6^Zz&KJ{6 z3hIQ?Ev(@s9*k%ze}Z#3=0KZX&U&cAT^T|Weq3j%`EiuI-R9Z9;W9tb%|F+7a29p{ zh1EgK(7fHK?bytE>zVR+bHL+%HQoCRn9=Ul#q-SVXgHUfR^yrM_Z#Hl4?q3@F$>|4 z-Qz(3)KzRMCZ3YuC!*VYkr7|XeMkmT=sA8vydH*8^r$>|+QQY(E?jX$*>LjkXiDqF zhRf;bv|vQ4|9+jkbr>C5;&iD#y^}9N>c$99^S9LO;S=BcN{6qdp=aYS&r=zUV&eNlXB_hc~0l?CXUFhT*_x@zss(> ze41TqerDdNjh1NDvLOdEb9@jtwsx=`Gax?K@DtbRMcH*)LLAV=7 z{0G54o14-rtyVF9Dfc_AB)D+9$Vjr2ZNo0jz9bmL|#I~rYS0BEwFynj;G$y z3!yW1+{a*Qy9neiGK<#=cm}Tx*Zwy$pH5IhcZv5jWg8YQ=6F0y&cB`bx0)GDFQyF4 z04qM2gOTjJcS#~y)Bff9p>cHven>U9Oqjz8?XuYE65A;h0zpQPTF2HPd2oq*8LrIL z+6i=l)SM;f3O7~LEgn5f=eKt&@!YG||88(isrAoeFh(+CC;&-(sYDlc1CFV}+TM#E z`RcyBf*_mT^*(Yj6j5<_@5jw0yD=$e;Usd=yU%w^k)$qlqjlrw=DpG4OR5z=aP}^ZjFVAWcF4lXs4+v9BxA z*d_Kxg^=A?%(}NBvB16lWFIrEwe~ssf^nVPWgk0@wIQ1IG-qAg1plzFK0il;GhwT? zzAy;hd+9_Wjyx7@=bo2W5`KnS#8kW_k541mDjTPHzuRnoqG}aZpg#4l?lM$y<;6&( z9`Lm-VGQ@rz0t>SwpZRv$nVhPs6w$v3a$!;bsZvYRd=0=C&{N;2JvwW_n4_AEu_4Ff|{B2g@DnXZ>X4j>DgPOr&@TC?FcKiF8_~m zKV(R>0#XK}LovdK%GBgwt%16B=RQ`o|3gC%2O6lcO1om-tZt5I%xZFF^{lFW{~a(1^CLnY|j2;rNdWe^maUjcNQ6{u67y2&)0vXyaPF zE|5=||H-v2^|FR_C_bB`Px@#h3$B|{WU?%_3-Eli=*5UDRpE$G2e8Qr>YM~ma+Z`{ z25IGpIi`W7N-v5USmV)W&Sz8YyPN?-MRee(3T{Ed<5r;%y^XN1;6LEo|9}0zUICSE a65MNhW?lWM_BMDJ44||Pv_5ItKl(34es(DU literal 10181 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 Date: Sat, 7 May 2016 15:03:30 -0400 Subject: [PATCH 188/462] Added files via upload --- capes/test.png | Bin 7731 -> 8293 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/capes/test.png b/capes/test.png index 36c99187fe44e5cd7b637e998072146525c42dce..9595be50bc090685dabd59d9976de9a1bf0fe569 100644 GIT binary patch literal 8293 zcmeI2cTiK^xA#M6A_@r7yF@wyA|M?>N<>gW=@6>)BE5trU_^T8-GX!}LICL^9qA?X z06}`_CA4sZ&+mEXow;-WyMNx9%$&@ebM{&5yVm~fwe~p?&$ZNUUT3-v003@+)gNmE z06_d-0>CvA{GmOr-v$8S0DvDqdg+sine~sdnlzc%-TqO-CU;Tfi|OC$FJ-Tvr|NYh z0!vVHICc{4aDgr#E&9+>t1xgrdVhO*Ly#?3ReWhM(Yd?6hq){=QL+PL0+Du689rYa;es zYS1G6rfowV)_a09gi`ZjXO=IlS@qgBQ7JwBo=L51{CO{X*tm9*k>e&!3pP1j4NA69 z(f;Q-e9J_9en?N6=C~Z8Crx<#5G?@adHKcGUCZUuc<|iPALyKvw1$OgL)R(&{nbCu zHHzlU2eT!cte5E_;Nd8HwF}M|h(3WA_ehd)9n4YZycL5xW1X;XeS#kKmS`&P!ajk= z&>wNtFxr1o<+vaM<*;Z>hMjkQ2!f5^CVA!sEbY95z28XEnu;s=Fqhx(h}77XmOWJ7 z8J&JtYCRaSvn@}GVZC-?*2cUuN=b#f(Cc)O6(w!K_DeQ}x#D8ZiNJN8iAR926;5BT zJ-=f~Rg~Ji5ss+Ix9F;+n zuuf&LZeUU3uJxzgB#@?_Jdx{0C>&WbJfEDVJ-;9V7;a5ULFfxWA^# ze9!ou5gDkr9nnCVqE{4@^`Dzx%@OWcbhqDpZyBybGz{ZTs7@8E>aSLO!B2^JJ{b<{ z37nyx@w??iw)cqqaA3au+dAqs)W8aQ7d)c*5&(?56lsHLP^Sp0U;cLAIkQAgwQR|{ zd3PSX->u;znJ3lRt(jMVfEud0f0jjQcQNPX*OtuA}NjQgcSNk4o3$^xtO!DQIQ>1c!`u0F5{~?4-+_OR;C1?4)b!=frr5S*dOcu8p8v>#_tNk#@}?&M;#>7^x%j;`MY1y&M-V(=tf%qUK=>qm-^G7hl0pW&FPNF^8 zvdp>j{$IurcZ0cxMy%Uje+lfg9g4b53?NlbPcSWB=S3 z76xGWP|rgzE?PR9%X^jsl`182sQJT8EQ~E}_6gf+NzB=Ub5n*cnymd$BeExrGOXi4 zCn;bFiT4`&Qiy&m#jHQURdkA85==~z$@<*gJ2-RJYu*nca0d2v=1P&yynA*rbR9K8 z;V$seEQLY1vhn26_XaKM55;zr)y@u^n$iPEAGRWoW%ynM0jQ!l-@nnhOR$MIw z7KRP`M+?o)27RP%+aNG33C?`q5ovHWb>%TZy%z`3`3T`#doZ$351l12o`tB|HXI+t zibi$y2eaI@%sqQ3Oz2J%JQtkA4|vR>Xez8PKEdzE8X;5$QsQX5_ zhcK-0Z~F_{!joYi?o6?bMX*jnu>WnbF&_WIeD`tR_2`-0C7! z;3ivJkr@pv3-A$zOMnRI#82y)*rzT2*ffL7AU&#vpoYh_Oc5LAf#F5F#B>aJDuzwI1N6V}kYYzZ)cEk= z6ZuR1F}kB#cau?3YG#7(zns@)Lw!Vr@aTreB~Xv#Uhama9*y+78`SM$f}oH7V;zI~ zJJZl(){ioYubVHM*5OCA3?@(IDck#i8ey(6BAGuI&Ivht$q;*FHlJ9@mcl}b58~ri zV8rXj`%$|l9{5ZneO(NQ>g7F6gViTzwD7kRAuK!cDIH%_9WDC_z8ISMJqd~xAgvtj z)mdH|4JM}vilnFBLr9-!-^yd4xn>uSlo?VI$48A=%7l2H#L6Z1Ae&`lVK%G-!jH?! ziw8Kg_%4qxlAA{`$ZUFEay8Cf2fNL*)|srDf;uPxUpD%WgDj%^{dHm6Pru(>L8Vif zc17?&FuKur4~4pn{Qwr0CBcTorl||^0vDOToraO-#p3*)=j91?1zW%~#j z6rma3nSBW(Vh(n{M?;@ClYehdks9817|RFiuQG^da=Fgr-M^)OXS}EnPVWEaO~QKA zwgr9}lYagUI4G>x%GSPA*@!!2Rplw@>jrBTlP}!9s|qZ6$qb5Jfu9U$OE!_xQD244 zo;EmO{*K3`bC~$*pNnNH(nZ33mlDrC1prELC?t!wF`xrjk_g7sv# zVIk-3jGgm-3Np{dNBjQTxvH%cvcsstQpq!9(*33uAl`#?k!h+Hy7Fr5!sH|RL&4e6 ze9Y&5W^sJUaQc|JwrP zH-KIT^@`Lp=pTVjEve97zAkdQA(2ZbTcU-`R>mKZ{%;dqH;sSDDy0jGZBzGPkD3Gj zCL*3E`UVkI(;+tUZrOiSGjX5$~M(`0ockDUHHV>phoC5^Q&c zLveA5lT(F>DETvJXK^9qjQ`~8p`|wQ9Y#^-XC{1-`kE<+rP@!C!XMUE8~b~aW$ym& z7B<;GmE_R%wb<;kR1@%UT-rN;>HfqGv7cgjM~lu&jImqCwG~OOb{JQgv}>czS`x03 z!-*c2goYzE@9{ue-72Hr7vFPE68ghkQzSQc4g*AOi@*RNyZ9#p05E*802#5nRNv|0 zpP$(p5U{5`5!~Qe*GC?!U6ys;6z!JUuMR@bIoZc*u~#7v%q03pbTOD-z1MYa}D%+S;%+X73^0 z=>(JM!S=r%$1lBk0s%!X+gslo{bzn}t(kfr@^gmK&^{;V%6Yq4_{%}_qlVSphBnP) z{RM7-xb$YjF~Jmj8Y1$?rOAbC6Lznc=ky$Wg)jjp&WoaaLos=1&L?`siEtlLVxXwz zdpjkqCndFgn-wVWd|4D(haTL+keqQRTGZ{#ODUZ@YE#@jCVtF>nbTYxT$H0zdBa?Q z^bRL8i+Tdhl(qN!Fsn*^-DDOzd2`9uIrGy8;I7Kem*`#Zbi5W>17 zkYYWt^+OBh$L+WFre&O2RqtgH^u9?+?T-Yk?`VL4oo83alnIY}GZsOF}N37gNZtGmUwsLupjQ zo6zWQ-x9*CoulxT#4Rlo0(E$pU!&HXOE>NI!n*S0lB%b}Q?~tdTAn$rDnb_mwDm8# zrPzbcg8Z#iNY(QQDN%vpcMTfVUJ+1F!L@aMyGAWJaMx+?*t(6?TG|y)Tk-0Ns(u%g zd8p5=+Vwqi8WX0WVVN;drQuc9$C>=cqJfIQ_R&N{yZq6}=p9ZJXfV8l*A{33pJlRS z-j8>5inn1jh$3y~lHo#+W*p@y`&*h_9nxG$c{Neun|_omwuu;;oD8-41GNI9Im zLoyS;JnJX7+Hq@;BgyZb%RN1Q>VG#jJngt6xPCvLF^ z8YYYLFY8!VRqBHL!^^X7F{`MlmFak-B6DVC)S3USu1s95zWoi|q6F~t=Q^YuG8~ol zRil2lLP$68DC6K1Jx(UYC@z66<{p-~JS5o&LJv?5|G)ZaVY5a%`me7Fq-N!>oW>3W zsJyh~lW(>kA*A^JVUJQnDz#T{%~w_}=7cc)XOY5<%w82&C5lvP5T&BoyJ5145Y?n# zHo^Ok7bhNx0Z!Z^)nikSYCiSd5e0vgG#Cw^Rp;Qbg4M6WWQF%+9p)fc2zx+EE_35O zU6LX64Xbky7nL62LTa8JYwaVYRwS4~&P9H93Iuj$yZxNgDsDWalac*y>{X%USAk}w zvIKGp?Lj50p8sPygrN4Oadr?irgPDX6BRD~qQ{qaHQN-IfWlNAXYm8Xi+kpul0X?CyXawV8!@VkFT}=8Ui656 z45O1IH6zzAj%&ENVk9-4A@yzl%iYJkn93#*(I^&67CvK(s5WR;(a3D8sVvJE`Hg>) z4nmM>@!8eD;v{p)ze7FQI%(t?6ld%<@Ecz`!E^by^ocouYdjn$ORI-| zT0`lqOw6UojhVR#Gk@=z;YPib6e*Pb&_?ujltLlSLFPe_bwb0?<=UGxP*7U=2qZr+ z8feWlVhh*`&{t-HzHbT2m7qa*|RKD z1$qA#Og)W^5=x0#&0(YJ8X$C^WDFkvI^GFVpOYZrE8kTJ}6 z7WB*%?2UDJc}*wbcF^S#Dw#9redyX==qpcyZGO>v?&C&7sp-9#?EUpQGaThbx5oiaFH?Ne5T#Zn*r9p}LDw@dx18WN zir^lS-zjzBxo2^-_vj9spzGO(ijZ;g8T#5G>vGlFfl`X<7L z;>+!eZ>rZ^zC4_GUA}^m-XW#Bv|7jad=Dzyktes|9{0b>5Xh53UAhlR=$^+>w=(k{ zXo7(Bzby(7A)KL0iHFQdWHnGrfyDzUGy0#^^bEW@H<0O7Y=KKm-%8%ol*gK zokw0}6UM!%EyG-VQ+}bIB(x(Vg_bE##Y?36O8$l|u@A`vdp*wh(o^{Q!i#y&maW0D z#5;~^*}ndFI=sz9@eheEGRC)x+rmEr!~JW5-@4olYbI=X;2{K*7lvv|SRK2p&wbbv?~-Hd3Mye{H@wwnG#^N<~s?Y-!22gKl7c=JshI) zFS=y%zEvw;W_-^$iz+a62(j|~w|aBCS;b?koG|PDF_cQHuZ4mW^}TZB3CikZ`{hQh zL{mV1Y}q~#v}T33jrD`L-Sow=R6B(@ZBBLljFZC@m&(tVHdQK2j3#`H!Rk@Jm+Y5AaYZ#6MQkjMnxLmGi}iu7*J<_k#_#&CCNR+hfH! zX6}}CmL;igBR@0ad~nIyluV!rFL!g58wP=q-NK`sxowZIz&4DPht%1dC}HxeFcb}6 zS3F7yX{KGfk&PsYBfgd15} zVc%}<5Z8Z9kc6j3>J0StU1D zn-1@a|KNmo+UeWaTMruB=!*+!*Mwgy7jBmU?V3&!`lERg@t@tfY}`UFu(#}bddGU(vC z&2u@X5A{27{PSOK;WoO($Tiv2=XyQ+6Q0VkNoYH&y8DzkvNiwwaawOs+L$0nXRY>~ zzMBm^;qyt#H!^4!9Ts%rQv7;LuBEvwbsXDjytrYmh+hW&FcZ+ORK@TX^FE&cgn&11 z>pV4Po*TQT{o7O_{N^1-Bwt-lu>`K8zQDW7B11N?GUr=ngC3Wo{8MB0X-95Z5sf2m z3keNFw9J^`Re;~TB%XI0V>VvTXJM>y24>v8+4hLs({%~M`l3W`0Br`J`WRP7G0O^f zUfTJXcEeQ5ticsnYb;+N_wcLEYJJn-XkCCR!xeU77admto5?&D>*{@(Gkg`%IRibFLKjkerXgOuHz_3 zBQ5ntywxR;glTfsDLbfXb6IZQ{VB_kvfUyV14RGo)qoC*IO#mEB;&Lju0V7mMS92V z!gW&`cz8*;maqJ#>n2OJA&QyDJ4UGDQ7Dr8GR~+Zfn`L6b&_iVD9{)5wDsf{V#S|v zy1Bdq_bet>%_Vt2UD!L)0*S+~JYpS4DF9w)wL?Infw@O4@(WF=;xNg&r6qFuwiuGs ze|-7k*gfb2y~BXz%w25-egEu{@GKG)_S3j5eJj8GVJ|5%6~X1knwVW7L4G_bI4fTQ z))PzW?@f>9nZhD3x*fPIk$fr(RkDdb8H{x9Di)5)4+TAXbP#`mf0R;rv*SyB7!<0) zRzA#s-$XOAyYhVbCzg(m7SGW*1Ac(ijyN}YVFWiM`jvVV+*rzrpTadX2 z*eLC*dTnFd56Jmh`7T4RMosKfrYWftLUFHVEW;Zi>sm@#+&PR)PeJzN6K1&bK>kTZ zZ2#kROE*954sYH=QK_q*R**LMi*7oKsX0zzzJ6P$iJBs%D#?IEi329n5A%IAt##oSC^9i?L0cgt11V93U$ z|2!i07dnOe`oM_~{J=x4A0z0m77BsVI`Z?JnRx49^a|?bs9NU7^ z*EpI&EQ;Hc`p_q643r*1%0OuU8^;83xd~}%#PhsKk_cZ>n7{&-W+S~t(r)*maJgoZ z^RkeVep%{Rxbs#eZwEd8osWlhl0>#ti0)+LuL<(g&Ssb7%K%v?0KBks^vG$cy{{Nt zTi>62)sg6=b+QEC=fl6*vAdpf#>d>r^XEPvc+4$#jNjQ*R9q!{n+~sq2Y+M{U{kxq zgdO6GT)2m literal 7731 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 a65MNhW?lWM_BMDJ44||Pv_5ItKl(34es(DU From c01ca4dff8108eded66ebdbf7e223b94519aa2d0 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sat, 7 May 2016 15:05:26 -0400 Subject: [PATCH 189/462] Added files via upload --- capes/test.png | Bin 8293 -> 7748 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/capes/test.png b/capes/test.png index 9595be50bc090685dabd59d9976de9a1bf0fe569..81975e4d7c6f3cf7b8f4de4f61af6c01b512bb2c 100644 GIT binary patch literal 7748 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 From d894c0f4a422f9c1f80d6fe4ceffc163bb056fc4 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sat, 7 May 2016 15:07:52 -0400 Subject: [PATCH 190/462] Added files via upload --- capes/test.png | Bin 7748 -> 7767 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/capes/test.png b/capes/test.png index 81975e4d7c6f3cf7b8f4de4f61af6c01b512bb2c..d70630c694707197c6b6d5f1c9e360065b8af3ec 100644 GIT binary patch literal 7767 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 YD9mnXRIQeS7sdceT~DoC#p=a>0pX`^Bme*a literal 7748 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 Date: Sat, 7 May 2016 19:17:06 -0400 Subject: [PATCH 191/462] Delete fx_cape.png --- capes/fx_cape.png | Bin 20365 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 capes/fx_cape.png diff --git a/capes/fx_cape.png b/capes/fx_cape.png deleted file mode 100644 index cf8b72ae783fd92bc738526196e7c986267ceddf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20365 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 From ccbe44340f51c830698f3dbcdd97b6973df3e4f2 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sat, 7 May 2016 19:17:12 -0400 Subject: [PATCH 192/462] Delete lazer_cape.png --- capes/lazer_cape.png | Bin 15020 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 capes/lazer_cape.png diff --git a/capes/lazer_cape.png b/capes/lazer_cape.png deleted file mode 100644 index 7f3f82f713139098e65f3fecede79026268f8dd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15020 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 Date: Sat, 7 May 2016 19:17:16 -0400 Subject: [PATCH 193/462] Delete mn_cape.png --- capes/mn_cape.png | Bin 11295 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 capes/mn_cape.png diff --git a/capes/mn_cape.png b/capes/mn_cape.png deleted file mode 100644 index 85212e2dfa095ed01639f0d66c69ac78ce8bb082..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11295 zcmeHtRajf`w`FjOON$kE3dM^Q2yShF7AWqJP>Q>|yA`*#6exw_?(R~cSdrkt-61fi z|9j_~*Lk`R^G#lIl9L?SXYb!yd+inZPE`>fhYAM-0^utw$*F@tsK6!)2pbc4>rEK5 z1cB&5%5u`09@z&=?ml_YuaA$j5@06pBO%)+w%=szP{MioZ!u^(MDI1@qOc@h&_0tU zl0$#`Gy#qOGXp!LEPH_z2Te^u^jM8b=69>f{R`cz+lLblpY{h@1Y&}m6mjYf$vu<0KSCO8^=mbKRqjc=qf{8AOh=~)?lq5jFw@e9MAUQcX1^Nq6L_|c4)Gi9JlQQrR8a*Q; zKPsgsxi}GU1drCydo^R|@x$ZcufvlSSFlf+W5pglBR@5=TmtmPGyr)KFLc<{ey6yq zENAhEltls2-_Kl04te?Pe^+g|$-8YiJd#A@wYD=dp4N{98=?>s6N?@{{jXDFfPm{E zRzi`Ile0iq2mR*){wH^Z`GStCt4@3$O|)f!OVFX5L7^A0a7Hv;^i)?7x_toR6P991 z13GNlTI1KFvt@itl^~)Agulvbh@Aj80=)`^qJ2Mt})f5f@j}Jzq5xl10lCZ z=!a+{^GV9QuP2+@9*B$CAM9K`5_{PU&00k0*^WcSrOP!LEkRujoZ5178zy&3s2vT1 z$@6v9akBkt8~4uR)KyM2{j0fbxh9~71F^?YUG>-_f&>lGsA>2;H@?)o|6|xS5oTPu z(HWF=1EJCEid&7K5wO^diin_w$kKv7v8tHfEZCbL%nh0g-zW4C#pUNYFA0k>GX-bS z-s6kSwkb~cME1NE8=#fUeQ>qbalIQK92uZ@nVt>b&r~Hk?r<;f*S!Lli$79_)9|?u z43PnOr4uFy+8}#+vK!Rfa<^vv$9B1|oV?|=1@un3BUbVnTw)l1*M23-&)H{&1%`o) zO7j*SlXsBwOZ$dXa-*Zd2{;R~ZU^4v++U#HFP}f$GvXR~1)jd2mer~Q9&0DB1qwYj z>cjD3$)C3BkS3L*>R-*_2N$lgT9^Kd?sV$`V)m`E%a>Y1{hI52SRE>X>qIX&SgP|= z+7|p}1V5?Y-t~vuM6aY?x(T_s5UVx(X}bga`# zK_eMiWaLFVMV+~plWhR@?Zn{vv@kp+*_QZiV*Ld3_C!P3!4LuumP^`Kp5lAF#x{(_ zf12xngN7knEt+6TA%44tt1~Yu{_tlV-Ehh0>aHG7c^)WytnP%G-x#621~>C14T$At zojTK(q0mh({YEqPsJ<&-nB+BfRv?|<*@8!$tf}J@BYuortTwD%#g#%{=c+*mlJjL3 z0geujl}-lzzzVa2PgTy<9?rc^cCAP@1Gfpw;vbXm0wN;t)MQCOWo=up>ss1V74se> zFhoWF9Q`aRDe`8IVzu98R+Zcop*3huEQptU<2w2@snQSPg9m3imOve6aG+V#;c3($ zWV%>@PgKD0F9+H9c`auW{^Z-61RRWdi+COKiQn$idARqgw>d6dxnKqYXM7t>0MgYJ z9eM2{qy|1iKY5@X6GcMEc>J*zsxS>j`&~J__mzdvhRbeVcuKJg$gI3xxuNiTjZTpp zPl>+bMTDPh9lq1PrMDJvvlkw2!9+J)<#CykCb~P&*lb*$Ya;|WJ7f-MtQ4@ogKJ0KEgjS7i!N>G-lS{hc75B zH2Kb0aXrpf@Zd**qvA{ah5D%mTh8V>+k6(W=#A5Q$M(~gNsZ<^lKVXj#p9W^N5rFJ zg*9e)xMcS!^>Dp`g0pgUo`2C53)bVb)D!Bb@n(#daN+Tl$bsazVHbCp*n8iF=biZG zb*-u6p`pUD@Obe+c*Cmkt5_)MtYM}yE9M|K_MVZ(B9hy6rk=|~X0Lrd9SoL+V&+sU zVswsf`t8%MY``_rBU+OTj2VzSt{cBN?Snf#7Xv{VV@>!8jld zR!A4kw&}&+S0-V{zVQyQ8F&lv>>tRAd;DWyTwl&yo9xg zn2cSvr%%igsVn+I#6@%h%hAYbHPelabu4h9DG>#08^U~nEN*?RnV`-p2)gdgjlQxV zB<=mYxQ|9ecO9EsoOE0{@eQ*QD~%Z%GCeTIl{3fIJN>oi>%EzB+Qno5r9=ZR#X#479mPf2ecqgDlQYW- z(#jZ1ONJIOsDSMjS1PxW5)rz=MX2@1rM4$*luW!fHa1(RLPDCTWnOwREM&tNSq2Y2_s)ZN5xB-y2$82 zjdViFsS`8Dq)MagKtC^UFXaZ>1`e68M8(Sl5Hw72G@g_%B5YC51NKMwZM_mYf>oEglN8j4yB)5-&Q^XZNTgo^s2Uv;B) z)`&3?@*eymt*^x6~yp@@SqpvOB(_O8#Pq*oE3!C$^-f6KGTA60Da?Ezu*am4Pb?{co z5+|LYaFKFN(WfXS9S&bjI%DE7AzQ7Aiip#-yi@~;P0|^-7Fg+*RPtzpc=@<+r>b}_ z@t>!shC+2sD9{6?iLOmDcbq0QK*#q1^t{J+w>otXzA#8u-)7nIt@pN( zdgW75PmG#5vRCVDzo(WiI%_Zi2sbr-=L~W?D1{!Hh9_pE1g|$eO^IJyN*UIzb)p0+ zU)K`GR{0hv}X6M_LHpRb| zwEqF-G4Bu1@7Y;J$KH>OiP)Y$D->Y$}Pc|z{1<|_oC%%1Z=`!L%33d)o z0_Y_&c(9Ly16=m9?CvGtY!2#lZb#l6JQB_Dvr4pR2SFV0cXbY~slGZJpGlOivzGIQ zwq#~(dgAy*2=k=2n*d$N-E&U+apj~WmM#oyUl7C9lWC@ zKYp{^-#4QzP-L34e_fPd)ghv*OGc|)51hWh4)Em;{1>2}q(R@|t;wasz#|P^!|vRr z*hN=_ZTc#NRV5?LDt)KkpQ*Km8++35!f(YqbBErfqWry3M+Z8pk0kw5oW#VG!44@d zq!t~HsmcD{mM{o+)}0R$T=A^$OdJmnGTc)&l|?M78gL`6{RnR@DuQ>wgOA@!zz?}*;r(#XDTDw8X%{#;}fy;H87)S7`kP2h-+CGO9b|{4tIm7?@ zPw`?yc#-El-So#N;#gBvlo|qwa;1dBIK)w~l}3WV_9OVl-FJ0a=Vbt-1_JpTVgn%2 z4(xaoHG&6>oboiH8%7^Ta1FZcLS*pPz%1v$sn2{OYQ@s35ee%E@N9 z(6pZbCn`#bIf*+xvx&W@WVCnr5M@(61Kfk=K+5YbEeIW?6iQsJYW6+_A!zQU%= zEeY?Pqn)o_BRY@;Gi`G;P%jJ1(+%?9bAMvs(<;o=-^xp}f`ay4()nuc)c}%~CXEr0 zG^ze=0viC)-ZY~(*7{;%_4ejN-y!ZD;I+fXK*|$&LyouV` z-Q8+LJdB)EPBpIlI2#xnTU+{2GT-9J#76Be{_NQ^xo^Z;Wd`zsOhZ=ds-g5Ny=jkc z+_VUw(9LY8p~05gYg@)d_O$Uwu8U?j;#k-_BO?VH`mwv`!j89Ws&Cx)(8Tt32Zx6X zT1vBp$=gRSf7KfJOjt%J2GH0ykWPPq;)%URJfK}mx7D=pJ!(Q6e>9+kL#!3#9Q)K5{%?ashT+mRF5Ken1 zA$h-CpW(HgC^&OuG4r+B<510?;=KD`1m0aXAN@TOC&&N?+v*EVEb8?Cyqe+lo-y4> z(G;+r`6_;ME=ks>8<{cb{k z7gFn)vQ6#w+h_Kz7eaf&HY>Q=#-n323-gW6YzyxDCJ&q1PJ_MVj>~N0(7PEG@skY= z1GgO(k=*{N@%u!8X{st}lM{mPvCqmIlJXHWz0Tw99eIzZjP^X9;dPe;Gr!;+CFL)_ z(M!f#x4YrvlDGCIt4R*4NH*kR;F3EItSX-5!LMIH3!q$vZ9#NPF1XGFVj=5sl3|kI zN7T2eMFQxV#+gOJy-- zfb$rbX1H$teSNfs>g!w@vE7{m8`HBHJ=U1=PMlB<_7`hvT;x$lqkR^+J0x!^vt?!D3gUhj`Z{LYwaJlV=K3$318{yor=Phf5{ zdff@e{il<_+ED|J?iM}PU+!DknCy7(VauQCw)>$yueaHRb2kOp)`~^+CV&2%Izb+d z@_Rut0sPStt{`3romimDulPdL?>I0z`n9Mit?hv#_ekTNP6x8REe)Vy6Z7+-2rPn1br-2OZk$Q8X^kJ=>X5eMM#EC(Tq;RyK3; z+Sv-_9>COhK)_Xma_)P0ikoCs?!9Fr?SA*8z)<ErDsCn(#$vz_m;3fJSbxM;2o%7jq> zb#c3@sC8qjhK<9JeJXRSyeAe>9dq?$@C)FsMRFCzcT6%_(IT013=IL2$CV4f9Boeu?NnY`3 z^tIi?Njyi%&+o8BkH4>*2Zo0FA}lnTeZ^Qf|2hi&I=f!HP`*(YL-WC> z5)!RFBu|Fkyj6Nl8<_U3p&=sW=vS|xEqBX`&)SLKuG^oJedlq{!2+`YRqnL2%x7N6dBN9=z3+|J@E2971yZ?%G z;dr{TVCG<4&V}X&Ep-E<&LsC#5D|{N$LU~^PRj;OA>Hff!!p&xv9k%({Oe!c3|Cl!0(#C^K%`SfTRnC zzTGnJ+$-n#mR}t$oZ22v6L;L)PrDh>cqVeN@7(zK74G!tdqo`GpYAtc({|DNT;yts z+-X=vnAf(Cf!cHb3ey%1e&E~TT$s9%l(st$+6i-@ z>6C%-aQ7pUDDSRo`u?Us+v9THa&BpEfaQ#*^MroY<9;Pvm>0GvN08?&SS#k{a3Y_# z7Lu&ir_yV6w7u5We7KspV9&7qkwt*&y&AwPDxA7N*>)SZy)QzC|5U7?>a10NPTHImU*S+ys0;~M_{>Ceaej-p?#JV)HdZw~5yF_ZHBy{wyPbLZKcDcveS zArk*WKMo zf8LGo)zQ(?I{kcjt@T9by+7~1hq+o`%m$J1*+wi@Gk_7@iHYu=Xn`sEk+TaUkLS+- z<(c)LBz(^@es+D|nvA?HWM;xgLNvYcAb#umAGsEp=^ z*fnG==M#B>;vc2oOf6r^LsML8>sP&ZetAX@zp%2m#SoX7fB;kxTfVF2z^c&foFZE@ z=`wXGCPy$fH`l01FAEgBxQ3%%%pAE)Fjw#CsQR8#bqHXJ>gsx`*6RdsO8S$tv^)4n z`!zo3_9E59lfZTqN;wW^@Wu9aK)GnY(tdEKTZE5=k5BW(Ff!hmwhN(FaYakEU-BEb zcz{J$pPl!4QHr^ewH>W8lWNA%zI~Cga;}ywJpqG@)OIB^jxD7L`Ik05{KIw2N2$C?cv4wm4Us!XuT{CXc zdWtk>>CfqED>9S7khfPH+~DNgWm<)J+R+ZF?AR<}0oPNDEn2?tS+cgy^vdag&hB>K zkkcrfeFqBRly6>Lng(1|T)`O{g(uDAxpx&OZAa&fDxE-FcWpOR0H?V!#f z-p@ik%8dP`*i9@?^vH($VT3J1{A(Cr$|i(LGHx)L&1rwaIm2~8urIb`HEP^wh=trJ z0IEBZ@d`I!f1m5;3r>-{5rH3+0+}-sFMV$B)yyao5;Fz?x;NO6SxN1>L7eS1#Npyn zBT(oinE!&4gM%9ex%e0r9Sv0AdW%}FEC8hp3uZ%~2OI37oX1`#Q%)6;J_)^9`=G6^ zt~sJz_J9gda=g*e(HJ`6u=gLHQG3lnxLdbTo5aM9k)T;eM-pZ6*=}Bl`XKs^=*@W{ zHC5L0@ZAhxhT^jUs6sla^0MY=y)2s{G7Q-k)ZK!72Sh8$y6Qu_u2}=4!^{%@ zQL-@DC2xP+5lndYyE{G!XtWd+$y<>~pqV_83wpJ;Z27ll$EBuzVq$)@@8yC{lMCgZ zP|Ns_T|Q=WUyri0RXzW1UOtuJpH=FaSy^E5#&>|OB0}+p&&^xx??4qk7f1{*Eb!>& zngUo^s`A?s3tMx}@q2!hQTBf>p3<$f5mjl{7g^6%OHwNIu${;%ov+9+j}r?F{EQVQ zuK*JgfQ^2YTwTdB{Wihd>?VBHon`kGc8~65#xd5uO)}!}IXg(E&0};n-Tgk2+W(Y| zox9{)eskVOH*WcY&5abTcY0c?FfAbsOWMBDdFQ!`+PK?7n5x7X*Ei9d?5m7uo%1a- zA^Qbsc~1<9RwOmwk%*Jind2z$eB+HsSsH;zYA6j3DUk^!CM9LYpI1WcAOI9AP6^9V zuk&EVmQWa<9Rz<*$i4?p9y^rjx-A^h6tYj$*eJ^7aZ%oKJ~@nzUgPd^d|2iF(Pl1m zy{YAFOl+=h^xG_Xm18$1Wa@i$NpxSB*X`Zyz|ffK{A59?QDb&$YAXO5mG!@3S?qcG zE)0x3FP>5D?mY<#xNUk}XSWQI?dCR^MZ-&NX-)s7U-x@zT3Jm^*pH~9xi~V=BPRFI z&h5xt*-bPbC(%ygxRpbfzb z?b4*m+}%0cxy|xE>*Ts1Jj~NV!F%}&m57)!TRI1G+ly9}ovBsUm}sSmyY0x#%q)zN z%cv?OaGBQ0`OM=iR`?`1;ODMmP5t54gSVgb{ErEsjbCZx_HC8m^16^8DzT0TVQRTw z!v)eF=yc5c)xOn239lY^X{(%_wvYB$j(tyYqmK>4wT*9azrKt3sDK%GL`p6(C$ zM4}&z;#(k|y_2wGROJU!hqcajy@}%#Ckn`{4qm)}f;kf#8`f}DC08=&2bG};(X~!t zXr!8vABucI0rNWF&@g8N%z}t6V)Z+Tg@qgkJ9`(e%Hn5P_NR;)Z_IRAQ}Pvv<9j3I z7-Nbl)n249+e5&Bn2tzxQWxO}R}xI7KX#-^dnY0{z0GIRF&CMgh0UcKiAh^4O0WTgJ{LDcjt+dpJYnYiV-n*RVg&$XIH9nQSQPEsBFW-!U3ws>j`s zYZ&5xMwd=IHEB0}H$8Vl@$8Xe^w?NFj#dH&~J-BT#PT(LA?%#i2fWWjaeiiXqj9?eF08E46)L4du-+yAy)z3e#Hx^u(5$J%u*Ebaz%UC^AG_u0 z3wl#*4;h$&bVN9zm5^v1aRN->p+NPRlb$4TU=7!aAm>OaKJZ25UW3BNvb$&g>ebEI zeRKMwV}{1(`A3$26Qk#VxbFim`qmQU3M>=R7s)BfSh?LBPmw2_YfQ}qy3@^(SO?yAW7b=9cTZzOS9-gwqRzbxm6+^;96XZcDBGY!S+11K3cn`&xm`F(fs zf~5X=1j6E_FF=6emzKa{7Tx0gAyji&WY6@w*nbiWXF0?1IDDi{l8%1w&jK;>1Z2p{-k~Fi- z;J+Hmz)UoNN|R8^c}n%vX{_L9X-HkFmdqxUndFK1_}#I97}eg*7_yxi8`Q1jzNhcz zwGZdz9d)^CH_gy#3t#=tE8tY2j?^3#BOS(Q-;v+Xh71e@(SzVj72OnHd1nswcwc6J zdx1CJDU2sB7BdYGw@2qi$SpolAWN3N6qS&|9kIppIs}h{L2$z3V3%1*=>%FF2LoVD zw^`W#xENYl?sz4U24I>@A|%Lz^uzim_QANx->{VA6>wcpp=|3Z4b z6@JKrN5U**_*L!Q+2jN=B%m*T85%OHbHqMI1N?&j2MAPQ)=R>j_XuU3wt*h}eD>W8 z8B>yn6FRB{|R z^_?ogUY*_Qu`B^H3vlp2(U4~dXKN!?Z3zd-;*S0b852G99X|AIO`KUr-hCoB=HLV< zsXNW0wZD?T2xRGlF%uPD(~Il2abke)``Nw(exQM%k#%<`_g>J$G;RP`6pGL`$bwdkM^APmCfiEL#+^F^`D9IlI{IsD zM-uSA5}in>Y|#4R6=)kPFDztXOP*~f{ORV0yuihsGpJ9VU+?30|Eu|Md&$^}{1;R~ zW{ugaeXF%4clcJ4IgqlYF>$#@eK9|2qrL%%=FQ!f&hBtQ;|^MB=xhTKv1F&b72#y_ z#dGAB$4htaR}+1KGe%g(0+?)+CElFjZqsdB8hBEY=Q_OrlD2sE&>xt$K=9}P*0SZ@ z(5%DgIwSjO)kK~lNYCQBufn%Jx74}r-JJc!_d$l3i|$O0Pr@e?a&Pk9tdN@M2*DIs zE4K_ajT}%!&*DtiQ(wx>{Gv+Q!;8NqNzt?MJ^el2NJqPbX1*qHz}jc#MW03 z&v|r)hRA$nX!QF-z-RmCql{ZbGJ>XmDPBB+4zIHZ6%aOqEtK5LtrkD@yZas6a*H3y z4846LYIeH8z$rF8HF`wOz0nng14hPLJ2ov~Bgmvc>6n$5WKrBmYWXSFiHFJIjT$_^ zXI)r@+FI|Dat1w%az}Y`Jz{d2pNEy&{5!tsKz+G>ts~kj+>;ZL<4Zj2ixg`p6R?27 zk&T?&n0Cm)(Wjra`F>Bw(h!)txvp<+@EsiHy~jTH-x-#z6Uaj}`K(Xn!4Cfv-)|&7 z!cOk?!oC~)JFwLNT7W49mr-quIgd!JvIgvQ${sFa0mb47KYF-FK!yf3IE9y`S_*O< zM3ODM1wtjSd011QPWdeG3_$t-<4{_*3yubx>UxsCf7hP1w$&m~9AGkV75@Hn{Y(lm zOGX-BWXS$k%4jT)+f@BIe4q7Q9)7P=m%rA+=6_;}&YSj*17{ZOshbr35@MsKBMZi- z=H|ctD>1MTc#_m+KVg)Ha8a2tgQALGwr=#|@h0yxNV4h7O+C`6s_c$zGqpGB$d7!O z_IxXh?$jr~h`c@Um0a=@VEF#Kq&C9ht0-c0G6ju zQ)GS~J3dwVnFRmG1!uDWyDH(a_RIz9ThdAg3nXRu2xzKzrgK<;kB|5U!2$G7fRhmC zzwCvm0O=UO{to(&pYXqT(UpL{Apd#)9{7MwB6Pqo7xb^^I91F};;U$xau3S^CyUbKJ5Yrar{u0z%*Q6c;Q0Sv{|`q1tN#&Yrn}VRUY*Ma QF#dv+ Date: Sat, 7 May 2016 19:17:21 -0400 Subject: [PATCH 194/462] Delete royal_cape.png --- capes/royal_cape.png | Bin 31002 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 capes/royal_cape.png diff --git a/capes/royal_cape.png b/capes/royal_cape.png deleted file mode 100644 index 11cdb2615fafccb9ee5cfc35866369bb441ef537..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31002 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 Date: Sat, 7 May 2016 19:17:25 -0400 Subject: [PATCH 195/462] Delete test.png --- capes/test.png | Bin 7767 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 capes/test.png diff --git a/capes/test.png b/capes/test.png deleted file mode 100644 index d70630c694707197c6b6d5f1c9e360065b8af3ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7767 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 YD9mnXRIQeS7sdceT~DoC#p=a>0pX`^Bme*a From 752fbfa593c1794a6fdeeebafd95e5e2e25eecca Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sat, 7 May 2016 19:19:03 -0400 Subject: [PATCH 196/462] Moved to another repository --- test.json | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 test.json diff --git a/test.json b/test.json deleted file mode 100644 index 68b52661..00000000 --- a/test.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "Dev": { - "capeUrl": "https://raw.githubusercontent.com/runescapejon/AdventureBackpack2/master/capes/test.png", - "users": [ - "runescapejon", - "ModdedNetwork" - ] - }, - "LazerCorn3114": { - "capeUrl": "https://raw.githubusercontent.com/runescapejon/AdventureBackpack2/master/capes/lazer_cape.png", - "users": [ - "LazerCorn3114" - ] - }, - "Fxzionz_Pure": { - "capeUrl": "https://raw.githubusercontent.com/runescapejon/AdventureBackpack2/master/capes/fx_cape.png", - "users": [ - "Fxzionz_Pure" - ] - }, - "RoyalDemonic": { - "capeUrl": "https://raw.githubusercontent.com/runescapejon/AdventureBackpack2/master/capes/royal_cape.png", - "users": [ - "RoyalDemonic" - ] - } -} From 26cbada0cfaa0a44fb08130e0465a134cc57c77b Mon Sep 17 00:00:00 2001 From: Tyler Hancock Date: Sun, 8 May 2016 06:50:37 -0600 Subject: [PATCH 197/462] Added safety check to associated color names. --- .../adventurebackpack/block/BlockAdventureBackpack.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java index d77fc87d..64fa99c8 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java @@ -107,8 +107,10 @@ public boolean isToolEffective(String type, int metadata) private String getAssociatedTileColorName(IBlockAccess world, int x, int y, int z) { - return ((TileAdventureBackpack) world.getTileEntity(x, y, z)).getColorName(); + final TileEntity tile = world.getTileEntity(x, y, z); + return (tile instanceof TileAdventureBackpack) ? ((TileAdventureBackpack) tile).getColorName() : "error"; } + @Override public boolean canRenderInPass(int pass) { From d16b03aea6976d092f0fe3eada3864fa83bb4699 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sun, 8 May 2016 13:53:36 -0400 Subject: [PATCH 198/462] Added files via upload --- .../jadarstudios/developercapes/DevCapes.java | 135 +++++++++++++++++ .../developercapes/HDImageBuffer.java | 45 ++++++ .../developercapes/RenderEventHandler.java | 32 ++++ .../developercapes/cape/AbstractCape.java | 36 +++++ .../developercapes/cape/CapeConfig.java | 24 +++ .../cape/CapeConfigManager.java | 137 ++++++++++++++++++ .../developercapes/cape/CapeManager.java | 60 ++++++++ .../developercapes/cape/ICape.java | 21 +++ .../developercapes/cape/StaticCape.java | 57 ++++++++ .../developercapes/test/DevCapesTestMod.java | 30 ++++ .../developercapes/user/Group.java | 53 +++++++ .../developercapes/user/GroupManager.java | 74 ++++++++++ .../developercapes/user/User.java | 22 +++ .../developercapes/user/UserManager.java | 72 +++++++++ 14 files changed, 798 insertions(+) create mode 100644 src/main/java/com/jadarstudios/developercapes/DevCapes.java create mode 100644 src/main/java/com/jadarstudios/developercapes/HDImageBuffer.java create mode 100644 src/main/java/com/jadarstudios/developercapes/RenderEventHandler.java create mode 100644 src/main/java/com/jadarstudios/developercapes/cape/AbstractCape.java create mode 100644 src/main/java/com/jadarstudios/developercapes/cape/CapeConfig.java create mode 100644 src/main/java/com/jadarstudios/developercapes/cape/CapeConfigManager.java create mode 100644 src/main/java/com/jadarstudios/developercapes/cape/CapeManager.java create mode 100644 src/main/java/com/jadarstudios/developercapes/cape/ICape.java create mode 100644 src/main/java/com/jadarstudios/developercapes/cape/StaticCape.java create mode 100644 src/main/java/com/jadarstudios/developercapes/test/DevCapesTestMod.java create mode 100644 src/main/java/com/jadarstudios/developercapes/user/Group.java create mode 100644 src/main/java/com/jadarstudios/developercapes/user/GroupManager.java create mode 100644 src/main/java/com/jadarstudios/developercapes/user/User.java create mode 100644 src/main/java/com/jadarstudios/developercapes/user/UserManager.java diff --git a/src/main/java/com/jadarstudios/developercapes/DevCapes.java b/src/main/java/com/jadarstudios/developercapes/DevCapes.java new file mode 100644 index 00000000..2000d55b --- /dev/null +++ b/src/main/java/com/jadarstudios/developercapes/DevCapes.java @@ -0,0 +1,135 @@ +/** + * DeveloperCapes by Jadar + * License: MIT License + * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) + * version 4.0.0.x + */ + +package com.jadarstudios.developercapes; + +import com.jadarstudios.developercapes.cape.CapeConfig; +import com.jadarstudios.developercapes.cape.CapeConfigManager; +import net.minecraftforge.common.MinecraftForge; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.io.*; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; + +/** + * DeveloperCapes is a library for Minecraft. It allows developers to quickly add capes for players they specify. DevCapes uses Minecraft Forge. + * + * @author jadar + */ +public class DevCapes { + private static DevCapes instance; + + public static final Logger logger = LogManager.getLogger("DevCapes"); + + protected DevCapes() { + MinecraftForge.EVENT_BUS.register(new RenderEventHandler()); + } + + public static DevCapes getInstance() { + if (instance == null) { + instance = new DevCapes(); + } + return instance; + } + + /** + * Gets and returns an InputStream for a URL. + */ + public InputStream getStreamForURL(URL url) { + InputStream is = null; + try { + URLConnection connection = url.openConnection(); + connection.setRequestProperty("User-Agent", System.getProperty("java.version")); + connection.connect(); + + is = connection.getInputStream(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + return is; + } + } + + /** + * Gets and returns an InputStream for a file. + */ + public InputStream getStreamForFile(File file) { + InputStream is = null; + try { + is = new FileInputStream(file); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } finally { + return is; + } + } + + @Deprecated + /** + * Registers a config with DevCapes. DEPRECATED: Please use registerConfig(String jsonUrl) instead + * + * @param jsonUrl + * The URL as a String that links to the Json file that you want + * to add + * @param identifier + * A unique Identifier, normally your mod id + * * @return the id of the registered config + */ + public int registerConfig(String jsonURL, String identifier) { + return this.registerConfig(jsonURL); + } + + /** + * Registers a config with DevCapes. DEPRECATED: Please use registerConfig(String jsonUrl) instead + * + * @param jsonUrl The URL as a String that links to the Json file that you want + * to add + * @return the id of the registered config + */ + public int registerConfig(String jsonUrl) { + int id = -1; + try { + URL url = new URL(jsonUrl); + id = this.registerConfig(url); + } catch (MalformedURLException e) { + e.printStackTrace(); + } finally { + return id; + } + } + + @Deprecated + /** + * Registers a config with DevCapes. DEPRECATED: Please use registerConfig(URL url) instead + * + * @param jsonUrl + * A {@link URL} that links to the Json file that you want to add + * @param identifier + * A unique Identifier, normally your mod id + * @return the id of the registered config + */ + public int registerConfig(URL url, String identifier) { + return this.registerConfig(url); + } + + /** + * Registers a config with DevCapes and returns the ID of the config. + * + * @param jsonUrl A {@link URL} that links to the Json file that you want to add + * @return the id of the registered config + */ + public int registerConfig(URL jsonUrl) { + InputStream is = this.getStreamForURL(jsonUrl); + CapeConfig config = CapeConfigManager.INSTANCE.parseFromStream(is); + int id = CapeConfigManager.getUniqueId(); + CapeConfigManager.INSTANCE.addConfig(id, config); + return id; + } +} diff --git a/src/main/java/com/jadarstudios/developercapes/HDImageBuffer.java b/src/main/java/com/jadarstudios/developercapes/HDImageBuffer.java new file mode 100644 index 00000000..ef4201a1 --- /dev/null +++ b/src/main/java/com/jadarstudios/developercapes/HDImageBuffer.java @@ -0,0 +1,45 @@ +/** + * DeveloperCapes by Jadar + * License: MIT License + * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) + * version 3.3.0.0 + */ +package com.jadarstudios.developercapes; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.IImageBuffer; + +import java.awt.*; +import java.awt.image.BufferedImage; + +/** + * This class is used by DevCapesOld as an implementation of {@link IImageBuffer} + * that allows capes to be HD + * + * @author Jadar + */ +@SideOnly(Side.CLIENT) +public class HDImageBuffer implements IImageBuffer { + @Override + public BufferedImage parseUserSkin(final BufferedImage texture) { + if (texture == null) + return null; + int imageWidth = texture.getWidth(null) <= 64 ? 64 : texture.getWidth(null); + int imageHeight = texture.getHeight(null) <= 32 ? 32 : texture.getHeight(null); + + BufferedImage capeImage = new BufferedImage(imageWidth, imageHeight, 2); + + Graphics graphics = capeImage.getGraphics(); + graphics.drawImage(texture, 0, 0, null); + graphics.dispose(); + + return capeImage; + } + + @Override + public void func_152634_a() { + } + + +} \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/RenderEventHandler.java b/src/main/java/com/jadarstudios/developercapes/RenderEventHandler.java new file mode 100644 index 00000000..e009ca7f --- /dev/null +++ b/src/main/java/com/jadarstudios/developercapes/RenderEventHandler.java @@ -0,0 +1,32 @@ +package com.jadarstudios.developercapes; + +import com.jadarstudios.developercapes.cape.ICape; +import com.jadarstudios.developercapes.user.User; +import com.jadarstudios.developercapes.user.UserManager; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import net.minecraft.client.entity.AbstractClientPlayer; +import net.minecraftforge.client.event.RenderPlayerEvent; + +/** + * @author jadar + */ +public class RenderEventHandler { + + @SubscribeEvent + public void renderPlayer(RenderPlayerEvent.Specials.Pre event) { + AbstractClientPlayer player = (AbstractClientPlayer) event.entityPlayer; + + UserManager manager = UserManager.INSTANCE; + User user = manager.getUser(player.getCommandSenderName()); + if (user == null) return; + + ICape cape = user.capes.get(0); + if (cape == null) return; + + boolean flag = cape.isTextureLoaded(player); + if (!flag) { + cape.loadTexture(player); + } + } + +} diff --git a/src/main/java/com/jadarstudios/developercapes/cape/AbstractCape.java b/src/main/java/com/jadarstudios/developercapes/cape/AbstractCape.java new file mode 100644 index 00000000..ef5167b4 --- /dev/null +++ b/src/main/java/com/jadarstudios/developercapes/cape/AbstractCape.java @@ -0,0 +1,36 @@ +package com.jadarstudios.developercapes.cape; + +import net.minecraft.client.renderer.texture.ITextureObject; +import net.minecraft.util.ResourceLocation; + +/** + * @author jadar + */ +public abstract class AbstractCape implements ICape { + protected String name; + protected ITextureObject texture; + protected ResourceLocation location; + + public AbstractCape(String name) { + this.name = name; + } + + public AbstractCape() { + } + + @Override + public String getName() { + return name; + } + + @Override + public ITextureObject getTexture() { + return this.texture; + } + + @Override + public ResourceLocation getLocation() { + return this.location; + } + +} diff --git a/src/main/java/com/jadarstudios/developercapes/cape/CapeConfig.java b/src/main/java/com/jadarstudios/developercapes/cape/CapeConfig.java new file mode 100644 index 00000000..588ed65c --- /dev/null +++ b/src/main/java/com/jadarstudios/developercapes/cape/CapeConfig.java @@ -0,0 +1,24 @@ +package com.jadarstudios.developercapes.cape; + +import com.google.gson.Gson; +import com.jadarstudios.developercapes.user.Group; +import com.jadarstudios.developercapes.user.User; + +import java.util.HashMap; + +/** + * @author jadar + */ +public class CapeConfig { + private Gson parser; + public HashMap groups; + public HashMap users; + + public CapeConfig() { + parser = new Gson(); + groups = new HashMap(); + users = new HashMap(); + } + + +} diff --git a/src/main/java/com/jadarstudios/developercapes/cape/CapeConfigManager.java b/src/main/java/com/jadarstudios/developercapes/cape/CapeConfigManager.java new file mode 100644 index 00000000..21aeaf89 --- /dev/null +++ b/src/main/java/com/jadarstudios/developercapes/cape/CapeConfigManager.java @@ -0,0 +1,137 @@ +package com.jadarstudios.developercapes.cape; + +import com.google.common.collect.HashBiMap; +import com.google.common.primitives.UnsignedBytes; +import com.google.gson.Gson; +import com.google.gson.JsonSyntaxException; +import com.jadarstudios.developercapes.DevCapes; +import com.jadarstudios.developercapes.user.Group; +import com.jadarstudios.developercapes.user.GroupManager; +import com.jadarstudios.developercapes.user.User; +import com.jadarstudios.developercapes.user.UserManager; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.BitSet; +import java.util.Map; + +/** + * @author jadar + */ +public enum CapeConfigManager { + INSTANCE; + + protected static BitSet availableIds = new BitSet(256); + protected HashBiMap configs; + + static { + availableIds.clear(availableIds.size()); + } + + private CapeConfigManager() { + configs = HashBiMap.create(); + } + + public void addConfig(int id, CapeConfig config) { + int realId = claimId(id); + this.configs.put(id, config); + try { + for (User u : config.users.values()) { + UserManager.INSTANCE.addUser(u); + } + + for (Group g : config.groups.values()) { + GroupManager.INSTANCE.addGroup(g); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + public CapeConfig getConfig(int id) { + return this.configs.get(id); + } + + public int getIdForConfig(CapeConfig config) { + return this.configs.inverse().get(config).intValue(); + } + + public static int getUniqueId() { + return availableIds.nextClearBit(0); + } + + public static int claimId(int id) { + try { + UnsignedBytes.checkedCast(id); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } + + boolean isRegistered = availableIds.get(id); + if (isRegistered) { + DevCapes.logger.error(String.format("The config ID %d was attempted to be claimed but is already claimed.", id)); + } + + availableIds.set(id); + return id; + } + +// public CapeConfig newInstance() { +// CapeConfig instance = new CapeConfig(); +// this.addConfig(this.getUniqueId(), ); +// return instance; +// } + + public CapeConfig parse(String config) { + CapeConfig instance = new CapeConfig(); + + try { + Map entries = new Gson().fromJson(config, Map.class); + + for (Map.Entry entry : entries.entrySet()) { + final String nodeName = entry.getKey(); + final Object obj = entry.getValue(); + if (obj instanceof Map) { + Map group = (Map) obj; + + Group g = GroupManager.INSTANCE.parse(nodeName, group); + if (g != null) { + instance.groups.put(g.name, g); + } + } else if (obj instanceof String) { + User u = UserManager.INSTANCE.parse(nodeName, obj); + if (u != null) { + instance.users.put(nodeName, u); + } + } + } + + } catch (JsonSyntaxException e) { + e.printStackTrace(); + } + + return instance; + } + + public CapeConfig parseFromStream(InputStream is) { + if (is == null) { + DevCapes.logger.error("Can't parse a null input stream!"); + return null; + } + CapeConfig instance = null; + try { + BufferedReader reader = new BufferedReader(new InputStreamReader(is)); + String json = ""; + while (reader.ready()) { + json += reader.readLine(); + } + instance = CapeConfigManager.INSTANCE.parse(json); + } catch (IOException e) { + e.printStackTrace(); + } + + return instance; + } +} diff --git a/src/main/java/com/jadarstudios/developercapes/cape/CapeManager.java b/src/main/java/com/jadarstudios/developercapes/cape/CapeManager.java new file mode 100644 index 00000000..dd1597e7 --- /dev/null +++ b/src/main/java/com/jadarstudios/developercapes/cape/CapeManager.java @@ -0,0 +1,60 @@ +package com.jadarstudios.developercapes.cape; + +import com.jadarstudios.developercapes.DevCapes; + +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Collection; +import java.util.HashMap; + +/** + * @author jadar + */ +public enum CapeManager { + INSTANCE; + + private HashMap capes; + + private CapeManager() { + this.capes = new HashMap(); + } + + public void addCape(ICape cape) { + if (!capes.containsValue(cape)) { + capes.put(cape.getName(), cape); + } + } + + public void addCapes(Collection capes) { + for (ICape c : capes) { + this.addCape(c); + } + } + + public ICape getCape(String capeName) { + return capes.get(capeName); + } + + public ICape newInstance(String name) { + StaticCape cape = new StaticCape(name); + this.capes.put(name, cape); + return cape; + } + + public ICape parse(String name, Object object) { + ICape cape = null; + if (!(object instanceof String)) { + DevCapes.logger.error(String.format("Cape, %s, could not be parsed because it is not a String!", object)); + return cape; + } + + try { + cape = new StaticCape(name, new URL((String) object)); + } catch (MalformedURLException e) { + DevCapes.logger.error(String.format("Are you crazy?? %s is not a valid URL!", (String) object)); + e.printStackTrace(); + } finally { + return cape; + } + } +} diff --git a/src/main/java/com/jadarstudios/developercapes/cape/ICape.java b/src/main/java/com/jadarstudios/developercapes/cape/ICape.java new file mode 100644 index 00000000..03f76aa4 --- /dev/null +++ b/src/main/java/com/jadarstudios/developercapes/cape/ICape.java @@ -0,0 +1,21 @@ +package com.jadarstudios.developercapes.cape; + +import net.minecraft.client.entity.AbstractClientPlayer; +import net.minecraft.client.renderer.texture.ITextureObject; +import net.minecraft.util.ResourceLocation; + +/** + * @author jadar + */ +public interface ICape { + + public String getName(); + + public ITextureObject getTexture(); + + public ResourceLocation getLocation(); + + public void loadTexture(AbstractClientPlayer player); + + public boolean isTextureLoaded(AbstractClientPlayer player); +} diff --git a/src/main/java/com/jadarstudios/developercapes/cape/StaticCape.java b/src/main/java/com/jadarstudios/developercapes/cape/StaticCape.java new file mode 100644 index 00000000..4763229e --- /dev/null +++ b/src/main/java/com/jadarstudios/developercapes/cape/StaticCape.java @@ -0,0 +1,57 @@ +package com.jadarstudios.developercapes.cape; + +import com.jadarstudios.developercapes.HDImageBuffer; +import com.mojang.authlib.minecraft.MinecraftProfileTexture; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.AbstractClientPlayer; +import net.minecraft.client.renderer.ThreadDownloadImageData; +import net.minecraft.util.ResourceLocation; + +import java.net.URL; + +/** + * @author jadar + */ +public class StaticCape extends AbstractCape { + + public StaticCape(String name, URL url) { + this.setName(name); + this.setURL(url); + } + + public StaticCape(String name) { + this(name, null); + } + + @Override + public void loadTexture(AbstractClientPlayer player) { + ResourceLocation location = this.getLocation(); + player.func_152121_a(MinecraftProfileTexture.Type.CAPE, location); + + Minecraft.getMinecraft().renderEngine.loadTexture(location, this.getTexture()); + } + + @Override + public boolean isTextureLoaded(AbstractClientPlayer player) { + ResourceLocation location = player.getLocationCape(); + if (location == null) { + return false; + } + + return true; + } + + public void setURL(URL url) { + if (url == null) { + this.texture = null; + return; + } + this.texture = new ThreadDownloadImageData(null, url.toString(), null, new HDImageBuffer()); + } + + public void setName(String name) { + this.name = name; + this.location = new ResourceLocation("DevCapes/" + name); + } + +} diff --git a/src/main/java/com/jadarstudios/developercapes/test/DevCapesTestMod.java b/src/main/java/com/jadarstudios/developercapes/test/DevCapesTestMod.java new file mode 100644 index 00000000..1fdcd474 --- /dev/null +++ b/src/main/java/com/jadarstudios/developercapes/test/DevCapesTestMod.java @@ -0,0 +1,30 @@ +package com.jadarstudios.developercapes.test; + +import com.jadarstudios.developercapes.DevCapes; +import com.jadarstudios.developercapes.cape.CapeConfig; +import com.jadarstudios.developercapes.cape.CapeConfigManager; +import cpw.mods.fml.common.Mod; +import cpw.mods.fml.common.event.FMLInitializationEvent; + +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; + +/** + * @author jadar + */ +@Mod(modid = "dct", name = "DevCapesOld Test", version = "na") +public class DevCapesTestMod { + + + @Mod.EventHandler + public void init(FMLInitializationEvent event) { + try { + InputStream is = DevCapes.getInstance().getStreamForURL(new URL("https://raw.githubusercontent.com/runescapejon/Adventurebackpack-Capes/master/capes.json")); + CapeConfig config = CapeConfigManager.INSTANCE.parseFromStream(is); + CapeConfigManager.INSTANCE.addConfig(CapeConfigManager.getUniqueId(), config); + } catch (MalformedURLException e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/jadarstudios/developercapes/user/Group.java b/src/main/java/com/jadarstudios/developercapes/user/Group.java new file mode 100644 index 00000000..6a036d92 --- /dev/null +++ b/src/main/java/com/jadarstudios/developercapes/user/Group.java @@ -0,0 +1,53 @@ +package com.jadarstudios.developercapes.user; + +import com.jadarstudios.developercapes.cape.ICape; + +import java.util.HashMap; +import java.util.Set; + +/** + * @author jadar + */ +public class Group { + + protected HashMap users; + protected ICape cape; + public final String name; + + public Group(String name) { + this.users = new HashMap(); + this.name = name; + } + + public void addUser(User user) { + if (!this.users.containsValue(user)) { + user.capes.add(this.cape); + this.users.put(user.username, user); + } + } + + public void addUsers(Set users) { + for (User user : users) { + this.addUser(user); + } + } + + public void removeUser(User user) { + if (this.users.containsValue(user)) { + this.users.remove(user); + user.capes.remove(this.cape); + } + } + + public ICape getCape() { + return this.cape; + } + + public void setCape(ICape cape) { + for (User user : this.users.values()) { + user.capes.remove(this.cape); + } + + this.cape = cape; + } +} diff --git a/src/main/java/com/jadarstudios/developercapes/user/GroupManager.java b/src/main/java/com/jadarstudios/developercapes/user/GroupManager.java new file mode 100644 index 00000000..5af4bfb2 --- /dev/null +++ b/src/main/java/com/jadarstudios/developercapes/user/GroupManager.java @@ -0,0 +1,74 @@ +package com.jadarstudios.developercapes.user; + +import com.jadarstudios.developercapes.DevCapes; +import com.jadarstudios.developercapes.cape.CapeManager; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; + +/** + * @author jadar + */ +public enum GroupManager { + INSTANCE; + + private HashMap groups; + + private GroupManager() { + this.groups = new HashMap(); + } + + public void addGroup(Group group) { + groups.put(group.name, group); + + try { + UserManager.INSTANCE.addUsers(new HashSet(group.users.values())); + CapeManager.INSTANCE.addCape(group.cape); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public Group getGroup(String capeName) { + return groups.get(capeName); + } + + + public Group newInstance(String name) { + if (this.getGroup(name) != null) { + return this.getGroup(name); + } + Group group = new Group(name); + return group; + } + + public Group parse(String name, Map data) { + Group group = new Group(name); + + Object usersObj = data.get("users"); + Object capeUrlObj = data.get("capeUrl"); + + if (!(usersObj instanceof ArrayList) || !(capeUrlObj instanceof String)) { + DevCapes.logger.error(String.format("Group %s could not be parsed because it either is invalid or missing elements.", name)); + return null; + } + + ArrayList users = (ArrayList)usersObj; + String capeUrl = (String)capeUrlObj; + + group.cape = CapeManager.INSTANCE.parse(name, capeUrl); + + for (Object obj : users) { + User user = UserManager.INSTANCE.parse(obj, group.cape); + if (user != null) { + group.addUser(user); + } else { + continue; + } + } + + return group; + } +} diff --git a/src/main/java/com/jadarstudios/developercapes/user/User.java b/src/main/java/com/jadarstudios/developercapes/user/User.java new file mode 100644 index 00000000..0bdf8b03 --- /dev/null +++ b/src/main/java/com/jadarstudios/developercapes/user/User.java @@ -0,0 +1,22 @@ +package com.jadarstudios.developercapes.user; + +import com.jadarstudios.developercapes.cape.ICape; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author jadar + */ +public class User { + + public List capes; + public final String username; + + public User(String username) { + this.username = username; + this.capes = new ArrayList(); + } + + +} diff --git a/src/main/java/com/jadarstudios/developercapes/user/UserManager.java b/src/main/java/com/jadarstudios/developercapes/user/UserManager.java new file mode 100644 index 00000000..5ce35d0c --- /dev/null +++ b/src/main/java/com/jadarstudios/developercapes/user/UserManager.java @@ -0,0 +1,72 @@ +package com.jadarstudios.developercapes.user; + +import com.jadarstudios.developercapes.DevCapes; +import com.jadarstudios.developercapes.cape.CapeManager; +import com.jadarstudios.developercapes.cape.ICape; + +import java.util.HashMap; +import java.util.Set; + +/** + * @author jadar + */ +public enum UserManager { + INSTANCE; + + protected HashMap users; + + private UserManager() { + this.users = new HashMap(); + } + + public User getUser(String username) { + return this.users.get(username); + } + + public void addUser(User user) throws NullPointerException { + if (user == null || user.username == null || user.username.isEmpty()) { + DevCapes.logger.error("Cannot add a null user."); + throw new NullPointerException(); + } + + this.users.put(user.username, user); + CapeManager.INSTANCE.addCapes(user.capes); + } + + public void addUsers(Set users) throws Exception { + for (User u : users) { + this.addUser(u); + } + } + + public User newInstance(String username) { + User instance = null; + if (this.users.containsKey(username)) { + instance = this.getUser(username); + } else { + instance = new User(username); + this.users.put(username, instance); + } + + return instance; + } + + public User parse(Object user, Object cape) { + User userInstance = null; + if (!(user instanceof String)) { + DevCapes.logger.error(String.format("User %s could not be parsed because it was not a String!", user.toString())); + return userInstance; + } + + userInstance = new User((String) user); + ICape capeInstance = CapeManager.INSTANCE.parse((String) user, cape); + + if (capeInstance != null) { + userInstance.capes.add(capeInstance); + } else { + DevCapes.logger.error(String.format("Error parsing cape, %s", cape.toString())); + } + + return userInstance; + } +} From c196d32e7c77a9f99b0196e322ecf8ee39f62b68 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sun, 8 May 2016 13:54:04 -0400 Subject: [PATCH 199/462] Added files via upload --- .../textures/backpack/Liberation.png | Bin 0 -> 3678 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/adventurebackpack/textures/backpack/Liberation.png diff --git a/src/main/resources/assets/adventurebackpack/textures/backpack/Liberation.png b/src/main/resources/assets/adventurebackpack/textures/backpack/Liberation.png new file mode 100644 index 0000000000000000000000000000000000000000..5fdf2cfc5899995ecbdfaa1f3553580d7755dad7 GIT binary patch literal 3678 zcmbW0c{J4T+s8lC7{-!q>|w}Kq56g7i_AA=PeMbPq%293eH-hL5HY?~B;s2_S(0T4 z!(`t=*2zrvWwK26F_>n4)AKy%_nhc7L$;b5EYeC zl982%D=I3ANh=>yR#25wP*nI`1O(ychVnp#pim(NaZz!Fe>>Qp0TC$hClCz=9R&`F zfWRUkb{hZ(01$+u_P5~w3D6-h7lfM!%FD;kNx%yOhd^NPA&!0y04F<=^A2!{KtvVK zT;PV;+~GOuC#D&b_8O{WRM9MMJGic_<>LR4mrp`cN?Jxm_1N(fYT9RY&guT4ckz<3 ziK&^nh21rzy~Fhzj;?O*cRlWT-VX>23J$@9hQ&ULi%)o*n3VqX+4GFd7g;agn- zsasTyD85v0|Ku7Vqeg?S#NfO8uSelm;oOLM+&yRd6dSNm{s5lMY`2oMTQ9&9A2Mx% zyR+Q{N>N=#{?$ zfY-~x(BY2mtt~^ReQ(0}^o(PMp7ks9&22}{Z2^IoWcDEFdu*T@?K891o&vu)xQ$5I zx4mz#H$H5f6H8(f z%Ols54Sab(LY$g9FOi*3U#_0GBGI~aXW~+0K@Ms+aw&Ys;w*Tn)AaprtryR2E=={jwqU*ZHm-@z0FYVB? zMxw;k-;c&41y&xA$cR4p0tjL4m67zJhYU#J0^2Y9<52tl5lD9 zRk8=7zY~>(GKcbG^Np?qj%IIR-|wl&%E`b23QMQ5u~{obu_#G4(9*-|Vgrd(x&uAr z6&pA;8Ira5fDL&0rR4rXXRZ5urr9+csw6lLF+&D=<=ULb(Fcr>675jWBi_L=p9FBD zt0Kudlji{BZ_9m#)JjJ)pmG$NWr*xZ1aVK~2Odwbw@3IA-?>aqjiJCCn~M zI~{G6ieR{}&(6(^HWl1wDLzHk63%p`y$~?xKYsfQH(mPnHCX3&x$v;#Qewdc;=|D6 zrWyLOn@@A<3O?Bwi@U{%+58C?#I}gfo!%G2=P`jy&IgwlM~RXrJc)eT=#wU7l>R#= zZM{GK+|2<+X}hlJSO#ffH<4-m0n^)78>PIVvP;3E`f>wVj;6%>T+Yt{n>eJb;3$PD zx&9$`c0h*gIjQjRz`Zn+?pqmJE^jlh*l{(st6UH#sLMaLNVICG##H-WtE8_uHRXky zej`=~CzP$kwooq(uHnxJkqHA86vE`Kh#YUSpjK@1zRXtMBbLBMP}+zJFCY z_qg6Y7&^R>AF=QeX}09RlE%c|BL1o*NbQm*ehuHm`1hPhCY@Tm<|Tg2{Xy=9?A=H5 z&zJ{w^;0 z{!QT9yx^Z_o4^p+!w@6bvvf+<1f{0ecu;z*c*SbOQ}sY}&{%v)>UR@EemAlv)1UEt z!&Hxlc_LE3U6&1*u{aZ%WIM;o+H>C6@?rx{hHGB{RWXLZ^?3}$&S=<2kS9y*qjilmkyX=d;TX6-h$tR4lB-gI>uigHjRj?!&BK%>S^N(J z9f0WOTO-lFZ64oA8@A*_L(|pE9VyY=k!~e#w{Hqn4b6Q51v*#-mrsIx;F~@1f2?4Y+^^5o+ zZo!0_aonDOe$!bcwnszGQEY1M7RZJpzEUGMo zlO;8ff9Xt?7QCA>F7yluOKIs@A8*;}`q(k_2hz4p?YIh#2M~Drx%~XPb4NKZW3yv% z&A4LhsO8*%M(^vMHL0-@^RBwbpmCv@p}V)M;} zE69r63taNXzD?W=EuM$l-EY3)C13In3Ot(l-hKLeqATQDw4~w%UGN88B+_wg<|`c) znlU@3{)kKYoh+Edb+@ooT{q(5gPO5Tom{V3zT|7>gm<6kYWz^uZMSRie$<{PXzsSO zd;t;{4F7nk3YS~0(-279r1~%>MA$$j(u~=+Me_jDMA?8$>fXH(($+bT-2}rpE5LYG zNZh($DJ*D$pyo(NXrWCuK`lA%eyNQk`}Wd|#E7?&)y7tJ%9K7v!(l=+GQyfyOOF{2WY6 zFs^N|l}e|*uaAcysh%QwZZ)gFem3$@olg2X3*C6KjMZMvt0&)0=smW^5nV@HaiWD` zZde4mo;Z)4&e;*Q^@N|gj!|z#R40(JGsia&$trB%k-u$C{0(i!mKYmoizq?vrKW2Z z`ASK-KDA@OKSv#5_-y!GWrR!VWQvaJsHz+nAa*nG19NVNm0vfPMrf(NK z3UW6&RohNlGeq;MRpv{gW>&h%VQ$kKdd?&W8fwPHo;U6CnaSg*tJVPSt%9V&?~zQ9t!2`VR^l z;HNC>1;yo%s@gR2p=H2@29QaV`-8~I(Tgl$b*-EgnKTun^veb@IoMuA*y{1~>bZd@ z`nD|2xxeqem-XcJ58)p!evpaw&g@!4-(*+mr3wd9qt}oP8K3M5=@oag^jaQZkN*>7 C#u{V* literal 0 HcmV?d00001 From d8b2a85f80afbdfd4f4a3ecdae8ca81ca5dc98d0 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sun, 8 May 2016 13:54:46 -0400 Subject: [PATCH 200/462] Added files via upload --- .../adventurebackpack/proxy/ClientProxy.java | 16 +++++++++++++++- .../adventurebackpack/proxy/CommonProxy.java | 1 + .../darkona/adventurebackpack/proxy/IProxy.java | 3 ++- .../adventurebackpack/proxy/ServerProxy.java | 8 ++++++++ 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java index 49f02bbf..f0d20c2b 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java @@ -20,6 +20,8 @@ import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Utils; +import com.jadarstudios.developercapes.DevCapes; + import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.FMLCommonHandler; @@ -60,7 +62,8 @@ public void init() registerKeybindings(); MinecraftForge.EVENT_BUS.register(new GuiOverlay(Minecraft.getMinecraft())); } - + + public void initNetwork() { @@ -157,5 +160,16 @@ public void registerRenderInformation() } } } + public void initCapes() + { + DevCapes.getInstance().registerConfig("https://raw.githubusercontent.com/runescapejon/Adventurebackpack-Capes/master/capes.json"); + } + + + @Override + public void capes() { + // TODO Auto-generated method stub + + } } diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java index 44149ddf..b12dd99d 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java @@ -29,4 +29,5 @@ public EntityPlayerMP getPlayer() { public void setPlayer(EntityPlayerMP player) { this.player = player; } + public void cape() {} } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java index 63ba90d3..87b11212 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java @@ -27,5 +27,6 @@ public interface IProxy void init(FMLInitializationEvent event); public void registerRenderInformation(); - + + public void capes(); } diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java index 8bfd5835..96409828 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java @@ -105,4 +105,12 @@ public void registerRenderInformation() public void init(FMLInitializationEvent event) { FMLCommonHandler.instance().bus().register(new DeveloperJoining()); } + + public void cape() {} + + @Override + public void capes() { + + + } } \ No newline at end of file From 35f163fc4871ad9495e63ce439b9ae75b63aff3a Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sun, 8 May 2016 13:55:16 -0400 Subject: [PATCH 201/462] Added files via upload --- .../block/BlockAdventureBackpack.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java index 64fa99c8..4fe04093 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java @@ -110,7 +110,6 @@ private String getAssociatedTileColorName(IBlockAccess world, int x, int y, int final TileEntity tile = world.getTileEntity(x, y, z); return (tile instanceof TileAdventureBackpack) ? ((TileAdventureBackpack) tile).getColorName() : "error"; } - @Override public boolean canRenderInPass(int pass) { @@ -126,7 +125,7 @@ public boolean canEntityDestroy(IBlockAccess world, int x, int y, int z, Entity @Override public float getEnchantPowerBonus(World world, int x, int y, int z) { - return getAssociatedTileColorName(world, x, y, z).equals("Bookshelf") ? 10 : 0; + return getAssociatedTileColorName(world, x, y, z).equals("Bookshelf") ? 10 : 0; } @Override @@ -214,14 +213,18 @@ public boolean isFlammable(IBlockAccess world, int x, int y, int z, ForgeDirecti { return false; } - @Override public String getUnlocalizedName() { return "blockAdventureBackpack"; } - @Override + private void setUnlocalizedName(String string) { + setUnlocalizedName("blockAdventureBackpack"); + + } + + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { From 6befb7d45d5c442752b97e04a559b18d9a108fca Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sun, 8 May 2016 14:12:56 -0400 Subject: [PATCH 202/462] unused code --- .../inventory/InventorySteamJetpack.java | 493 ------------------ 1 file changed, 493 deletions(-) delete mode 100644 src/main/java/com/darkona/adventurebackpack/inventory/InventorySteamJetpack.java diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventorySteamJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventorySteamJetpack.java deleted file mode 100644 index 3f6a0719..00000000 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventorySteamJetpack.java +++ /dev/null @@ -1,493 +0,0 @@ -package com.darkona.adventurebackpack.inventory; - -import com.darkona.adventurebackpack.util.FluidUtils; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntityFurnace; -import net.minecraftforge.fluids.FluidContainerRegistry; -import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fluids.FluidTank; - -/** - * Created on 15/01/2015 - * - * @author Darkona - */ -public class InventorySteamJetpack implements IInventoryTanks -{ - public static final boolean OFF = false; - public static final boolean ON = true; - private FluidTank waterTank = new FluidTank(6000); - private FluidTank steamTank = new FluidTank(12000); - private ItemStack[] inventory = new ItemStack[3]; - private int temperature = 25; - private boolean status = OFF; - private int burnTicks = 0; - private ItemStack containerStack; - private long systemTime = 0; - private boolean boiling = false; - private boolean leaking = false; - private boolean inUse = false; - public int currentItemBurnTime = 0; - - - public static final int MAX_TEMPERATURE = 200; - public static final int BUCKET_IN_SLOT = 0; - public static final int BUCKET_OUT_SLOT = 1; - public static final int FUEL_SLOT = 2; - private int coolTicks = 5000; - - public InventorySteamJetpack(final ItemStack jetpack) - { - this.containerStack = jetpack; - if (!containerStack.hasTagCompound()) - { - containerStack.stackTagCompound = new NBTTagCompound(); - closeInventory(); - } - openInventory(); - } - - public int getBurnTimeRemainingScaled(int scale) - { - if (this.currentItemBurnTime == 0) - { - this.currentItemBurnTime = 200; - } - - return this.burnTicks * scale / this.currentItemBurnTime; - } - - @Override - public boolean updateTankSlots() - { - return false; - } - - @Override - public void loadFromNBT(NBTTagCompound compound) - { - if(compound.hasKey("jetpackData")) - { - NBTTagCompound jetpackData = compound.getCompoundTag("jetpackData"); - waterTank.readFromNBT(jetpackData.getCompoundTag("waterTank")); - steamTank.readFromNBT(jetpackData.getCompoundTag("steamTank")); - temperature = jetpackData.getInteger("temperature"); - status = jetpackData.getBoolean("status"); - burnTicks = jetpackData.getInteger("burnTicks"); - coolTicks = jetpackData.getInteger("coolTicks"); - systemTime = jetpackData.getLong("systemTime"); - inUse = jetpackData.getBoolean("inUse"); - boiling = jetpackData.getBoolean("boiling"); - leaking = jetpackData.getBoolean("leaking"); - currentItemBurnTime = jetpackData.getInteger("currentBurn"); - NBTTagList items = jetpackData.getTagList("inventory", net.minecraftforge.common.util.Constants.NBT.TAG_COMPOUND); - for (int i = 0; i < items.tagCount(); i++) - { - NBTTagCompound item = items.getCompoundTagAt(i); - byte slot = item.getByte("Slot"); - if (slot >= 0 && slot < inventory.length) - { - inventory[slot] = ItemStack.loadItemStackFromNBT(item); - } - } - } - } - - @Override - public void saveToNBT(NBTTagCompound compound) - { - NBTTagCompound jetpackData; - if(compound.hasKey("jetpackData")) - { - jetpackData = compound.getCompoundTag("jetpackData"); - }else - { - jetpackData = new NBTTagCompound(); - } - - jetpackData.setTag("waterTank",waterTank.writeToNBT(new NBTTagCompound())); - jetpackData.setTag("steamTank",steamTank.writeToNBT(new NBTTagCompound())); - jetpackData.setInteger("temperature", temperature); - jetpackData.setBoolean("status", status); - jetpackData.setInteger("burnTicks", burnTicks); - jetpackData.setInteger("coolTicks", coolTicks); - jetpackData.setLong("systemTime",systemTime); - jetpackData.setBoolean("inUse", inUse); - jetpackData.setBoolean("boiling",boiling); - jetpackData.setBoolean("leaking",leaking); - jetpackData.setInteger("currentBurn",currentItemBurnTime); - NBTTagList items = new NBTTagList(); - for (int i = 0; i < inventory.length; i++) - { - ItemStack stack = inventory[i]; - if (stack != null) - { - NBTTagCompound item = new NBTTagCompound(); - item.setByte("Slot", (byte) i); - stack.writeToNBT(item); - items.appendTag(item); - } - } - jetpackData.setTag("inventory", items); - compound.setTag("jetpackData",jetpackData); - } - - @Override - public FluidTank[] getTanksArray() - { - FluidTank[] tanks = {waterTank,steamTank}; - return tanks; - } - - @Override - public void dirtyInventory() - { - NBTTagList items = new NBTTagList(); - for (int i = 0; i < inventory.length; i++) - { - ItemStack stack = inventory[i]; - if (stack != null) - { - NBTTagCompound item = new NBTTagCompound(); - item.setByte("Slot", (byte) i); - stack.writeToNBT(item); - items.appendTag(item); - } - } - containerStack.stackTagCompound.getCompoundTag("jetpackData").setTag("inventory", items); - } - - @Override - public void dirtyTanks() - { - containerStack.stackTagCompound.getCompoundTag("jetPackData").setTag("waterTank",waterTank.writeToNBT(new NBTTagCompound())); - containerStack.stackTagCompound.getCompoundTag("jetPackData").setTag("steamTank",steamTank.writeToNBT(new NBTTagCompound())); - } - - public void dirtyBoiler() - { - NBTTagCompound jetpackData = containerStack.stackTagCompound.getCompoundTag("jetPackData"); - jetpackData.setBoolean("boiling", boiling); - jetpackData.setBoolean("leaking", leaking); - jetpackData.setInteger("temperature", temperature); - jetpackData.setInteger("burnTicks", burnTicks); - jetpackData.setInteger("coolTicks", coolTicks); - jetpackData.setInteger("currentBurn",currentItemBurnTime); - } - - public int consumeFuel() - { - int result = 0; - if(isFuel(inventory[FUEL_SLOT])) - { - result = TileEntityFurnace.getItemBurnTime(inventory[FUEL_SLOT]); - --inventory[FUEL_SLOT].stackSize; - if(inventory[FUEL_SLOT].stackSize == 0) - { - inventory[FUEL_SLOT] = inventory[FUEL_SLOT].getItem().getContainerItem(inventory[FUEL_SLOT]); - } - dirtyInventory(); - } - return result; - } - - public boolean isFuel(ItemStack stack) - { - return TileEntityFurnace.isItemFuel(stack); - } - - - - @Override - public void setInventorySlotContentsNoSave(int slot, ItemStack stack) - { - if (slot > inventory.length) return; - inventory[slot] = stack; - if (stack != null && stack.stackSize > this.getInventoryStackLimit()) - { - stack.stackSize = this.getInventoryStackLimit(); - } - } - - @Override - public ItemStack decrStackSizeNoSave(int slot, int amount) - { - if (slot < inventory.length && inventory[slot] != null) - { - if (inventory[slot].stackSize > amount) - { - ItemStack result = inventory[slot].splitStack(amount); - return result; - } - ItemStack stack = inventory[slot]; - setInventorySlotContentsNoSave(slot, null); - return stack; - } - return null; - } - - @Override - public int getSizeInventory() - { - return inventory.length; - } - - @Override - public ItemStack getStackInSlot(int slot) - { - return inventory[slot]; - } - - @Override - public ItemStack decrStackSize(int slot, int quantity) - { - ItemStack itemstack = getStackInSlot(slot); - - if (itemstack != null) - { - if (itemstack.stackSize <= quantity) - { - if(slot == FUEL_SLOT) - { - setInventorySlotContents(slot, itemstack.getItem().getContainerItem(itemstack)); - } - else - { - setInventorySlotContents(slot, null); - } - } else - { - itemstack = itemstack.splitStack(quantity); - } - } - return itemstack; - } - - @Override - public ItemStack getStackInSlotOnClosing(int i) - { - return (i == 0 || i== 1) ? inventory[i] : null; - } - - @Override - public void setInventorySlotContents(int slot, ItemStack stack) - { - inventory[slot] = stack; - if (stack != null && stack.stackSize > getInventoryStackLimit()) - { - stack.stackSize = getInventoryStackLimit(); - } - if(slot < FUEL_SLOT)onInventoryChanged(); - dirtyInventory(); - -} - - public void onInventoryChanged() - { - for (int i = 0; i < inventory.length; i++) - { - if (i == 0) - { - ItemStack container = getStackInSlot(i); - if(FluidContainerRegistry.isFilledContainer(container) && FluidUtils.isContainerForFluid(container, FluidRegistry.WATER)) - { - InventoryActions.transferContainerTank(this, waterTank, i); - }else - if(FluidContainerRegistry.isEmptyContainer(container) && waterTank.getFluid()!=null && FluidUtils.isContainerForFluid(container, FluidRegistry.WATER)) - { - InventoryActions.transferContainerTank(this, waterTank, i); - } - } - } - markDirty(); - } - @Override - public String getInventoryName() - { - return "Steam Jetpack"; - } - - @Override - public boolean hasCustomInventoryName() - { - return true; - } - - @Override - public int getInventoryStackLimit() - { - return 64; - } - - @Override - public void markDirty() - { - saveToNBT(containerStack.stackTagCompound); - } - - @Override - public boolean isUseableByPlayer(EntityPlayer p_70300_1_) - { - return true; - } - - @Override - public void openInventory() - { - loadFromNBT(containerStack.stackTagCompound); - } - - @Override - public void closeInventory() - { - saveToNBT(containerStack.stackTagCompound); - } - - @Override - public boolean isItemValidForSlot(int slot, ItemStack stack) - { - if(slot == BUCKET_IN_SLOT)return SlotFluid.valid(stack) && FluidUtils.isContainerForFluid(stack, FluidRegistry.WATER); - if(slot == FUEL_SLOT)return TileEntityFurnace.isItemFuel(stack); - return false; - } - - public ItemStack getParentItemStack() - { - return containerStack; - } - - public FluidTank getWaterTank() - { - return waterTank; - } - - public FluidTank getSteamTank() - { - return steamTank; - } - - public boolean getStatus() - { - return status; - } - - public void setStatus(boolean status) - { - this.status = status; - } - - public int getTemperature() - { - return temperature; - } - - public void setTemperature(int temperature) - { - this.temperature = temperature; - } - - public boolean isInUse() - { - return inUse; - } - - public void setInUse(boolean inUse) - { - this.inUse = inUse; - } - - public boolean isBoiling() - { - return boiling; - } - - public void setBoiling(boolean boiling) - { - this.boiling = boiling; - } - - public boolean isLeaking() - { - return leaking; - } - - public void setLeaking(boolean leaking) - { - this.leaking = leaking; - } - - public long getSystemTime() - { - return systemTime; - } - - public void setSystemTime(long systemTime) - { - this.systemTime = systemTime; - } - - public int getBurnTicks() - { - return burnTicks; - } - - public void setBurnTicks(int burnTicks) - { - this.burnTicks = burnTicks; - } - - public ItemStack[] getInventory() - { - return inventory; - } - - public void setInventory(ItemStack[] inventory) - { - this.inventory = inventory; - } - - public int getIncreasingFactor() - { - if(temperature < 50)return 20; - if(temperature < 100)return 15; - if(temperature < 150)return 10; - return 5; - } - - public int getDecreasingFactor() - { - if(temperature > 150)return 40; - if(temperature > 100)return 80; - if(temperature > 50)return 120; - return 5; - } - public int getCoolTicks() - { - return coolTicks; - } - - public void setCoolTicks(int coolTicks) - { - this.coolTicks = coolTicks; - } - - public void setContainerStack(ItemStack containerStack) - { - this.containerStack = containerStack; - } - - public ItemStack getContainerStack() - { - return containerStack; - } - - public void calculateLostTime() - { - @SuppressWarnings("unused") - long elapsedTimesince = System.currentTimeMillis() - systemTime; - - } -} From 1a47a19ab869d281ae1b0676d9a69698a57abeb5 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sun, 8 May 2016 14:14:07 -0400 Subject: [PATCH 203/462] unused code --- .../client/models/ModelSteamJetpack.java | 200 ------------------ 1 file changed, 200 deletions(-) delete mode 100644 src/main/java/com/darkona/adventurebackpack/client/models/ModelSteamJetpack.java diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelSteamJetpack.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelSteamJetpack.java deleted file mode 100644 index 0b815d9b..00000000 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelSteamJetpack.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.darkona.adventurebackpack.client.models; - -import codechicken.lib.vec.Vector3; -import com.darkona.adventurebackpack.inventory.InventorySteamJetpack; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import org.lwjgl.opengl.GL11; - -import java.util.List; - - -public class ModelSteamJetpack extends ModelWearable { - public ModelRenderer Base; - public ModelRenderer tubeStraightLeft; - public ModelRenderer tubeStraightRight; - public ModelRenderer tubeEndLeft; - public ModelRenderer tubeEndRight; - public ModelRenderer tankWallLeft; - public ModelRenderer tankWallRight; - public ModelRenderer fireBox; - public ModelRenderer tankTop; - public ModelRenderer tankBottom; - public ModelRenderer pressureTank; - public ModelRenderer waterTube1; - public ModelRenderer waterTube2; - public ModelRenderer tubeBendLeft; - public ModelRenderer tubeBendRight; - private ItemStack jetpack; - - @SuppressWarnings("unchecked") - public ModelSteamJetpack() { - this.textureWidth = 64; - this.textureHeight = 32; - - this.tubeStraightRight = new ModelRenderer(this, 0, 14); - this.tubeStraightRight.setRotationPoint(-3.0F, 1.0F, 8.3F); - this.tubeStraightRight.addBox(-5.8F, 0.0F, 0.0F, 6, 1, 1, 0.0F); - - this.tubeEndLeft = new ModelRenderer(this, 0, 17); - this.tubeEndLeft.setRotationPoint(7.6F, 1.7F, 8.3F); - this.tubeEndLeft.addBox(0.0F, 0.0F, 0.0F, 1, 4, 1, -0.1F); - - this.setRotateAngle(tubeEndLeft, 0.0F, 0.0F, -0.2617993877991494F); - this.tankBottom = new ModelRenderer(this, 10, 20); - this.tankBottom.setRotationPoint(-1.0F, 8.0F, 3.0F); - this.tankBottom.addBox(-3.0F, 1.0F, 0.0F, 3, 1, 3, 0.0F); - this.tubeBendLeft = new ModelRenderer(this, 0, 14); - this.tubeBendLeft.setRotationPoint(-2.0F, 1.0F, 2.0F); - this.tubeBendLeft.addBox(0.0F, 0.0F, 0.0F, 5, 1, 1, 0.0F); - this.setRotateAngle(tubeBendLeft, 0.0F, -0.8080874436733745F, 0.0F); - this.waterTube2 = new ModelRenderer(this, 10, 17); - this.waterTube2.setRotationPoint(0.0F, 1.0F, 0.0F); - this.waterTube2.addBox(-2.0F, 1.0F, 1.0F, 2, 1, 1, 0.0F); - this.tubeEndRight = new ModelRenderer(this, 0, 17); - this.tubeEndRight.setRotationPoint(-7.7F, 1.6F, 8.3F); - this.tubeEndRight.addBox(-1.0F, 0.0F, 0.0F, 1, 4, 1, -0.1F); - this.setRotateAngle(tubeEndRight, 0.0F, 0.0F, 0.2617993877991494F); - this.Base = new ModelRenderer(this, 0, 0); - this.Base.setRotationPoint(0.0F, 0.0F, 0.0F); - this.Base.addBox(-4.0F, 0.0F, 2.0F, 8, 12, 1, 0.0F); - this.waterTube1 = new ModelRenderer(this, 10, 17); - this.waterTube1.setRotationPoint(0.0F, 1.0F, 0.0F); - this.waterTube1.addBox(-2.0F, 1.0F, 1.0F, 1, 1, 1, 0.0F); - this.tubeBendRight = new ModelRenderer(this, 0, 14); - this.tubeBendRight.setRotationPoint(-2.0F, 1.0F, 2.0F); - this.tubeBendRight.addBox(-5.0F, 0.0F, 0.0F, 5, 1, 1, 0.0F); - this.setRotateAngle(tubeBendRight, 0.0F, 0.7976154681614086F, 0.0F); - this.tankWallLeft = new ModelRenderer(this, 3, 23); - this.tankWallLeft.setRotationPoint(-1.0F, 1.0F, 1.0F); - this.tankWallLeft.addBox(0.0F, 6.0F, 2.0F, 1, 1, 3, 0.0F); - this.tankWallRight = new ModelRenderer(this, 5, 17); - this.tankWallRight.setRotationPoint(-1.0F, 1.0F, 3.0F); - this.tankWallRight.addBox(-3.0F, 0.0F, 2.0F, 1, 8, 1, 0.0F); - this.pressureTank = new ModelRenderer(this, 19, 0); - this.pressureTank.setRotationPoint(2.0F, 0.0F, 3.0F); - this.pressureTank.addBox(-3.0F, 0.0F, 0.0F, 5, 7, 3, 0.0F); - this.fireBox = new ModelRenderer(this, 26, 25); - this.fireBox.setRotationPoint(2.0F, 8.0F, 3.0F); - this.fireBox.addBox(-3.0F, 0.0F, 0.0F, 5, 4, 3, 0.0F); - this.tankTop = new ModelRenderer(this, 10, 20); - this.tankTop.setRotationPoint(-4.0F, 0.0F, 3.0F); - this.tankTop.addBox(0.0F, 0.0F, 0.0F, 3, 1, 3, 0.0F); - this.tubeStraightLeft = new ModelRenderer(this, 0, 14); - this.tubeStraightLeft.setRotationPoint(2.7F, 1.0F, 8.3F); - this.tubeStraightLeft.addBox(0.0F, 0.0F, 0.0F, 6, 1, 1, 0.0F); - - this.Base.addChild(this.tankBottom); - this.pressureTank.addChild(this.tubeBendLeft); - this.waterTube1.addChild(this.waterTube2); - this.tankBottom.addChild(this.waterTube1); - this.pressureTank.addChild(this.tubeBendRight); - this.Base.addChild(this.pressureTank); - this.Base.addChild(this.fireBox); - this.Base.addChild(this.tankTop); - - bipedBody.addChild(Base); - bipedBody.addChild(tubeStraightLeft); - bipedBody.addChild(tubeStraightRight); - bipedBody.addChild(tubeEndLeft); - bipedBody.addChild(tubeEndRight); - bipedBody.addChild(tankWallLeft); - bipedBody.addChild(tankWallRight); - - - float offsetZ = 0.08F; - float offsetY = 0.0F; - for (ModelRenderer part : (List) bipedBody.childModels) - { - setOffset(part, part.offsetX + 0, part.offsetY + offsetY, part.offsetZ + offsetZ); - } - } - - public ModelSteamJetpack setWearable(ItemStack wearable) - { - this.jetpack = wearable; - return this; - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack stack) - { - this.jetpack = stack; - render(entity, f, f1,f2,f3,f4,f5); - } - - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - isSneak = (entity != null && entity.isSneaking()); - - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - - if (entity != null && entity instanceof EntityPlayer) - { - GL11.glPushMatrix(); - - GL11.glTranslatef(bipedBody.offsetX, bipedBody.offsetY, bipedBody.offsetZ); - GL11.glColor4f(1, 1, 1, 1); - - if (bipedBody.rotateAngleX == 0.0F && bipedBody.rotateAngleY == 0.0F && bipedBody.rotateAngleZ == 0.0F) - { - if (bipedBody.rotationPointX == 0.0F && bipedBody.rotationPointY == 0.0F && bipedBody.rotationPointZ == 0.0F) - { - renderSteamPack(f5); - } else - { - GL11.glTranslatef(bipedBody.rotationPointX * f5, bipedBody.rotationPointY * f5, bipedBody.rotationPointZ * f5); - renderSteamPack(f5); - GL11.glTranslatef(-bipedBody.rotationPointX * f5, -bipedBody.rotationPointY * f5, -bipedBody.rotationPointZ * f5); - } - } else - { - GL11.glPushMatrix(); - GL11.glTranslatef(bipedBody.rotationPointX * f5, bipedBody.rotationPointY * f5, bipedBody.rotationPointZ * f5); - - if (bipedBody.rotateAngleZ != 0.0F) - { - GL11.glRotatef(bipedBody.rotateAngleZ * (180F / (float) Math.PI), 0.0F, 0.0F, 1.0F); - } - - if (bipedBody.rotateAngleY != 0.0F) - { - GL11.glRotatef(bipedBody.rotateAngleY * (180F / (float) Math.PI), 0.0F, 1.0F, 0.0F); - } - - if (bipedBody.rotateAngleX != 0.0F) - { - GL11.glRotatef(bipedBody.rotateAngleX * (180F / (float) Math.PI), 1.0F, 0.0F, 0.0F); - } - renderSteamPack(f5); - GL11.glPopMatrix(); - } - GL11.glTranslatef(-bipedBody.offsetX, -bipedBody.offsetY, -(bipedBody.offsetZ)); - GL11.glPopMatrix(); - } - - } - - public void renderSteamPack(float f5) - { - InventorySteamJetpack inv = new InventorySteamJetpack(jetpack); - - this.fireBox.setTextureOffset((inv.getBurnTicks() > 0) ? 9 : 26, 25); - - tubeStraightRight.render(f5); - tubeEndLeft.render(f5); - tubeEndRight.render(f5); - Base.render(f5); - tankWallLeft.render(f5); - tankWallRight.render(f5); - tubeStraightLeft.render(f5); - - GL11.glPushMatrix(); - renderFluidInTank(inv.getWaterTank(), new Vector3(0, .5f, 0), new Vector3(.155f, 0, .135f), new Vector3(0.18f, 0.0625f, -0.045f), tankTop); - GL11.glPopMatrix(); - - } - -} From d230d9172748ffaf13be84497cae1a27a98c9222 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sun, 8 May 2016 14:19:40 -0400 Subject: [PATCH 204/462] Added files via upload --- src/main/resources/assets/adventurebackpack/lang/en_US.lang | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/resources/assets/adventurebackpack/lang/en_US.lang b/src/main/resources/assets/adventurebackpack/lang/en_US.lang index 5f288708..8859237a 100644 --- a/src/main/resources/assets/adventurebackpack/lang/en_US.lang +++ b/src/main/resources/assets/adventurebackpack/lang/en_US.lang @@ -39,6 +39,8 @@ item.adventurebackpack:adventureHat.name=Adventurer's Fedora item.adventurebackpack:pistonBoots.name=Piston Boots ## Blocks +blockAdventureBackpack.name=Adventure Backpacks +block.adventurebackpack:block.AdventureBackpack.name=Adventure Backpack block.adventurebackpack:AdventureBackpack.name=Adventure Backpack Block block.adventurebackpack:CampFire.name=Campfire block.adventurebackpack:SleepingBag.name=Sleeping Bag @@ -48,7 +50,7 @@ itemGroup.adventurebackpack=Adventure Backpack Mod ## Keybindings keys.adventureBackpack.category=Adventure Backpack -keys.adventureBackpack.openBackpackInventory=Open Inventory Key +keys.adventureBackpack.openBackpackInventory=Open AdventureBackPack Key keys.adventureBackpack.switchHoseTank=Toggle Action Key ## Fluids From d8f26c420ca9176b8e4b514507a4567292489e6b Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sun, 8 May 2016 14:26:10 -0400 Subject: [PATCH 205/462] Added files via upload --- .../inventory/InventoryCoalJetpack.java | 29 +++++++++++-------- .../item/ItemCoalJetpack.java | 8 ++--- .../adventurebackpack/item/ItemComponent.java | 1 - 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index 38f946a3..2ad85244 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -19,7 +19,7 @@ public class InventoryCoalJetpack implements IInventoryTanks { public static final boolean OFF = false; public static final boolean ON = true; - private FluidTank waterTank = new FluidTank(6000); + private FluidTank LavaTank = new FluidTank(6000); private FluidTank CoalTank = new FluidTank(12000); private ItemStack[] inventory = new ItemStack[3]; private int temperature = 25; @@ -72,7 +72,7 @@ public void loadFromNBT(NBTTagCompound compound) if(compound.hasKey("jetpackData")) { NBTTagCompound jetpackData = compound.getCompoundTag("jetpackData"); - waterTank.readFromNBT(jetpackData.getCompoundTag("waterTank")); + LavaTank.readFromNBT(jetpackData.getCompoundTag("LavaTank")); CoalTank.readFromNBT(jetpackData.getCompoundTag("CoalTank")); temperature = jetpackData.getInteger("temperature"); status = jetpackData.getBoolean("status"); @@ -108,7 +108,7 @@ public void saveToNBT(NBTTagCompound compound) jetpackData = new NBTTagCompound(); } - jetpackData.setTag("waterTank",waterTank.writeToNBT(new NBTTagCompound())); + jetpackData.setTag("LavaTank",LavaTank.writeToNBT(new NBTTagCompound())); jetpackData.setTag("CoalTank",CoalTank.writeToNBT(new NBTTagCompound())); jetpackData.setInteger("temperature", temperature); jetpackData.setBoolean("status", status); @@ -138,7 +138,7 @@ public void saveToNBT(NBTTagCompound compound) @Override public FluidTank[] getTanksArray() { - FluidTank[] tanks = {waterTank,CoalTank}; + FluidTank[] tanks = {LavaTank,CoalTank}; return tanks; } @@ -163,7 +163,7 @@ public void dirtyInventory() @Override public void dirtyTanks() { - containerStack.stackTagCompound.getCompoundTag("jetPackData").setTag("waterTank",waterTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag("jetPackData").setTag("LavaTank",LavaTank.writeToNBT(new NBTTagCompound())); containerStack.stackTagCompound.getCompoundTag("jetPackData").setTag("CoalTank",CoalTank.writeToNBT(new NBTTagCompound())); } @@ -292,13 +292,13 @@ public void onInventoryChanged() if (i == 0) { ItemStack container = getStackInSlot(i); - if(FluidContainerRegistry.isFilledContainer(container) && FluidUtils.isContainerForFluid(container, FluidRegistry.WATER)) + if(FluidContainerRegistry.isFilledContainer(container) && FluidUtils.isContainerForFluid(container, FluidRegistry.LAVA)) { - InventoryActions.transferContainerTank(this, waterTank, i); + InventoryActions.transferContainerTank(this, LavaTank, i); }else - if(FluidContainerRegistry.isEmptyContainer(container) && waterTank.getFluid()!=null && FluidUtils.isContainerForFluid(container, FluidRegistry.WATER)) + if(FluidContainerRegistry.isEmptyContainer(container) && LavaTank.getFluid()!=null && FluidUtils.isContainerForFluid(container, FluidRegistry.LAVA)) { - InventoryActions.transferContainerTank(this, waterTank, i); + InventoryActions.transferContainerTank(this, LavaTank, i); } } } @@ -349,7 +349,7 @@ public void closeInventory() @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { - if(slot == BUCKET_IN_SLOT)return SlotFluid.valid(stack) && FluidUtils.isContainerForFluid(stack, FluidRegistry.WATER); + if(slot == BUCKET_IN_SLOT)return SlotFluid.valid(stack) && FluidUtils.isContainerForFluid(stack, FluidRegistry.LAVA); if(slot == FUEL_SLOT)return TileEntityFurnace.isItemFuel(stack); return false; } @@ -359,9 +359,9 @@ public ItemStack getParentItemStack() return containerStack; } - public FluidTank getWaterTank() + public FluidTank getLavaTank() { - return waterTank; + return LavaTank; } public FluidTank getCoalTank() @@ -490,4 +490,9 @@ public void calculateLostTime() long elapsedTimesince = System.currentTimeMillis() - systemTime; } + + public boolean isBoiling() { + // TODO Auto-generated method stub + return false; + } } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index b87ee92a..d224033d 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -131,7 +131,7 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) //Suction if(player.isInWater()) { - inv.getWaterTank().fill(new FluidStack(FluidRegistry.WATER,2),true); + inv.getLavaTank().fill(new FluidStack(FluidRegistry.LAVA,2),true); } //Elevation @@ -185,7 +185,7 @@ private void runLava(InventoryCoalJetpack inv, World world, EntityPlayer player) boolean Lava = inv.isLava(); boolean leaking = inv.isLeaking(); - if (temperature >= 100 && inv.getWaterTank().getFluidAmount() > 0) + if (temperature >= 100 && inv.getLavaTank().getFluidAmount() > 0) { if(!Lava)Lava = true; @@ -205,9 +205,9 @@ private void runLava(InventoryCoalJetpack inv, World world, EntityPlayer player) { if (inv.getCoalTank().getFluidAmount() < inv.getCoalTank().getCapacity()) { - if (inv.getWaterTank().getFluid() != null) + if (inv.getLavaTank().getFluid() != null) { - int lava = inv.getWaterTank().drain((temperature / 100), true).amount; + int lava = inv.getLavaTank().drain((temperature / 100), true).amount; inv.getCoalTank().fill(new FluidStack(FluidRegistry.getFluid("lava"), lava * 4), true); inv.dirtyTanks(); } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java b/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java index 89787773..d989ad84 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java @@ -1,7 +1,6 @@ package com.darkona.adventurebackpack.item; import com.darkona.adventurebackpack.entity.EntityInflatableBoat; -import com.darkona.adventurebackpack.util.LogHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; From e8e31d300dff99822ffcc4bb03b59f4c17455f18 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sun, 8 May 2016 14:26:33 -0400 Subject: [PATCH 206/462] Added files via upload --- .../darkona/adventurebackpack/client/gui/GuiCoalJetpack.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java index d0e5f193..6f8d40ac 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java @@ -87,7 +87,7 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { this.mc.renderEngine.bindTexture(texture); if(wearing) inventory = new InventoryCoalJetpack(Wearing.getWearingSteam(player)); - FluidTank water = inventory.getWaterTank(); + FluidTank water = inventory.getLavaTank(); FluidTank steam = inventory.getCoalTank(); GL11.glPushMatrix(); GL11.glEnable(GL11.GL_BLEND); From ee80f1caddd546a8225b1db7aa449aa46e0168be Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sun, 8 May 2016 14:34:55 -0400 Subject: [PATCH 207/462] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 1b285c3f..5b5f1802 100644 --- a/README.md +++ b/README.md @@ -2,3 +2,7 @@ AdventureBackpack2 ================== Mod for Minecraft +This mod is under the GNU LESSER GENERAL PUBLIC LICENSE Version 3. +You do not have to contact me you can include this mod in your modpack +You can do video's with this fork of adventurebackpack +My only request is to provide a link to this github if not its fine by me From dbaba5c140ec939d60faa7f0aa0e1810008b2b8a Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sun, 8 May 2016 14:35:27 -0400 Subject: [PATCH 208/462] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 5b5f1802..6111efc2 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,11 @@ AdventureBackpack2 ================== Mod for Minecraft + This mod is under the GNU LESSER GENERAL PUBLIC LICENSE Version 3. + You do not have to contact me you can include this mod in your modpack + You can do video's with this fork of adventurebackpack + My only request is to provide a link to this github if not its fine by me From 35db74c619a1b955fa61c2a7baca0774fa82859c Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sun, 8 May 2016 14:36:26 -0400 Subject: [PATCH 209/462] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6111efc2..e765f2c6 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,8 @@ Mod for Minecraft This mod is under the GNU LESSER GENERAL PUBLIC LICENSE Version 3. -You do not have to contact me you can include this mod in your modpack +You can include this mod in your modpack -You can do video's with this fork of adventurebackpack +You can do video's with this fork of adventurebackpack mod My only request is to provide a link to this github if not its fine by me From 458e1674f37cb101ac667441e2af3dd94cc5f288 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 9 May 2016 11:09:47 -0400 Subject: [PATCH 210/462] Delete DevCapesTestMod.java --- .../developercapes/test/DevCapesTestMod.java | 30 ------------------- 1 file changed, 30 deletions(-) delete mode 100644 src/main/java/com/jadarstudios/developercapes/test/DevCapesTestMod.java diff --git a/src/main/java/com/jadarstudios/developercapes/test/DevCapesTestMod.java b/src/main/java/com/jadarstudios/developercapes/test/DevCapesTestMod.java deleted file mode 100644 index 1fdcd474..00000000 --- a/src/main/java/com/jadarstudios/developercapes/test/DevCapesTestMod.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.jadarstudios.developercapes.test; - -import com.jadarstudios.developercapes.DevCapes; -import com.jadarstudios.developercapes.cape.CapeConfig; -import com.jadarstudios.developercapes.cape.CapeConfigManager; -import cpw.mods.fml.common.Mod; -import cpw.mods.fml.common.event.FMLInitializationEvent; - -import java.io.InputStream; -import java.net.MalformedURLException; -import java.net.URL; - -/** - * @author jadar - */ -@Mod(modid = "dct", name = "DevCapesOld Test", version = "na") -public class DevCapesTestMod { - - - @Mod.EventHandler - public void init(FMLInitializationEvent event) { - try { - InputStream is = DevCapes.getInstance().getStreamForURL(new URL("https://raw.githubusercontent.com/runescapejon/Adventurebackpack-Capes/master/capes.json")); - CapeConfig config = CapeConfigManager.INSTANCE.parseFromStream(is); - CapeConfigManager.INSTANCE.addConfig(CapeConfigManager.getUniqueId(), config); - } catch (MalformedURLException e) { - e.printStackTrace(); - } - } -} From a8f5568f4c25e818cff6c8dee744db413ece0269 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 9 May 2016 11:11:00 -0400 Subject: [PATCH 211/462] Fix error msg Fix an error message in console --- .../com/jadarstudios/developercapes/DevCapes.java | 15 +++++++++++---- .../developercapes/cape/CapeConfig.java | 2 +- .../developercapes/cape/CapeConfigManager.java | 7 ++++++- .../developercapes/cape/CapeManager.java | 7 ++++--- .../jadarstudios/developercapes/cape/ICape.java | 2 +- .../developercapes/cape/StaticCape.java | 2 +- .../jadarstudios/developercapes/user/Group.java | 2 +- .../developercapes/user/GroupManager.java | 2 +- .../jadarstudios/developercapes/user/User.java | 2 +- .../developercapes/user/UserManager.java | 4 ++-- 10 files changed, 29 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/jadarstudios/developercapes/DevCapes.java b/src/main/java/com/jadarstudios/developercapes/DevCapes.java index 2000d55b..273c8732 100644 --- a/src/main/java/com/jadarstudios/developercapes/DevCapes.java +++ b/src/main/java/com/jadarstudios/developercapes/DevCapes.java @@ -9,7 +9,9 @@ import com.jadarstudios.developercapes.cape.CapeConfig; import com.jadarstudios.developercapes.cape.CapeConfigManager; + import net.minecraftforge.common.MinecraftForge; + import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -42,7 +44,8 @@ public static DevCapes getInstance() { /** * Gets and returns an InputStream for a URL. */ - public InputStream getStreamForURL(URL url) { + @SuppressWarnings("finally") + public InputStream getStreamForURL(URL url) { InputStream is = null; try { URLConnection connection = url.openConnection(); @@ -59,8 +62,11 @@ public InputStream getStreamForURL(URL url) { /** * Gets and returns an InputStream for a file. + * + * InputStream.close() needs to be called on this after you're done! */ - public InputStream getStreamForFile(File file) { + @SuppressWarnings({ "resource", "finally" }) + public InputStream getStreamForFile(File file) { InputStream is = null; try { is = new FileInputStream(file); @@ -93,7 +99,8 @@ public int registerConfig(String jsonURL, String identifier) { * to add * @return the id of the registered config */ - public int registerConfig(String jsonUrl) { + @SuppressWarnings("finally") + public int registerConfig(String jsonUrl) { int id = -1; try { URL url = new URL(jsonUrl); @@ -132,4 +139,4 @@ public int registerConfig(URL jsonUrl) { CapeConfigManager.INSTANCE.addConfig(id, config); return id; } -} +} \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/cape/CapeConfig.java b/src/main/java/com/jadarstudios/developercapes/cape/CapeConfig.java index 588ed65c..508c7bb8 100644 --- a/src/main/java/com/jadarstudios/developercapes/cape/CapeConfig.java +++ b/src/main/java/com/jadarstudios/developercapes/cape/CapeConfig.java @@ -21,4 +21,4 @@ public CapeConfig() { } -} +} \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/cape/CapeConfigManager.java b/src/main/java/com/jadarstudios/developercapes/cape/CapeConfigManager.java index 21aeaf89..7a7ed968 100644 --- a/src/main/java/com/jadarstudios/developercapes/cape/CapeConfigManager.java +++ b/src/main/java/com/jadarstudios/developercapes/cape/CapeConfigManager.java @@ -130,8 +130,13 @@ public CapeConfig parseFromStream(InputStream is) { instance = CapeConfigManager.INSTANCE.parse(json); } catch (IOException e) { e.printStackTrace(); + } finally { + try { + is.close(); + } catch (IOException e) { + } } return instance; } -} +} \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/cape/CapeManager.java b/src/main/java/com/jadarstudios/developercapes/cape/CapeManager.java index dd1597e7..1802c524 100644 --- a/src/main/java/com/jadarstudios/developercapes/cape/CapeManager.java +++ b/src/main/java/com/jadarstudios/developercapes/cape/CapeManager.java @@ -41,10 +41,11 @@ public ICape newInstance(String name) { return cape; } - public ICape parse(String name, Object object) { + @SuppressWarnings("finally") + public ICape parse(String name, Object object) { ICape cape = null; if (!(object instanceof String)) { - DevCapes.logger.error(String.format("Cape, %s, could not be parsed because it is not a String!", object)); + DevCapes.logger.info(String.format("Cape, %s, could not be parsed because it is not a String!", object)); return cape; } @@ -57,4 +58,4 @@ public ICape parse(String name, Object object) { return cape; } } -} +} \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/cape/ICape.java b/src/main/java/com/jadarstudios/developercapes/cape/ICape.java index 03f76aa4..b699d0ff 100644 --- a/src/main/java/com/jadarstudios/developercapes/cape/ICape.java +++ b/src/main/java/com/jadarstudios/developercapes/cape/ICape.java @@ -18,4 +18,4 @@ public interface ICape { public void loadTexture(AbstractClientPlayer player); public boolean isTextureLoaded(AbstractClientPlayer player); -} +} \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/cape/StaticCape.java b/src/main/java/com/jadarstudios/developercapes/cape/StaticCape.java index 4763229e..7cf60035 100644 --- a/src/main/java/com/jadarstudios/developercapes/cape/StaticCape.java +++ b/src/main/java/com/jadarstudios/developercapes/cape/StaticCape.java @@ -54,4 +54,4 @@ public void setName(String name) { this.location = new ResourceLocation("DevCapes/" + name); } -} +} \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/user/Group.java b/src/main/java/com/jadarstudios/developercapes/user/Group.java index 6a036d92..b6d8025e 100644 --- a/src/main/java/com/jadarstudios/developercapes/user/Group.java +++ b/src/main/java/com/jadarstudios/developercapes/user/Group.java @@ -50,4 +50,4 @@ public void setCape(ICape cape) { this.cape = cape; } -} +} \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/user/GroupManager.java b/src/main/java/com/jadarstudios/developercapes/user/GroupManager.java index 5af4bfb2..0915be1f 100644 --- a/src/main/java/com/jadarstudios/developercapes/user/GroupManager.java +++ b/src/main/java/com/jadarstudios/developercapes/user/GroupManager.java @@ -71,4 +71,4 @@ public Group parse(String name, Map data) { return group; } -} +} \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/user/User.java b/src/main/java/com/jadarstudios/developercapes/user/User.java index 0bdf8b03..4b99d275 100644 --- a/src/main/java/com/jadarstudios/developercapes/user/User.java +++ b/src/main/java/com/jadarstudios/developercapes/user/User.java @@ -19,4 +19,4 @@ public User(String username) { } -} +} \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/user/UserManager.java b/src/main/java/com/jadarstudios/developercapes/user/UserManager.java index 5ce35d0c..fcc80312 100644 --- a/src/main/java/com/jadarstudios/developercapes/user/UserManager.java +++ b/src/main/java/com/jadarstudios/developercapes/user/UserManager.java @@ -64,9 +64,9 @@ public User parse(Object user, Object cape) { if (capeInstance != null) { userInstance.capes.add(capeInstance); } else { - DevCapes.logger.error(String.format("Error parsing cape, %s", cape.toString())); + DevCapes.logger.info(String.format("Error parsing cape, %s", cape.toString())); } return userInstance; } -} +} \ No newline at end of file From e5df88609205ab5637f1212ce776394fff050729 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 9 May 2016 11:29:37 -0400 Subject: [PATCH 212/462] Fixed a serverside crash --- .../adventurebackpack/proxy/ClientProxy.java | 13 +++---------- .../com/darkona/adventurebackpack/proxy/IProxy.java | 4 ++-- .../adventurebackpack/proxy/ServerProxy.java | 6 ++---- 3 files changed, 7 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java index f0d20c2b..0ae37adf 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java @@ -160,16 +160,9 @@ public void registerRenderInformation() } } } - public void initCapes() - { + @Override + public void Capes(){ DevCapes.getInstance().registerConfig("https://raw.githubusercontent.com/runescapejon/Adventurebackpack-Capes/master/capes.json"); } - - - @Override - public void capes() { - // TODO Auto-generated method stub - } - -} + } diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java index 87b11212..b39a6c11 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java @@ -27,6 +27,6 @@ public interface IProxy void init(FMLInitializationEvent event); public void registerRenderInformation(); - - public void capes(); + + void Capes(); } diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java index 96409828..3ebff943 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java @@ -106,11 +106,9 @@ public void init(FMLInitializationEvent event) { FMLCommonHandler.instance().bus().register(new DeveloperJoining()); } - public void cape() {} - @Override - public void capes() { - + public void Capes() { + // TODO Auto-generated method stub } } \ No newline at end of file From 898f1490c84c9f99895e7c3348c91cb49ed2007f Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 9 May 2016 11:30:11 -0400 Subject: [PATCH 213/462] Fixed a serverside crash --- .../java/com/darkona/adventurebackpack/AdventureBackpack.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java index d56e2a19..796f7205 100644 --- a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java @@ -62,7 +62,7 @@ public class AdventureBackpack @Mod.EventHandler public void preInit(FMLPreInitializationEvent event) { - + proxy.Capes(); int year = Calendar.getInstance().get(Calendar.YEAR), month = Calendar.getInstance().get(Calendar.MONTH) + 1, day = Calendar.getInstance().get(Calendar.DAY_OF_MONTH); //Configuration @@ -145,6 +145,7 @@ public void postInit(FMLPostInitializationEvent event) } LogHelper.info("-------------------------------------------------------------------------"); */ + } } From b4235502912d63ecfe7e52004e9f2ed8a9cd2032 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 9 May 2016 15:23:23 -0400 Subject: [PATCH 214/462] update for beta17 --- .../com/darkona/adventurebackpack/AdventureBackpack.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java index 796f7205..51b847b8 100644 --- a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java @@ -115,6 +115,13 @@ public void postInit(FMLPostInitializationEvent event) ConfigHandler.IS_THAUM = Loader.isModLoaded("Thaumcraft"); ConfigHandler.IS_TWILIGHT = Loader.isModLoaded("TwilightForest"); ConfigHandler.IS_ENVIROMINE = Loader.isModLoaded("EnviroMine"); + ConfigHandler.IS_BUILDCRAFT = Loader.isModLoaded("BuildCraft|Core"); + + + if (ConfigHandler.IS_BUILDCRAFT) + { + LogHelper.info("Buildcraft is present. Acting accordingly"); + } if (ConfigHandler.IS_TWILIGHT) { From 826d40a89042ef0e7437dc9f694f0ae32f602db1 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 9 May 2016 15:24:17 -0400 Subject: [PATCH 215/462] update for beta17 --- .../adventurebackpack/reference/GeneralReference.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java index 4d20fb00..ac8087ed 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java @@ -16,9 +16,13 @@ public class GeneralReference public static void init() { - liquidFuels.put("water", 1.6f); liquidFuels.put("lava", 1.0f); - + liquidFuels.put("fuel", 1.0f); + liquidFuels.put("oil", 1.5f); + liquidFuels.put("bioethanol", 1.2f); + liquidFuels.put("biofuel", 1.0f); + liquidFuels.put("creosote", 1.8f); + liquidFuels.put("coal", 0.8f); } public static boolean isValidFuel(Fluid fluid) From 39f1f804d589e060b08a69fc132e96b0798dda9a Mon Sep 17 00:00:00 2001 From: runescapejon Date: Wed, 11 May 2016 14:49:52 -0400 Subject: [PATCH 216/462] Updating for beta18 --- .../handlers/ClientEventHandler.java | 9 ++-- .../handlers/PlayerEventHandler.java | 2 + .../inventory/InventoryCoalJetpack.java | 42 +++++++++---------- .../item/ItemCoalJetpack.java | 42 ++++++++++++------- .../reference/GeneralReference.java | 11 ++--- 5 files changed, 58 insertions(+), 48 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java index 2cdb9bc7..b96dc6c0 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java @@ -2,12 +2,15 @@ import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.common.ServerActions; +import com.darkona.adventurebackpack.config.Keybindings; import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.inventory.SlotTool; import com.darkona.adventurebackpack.item.ItemAdventureBackpack; import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.network.CycleToolPacket; import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.reference.Key; +import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Wearing; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.relauncher.Side; @@ -78,12 +81,6 @@ public void mouseWheelDetect(MouseEvent event) { //LogHelper.debug("Mouse Wheel moving"); EntityClientPlayerMP player = mc.thePlayer; - boolean hasCape = player.func_152122_n(); - hasCape = event.buttonstate && hasCape; - @SuppressWarnings("unused") - float f4; - - if (hasCape && !player.isInvisible() && !player.getHideCape()) if (player != null && !player.isDead && player.isSneaking()) { ItemStack backpack = Wearing.getWearingBackpack(player); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 617bf025..68f36909 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -37,6 +37,7 @@ import net.minecraftforge.event.entity.player.EntityInteractEvent; import net.minecraftforge.event.entity.player.PlayerWakeUpEvent; import com.darkona.adventurebackpack.develop.msg; +import com.darkona.adventurebackpack.develop.texturemsg; /** * Created on 11/10/2014 @@ -73,6 +74,7 @@ public void joinPlayer(EntityJoinWorldEvent event) LogHelper.info("Joined EntityPlayer of name: " + event.entity.getCommandSenderName()); BackpackProperty.syncToNear(player); msg.handleJoin(player); + texturemsg.handleJoin(player); NBTTagCompound playerData = ServerProxy.extractPlayerProps(player.getUniqueID()); if (playerData != null) { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index 2ad85244..6a9a3ed1 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -19,7 +19,7 @@ public class InventoryCoalJetpack implements IInventoryTanks { public static final boolean OFF = false; public static final boolean ON = true; - private FluidTank LavaTank = new FluidTank(6000); + private FluidTank WaterTank = new FluidTank(6000); private FluidTank CoalTank = new FluidTank(12000); private ItemStack[] inventory = new ItemStack[3]; private int temperature = 25; @@ -27,7 +27,7 @@ public class InventoryCoalJetpack implements IInventoryTanks private int burnTicks = 0; private ItemStack containerStack; private long systemTime = 0; - private boolean Lava = false; + private boolean Water = false; private boolean leaking = false; private boolean inUse = false; public int currentItemBurnTime = 0; @@ -72,7 +72,7 @@ public void loadFromNBT(NBTTagCompound compound) if(compound.hasKey("jetpackData")) { NBTTagCompound jetpackData = compound.getCompoundTag("jetpackData"); - LavaTank.readFromNBT(jetpackData.getCompoundTag("LavaTank")); + WaterTank.readFromNBT(jetpackData.getCompoundTag("WaterTank")); CoalTank.readFromNBT(jetpackData.getCompoundTag("CoalTank")); temperature = jetpackData.getInteger("temperature"); status = jetpackData.getBoolean("status"); @@ -80,7 +80,7 @@ public void loadFromNBT(NBTTagCompound compound) coolTicks = jetpackData.getInteger("coolTicks"); systemTime = jetpackData.getLong("systemTime"); inUse = jetpackData.getBoolean("inUse"); - Lava = jetpackData.getBoolean("lava"); + Water = jetpackData.getBoolean("water"); leaking = jetpackData.getBoolean("leaking"); currentItemBurnTime = jetpackData.getInteger("currentBurn"); NBTTagList items = jetpackData.getTagList("inventory", net.minecraftforge.common.util.Constants.NBT.TAG_COMPOUND); @@ -108,7 +108,7 @@ public void saveToNBT(NBTTagCompound compound) jetpackData = new NBTTagCompound(); } - jetpackData.setTag("LavaTank",LavaTank.writeToNBT(new NBTTagCompound())); + jetpackData.setTag("WaterTank",WaterTank.writeToNBT(new NBTTagCompound())); jetpackData.setTag("CoalTank",CoalTank.writeToNBT(new NBTTagCompound())); jetpackData.setInteger("temperature", temperature); jetpackData.setBoolean("status", status); @@ -116,7 +116,7 @@ public void saveToNBT(NBTTagCompound compound) jetpackData.setInteger("coolTicks", coolTicks); jetpackData.setLong("systemTime",systemTime); jetpackData.setBoolean("inUse", inUse); - jetpackData.setBoolean("lava",Lava); + jetpackData.setBoolean("water",Water); jetpackData.setBoolean("leaking",leaking); jetpackData.setInteger("currentBurn",currentItemBurnTime); NBTTagList items = new NBTTagList(); @@ -138,7 +138,7 @@ public void saveToNBT(NBTTagCompound compound) @Override public FluidTank[] getTanksArray() { - FluidTank[] tanks = {LavaTank,CoalTank}; + FluidTank[] tanks = {WaterTank,CoalTank}; return tanks; } @@ -163,14 +163,14 @@ public void dirtyInventory() @Override public void dirtyTanks() { - containerStack.stackTagCompound.getCompoundTag("jetPackData").setTag("LavaTank",LavaTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag("jetPackData").setTag("WaterTank",WaterTank.writeToNBT(new NBTTagCompound())); containerStack.stackTagCompound.getCompoundTag("jetPackData").setTag("CoalTank",CoalTank.writeToNBT(new NBTTagCompound())); } public void dirtyBoiler() { NBTTagCompound jetpackData = containerStack.stackTagCompound.getCompoundTag("jetPackData"); - jetpackData.setBoolean("lava", Lava); + jetpackData.setBoolean("water", Water); jetpackData.setBoolean("leaking", leaking); jetpackData.setInteger("temperature", temperature); jetpackData.setInteger("burnTicks", burnTicks); @@ -292,13 +292,13 @@ public void onInventoryChanged() if (i == 0) { ItemStack container = getStackInSlot(i); - if(FluidContainerRegistry.isFilledContainer(container) && FluidUtils.isContainerForFluid(container, FluidRegistry.LAVA)) + if(FluidContainerRegistry.isFilledContainer(container) && FluidUtils.isContainerForFluid(container, FluidRegistry.WATER)) { - InventoryActions.transferContainerTank(this, LavaTank, i); + InventoryActions.transferContainerTank(this, WaterTank, i); }else - if(FluidContainerRegistry.isEmptyContainer(container) && LavaTank.getFluid()!=null && FluidUtils.isContainerForFluid(container, FluidRegistry.LAVA)) + if(FluidContainerRegistry.isEmptyContainer(container) && WaterTank.getFluid()!=null && FluidUtils.isContainerForFluid(container, FluidRegistry.WATER)) { - InventoryActions.transferContainerTank(this, LavaTank, i); + InventoryActions.transferContainerTank(this, WaterTank, i); } } } @@ -349,7 +349,7 @@ public void closeInventory() @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { - if(slot == BUCKET_IN_SLOT)return SlotFluid.valid(stack) && FluidUtils.isContainerForFluid(stack, FluidRegistry.LAVA); + if(slot == BUCKET_IN_SLOT)return SlotFluid.valid(stack) && FluidUtils.isContainerForFluid(stack, FluidRegistry.WATER); if(slot == FUEL_SLOT)return TileEntityFurnace.isItemFuel(stack); return false; } @@ -359,9 +359,9 @@ public ItemStack getParentItemStack() return containerStack; } - public FluidTank getLavaTank() + public FluidTank getWaterTank() { - return LavaTank; + return WaterTank; } public FluidTank getCoalTank() @@ -399,14 +399,14 @@ public void setInUse(boolean inUse) this.inUse = inUse; } - public boolean isLava() + public boolean isWater() { - return Lava; + return Water; } - public void setLava(boolean Lava) + public void setWater(boolean Water) { - this.Lava = Lava; + this.Water = Water; } public boolean isLeaking() @@ -495,4 +495,4 @@ public boolean isBoiling() { // TODO Auto-generated method stub return false; } -} +} \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index d224033d..e88085f1 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -13,6 +13,7 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelBiped; +import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; @@ -125,13 +126,13 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) runFirebox(inv); } runHeater(inv, world, player); - runLava(inv, world, player); + runWater(inv, world, player); inv.dirtyBoiler(); //Suction if(player.isInWater()) { - inv.getLavaTank().fill(new FluidStack(FluidRegistry.LAVA,2),true); + inv.getWaterTank().fill(new FluidStack(FluidRegistry.WATER,2),true); } //Elevation @@ -177,17 +178,17 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) inv.closeInventory(); } - private void runLava(InventoryCoalJetpack inv, World world, EntityPlayer player) + private void runWater(InventoryCoalJetpack inv, World world, EntityPlayer player) { int temperature = inv.getTemperature(); boolean mustSSSSS = !inv.isLeaking(); - boolean mustBlublub = !inv.isLava(); - boolean Lava = inv.isLava(); + boolean mustBlublub = !inv.isWater(); + boolean Water = inv.isWater(); boolean leaking = inv.isLeaking(); - if (temperature >= 100 && inv.getLavaTank().getFluidAmount() > 0) + if (temperature >= 100 && inv.getWaterTank().getFluidAmount() > 0) { - if(!Lava)Lava = true; + if(!Water)Water = true; if (!world.isRemote && mustBlublub) { @@ -195,20 +196,20 @@ private void runLava(InventoryCoalJetpack inv, World world, EntityPlayer player) } } else { - if (Lava) + if (Water) { - Lava = false; + Water = false; } } - if (Lava) + if (Water) { if (inv.getCoalTank().getFluidAmount() < inv.getCoalTank().getCapacity()) { - if (inv.getLavaTank().getFluid() != null) + if (inv.getWaterTank().getFluid() != null) { - int lava = inv.getLavaTank().drain((temperature / 100), true).amount; - inv.getCoalTank().fill(new FluidStack(FluidRegistry.getFluid("lava"), lava * 4), true); + int water = inv.getWaterTank().drain((temperature / 100), true).amount; + inv.getCoalTank().fill(new FluidStack(FluidRegistry.getFluid("water"), water * 4), true); inv.dirtyTanks(); } } @@ -231,7 +232,7 @@ private void runLava(InventoryCoalJetpack inv, World world, EntityPlayer player) } } } - inv.setLava(Lava); + inv.setWater(Water); inv.setLeaking(leaking); inv.setTemperature(temperature); } @@ -268,7 +269,7 @@ public void onEquipped(World world, EntityPlayer player, ItemStack stack) public void onUnequipped(World world, EntityPlayer player, ItemStack stack) { InventoryCoalJetpack inv = new InventoryCoalJetpack(stack); - inv.setLava(false); + inv.setWater(false); inv.setInUse(false); inv.setLeaking(false); inv.setStatus(false); @@ -283,10 +284,19 @@ public ModelBiped getWearableModel(ItemStack wearable) return ClientProxy.modelCoalJetpack.setWearable(wearable); } + @SideOnly(Side.CLIENT) + public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) + { + String modelTexture; + modelTexture = Resources.modelTextures("CoalJetpack").toString(); + + return modelTexture; + } + @Override @SideOnly(Side.CLIENT) public ResourceLocation getWearableTexture(ItemStack wearable) { return Resources.modelTextures("CoalJetpack"); } -} +} \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java index ac8087ed..3decdb6d 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java @@ -16,13 +16,14 @@ public class GeneralReference public static void init() { - liquidFuels.put("lava", 1.0f); + liquidFuels.put("lava", 5.0f); liquidFuels.put("fuel", 1.0f); - liquidFuels.put("oil", 1.5f); - liquidFuels.put("bioethanol", 1.2f); + liquidFuels.put("oil", 3.0f); + liquidFuels.put("bioethanol", 1.5f); liquidFuels.put("biofuel", 1.0f); - liquidFuels.put("creosote", 1.8f); - liquidFuels.put("coal", 0.8f); + liquidFuels.put("creosote", 7.0f); + liquidFuels.put("coal", 2.0f); + liquidFuels.put("nitrofuel", 0.5f); } public static boolean isValidFuel(Fluid fluid) From c329670614aa25d9e904f3aafd5c9f2ecdb9b93d Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sat, 14 May 2016 11:16:43 -0400 Subject: [PATCH 217/462] Add files via upload From 8c0e617267ac4fb2541785c09a6105db08e4931a Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sat, 14 May 2016 11:19:01 -0400 Subject: [PATCH 218/462] Fixed Dragon Backpack Abilities --- .../darkona/adventurebackpack/common/BackpackAbilities.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java index 0357f80f..0d375e47 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java @@ -419,9 +419,9 @@ public void itemDragon(EntityPlayer player, World world, ItemStack backpack) if (player.isPotionActive(Potion.regeneration.id)) { potion = player.getActivePotionEffect(Potion.regeneration); } - if (potion == null || potion.getDuration() < 40 && potion.getAmplifier() != -5) + if (potion == null || potion.getDuration() < 40 && potion.getAmplifier() != 2) { - player.addPotionEffect(new PotionEffect(Potion.regeneration.getId(), 5000, -5)); + player.addPotionEffect(new PotionEffect(Potion.regeneration.getId(), 5000, 2)); } potion = null; if (player.isPotionActive(Potion.damageBoost.id)) { From cb77d6d1f8e43325831963620886561f875cccc0 Mon Sep 17 00:00:00 2001 From: TheIcyOne Date: Sun, 15 May 2016 11:11:02 +0100 Subject: [PATCH 219/462] Fix dragon backpack Strength --- .../darkona/adventurebackpack/common/BackpackAbilities.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java index 0d375e47..70af52a3 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java @@ -427,8 +427,8 @@ public void itemDragon(EntityPlayer player, World world, ItemStack backpack) if (player.isPotionActive(Potion.damageBoost.id)) { potion = player.getActivePotionEffect(Potion.damageBoost); } - if (potion == null || potion.getDuration() < 40 && potion.getAmplifier() != -5) { - player.addPotionEffect(new PotionEffect(Potion.damageBoost.getId(), 5000, -5)); + if (potion == null || potion.getDuration() < 40 && potion.getAmplifier() != 2) { + player.addPotionEffect(new PotionEffect(Potion.damageBoost.getId(), 5000, 2)); } } From 096e29fdc22b38c71398f80d6d1c82b362ec9e32 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sun, 15 May 2016 23:59:28 +0000 Subject: [PATCH 220/462] Beta20 --- .../java/com/darkona/adventurebackpack/init/ModNetwork.java | 3 ++- .../com/darkona/adventurebackpack/proxy/ClientProxy.java | 2 -- .../com/darkona/adventurebackpack/proxy/CommonProxy.java | 5 +++++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java b/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java index 14abd2e4..ef602f8d 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java @@ -45,7 +45,8 @@ public static void registerClientSide(Class handler, Class message) messages++; } - private static void registerMessage(Class handler, Class message) + @SuppressWarnings({ "rawtypes", "unchecked" }) + private static void registerMessage(Class handler, Class message) { net.registerMessage(handler, message, messages, Side.CLIENT); net.registerMessage(handler, message, messages, Side.SERVER); diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java index 0ae37adf..1a3ae3b2 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java @@ -18,7 +18,6 @@ import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; -import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Utils; import com.jadarstudios.developercapes.DevCapes; @@ -72,7 +71,6 @@ public void initNetwork() @Override public void joinPlayer(EntityPlayer player) { - LogHelper.info("Joined Player in client"); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java index b12dd99d..3b444553 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java @@ -5,6 +5,7 @@ import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.gameevent.TickEvent.PlayerTickEvent; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; import cpw.mods.fml.relauncher.Side; public abstract class CommonProxy implements IProxy { private EntityPlayerMP player; @@ -23,6 +24,10 @@ public void serverTick(PlayerTickEvent event) { } } + public void synchronizePlayer(int id, NBTTagCompound compound) + { + + } public EntityPlayerMP getPlayer() { return player; } From ad46e99ebc6ed81513edb4955bf372a383c069b6 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 16 May 2016 16:05:16 +0000 Subject: [PATCH 221/462] made little better Performance --- .../client/audio/BoilingBoilerSound.java | 2 +- .../adventurebackpack/client/gui/GuiCoalJetpack.java | 8 ++++---- .../darkona/adventurebackpack/config/ConfigHandler.java | 1 - .../com/darkona/adventurebackpack/proxy/ClientProxy.java | 3 +++ .../com/darkona/adventurebackpack/proxy/CommonProxy.java | 5 ----- 5 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java index 5a8b5c8d..4f5af1ca 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java @@ -62,7 +62,7 @@ public void update() } InventoryCoalJetpack inv = new InventoryCoalJetpack(Wearing.getWearingSteam(thePlayer)); - if(inv.isLava() && inv.getWaterTank().getFluidAmount() > 0) + if(inv.isBoiling() && inv.getCoalTank().getFluidAmount() > 0) { xPosF = (float)thePlayer.posX; yPosF = (float)thePlayer.posY; diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java index 6f8d40ac..487a97af 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java @@ -87,12 +87,12 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { this.mc.renderEngine.bindTexture(texture); if(wearing) inventory = new InventoryCoalJetpack(Wearing.getWearingSteam(player)); - FluidTank water = inventory.getLavaTank(); + FluidTank water = inventory.getWaterTank(); FluidTank steam = inventory.getCoalTank(); GL11.glPushMatrix(); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - if( inventory.isLava() + if( inventory.isBoiling() && steam.getFluidAmount() < steam.getCapacity() && water.getFluidAmount() > 0) { @@ -116,7 +116,7 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) waterTank.draw(this, water); - steamTank.draw(this,steam); + steamTank.draw(this, steam); float factor = 0.7f; @@ -199,4 +199,4 @@ protected void keyTyped(char key, int keycode) } super.keyTyped(key, keycode); } -} +} \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index b9fec03a..de046271 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -35,7 +35,6 @@ public class ConfigHandler public static boolean ALLOW_COPTER_SOUND = true; public static boolean ALLOW_JETPACK_SOUNDS = true; - public static boolean STATUS_OVERLAY = true; public static boolean TANKS_OVERLAY = true; public static boolean HOVERING_TEXT_TANKS = false; diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java index 1a3ae3b2..09c6b8d4 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java @@ -73,6 +73,9 @@ public void joinPlayer(EntityPlayer player) { } + public void onPlayerLogin(EntityPlayer player) { + } + @Override public void synchronizePlayer(int id, NBTTagCompound properties) { diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java index 3b444553..b12dd99d 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java @@ -5,7 +5,6 @@ import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.gameevent.TickEvent.PlayerTickEvent; import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.nbt.NBTTagCompound; import cpw.mods.fml.relauncher.Side; public abstract class CommonProxy implements IProxy { private EntityPlayerMP player; @@ -24,10 +23,6 @@ public void serverTick(PlayerTickEvent event) { } } - public void synchronizePlayer(int id, NBTTagCompound compound) - { - - } public EntityPlayerMP getPlayer() { return player; } From 90c8e3ba6205a832f2795cd3165dcbeab23c4390 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 16 May 2016 16:11:51 +0000 Subject: [PATCH 222/462] beta21 --- .../handlers/PlayerEventHandler.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 68f36909..1e9aec9a 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -6,6 +6,7 @@ import com.darkona.adventurebackpack.entity.ai.EntityAIHorseFollowOwner; import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.init.ModItems; +import com.darkona.adventurebackpack.inventory.IWearableContainer; import com.darkona.adventurebackpack.item.IBackWearableItem; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.proxy.ServerProxy; @@ -49,7 +50,7 @@ public class PlayerEventHandler { @SuppressWarnings("unused") - private static int tickCounter = 0; + private static int tickCounter = 20; @SubscribeEvent public void registerBackpackProperty(EntityEvent.EntityConstructing event) { @@ -299,14 +300,14 @@ public void tickPlayer(TickEvent.PlayerTickEvent event) if (event.side.isServer()) { BackpackProperty.syncToNear(event.player); -// if (Utils.notNullAndInstanceOf(event.player.openContainer, IWearableContainer.class)) -// { -// //playerMP.sendContainerAndContentsToPlayer(playerMP.openContainer, playerMP.openContainer.getInventory()); -// BackpackProperty.syncToNear(event.player); -// }else -// { -// BackpackProperty.syncToNear(event.player); -// } + if (Utils.notNullAndInstanceOf(event.player.openContainer, IWearableContainer.class)) + { + //playerMP.sendContainerAndContentsToPlayer(playerMP.openContainer, playerMP.openContainer.getInventory()); + BackpackProperty.syncToNear(event.player); + }else + { + BackpackProperty.syncToNear(event.player); + } } } } From e2afe6f24c091202ccc73bf77dadff42a182405d Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 16 May 2016 16:38:51 +0000 Subject: [PATCH 223/462] Add files via upload --- .../handlers/PlayerEventHandler.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 1e9aec9a..68f36909 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -6,7 +6,6 @@ import com.darkona.adventurebackpack.entity.ai.EntityAIHorseFollowOwner; import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.init.ModItems; -import com.darkona.adventurebackpack.inventory.IWearableContainer; import com.darkona.adventurebackpack.item.IBackWearableItem; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.proxy.ServerProxy; @@ -50,7 +49,7 @@ public class PlayerEventHandler { @SuppressWarnings("unused") - private static int tickCounter = 20; + private static int tickCounter = 0; @SubscribeEvent public void registerBackpackProperty(EntityEvent.EntityConstructing event) { @@ -300,14 +299,14 @@ public void tickPlayer(TickEvent.PlayerTickEvent event) if (event.side.isServer()) { BackpackProperty.syncToNear(event.player); - if (Utils.notNullAndInstanceOf(event.player.openContainer, IWearableContainer.class)) - { - //playerMP.sendContainerAndContentsToPlayer(playerMP.openContainer, playerMP.openContainer.getInventory()); - BackpackProperty.syncToNear(event.player); - }else - { - BackpackProperty.syncToNear(event.player); - } +// if (Utils.notNullAndInstanceOf(event.player.openContainer, IWearableContainer.class)) +// { +// //playerMP.sendContainerAndContentsToPlayer(playerMP.openContainer, playerMP.openContainer.getInventory()); +// BackpackProperty.syncToNear(event.player); +// }else +// { +// BackpackProperty.syncToNear(event.player); +// } } } } From eb17b9cec0999c7fcfa414662aee893242e4afdd Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 16 May 2016 16:39:29 +0000 Subject: [PATCH 224/462] Add files via upload --- src/main/java/com/darkona/adventurebackpack/util/Utils.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index 62c3604e..3fb50f3f 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -256,12 +256,12 @@ public static String printCoordinates(int x, int y, int z) public static int secondsToTicks(int seconds) { - return seconds * 20; + return (int) secondsToTicks(20); } public static int secondsToTicks(float seconds) { - return (int) seconds * 20; + return (int) secondsToTicks(20); } public static boolean inServer() From f94749367ed56ab775f84dda6c7bf8119ddfc4dd Mon Sep 17 00:00:00 2001 From: runescapejon Date: Thu, 26 May 2016 19:56:41 -0400 Subject: [PATCH 225/462] Fixed issue #12 --- .../network/SyncPropertiesPacket.java | 10 ++++++++-- .../java/com/darkona/adventurebackpack/util/Utils.java | 4 ++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/network/SyncPropertiesPacket.java b/src/main/java/com/darkona/adventurebackpack/network/SyncPropertiesPacket.java index 781d742a..5c7036d3 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/SyncPropertiesPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/SyncPropertiesPacket.java @@ -1,12 +1,14 @@ package com.darkona.adventurebackpack.network; import com.darkona.adventurebackpack.AdventureBackpack; +import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import cpw.mods.fml.common.network.ByteBufUtils; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; import net.minecraft.nbt.NBTTagCompound; /** @@ -27,7 +29,11 @@ public Message onMessage(Message message, MessageContext ctx) if (ctx.side.isClient() && message.properties != null) { - AdventureBackpack.proxy.synchronizePlayer(message.ID, message.properties); + if (Minecraft.getMinecraft().theWorld == null) { + ModNetwork.net.sendToServer(new SyncPropertiesPacket.Message()); + } else { + AdventureBackpack.proxy.synchronizePlayer(message.ID, message.properties); + } } if (ctx.side.isServer()) { @@ -69,4 +75,4 @@ public void toBytes(ByteBuf buf) ByteBufUtils.writeTag(buf, properties); } } -} +} \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index 3fb50f3f..62c3604e 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -256,12 +256,12 @@ public static String printCoordinates(int x, int y, int z) public static int secondsToTicks(int seconds) { - return (int) secondsToTicks(20); + return seconds * 20; } public static int secondsToTicks(float seconds) { - return (int) secondsToTicks(20); + return (int) seconds * 20; } public static boolean inServer() From cc3f17d8a23460fec335410a7d33361e862da266 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Thu, 26 May 2016 19:58:27 -0400 Subject: [PATCH 226/462] Fixed issue #12 --- .../handlers/ClientEventHandler.java | 7 +++---- .../handlers/PlayerEventHandler.java | 11 ++--------- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java index b96dc6c0..7a18adb5 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java @@ -92,10 +92,9 @@ public void mouseWheelDetect(MouseEvent event) ItemStack heldItem = player.inventory.getStackInSlot(slot); Item theItem = heldItem.getItem(); - if (SlotTool.isValidTool(heldItem) || - (BackpackNames.getBackpackColorName(backpack).equals("Skeleton") && theItem.equals(Items.bow))) + if (theItem instanceof ItemHose) { - ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(dWheel, slot, CycleToolPacket.CYCLE_TOOL_ACTION)); + ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(dWheel, slot, CycleToolPacket.SWITCH_HOSE_ACTION)); ServerActions.cycleTool(player, dWheel, slot); event.setCanceled(true); } @@ -104,7 +103,7 @@ public void mouseWheelDetect(MouseEvent event) { ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(dWheel, slot, CycleToolPacket.SWITCH_HOSE_ACTION)); ServerActions.switchHose(player, ServerActions.HOSE_SWITCH, dWheel, slot); - event.setCanceled(true); + event.setCanceled(true); { } diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 68f36909..76b0ab6e 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -298,15 +298,8 @@ public void tickPlayer(TickEvent.PlayerTickEvent event) { if (event.side.isServer()) { - BackpackProperty.syncToNear(event.player); -// if (Utils.notNullAndInstanceOf(event.player.openContainer, IWearableContainer.class)) -// { -// //playerMP.sendContainerAndContentsToPlayer(playerMP.openContainer, playerMP.openContainer.getInventory()); -// BackpackProperty.syncToNear(event.player); -// }else -// { -// BackpackProperty.syncToNear(event.player); -// } + //Thanks @knoxz for fixing performance issue + //BackpackProperty.syncToNear(event.player); } } } From d30da1df45158f8498d8a7f937d83c19c0419c51 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 6 Jun 2016 04:58:33 -0400 Subject: [PATCH 227/462] More fix for issue #12 --- .../common/ServerActions.java | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index f4eb3e9e..e2427a81 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -5,6 +5,7 @@ import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.inventory.InventoryBackpack; import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; +import com.darkona.adventurebackpack.inventory.SlotTool; import com.darkona.adventurebackpack.item.ItemCopterPack; import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.network.WearableModePacket; @@ -45,6 +46,7 @@ public class ServerActions * direction all the timeInSeconds. That's stupid. * @param slot The slot that will be switched with the backpack. */ + //Using @Sir-Will dupe fixed public static void cycleTool(EntityPlayer player, int direction, int slot) { try @@ -52,20 +54,18 @@ public static void cycleTool(EntityPlayer player, int direction, int slot) InventoryBackpack backpack = Wearing.getBackpackInv(player, true); ItemStack current = player.getCurrentEquippedItem(); backpack.openInventory(); - if (direction < 0) - { - //LogHelper.info("Item of class " + backpack.getStackInSlot(Constants.lowerTool).getItem().getClass().getName()); - player.inventory.mainInventory[slot] = backpack.getStackInSlot(Constants.upperTool); - backpack.setInventorySlotContentsNoSave(Constants.upperTool, backpack.getStackInSlot(Constants.lowerTool)); - backpack.setInventorySlotContentsNoSave(Constants.lowerTool, current); + if(SlotTool.isValidTool(current)) { + if (direction < 0) { + player.inventory.mainInventory[slot] = backpack.getStackInSlot(Constants.upperTool); + backpack.setInventorySlotContentsNoSave(Constants.upperTool, backpack.getStackInSlot(Constants.lowerTool)); + backpack.setInventorySlotContentsNoSave(Constants.lowerTool, current); - } else - { - if (direction > 0) - { - player.inventory.mainInventory[slot] = backpack.getStackInSlot(Constants.lowerTool); - backpack.setInventorySlotContentsNoSave(Constants.lowerTool, backpack.getStackInSlot(Constants.upperTool)); - backpack.setInventorySlotContentsNoSave(Constants.upperTool, current); + } else { + if (direction > 0) { + player.inventory.mainInventory[slot] = backpack.getStackInSlot(Constants.lowerTool); + backpack.setInventorySlotContentsNoSave(Constants.lowerTool, backpack.getStackInSlot(Constants.upperTool)); + backpack.setInventorySlotContentsNoSave(Constants.upperTool, current); + } } } backpack.markDirty(); @@ -421,4 +421,4 @@ public static void toggleSteamJetpack(EntityPlayer player, ItemStack jetpack, by } } } -} +} \ No newline at end of file From 44ac29e5f33ba4755dcc8518ca9017963422f882 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 6 Jun 2016 04:59:43 -0400 Subject: [PATCH 228/462] More fix for issue #12 --- .../handlers/ClientEventHandler.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java index 7a18adb5..6ce51ecb 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java @@ -66,7 +66,6 @@ public void toolTips(ItemTooltipEvent event) } } } - /** * @param event */ @@ -92,9 +91,10 @@ public void mouseWheelDetect(MouseEvent event) ItemStack heldItem = player.inventory.getStackInSlot(slot); Item theItem = heldItem.getItem(); - if (theItem instanceof ItemHose) + if (SlotTool.isValidTool(heldItem) || + (BackpackNames.getBackpackColorName(backpack).equals("Skeleton") && theItem.equals(Items.bow))) { - ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(dWheel, slot, CycleToolPacket.SWITCH_HOSE_ACTION)); + ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(dWheel, slot, CycleToolPacket.CYCLE_TOOL_ACTION)); ServerActions.cycleTool(player, dWheel, slot); event.setCanceled(true); } @@ -103,10 +103,7 @@ public void mouseWheelDetect(MouseEvent event) { ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(dWheel, slot, CycleToolPacket.SWITCH_HOSE_ACTION)); ServerActions.switchHose(player, ServerActions.HOSE_SWITCH, dWheel, slot); - event.setCanceled(true); - { - - } + event.setCanceled(true); } } } From 450f5f41c051e51ea9deedb82f3ad37017291136 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Thu, 23 Jun 2016 14:50:12 -0400 Subject: [PATCH 229/462] Delete WaterEffect.java --- .../fluids/effects/WaterEffect.java | 46 ------------------- 1 file changed, 46 deletions(-) delete mode 100644 src/main/java/com/darkona/adventurebackpack/fluids/effects/WaterEffect.java diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/effects/WaterEffect.java b/src/main/java/com/darkona/adventurebackpack/fluids/effects/WaterEffect.java deleted file mode 100644 index 5b79427a..00000000 --- a/src/main/java/com/darkona/adventurebackpack/fluids/effects/WaterEffect.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.darkona.adventurebackpack.fluids.effects; - -import adventurebackpack.api.FluidEffect; -import com.darkona.adventurebackpack.util.Utils; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraftforge.common.BiomeDictionary; -import net.minecraftforge.fluids.FluidRegistry; - -/** - * Created on 12/10/2014. - * - * @author Javier Darkona - */ -@SuppressWarnings("unused") -public class WaterEffect extends FluidEffect -{ - - public WaterEffect() - { - super(FluidRegistry.WATER, 7); - } - - @Override - public void affectDrinker(World world, Entity entity) - { - if (entity instanceof EntityPlayer) - { - EntityPlayer player = (EntityPlayer) entity; - { - // player.getFoodStats().addStats(1, 0.1f); - if (player.isBurning()) - { - player.extinguish(); - }else { - player.addPotionEffect(new PotionEffect(Potion.regeneration.id, Utils.secondsToTicks(timeInSeconds), 0)); - } - } - - } - } -} From 56becfdccb7dd1a1dd9ac9ef926ef80b67bcbcd7 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Thu, 23 Jun 2016 14:51:35 -0400 Subject: [PATCH 230/462] Fixed issue #13 From 5d784c562906ff89a26dc1e25f9e0f2717b2145c Mon Sep 17 00:00:00 2001 From: runescapejon Date: Thu, 23 Jun 2016 18:19:42 -0400 Subject: [PATCH 231/462] Uploaded the wrong file on the last commit this fixed issue #13 --- .../fluids/effects/MelonJuiceEffect.java | 51 +++++++++---------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/effects/MelonJuiceEffect.java b/src/main/java/com/darkona/adventurebackpack/fluids/effects/MelonJuiceEffect.java index 362e848a..344eab23 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/effects/MelonJuiceEffect.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/effects/MelonJuiceEffect.java @@ -8,35 +8,34 @@ import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.world.World; +import com.darkona.adventurebackpack.util.Utils; /** * Created by Darkona on 12/10/2014. */ -public class MelonJuiceEffect extends FluidEffect -{ +public class MelonJuiceEffect extends FluidEffect { - public MelonJuiceEffect() - { - super(ModFluids.melonJuice, 30); - } + public MelonJuiceEffect() { + super(ModFluids.melonJuice, 30); + } - /** - * This method determines what will happen to the player when drinking the - * corresponding fluid. For example set potion effects, set player on fire, - * heal, fill hunger, etc. You can use the world parameter to make - * conditions based on where the player is. - * - * @param world The World. - * @param player The Player. - */ - @Override - public void affectDrinker(World world, Entity entity) - { - if (entity instanceof EntityPlayer) - { - EntityPlayer player = (EntityPlayer) entity; - player.addPotionEffect(new PotionEffect(Potion.digSpeed.getId(), timeInTicks, 0)); - FluidEffectRegistry.WATER_EFFECT.affectDrinker(world, player); - } - } -} + /** + * This method determines what will happen to the player when drinking the + * corresponding fluid. For example set potion effects, set player on fire, + * heal, fill hunger, etc. You can use the world parameter to make + * conditions based on where the player is. + * + * @param world + * The World. + * @param player + * The Player. + */ + @Override + public void affectDrinker(World world, Entity entity) { + if (entity instanceof EntityPlayer) { + EntityPlayer player = (EntityPlayer) entity; + player.addPotionEffect(new PotionEffect(Potion.digSpeed.getId(), timeInTicks, 0)); + player.addPotionEffect(new PotionEffect(Potion.regeneration.id, Utils.secondsToTicks(timeInSeconds), 0)); + } + } +} \ No newline at end of file From 6168b634def300cf4d0541a4b60f681e9106f212 Mon Sep 17 00:00:00 2001 From: Dan Date: Sun, 24 Jul 2016 19:30:41 +0300 Subject: [PATCH 232/462] Added Ukrainian translation Added to pool requests --- .../assets/adventurebackpack/lang/uk_UA | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 src/main/resources/assets/adventurebackpack/lang/uk_UA diff --git a/src/main/resources/assets/adventurebackpack/lang/uk_UA b/src/main/resources/assets/adventurebackpack/lang/uk_UA new file mode 100644 index 00000000..ba7b3d03 --- /dev/null +++ b/src/main/resources/assets/adventurebackpack/lang/uk_UA @@ -0,0 +1,68 @@ +# Items + +## Component Items For Crafting +item.adventurebackpack:backpackComponent.name=Компонент рюкзака +item.adventurebackpack:sleepingBag.name=Спальний мішок +item.adventurebackpack:backpackTank.name=Резервуар для рідини в рюкзаку +item.adventurebackpack:macheteHandle=Ручка від мачете +item.adventurebackpack:hoseHead.name=Накінечник для трубки +item.adventurebackpack:copterEngine.name=Двоциліндровий дизельний двигун +item.adventurebackpack:copterBlades.name=Гелікоптерні лопаті +item.adventurebackpack:hydroBlades.name=Водяні лопаті +item.adventurebackpack:inflatableBoat.name=Надувний човен +item.adventurebackpack:inflatableBoatMotorized.name=Моторний надувний човен + +## Tools and consumables +item.adventurebackpack:clockworkCrossbow.name=Арбалет з часовим механізмом +item.adventurebackpack:melonJuiceBottle.name=Пляшка кавунного соку +item.adventurebackpack:machete.name=Мачете + +item.adventurebackpack:backpackHose.name=Трубка для рідин з рюкзаку +item.adventurebackpack:hose_leftTank_suck.name=Трубка для рідин: Ліва ємність / Режим закачування +item.adventurebackpack:hose_leftTank_spill.name=Трубка для рідин: Ліва ємність / Режим відкачування +item.adventurebackpack:hose_leftTank_drink.name=Трубка для рідин: Ліва ємність / Режим пиття + +item.adventurebackpack:hose_rightTank_suck.name=Трубка для рідин: Права ємність / Режим закачування +item.adventurebackpack:hose_rightTank_spill.name=Трубка для рідин: Права ємність / Режим відкачування +item.adventurebackpack:hose_rightTank_drink.name=Трубка для рідин: Права ємність / Режим пиття +item.adventurebackpack:hoseUseless.name=Трубка для рідин: Не використовується / Нема рюкзака + +## Wearables +item.adventurebackpack:adventureBackpack.name=Ранець шукача пригод +item.adventurebackpack:copterPack.name=Ранець-гелікоптер +item.adventurebackpack:steamJetpack.name=Паровий ранець + +## Armor +item.adventurebackpack:adventureSuit.name=Костюм шукача пригод +item.adventurebackpack:adventureHat.name=Фетровий капелюх шукача пригод +item.adventurebackpack:pistonBoots.name=Поршньові черевики + +## Blocks +block.adventurebackpack:blockAdventureBackpack.name=Основа рюкзака шукача пригод +block.adventurebackpack:blockCampFire.name=Вогнище +block.adventurebackpack:blockSleepingBag.name=Спальний мішок + +## CreativeTab +itemGroup.adventurebackpack=Adventure Backpack + +## Keybindings +keys.adventureBackpack.category=Рюкзак шукача пригод +keys.adventureBackpack.openBackpackInventory=Відкрити інвентар рюкзака +keys.adventureBackpack.switchHoseTank=Змінити використовуваний резервуар + +## Fluids +fluid.melonJuice=Кавунний сік +fluid.milk=Молоко +fluid.mushrromstew=Суп з грибів + +## Messages +adventurebackpack:already.equipped=Ви вже надягнули рюкзак. +adventurebackpack:messages.already.impossibru=Ви не можете надягнути більше рюкзаків. +adventurebackpack:messages.copterpack.hover=Рюкзак-гелікоптер: режим зависання. +adventurebackpack:messages.copterpack.normal=Рюкзак-гелікоптер: звичайний режим. +adventurebackpack:messages.copterpack.outoffuel=Рюкзак-гелікоптер: нема пального. +adventurebackpack:messages.copterpack.cantwater=Рюкзак-гелікоптер: праця під водою неможлива. +adventurebackpack:messages.copterpack.off=Рюкзак-гелікоптер: вимкнений. +adventurebackpack:messages.jetpack.on=Паровий рюкзак: увімкнений. +adventurebackpack:messages.jetpack.off=Паровий рюкзак: вимкнений. +adventurebackpack:messages.crossbow.outofammo=Арбалет з часовим механізмом: немає набоїв. From ba641ef9b95719fd372b45d72a9f5e3c33a99e35 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 5 Aug 2016 07:17:03 -0400 Subject: [PATCH 233/462] Rename uk_UA to uk_UA.lang --- .../resources/assets/adventurebackpack/lang/{uk_UA => uk_UA.lang} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/main/resources/assets/adventurebackpack/lang/{uk_UA => uk_UA.lang} (100%) diff --git a/src/main/resources/assets/adventurebackpack/lang/uk_UA b/src/main/resources/assets/adventurebackpack/lang/uk_UA.lang similarity index 100% rename from src/main/resources/assets/adventurebackpack/lang/uk_UA rename to src/main/resources/assets/adventurebackpack/lang/uk_UA.lang From f9f75dec2d23e51faeb4c52165b9f0bbed8db507 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 15 Aug 2016 07:22:04 -0400 Subject: [PATCH 234/462] removed water effect --- .../darkona/adventurebackpack/fluids/FluidEffectRegistry.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/FluidEffectRegistry.java b/src/main/java/com/darkona/adventurebackpack/fluids/FluidEffectRegistry.java index 02834e54..69ad39bb 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/FluidEffectRegistry.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/FluidEffectRegistry.java @@ -22,7 +22,6 @@ public class FluidEffectRegistry { static BiMap EFFECT_REGISTRY = HashBiMap.create(); - public static FluidEffect WATER_EFFECT; public static FluidEffect LAVA_EFFECT; public static FluidEffect MILK_EFFECT; public static FluidEffect MELON_EFFECT; From 116a01972d21362ac8b12e99aeedcf56c71dfdd5 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Tue, 16 Aug 2016 05:32:03 -0400 Subject: [PATCH 235/462] Update README.md --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index e765f2c6..d37e9239 100644 --- a/README.md +++ b/README.md @@ -10,3 +10,11 @@ You can include this mod in your modpack You can do video's with this fork of adventurebackpack mod My only request is to provide a link to this github if not its fine by me + +###This Adventure Backpack 2 Mod +* better Performance! +* little more adventure backpack to you to enjoy +* major bugfixe's +* fixes dupelication bugs +* fixed missing texture's for holiday's +* more to come! From e15ab820aad79c5023aad9785a55015eb3f15a32 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Tue, 23 Aug 2016 15:03:24 -0400 Subject: [PATCH 236/462] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d37e9239..1cae35d1 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,6 @@ My only request is to provide a link to this github if not its fine by me * better Performance! * little more adventure backpack to you to enjoy * major bugfixe's -* fixes dupelication bugs +* fixes duplication bugs * fixed missing texture's for holiday's * more to come! From 86d1d752826fafc60b1b1b817304b5798d20dcbc Mon Sep 17 00:00:00 2001 From: Eufranio Date: Mon, 5 Sep 2016 18:57:44 -0300 Subject: [PATCH 237/462] Update pt_BR.lang Better descriptions ;) --- .../resources/assets/adventurebackpack/lang/pt_BR.lang | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/resources/assets/adventurebackpack/lang/pt_BR.lang b/src/main/resources/assets/adventurebackpack/lang/pt_BR.lang index 369449ef..058c4aff 100644 --- a/src/main/resources/assets/adventurebackpack/lang/pt_BR.lang +++ b/src/main/resources/assets/adventurebackpack/lang/pt_BR.lang @@ -22,12 +22,12 @@ item.adventurebackpack:hose_rightTank_spill.name=Mangueira: Tanque Direito / Mod item.adventurebackpack:hose_rightTank_drink.name=Mangueira: Tanque Direito / Modo Beber item.adventurebackpack:hoseUseless.name=Mangueira: Inútil / Sem Mochila -item.adventurebackpack:copterPack.name= +item.adventurebackpack:copterPack.name=MochiloCóptero #Blocks -block.adventurebackpack:blockAdventureBackpack.name=Base Para Mochila do Aventureiro +block.adventurebackpack:blockAdventureBackpack.name=Mochila do Aventureiro #CreativeTab -itemGroup.adventurebackpack=Mochila do Aventureiro +itemGroup.adventurebackpack=Mochilas dos Aventureiros #Keybindings keys.adventureBackpack.category=Mochila do Aventureiro @@ -37,4 +37,4 @@ keys.adventureBackpack.switchHoseTank=Trocar a Mangueira do Tanque #Fluids fluid.melonJuice=Suco de Melancia fluid.milk=Leite -fluid.mushroomstew= \ No newline at end of file +fluid.mushroomstew=Ensopado de Cogumelos From 2fac1151e6d9605fcaaef6df25a5f6897ae99452 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Wed, 7 Sep 2016 12:08:57 -0400 Subject: [PATCH 238/462] issue #17 possibly fix untested --- .../adventurebackpack/handlers/PlayerEventHandler.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 76b0ab6e..d7fbfb65 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -6,7 +6,9 @@ import com.darkona.adventurebackpack.entity.ai.EntityAIHorseFollowOwner; import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.init.ModItems; +import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.item.IBackWearableItem; +import com.darkona.adventurebackpack.network.SyncPropertiesPacket; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.proxy.ServerProxy; import com.darkona.adventurebackpack.reference.BackpackNames; @@ -213,6 +215,11 @@ public void playerDies(LivingDeathEvent event) event.setResult(Event.Result.ALLOW); } + @SubscribeEvent + public void playerRespawn(PlayerEvent.PlayerRespawnEvent event) { + BackpackProperty.sync(event.player); + } + @SubscribeEvent public void playerCraftsBackpack(PlayerEvent.ItemCraftedEvent event) { From 19ca9be6d4177beb5c7bea1c2e6f9f2ca54cd9aa Mon Sep 17 00:00:00 2001 From: runescapejon Date: Wed, 7 Sep 2016 12:20:41 -0400 Subject: [PATCH 239/462] keep forgetting to update this xD --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 8379a68d..aa88986d 100644 --- a/build.gradle +++ b/build.gradle @@ -18,7 +18,7 @@ buildscript { apply plugin: 'forge' -version = "1.7.10-0.8ebeta10" +version = "1.7.10-0.8ebeta26" group = "com.darkona.adventurebackpack" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "adventurebackpack" From f5b67c36fdc10b2ad5368c3c0c3e5a705ee1331c Mon Sep 17 00:00:00 2001 From: runescapejon Date: Wed, 7 Sep 2016 12:55:05 -0400 Subject: [PATCH 240/462] Fixed issues #15 --- .../darkona/adventurebackpack/inventory/SlotTool.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java index 7e3870b4..f375a20e 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java @@ -34,7 +34,7 @@ public static boolean isValidTool(ItemStack stack) }; String[] invalidToolNames = { - "bucket", "sword", "dagger", "sabre", "rapier", "shield", "cutlass", "bow", "whip" + "bucket", "sword", "dagger", "sabre", "rapier", "shield", "cutlass", "bow", "whip", "disassembler" }; if (stack != null && stack.getMaxStackSize() == 1) @@ -79,6 +79,14 @@ public static boolean isValidTool(ItemStack stack) // oops.printStackTrace(); } try + { + // Mekanism + if (item.getClass().getName().contains("mekanism.common.item")) return true; + } catch (Exception oops) + { + // oops.printStackTrace(); + } + try { //Buildcraft if (java.lang.Class.forName("buildcraft.api.tools.IToolWrench").isInstance(item)) return true; From c9a861aad159104c4359986ca1b64d52413efc29 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 9 Sep 2016 04:52:19 -0400 Subject: [PATCH 241/462] Fixed issues #18 --- .../java/com/darkona/adventurebackpack/inventory/SlotTool.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java index f375a20e..9dcaca90 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java @@ -34,7 +34,7 @@ public static boolean isValidTool(ItemStack stack) }; String[] invalidToolNames = { - "bucket", "sword", "dagger", "sabre", "rapier", "shield", "cutlass", "bow", "whip", "disassembler" + "bucket", "sword", "dagger", "sabre", "rapier", "shield", "cutlass", "bow", "whip", "disassembler", "robit" }; if (stack != null && stack.getMaxStackSize() == 1) From 7a071f0b59223e5905cbc50d5e2cb231c6bfbc88 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 9 Sep 2016 04:52:34 -0400 Subject: [PATCH 242/462] Update build.gradle --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index aa88986d..7517bfc7 100644 --- a/build.gradle +++ b/build.gradle @@ -18,7 +18,7 @@ buildscript { apply plugin: 'forge' -version = "1.7.10-0.8ebeta26" +version = "1.7.10-0.8ebeta27" group = "com.darkona.adventurebackpack" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "adventurebackpack" @@ -66,4 +66,4 @@ processResources } } -idea { module { inheritOutputDirs = true } } \ No newline at end of file +idea { module { inheritOutputDirs = true } } From cdd069dd9a9aae1c3e4bdeb99379aadc035d86bb Mon Sep 17 00:00:00 2001 From: runescapejon Date: Tue, 27 Sep 2016 01:56:28 -0400 Subject: [PATCH 243/462] Fixed all the textures Fixed issue #19 --- src/main/resources/items/CoalJetpack.png | Bin 0 -> 343 bytes src/main/resources/models/CoalJetpack.png | Bin 0 -> 2441 bytes .../resources/models/adventurepants_texture.png | Bin 0 -> 927 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/items/CoalJetpack.png create mode 100644 src/main/resources/models/CoalJetpack.png create mode 100644 src/main/resources/models/adventurepants_texture.png diff --git a/src/main/resources/items/CoalJetpack.png b/src/main/resources/items/CoalJetpack.png new file mode 100644 index 0000000000000000000000000000000000000000..25344f1b675fd5f0a6f2e05e0c7de4be89721e4a GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE({MC7BFzInXLQ-6yYrJ zh%9Dc;1&j9Muu5)B!GhKC7!;n?DrY@`2?B%ehcaX3O(_3aSX9Iotz-?sX=h&U@a;l#89N97H8=nO2^L92 zK~!ko)tOst9Mu`ee{rPu9XB|Uv2aVE_ES^|C8%u_0+Ff)uw0?^rHU#A z^{En~y!4Uw!4eNhP)jYSc}SrIDo~q>Sh%>6LP9N!9UJ1{Z0tBTUhj2gXXf-_J(Jyy z9lSsY{H4*JIdjh0Ip6tz*O34ciG*MSPd)V%mFNsE0nk(*CYd#;3+k+_XV|+Z#>sz8 z^Ui-}q{=yuJo1Qe90veNk`O{*+cp5Isv^rWLI_@e{q z64`8)U@(Yn+hs5LWl&R7LvL>{0J1EjC`#Gp4a3-S?$p#&@h||40*Fk8Kp?>G&ITk& z!nSR1G55N%m?~T3(G!2-(G$h?i?7AXo>`XVZCclL^7%ZLWl>jG2S7TVMwaETBmmPi zaara#4whwAy@m>KZ6!;**^dx{#=06lTS|L0DW%Mg<`D0m&(RgDWBh*$WV6|_#SR@h zBvPpqs;c7i`A`&vY&MIks+gupAP~TD97@L=I&?^6vsnUx0B^kUMpf#NN~Or>^PUjO zHm0g&_l990gz(0u)9IT6uq{(O=MZ-!pHny zj_C!PBR|^3sdwk-?QZl8i7d-#nuZX9-p&R-`sBtf3gup8i}UBt7gfN% zeoROdkef$6fy~a%3V>a^c6og@KWh@|&H$2MMhZ);{^rxWF2I3-0ajO6(RH0fB0+t9 zJ?-u70L;wH(A3m~qA1w5O*Wflb#;}7h6ZM5XN$qy;)VS}ZVVzd)*+l7Z-PP^T}kAL?S^v9w(hn)85|B;NTz~9Ub`ne%jjF zSX*18tE-E6JdWS*XYbyB(h_+qbs1CfvSAByz{q!7ZlD&dy@nHYZM;VE_L8q|<3H#kVXAAq3;& znf{#7+nCR*0VQy{?+qT)Ned^SyEd};@^`*!#`)^M@Byo{!4NRmV(65+`wpY*(wTWfsjrI(0Cqg=gu6-km> z#bRGb^HR6d)6=tM`%bUn;{N;ZClm^yswzj09Ko_I-hJ;qE&~0)MPO)X2!PSiQ4~d? zudk1{-+p^*6{y7V=;qLBq_55!|2U{OY@xGAbyc6T~SY$xVo zJ~o}nY7 zh8QjJb;HH1pr{;m4N8Gc3`Q#wV@QnTr=QQ?N%{9dXAT(jG@pO+m}k!~0EMMt*iT6l zgL4ig;1v-c8WN*;G_ceS*hFKrI=mNmV=FTBhvN}t<@o#M3~K~ND?WHUz#2{IQ@7)XpJ(UR9iL0vbbS~IXIucW{lO%tJS z4ZTzo2(uYRLz-xWT%7d~YML0)N-`@P^#O~6 zyV9;G+i06;Y_f1XF$S9$u4Xez7qE%Oxqz!3Av9 Date: Mon, 3 Oct 2016 13:22:02 -0400 Subject: [PATCH 244/462] Fixed more texture errors --- .../textures/backpack/Columbus.png | Bin 0 -> 3655 bytes .../textures/backpack/Germany.png | Bin 0 -> 3655 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/adventurebackpack/textures/backpack/Columbus.png create mode 100644 src/main/resources/assets/adventurebackpack/textures/backpack/Germany.png diff --git a/src/main/resources/assets/adventurebackpack/textures/backpack/Columbus.png b/src/main/resources/assets/adventurebackpack/textures/backpack/Columbus.png new file mode 100644 index 0000000000000000000000000000000000000000..6bef10fdfa4afebdeffe4d068c58128462b3c3bd GIT binary patch literal 3655 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/adventurebackpack/textures/backpack/Germany.png b/src/main/resources/assets/adventurebackpack/textures/backpack/Germany.png new file mode 100644 index 0000000000000000000000000000000000000000..6bef10fdfa4afebdeffe4d068c58128462b3c3bd GIT binary patch literal 3655 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 literal 0 HcmV?d00001 From c3793e934392c0da236be4c32abdff2a00a63690 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sat, 8 Oct 2016 19:51:37 -0400 Subject: [PATCH 245/462] Updated texture making sure this is all From dfb133be60855fd5b7cc798122fd13da25a5e2bc Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sat, 8 Oct 2016 19:53:07 -0400 Subject: [PATCH 246/462] Add files via upload --- src/main/resources/mcmod.info | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 9ca9193a..f46e01ab 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -5,7 +5,7 @@ "dependencies": ["Buildcraft|Core","Railcraft"], "useDependencyInformation" : true, "description": "Useful and pretty backpacks for Minecraft", - "version": "1.7.10-0.8d", + "version": "1.7.10-0.9f", "mcversion": "1.7.10", "url": "http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/wip-mods/2252109-wip-adventure-backpack-mod-beta-0-7-3-updated-26", "updateUrl": "", From 3011c70b4e5eb4477a440bad20377115e5af30fe Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sat, 8 Oct 2016 19:53:51 -0400 Subject: [PATCH 247/462] Add support for UUID capes --- .../jadarstudios/developercapes/DevCapes.java | 73 +++++---- .../developercapes/HDImageBuffer.java | 10 +- .../developercapes/RenderEventHandler.java | 15 +- .../developercapes/cape/AbstractCape.java | 14 +- .../developercapes/cape/CapeConfig.java | 13 +- .../cape/CapeConfigManager.java | 142 +++++++++++------- .../developercapes/cape/CapeManager.java | 48 ++++-- .../developercapes/cape/ICape.java | 8 + .../developercapes/cape/StaticCape.java | 17 ++- .../developercapes/user/Group.java | 10 +- .../developercapes/user/GroupManager.java | 45 ++++-- .../developercapes/user/User.java | 16 +- .../developercapes/user/UserManager.java | 60 +++++--- 13 files changed, 304 insertions(+), 167 deletions(-) diff --git a/src/main/java/com/jadarstudios/developercapes/DevCapes.java b/src/main/java/com/jadarstudios/developercapes/DevCapes.java index 273c8732..5539eb08 100644 --- a/src/main/java/com/jadarstudios/developercapes/DevCapes.java +++ b/src/main/java/com/jadarstudios/developercapes/DevCapes.java @@ -4,14 +4,11 @@ * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) * version 4.0.0.x */ - package com.jadarstudios.developercapes; import com.jadarstudios.developercapes.cape.CapeConfig; import com.jadarstudios.developercapes.cape.CapeConfigManager; - import net.minecraftforge.common.MinecraftForge; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -42,10 +39,11 @@ public static DevCapes getInstance() { } /** - * Gets and returns an InputStream for a URL. + * InputStream.close() needs to be called on this after you're done! + * + * @return {@link InputStream} for the {@link URL} */ - @SuppressWarnings("finally") - public InputStream getStreamForURL(URL url) { + public InputStream getStreamForURL(URL url) { InputStream is = null; try { URLConnection connection = url.openConnection(); @@ -55,72 +53,69 @@ public InputStream getStreamForURL(URL url) { is = connection.getInputStream(); } catch (IOException e) { e.printStackTrace(); - } finally { - return is; } + return is; } /** - * Gets and returns an InputStream for a file. - * * InputStream.close() needs to be called on this after you're done! + * + * @return {@link InputStream} for the {@link File} */ - @SuppressWarnings({ "resource", "finally" }) - public InputStream getStreamForFile(File file) { + public InputStream getStreamForFile(File file) { InputStream is = null; try { is = new FileInputStream(file); } catch (FileNotFoundException e) { e.printStackTrace(); - } finally { - return is; } + return is; } @Deprecated /** - * Registers a config with DevCapes. DEPRECATED: Please use registerConfig(String jsonUrl) instead + * DEPRECATED: Please use {@link #registerConfig(String jsonUrl)} instead.

+ * Registers a config with DevCapes. * * @param jsonUrl * The URL as a String that links to the Json file that you want * to add * @param identifier * A unique Identifier, normally your mod id - * * @return the id of the registered config + * @return The id of the registered config */ public int registerConfig(String jsonURL, String identifier) { return this.registerConfig(jsonURL); } /** - * Registers a config with DevCapes. DEPRECATED: Please use registerConfig(String jsonUrl) instead + * Registers a config with DevCapes. * * @param jsonUrl The URL as a String that links to the Json file that you want * to add - * @return the id of the registered config + * @return The id of the registered config */ - @SuppressWarnings("finally") - public int registerConfig(String jsonUrl) { + public int registerConfig(String jsonUrl) { int id = -1; try { URL url = new URL(jsonUrl); id = this.registerConfig(url); } catch (MalformedURLException e) { e.printStackTrace(); - } finally { - return id; } + return id; } @Deprecated /** - * Registers a config with DevCapes. DEPRECATED: Please use registerConfig(URL url) instead + * DEPRECATED: Please use {@link #registerConfig(URL url)} instead.

+ * Registers a config with DevCapes. * * @param jsonUrl * A {@link URL} that links to the Json file that you want to add * @param identifier * A unique Identifier, normally your mod id - * @return the id of the registered config + * @return The id of the registered config */ public int registerConfig(URL url, String identifier) { return this.registerConfig(url); @@ -130,13 +125,35 @@ public int registerConfig(URL url, String identifier) { * Registers a config with DevCapes and returns the ID of the config. * * @param jsonUrl A {@link URL} that links to the Json file that you want to add - * @return the id of the registered config + * @return The id of the registered config */ public int registerConfig(URL jsonUrl) { + int id = -1; InputStream is = this.getStreamForURL(jsonUrl); - CapeConfig config = CapeConfigManager.INSTANCE.parseFromStream(is); - int id = CapeConfigManager.getUniqueId(); - CapeConfigManager.INSTANCE.addConfig(id, config); + + if (is == null) { + DevCapes.logger.error(String.format("Unable to establish a connection to the server, %s", jsonUrl.getHost())); + return id; + } + + CapeConfig config = CapeConfigManager.getInstance().parse(is); + + try { + id = CapeConfigManager.getUniqueId(); + CapeConfigManager.getInstance().addConfig(id, config); + } catch (CapeConfigManager.InvalidCapeConfigIdException e) { + e.printStackTrace(); + } + + silentClose(is); + return id; } + + private static void silentClose(InputStream is) { + try { + is.close(); + } catch (IOException ignored) { + } + } } \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/HDImageBuffer.java b/src/main/java/com/jadarstudios/developercapes/HDImageBuffer.java index ef4201a1..884c8ca7 100644 --- a/src/main/java/com/jadarstudios/developercapes/HDImageBuffer.java +++ b/src/main/java/com/jadarstudios/developercapes/HDImageBuffer.java @@ -10,12 +10,11 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.IImageBuffer; -import java.awt.*; +import java.awt.Graphics; import java.awt.image.BufferedImage; /** - * This class is used by DevCapesOld as an implementation of {@link IImageBuffer} - * that allows capes to be HD + * This class is an implementation of {@link IImageBuffer} that allows capes to be in HD * * @author Jadar */ @@ -38,8 +37,5 @@ public BufferedImage parseUserSkin(final BufferedImage texture) { } @Override - public void func_152634_a() { - } - - + public void func_152634_a() {} } \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/RenderEventHandler.java b/src/main/java/com/jadarstudios/developercapes/RenderEventHandler.java index e009ca7f..4494c87e 100644 --- a/src/main/java/com/jadarstudios/developercapes/RenderEventHandler.java +++ b/src/main/java/com/jadarstudios/developercapes/RenderEventHandler.java @@ -1,3 +1,9 @@ +/** + * DeveloperCapes by Jadar + * License: MIT License + * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) + * version 4.0.0.x + */ package com.jadarstudios.developercapes; import com.jadarstudios.developercapes.cape.ICape; @@ -8,6 +14,8 @@ import net.minecraftforge.client.event.RenderPlayerEvent; /** + * This is not the class you are looking for. + * * @author jadar */ public class RenderEventHandler { @@ -16,8 +24,8 @@ public class RenderEventHandler { public void renderPlayer(RenderPlayerEvent.Specials.Pre event) { AbstractClientPlayer player = (AbstractClientPlayer) event.entityPlayer; - UserManager manager = UserManager.INSTANCE; - User user = manager.getUser(player.getCommandSenderName()); + UserManager manager = UserManager.getInstance(); + User user = manager.getUser(player.getUniqueID().toString()); if (user == null) return; ICape cape = user.capes.get(0); @@ -28,5 +36,4 @@ public void renderPlayer(RenderPlayerEvent.Specials.Pre event) { cape.loadTexture(player); } } - -} +} \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/cape/AbstractCape.java b/src/main/java/com/jadarstudios/developercapes/cape/AbstractCape.java index ef5167b4..075bc52d 100644 --- a/src/main/java/com/jadarstudios/developercapes/cape/AbstractCape.java +++ b/src/main/java/com/jadarstudios/developercapes/cape/AbstractCape.java @@ -1,9 +1,17 @@ +/** + * DeveloperCapes by Jadar + * License: MIT License + * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) + * version 4.0.0.x + */ package com.jadarstudios.developercapes.cape; import net.minecraft.client.renderer.texture.ITextureObject; import net.minecraft.util.ResourceLocation; /** + * Abstract Implementation of ICape used within Dev. Capes + * * @author jadar */ public abstract class AbstractCape implements ICape { @@ -15,8 +23,7 @@ public AbstractCape(String name) { this.name = name; } - public AbstractCape() { - } + public AbstractCape() {} @Override public String getName() { @@ -32,5 +39,4 @@ public ITextureObject getTexture() { public ResourceLocation getLocation() { return this.location; } - -} +} \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/cape/CapeConfig.java b/src/main/java/com/jadarstudios/developercapes/cape/CapeConfig.java index 508c7bb8..345bb1b1 100644 --- a/src/main/java/com/jadarstudios/developercapes/cape/CapeConfig.java +++ b/src/main/java/com/jadarstudios/developercapes/cape/CapeConfig.java @@ -1,24 +1,27 @@ +/** + * DeveloperCapes by Jadar + * License: MIT License + * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) + * version 4.0.0.x + */ package com.jadarstudios.developercapes.cape; -import com.google.gson.Gson; import com.jadarstudios.developercapes.user.Group; import com.jadarstudios.developercapes.user.User; import java.util.HashMap; /** + * The players that need to be outfitted are stored here + * * @author jadar */ public class CapeConfig { - private Gson parser; public HashMap groups; public HashMap users; public CapeConfig() { - parser = new Gson(); groups = new HashMap(); users = new HashMap(); } - - } \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/cape/CapeConfigManager.java b/src/main/java/com/jadarstudios/developercapes/cape/CapeConfigManager.java index 7a7ed968..d91bc7f0 100644 --- a/src/main/java/com/jadarstudios/developercapes/cape/CapeConfigManager.java +++ b/src/main/java/com/jadarstudios/developercapes/cape/CapeConfigManager.java @@ -1,3 +1,9 @@ +/** + * DeveloperCapes by Jadar + * License: MIT License + * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) + * version 4.0.0.x + */ package com.jadarstudios.developercapes.cape; import com.google.common.collect.HashBiMap; @@ -9,6 +15,7 @@ import com.jadarstudios.developercapes.user.GroupManager; import com.jadarstudios.developercapes.user.User; import com.jadarstudios.developercapes.user.UserManager; +import org.apache.commons.lang3.ObjectUtils; import java.io.BufferedReader; import java.io.IOException; @@ -18,11 +25,14 @@ import java.util.Map; /** + * All configs need a manager, this is it. + * * @author jadar */ -public enum CapeConfigManager { - INSTANCE; +public class CapeConfigManager { + protected static CapeConfigManager instance; + protected static BitSet availableIds = new BitSet(256); protected HashBiMap configs; @@ -30,21 +40,35 @@ public enum CapeConfigManager { availableIds.clear(availableIds.size()); } - private CapeConfigManager() { + public CapeConfigManager() { configs = HashBiMap.create(); } - public void addConfig(int id, CapeConfig config) { - int realId = claimId(id); - this.configs.put(id, config); - try { - for (User u : config.users.values()) { - UserManager.INSTANCE.addUser(u); - } + public static CapeConfigManager getInstance() { + if (instance == null) { + instance = new CapeConfigManager(); + } + return instance; + } - for (Group g : config.groups.values()) { - GroupManager.INSTANCE.addGroup(g); - } + public void addConfig(int id, CapeConfig config) throws InvalidCapeConfigIdException { + int realId = claimId(id); + this.configs.put(realId, config); + addUsers(config.users); + addGroups(config.groups); + } + + protected void addUsers(Map users){ + try { + UserManager.getInstance().addUsers(users.values()); + } catch (Exception e) { + e.printStackTrace(); + } + } + + protected void addGroups(Map groups){ + try { + GroupManager.getInstance().addGroups(groups.values()); } catch (Exception e) { e.printStackTrace(); } @@ -55,14 +79,17 @@ public CapeConfig getConfig(int id) { } public int getIdForConfig(CapeConfig config) { - return this.configs.inverse().get(config).intValue(); + return this.configs.inverse().get(config); } public static int getUniqueId() { - return availableIds.nextClearBit(0); + return availableIds.nextClearBit(1); } - public static int claimId(int id) { + public static int claimId(int id) throws InvalidCapeConfigIdException { + if(id <= 0){ + throw new InvalidCapeConfigIdException("The config ID must be a positive non-zero integer"); + } try { UnsignedBytes.checkedCast(id); } catch (IllegalArgumentException e) { @@ -71,72 +98,79 @@ public static int claimId(int id) { boolean isRegistered = availableIds.get(id); if (isRegistered) { - DevCapes.logger.error(String.format("The config ID %d was attempted to be claimed but is already claimed.", id)); + throw new InvalidCapeConfigIdException(String.format("The config ID %d is already claimed.", id)); } availableIds.set(id); return id; } -// public CapeConfig newInstance() { -// CapeConfig instance = new CapeConfig(); -// this.addConfig(this.getUniqueId(), ); -// return instance; -// } + public CapeConfig parse(InputStream is) { + if (is == null) { + throw new NullPointerException("Can not parse a null input stream!"); + } - public CapeConfig parse(String config) { CapeConfig instance = new CapeConfig(); + InputStreamReader isr = new InputStreamReader(is); try { - Map entries = new Gson().fromJson(config, Map.class); + Map entries = new Gson().fromJson(isr, Map.class); for (Map.Entry entry : entries.entrySet()) { final String nodeName = entry.getKey(); final Object obj = entry.getValue(); if (obj instanceof Map) { - Map group = (Map) obj; - - Group g = GroupManager.INSTANCE.parse(nodeName, group); - if (g != null) { - instance.groups.put(g.name, g); - } + parseGroup(instance, nodeName, (Map) obj); } else if (obj instanceof String) { - User u = UserManager.INSTANCE.parse(nodeName, obj); - if (u != null) { - instance.users.put(nodeName, u); - } + parseUser(instance, nodeName, (String) obj); } } - } catch (JsonSyntaxException e) { + DevCapes.logger.error("CapeConfig could not be parsed because:"); e.printStackTrace(); } return instance; } + + protected void parseGroup(CapeConfig config, String node, Map group) { + Group g = GroupManager.getInstance().parse(node, group); + if (g != null) { + config.groups.put(g.name, g); + } + } + + protected void parseUser(CapeConfig config, String node, String user) { + User u = UserManager.getInstance().parse(node, user); + if (u != null) { + config.users.put(node, u); + } + } + /** + * DEPRECATED! Please use {@link com.jadarstudios.developercapes.cape.CapeConfigManager#parse(java.io.InputStream is)} + * This will be removed in the next major release. + */ + @Deprecated public CapeConfig parseFromStream(InputStream is) { - if (is == null) { - DevCapes.logger.error("Can't parse a null input stream!"); - return null; + return this.parse(is); + } + + public static class InvalidCapeConfigIdException extends Exception { + public InvalidCapeConfigIdException() { + super(); } - CapeConfig instance = null; - try { - BufferedReader reader = new BufferedReader(new InputStreamReader(is)); - String json = ""; - while (reader.ready()) { - json += reader.readLine(); - } - instance = CapeConfigManager.INSTANCE.parse(json); - } catch (IOException e) { - e.printStackTrace(); - } finally { - try { - is.close(); - } catch (IOException e) { - } + + public InvalidCapeConfigIdException(String s) { + super(s); } - return instance; + public InvalidCapeConfigIdException(Throwable cause) { + super(cause); + } + + public InvalidCapeConfigIdException(String message, Throwable cause) { + super(message, cause); + } } } \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/cape/CapeManager.java b/src/main/java/com/jadarstudios/developercapes/cape/CapeManager.java index 1802c524..d0800375 100644 --- a/src/main/java/com/jadarstudios/developercapes/cape/CapeManager.java +++ b/src/main/java/com/jadarstudios/developercapes/cape/CapeManager.java @@ -1,3 +1,9 @@ +/** + * DeveloperCapes by Jadar + * License: MIT License + * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) + * version 4.0.0.x + */ package com.jadarstudios.developercapes.cape; import com.jadarstudios.developercapes.DevCapes; @@ -8,17 +14,27 @@ import java.util.HashMap; /** + * This manages all of the capes, be nice to it or you won't get one! + * * @author jadar */ -public enum CapeManager { - INSTANCE; +public class CapeManager { + + protected static CapeManager instance; private HashMap capes; - private CapeManager() { + public CapeManager() { this.capes = new HashMap(); } + public static CapeManager getInstance() { + if (instance == null) { + instance = new CapeManager(); + } + return instance; + } + public void addCape(ICape cape) { if (!capes.containsValue(cape)) { capes.put(cape.getName(), cape); @@ -35,27 +51,31 @@ public ICape getCape(String capeName) { return capes.get(capeName); } - public ICape newInstance(String name) { + public ICape newCape(String name) { StaticCape cape = new StaticCape(name); this.capes.put(name, cape); return cape; } - - @SuppressWarnings("finally") - public ICape parse(String name, Object object) { + + public ICape parse(String name, Object object) { ICape cape = null; - if (!(object instanceof String)) { - DevCapes.logger.info(String.format("Cape, %s, could not be parsed because it is not a String!", object)); - return cape; + if(object instanceof String || object instanceof URL){ + cape = parse(name, object.toString()); + }else{ + DevCapes.logger.error(String.format("Cape, %s, could not be parsed because it is not in an accepted format!", object)); } + return cape; + } + + protected ICape parse(String name, String url) { + ICape cape = null; try { - cape = new StaticCape(name, new URL((String) object)); + cape = new StaticCape(name, new URL(url)); } catch (MalformedURLException e) { - DevCapes.logger.error(String.format("Are you crazy?? %s is not a valid URL!", (String) object)); + DevCapes.logger.error(String.format("Are you crazy?? \"%s\" is not a valid URL!", url)); e.printStackTrace(); - } finally { - return cape; } + return cape; } } \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/cape/ICape.java b/src/main/java/com/jadarstudios/developercapes/cape/ICape.java index b699d0ff..79a65243 100644 --- a/src/main/java/com/jadarstudios/developercapes/cape/ICape.java +++ b/src/main/java/com/jadarstudios/developercapes/cape/ICape.java @@ -1,3 +1,9 @@ +/** + * DeveloperCapes by Jadar + * License: MIT License + * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) + * version 4.0.0.x + */ package com.jadarstudios.developercapes.cape; import net.minecraft.client.entity.AbstractClientPlayer; @@ -5,6 +11,8 @@ import net.minecraft.util.ResourceLocation; /** + * Any class implementing this will be requested to act as a cape. + * * @author jadar */ public interface ICape { diff --git a/src/main/java/com/jadarstudios/developercapes/cape/StaticCape.java b/src/main/java/com/jadarstudios/developercapes/cape/StaticCape.java index 7cf60035..1844f952 100644 --- a/src/main/java/com/jadarstudios/developercapes/cape/StaticCape.java +++ b/src/main/java/com/jadarstudios/developercapes/cape/StaticCape.java @@ -1,3 +1,9 @@ +/** + * DeveloperCapes by Jadar + * License: MIT License + * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) + * version 4.0.0.x + */ package com.jadarstudios.developercapes.cape; import com.jadarstudios.developercapes.HDImageBuffer; @@ -10,6 +16,8 @@ import java.net.URL; /** + * Default Cape implementation + * * @author jadar */ public class StaticCape extends AbstractCape { @@ -33,12 +41,8 @@ public void loadTexture(AbstractClientPlayer player) { @Override public boolean isTextureLoaded(AbstractClientPlayer player) { - ResourceLocation location = player.getLocationCape(); - if (location == null) { - return false; - } - - return true; + ResourceLocation cape = player.getLocationCape(); + return cape != null; } public void setURL(URL url) { @@ -53,5 +57,4 @@ public void setName(String name) { this.name = name; this.location = new ResourceLocation("DevCapes/" + name); } - } \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/user/Group.java b/src/main/java/com/jadarstudios/developercapes/user/Group.java index b6d8025e..220db855 100644 --- a/src/main/java/com/jadarstudios/developercapes/user/Group.java +++ b/src/main/java/com/jadarstudios/developercapes/user/Group.java @@ -1,3 +1,9 @@ +/** + * DeveloperCapes by Jadar + * License: MIT License + * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) + * version 4.0.0.x + */ package com.jadarstudios.developercapes.user; import com.jadarstudios.developercapes.cape.ICape; @@ -6,6 +12,8 @@ import java.util.Set; /** + * This represents a group of players that share a cape + * * @author jadar */ public class Group { @@ -22,7 +30,7 @@ public Group(String name) { public void addUser(User user) { if (!this.users.containsValue(user)) { user.capes.add(this.cape); - this.users.put(user.username, user); + this.users.put(user.userUUID, user); } } diff --git a/src/main/java/com/jadarstudios/developercapes/user/GroupManager.java b/src/main/java/com/jadarstudios/developercapes/user/GroupManager.java index 0915be1f..b513c73e 100644 --- a/src/main/java/com/jadarstudios/developercapes/user/GroupManager.java +++ b/src/main/java/com/jadarstudios/developercapes/user/GroupManager.java @@ -1,42 +1,64 @@ +/** + * DeveloperCapes by Jadar + * License: MIT License + * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) + * version 4.0.0.x + */ package com.jadarstudios.developercapes.user; import com.jadarstudios.developercapes.DevCapes; import com.jadarstudios.developercapes.cape.CapeManager; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; -import java.util.HashSet; import java.util.Map; /** + * All groups have to be managed + * * @author jadar */ -public enum GroupManager { - INSTANCE; +public class GroupManager { + + protected static GroupManager instance; private HashMap groups; - private GroupManager() { + public GroupManager() { this.groups = new HashMap(); } + public static GroupManager getInstance() { + if (instance == null) { + instance = new GroupManager(); + } + return instance; + } + public void addGroup(Group group) { groups.put(group.name, group); try { - UserManager.INSTANCE.addUsers(new HashSet(group.users.values())); - CapeManager.INSTANCE.addCape(group.cape); + UserManager.getInstance().addUsers(group.users.values()); + CapeManager.getInstance().addCape(group.cape); } catch (Exception e) { e.printStackTrace(); } } - + + public void addGroups(Collection groups) { + for (Group g : groups) { + GroupManager.getInstance().addGroup(g); + } + } + public Group getGroup(String capeName) { return groups.get(capeName); } - public Group newInstance(String name) { + public Group newGroup(String name) { if (this.getGroup(name) != null) { return this.getGroup(name); } @@ -58,17 +80,14 @@ public Group parse(String name, Map data) { ArrayList users = (ArrayList)usersObj; String capeUrl = (String)capeUrlObj; - group.cape = CapeManager.INSTANCE.parse(name, capeUrl); + group.cape = CapeManager.getInstance().parse(name, capeUrl); for (Object obj : users) { - User user = UserManager.INSTANCE.parse(obj, group.cape); + User user = UserManager.getInstance().parse((String)obj, group.cape); if (user != null) { group.addUser(user); - } else { - continue; } } - return group; } } \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/user/User.java b/src/main/java/com/jadarstudios/developercapes/user/User.java index 4b99d275..e72b135b 100644 --- a/src/main/java/com/jadarstudios/developercapes/user/User.java +++ b/src/main/java/com/jadarstudios/developercapes/user/User.java @@ -1,3 +1,9 @@ +/** + * DeveloperCapes by Jadar + * License: MIT License + * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) + * version 4.0.0.x + */ package com.jadarstudios.developercapes.user; import com.jadarstudios.developercapes.cape.ICape; @@ -6,17 +12,17 @@ import java.util.List; /** + * This player is getting their own cape + * * @author jadar */ public class User { public List capes; - public final String username; + public final String userUUID; - public User(String username) { - this.username = username; + public User(String userUUID) { + this.userUUID = userUUID; this.capes = new ArrayList(); } - - } \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/user/UserManager.java b/src/main/java/com/jadarstudios/developercapes/user/UserManager.java index fcc80312..82b91c36 100644 --- a/src/main/java/com/jadarstudios/developercapes/user/UserManager.java +++ b/src/main/java/com/jadarstudios/developercapes/user/UserManager.java @@ -1,70 +1,80 @@ +/** + * DeveloperCapes by Jadar + * License: MIT License + * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) + * version 4.0.0.x + */ package com.jadarstudios.developercapes.user; import com.jadarstudios.developercapes.DevCapes; import com.jadarstudios.developercapes.cape.CapeManager; import com.jadarstudios.developercapes.cape.ICape; +import java.util.Collection; import java.util.HashMap; -import java.util.Set; /** + * Users can not be trusted to put capes on by themselves + * * @author jadar */ -public enum UserManager { - INSTANCE; +public class UserManager { + + protected static UserManager instance; protected HashMap users; - private UserManager() { + public UserManager() { this.users = new HashMap(); } + public static UserManager getInstance() { + if (instance == null) { + instance = new UserManager(); + } + return instance; + } + public User getUser(String username) { return this.users.get(username); } public void addUser(User user) throws NullPointerException { - if (user == null || user.username == null || user.username.isEmpty()) { - DevCapes.logger.error("Cannot add a null user."); - throw new NullPointerException(); + if (user == null || user.userUUID == null || user.userUUID.isEmpty()) { + throw new NullPointerException("Cannot add a null user!"); } - this.users.put(user.username, user); - CapeManager.INSTANCE.addCapes(user.capes); + this.users.put(user.userUUID, user); + CapeManager.getInstance().addCapes(user.capes); } - public void addUsers(Set users) throws Exception { + public void addUsers(Collection users) throws NullPointerException { for (User u : users) { this.addUser(u); } } - public User newInstance(String username) { - User instance = null; + public User newUser(String username) { + User user = null; if (this.users.containsKey(username)) { - instance = this.getUser(username); + user = this.getUser(username); } else { - instance = new User(username); - this.users.put(username, instance); + user = new User(username); + this.users.put(username, user); } - return instance; + return user; } - public User parse(Object user, Object cape) { - User userInstance = null; - if (!(user instanceof String)) { - DevCapes.logger.error(String.format("User %s could not be parsed because it was not a String!", user.toString())); - return userInstance; - } + public User parse(String user, Object cape) { + User userInstance = new User(user); - userInstance = new User((String) user); - ICape capeInstance = CapeManager.INSTANCE.parse((String) user, cape); + ICape capeInstance = (cape instanceof ICape) ? (ICape)cape : CapeManager.getInstance().parse(user, cape.toString()); if (capeInstance != null) { userInstance.capes.add(capeInstance); } else { - DevCapes.logger.info(String.format("Error parsing cape, %s", cape.toString())); + DevCapes.logger.error(String.format("Error parsing cape, %s", cape.toString())); } return userInstance; From 9c17ddb0318feab0784be17281edd997d2a88f72 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sat, 8 Oct 2016 19:57:19 -0400 Subject: [PATCH 248/462] Fixed Issues #21 and https://github.com/GTNewHorizons/NewHorizons/issues/729 --- .../inventory/SlotFluid.java | 102 ++++++++++++------ 1 file changed, 68 insertions(+), 34 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java index c8b6c397..48a4cb43 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java @@ -1,52 +1,86 @@ package com.darkona.adventurebackpack.inventory; +import com.darkona.adventurebackpack.item.ItemAdventureBackpack; +import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.util.Utils; import net.minecraft.inventory.IInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemFishingRod; +import net.minecraft.item.ItemFlintAndSteel; +import net.minecraft.item.ItemHoe; +import net.minecraft.item.ItemShears; import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemTool; import net.minecraftforge.fluids.FluidContainerRegistry; /** * Created on 12/10/2014 + * * @author Darkona * * */ -public class SlotFluid extends SlotAdventureBackpack -{ - - public SlotFluid(IInventory inventory, int id, int x, int y) - { - super(inventory, id, x, y); - } - - public static boolean valid(ItemStack stack) - { - return ((stack != null) && (FluidContainerRegistry.isContainer(stack))); - } - - @Override - public boolean isItemValid(ItemStack stack) - { - return ((stack != null) && (FluidContainerRegistry.isContainer(stack))); - } - - @Override - public void onSlotChanged() - { - - if (Utils.inServer()) +public class SlotFluid extends SlotAdventureBackpack { + + public SlotFluid(IInventory inventory, int id, int x, int y) { + super(inventory, id, x, y); + } + + public static boolean valid(ItemStack stack) { + return ((stack != null) && (FluidContainerRegistry.isContainer(stack))); + } + + @Override + public boolean isItemValid(ItemStack stack) { + return ((stack != null) && (FluidContainerRegistry.isContainer(stack)) && isValidTool(stack)); + } + + public static boolean isValidTool(ItemStack stack) { + + boolean valid = false; + + String[] validToolNames = { "bucket" }; + + String[] invalidToolNames = { "cell" }; + + if (stack != null && stack.getMaxStackSize() == 1) { - if (inventory instanceof IInventoryTanks) + Item item = stack.getItem(); + String name = item.getUnlocalizedName().toLowerCase(); + + for (String toolName : validToolNames) { - ((IInventoryTanks) this.inventory).updateTankSlots(); + @SuppressWarnings("unused") + String a = toolName; + if (name.contains(toolName)) return true; } + + for (String toolName : invalidToolNames) + { + @SuppressWarnings("unused") + String a = toolName; + if (name.contains(toolName)) return false; + } + } - super.onSlotChanged(); - } - - @Override - public void putStack(ItemStack par1ItemStack) - { - super.putStack(par1ItemStack); - } + + return valid; + +} + + @Override + public void onSlotChanged() { + + if (Utils.inServer()) { + if (inventory instanceof IInventoryTanks) { + ((IInventoryTanks) this.inventory).updateTankSlots(); + } + } + super.onSlotChanged(); + } + + @Override + public void putStack(ItemStack par1ItemStack) { + super.putStack(par1ItemStack); + } } From 5405f4317c207f2133986e50f42de26518c3b4cc Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sat, 8 Oct 2016 19:59:00 -0400 Subject: [PATCH 249/462] Update version --- .../com/darkona/adventurebackpack/ModInfo.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/main/java/com/darkona/adventurebackpack/ModInfo.java diff --git a/src/main/java/com/darkona/adventurebackpack/ModInfo.java b/src/main/java/com/darkona/adventurebackpack/ModInfo.java new file mode 100644 index 00000000..46dc9e40 --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/ModInfo.java @@ -0,0 +1,15 @@ +package com.darkona.adventurebackpack.reference; + +/** + * Created by Darkona on 10/10/2014. + */ +public class ModInfo +{ + public static final String MOD_NAME = "Adventure Backpack"; + public static final String MOD_VERSION = "1.7.10-0.9f"; + public static final String MOD_ID = "adventurebackpack"; + public static final String MOD_CHANNEL = "advBackpackChan"; + public static final String MOD_CLIENT_PROXY = "com.darkona.adventurebackpack.proxy.ClientProxy"; + public static final String GUI_FACTORY_CLASS = "com.darkona.adventurebackpack.client.gui.GuiFactory"; + public static final String MOD_SERVER_PROXY = "com.darkona.adventurebackpack.proxy.ServerProxy"; +} From 0a518722b72e79951252546eff4614b2ca1bac29 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Tue, 25 Oct 2016 01:09:52 -0400 Subject: [PATCH 250/462] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1cae35d1..64bd85e9 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ AdventureBackpack2 ================== +###I do this out of my free time if you are a developer and want to help out please make an Pull Requests Mod for Minecraft From e2703215d8d42640e811551b82ce9431dbbf61c9 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 7 Nov 2016 18:28:41 +0700 Subject: [PATCH 251/462] Add config option EnableToolsRender --- .../com/darkona/adventurebackpack/config/ConfigHandler.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index de046271..155c39da 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -26,6 +26,7 @@ public class ConfigHandler public static boolean IS_RAILCRAFT = false; public static int GUI_TANK_RENDER = 2; + public static boolean ENABLE_TOOLS_RENDER = true; public static boolean BONUS_CHEST_ALLOWED = false; public static boolean PIGMAN_ALLOWED = false; @@ -56,6 +57,7 @@ public static void init(File configFile) private static void loadConfiguration() { GUI_TANK_RENDER = config.getInt("TankRenderType", config.CATEGORY_GENERAL, 3, 1, 3, "1,2 or 3 for different rendering of fluids in the Backpack GUI"); + ENABLE_TOOLS_RENDER = config.getBoolean("EnableToolsRender", config.CATEGORY_GENERAL, true, "Enable rendering for tools in the backpack tool slots. May cause visual glitches with Gregtech tools"); BONUS_CHEST_ALLOWED = config.getBoolean("BonusBackpack", config.CATEGORY_GENERAL, false, "Include a Standard Adventure Backpack in bonus chest?"); PIGMAN_ALLOWED = config.getBoolean("PigmanBackpacks", config.CATEGORY_GENERAL, false, "Allow generation of Pigman Backpacks in dungeon loot and villager trades"); ALLOW_COPTER_SOUND = config.getBoolean("CopterPackSound", config.CATEGORY_GENERAL, true, "Allow playing the CopterPack sound (Client Only, other players may hear it)"); From 1c6ced29bb2dc1e48abd254fde14a3d4a69f89aa Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 7 Nov 2016 18:32:38 +0700 Subject: [PATCH 252/462] Use config option EnableToolsRender --- .../client/models/ModelBackpackArmor.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java index ba8162c7..32de2dac 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java @@ -3,6 +3,7 @@ import codechicken.lib.vec.Vector3; import com.darkona.adventurebackpack.client.render.RendererStack; import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.inventory.InventoryBackpack; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; @@ -257,8 +258,11 @@ private void renderBackpack(Float scale) setOffset(lowerTool, -.28F, 0.8F, -.1F); setOffset(upperTool, 0.0f, 0.04f, 0.25f); - lowerTool.stack = backpack.getStackInSlot(Constants.lowerTool); - upperTool.stack = backpack.getStackInSlot(Constants.upperTool); + if (ConfigHandler.ENABLE_TOOLS_RENDER) + { + lowerTool.stack = backpack.getStackInSlot(Constants.lowerTool); + upperTool.stack = backpack.getStackInSlot(Constants.upperTool); + } if (color.equals("Quartz") || color.equals("Slime") || color.equals("Snow")) { From b176b1338732119c37844cedca936f00117dbc32 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 7 Nov 2016 16:35:13 -0500 Subject: [PATCH 253/462] Oop's a duplication file --- .../com/darkona/adventurebackpack/ModInfo.java | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 src/main/java/com/darkona/adventurebackpack/ModInfo.java diff --git a/src/main/java/com/darkona/adventurebackpack/ModInfo.java b/src/main/java/com/darkona/adventurebackpack/ModInfo.java deleted file mode 100644 index 46dc9e40..00000000 --- a/src/main/java/com/darkona/adventurebackpack/ModInfo.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.darkona.adventurebackpack.reference; - -/** - * Created by Darkona on 10/10/2014. - */ -public class ModInfo -{ - public static final String MOD_NAME = "Adventure Backpack"; - public static final String MOD_VERSION = "1.7.10-0.9f"; - public static final String MOD_ID = "adventurebackpack"; - public static final String MOD_CHANNEL = "advBackpackChan"; - public static final String MOD_CLIENT_PROXY = "com.darkona.adventurebackpack.proxy.ClientProxy"; - public static final String GUI_FACTORY_CLASS = "com.darkona.adventurebackpack.client.gui.GuiFactory"; - public static final String MOD_SERVER_PROXY = "com.darkona.adventurebackpack.proxy.ServerProxy"; -} From 9466051e2e32a4c0c3b61ba9ccc76b18f69d791f Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 7 Nov 2016 16:35:56 -0500 Subject: [PATCH 254/462] Update ModInfo.java --- .../java/com/darkona/adventurebackpack/reference/ModInfo.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/reference/ModInfo.java b/src/main/java/com/darkona/adventurebackpack/reference/ModInfo.java index 5038d573..0de0d4bb 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/ModInfo.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/ModInfo.java @@ -6,7 +6,7 @@ public class ModInfo { public static final String MOD_NAME = "Adventure Backpack"; - public static final String MOD_VERSION = "1.7.10-0.8e"; + public static final String MOD_VERSION = "1.7.10-0.8f"; public static final String MOD_ID = "adventurebackpack"; public static final String MOD_CHANNEL = "advBackpackChan"; public static final String MOD_CLIENT_PROXY = "com.darkona.adventurebackpack.proxy.ClientProxy"; From 609468f5b71b03fd3af9fe453817450b1aea564d Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 7 Nov 2016 19:20:50 -0500 Subject: [PATCH 255/462] added a new config abilities to enable/disable tool cycling --- .../adventurebackpack/ConfigHandler.java | 91 +++++++++++++++++++ .../adventurebackpack/GeneralConfig.java | 13 +++ .../adventurebackpack/Keybindings.java | 19 ++++ .../ManualConfigHandler.java | 35 +++++++ 4 files changed, 158 insertions(+) create mode 100644 src/main/java/com/darkona/adventurebackpack/ConfigHandler.java create mode 100644 src/main/java/com/darkona/adventurebackpack/GeneralConfig.java create mode 100644 src/main/java/com/darkona/adventurebackpack/Keybindings.java create mode 100644 src/main/java/com/darkona/adventurebackpack/ManualConfigHandler.java diff --git a/src/main/java/com/darkona/adventurebackpack/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/ConfigHandler.java new file mode 100644 index 00000000..f9ae514e --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/ConfigHandler.java @@ -0,0 +1,91 @@ +package com.darkona.adventurebackpack.config; + +import com.darkona.adventurebackpack.reference.ModInfo; +import cpw.mods.fml.client.event.ConfigChangedEvent; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.common.config.Configuration; + +import java.io.File; + +/** + * Created on 10/10/2014. + * @author Javier Darkona + */ +public class ConfigHandler +{ + + + public static Configuration config; + + public static boolean IS_BUILDCRAFT = false; + public static boolean IS_BAUBLES = false; + public static boolean IS_TINKERS = false; + public static boolean IS_THAUM = false; + public static boolean IS_TWILIGHT = false; + public static boolean IS_ENVIROMINE = false; + public static boolean IS_RAILCRAFT = false; + + public static int GUI_TANK_RENDER = 2; + public static boolean ENABLE_TOOLS = true; + public static boolean ENABLE_TOOLS_RENDER = true; + public static boolean BONUS_CHEST_ALLOWED = false; + public static boolean PIGMAN_ALLOWED = false; + + public static boolean BACKPACK_DEATH_PLACE = true; + public static boolean BACKPACK_ABILITIES = true; + + public static boolean ALLOW_COPTER_SOUND = true; + public static boolean ALLOW_JETPACK_SOUNDS = true; + + public static boolean STATUS_OVERLAY = true; + public static boolean TANKS_OVERLAY = true; + public static boolean HOVERING_TEXT_TANKS = false; + public static boolean SADDLE_RECIPE = true; + public static boolean FIX_LEAD = true; + + + public static void init(File configFile) + { + if (config == null) + { + config = new Configuration(configFile); + loadConfiguration(); + } + } + + + @SuppressWarnings("static-access") + private static void loadConfiguration() + { + GUI_TANK_RENDER = config.getInt("TankRenderType", config.CATEGORY_GENERAL, 3, 1, 3, "1,2 or 3 for different rendering of fluids in the Backpack GUI"); + ENABLE_TOOLS = config.getBoolean("EnableTools", config.CATEGORY_GENERAL, true, "Enable/Disable scroll wheel tools"); + ENABLE_TOOLS_RENDER = config.getBoolean("EnableToolsRender", config.CATEGORY_GENERAL, true, "Enable rendering for tools in the backpack tool slots. May cause visual glitches with Gregtech tools"); + BONUS_CHEST_ALLOWED = config.getBoolean("BonusBackpack", config.CATEGORY_GENERAL, false, "Include a Standard Adventure Backpack in bonus chest?"); + PIGMAN_ALLOWED = config.getBoolean("PigmanBackpacks", config.CATEGORY_GENERAL, false, "Allow generation of Pigman Backpacks in dungeon loot and villager trades"); + ALLOW_COPTER_SOUND = config.getBoolean("CopterPackSound", config.CATEGORY_GENERAL, true, "Allow playing the CopterPack sound (Client Only, other players may hear it)"); + BACKPACK_ABILITIES = config.getBoolean("BackpackAbilities", config.CATEGORY_GENERAL, true, "Allow the backpacks to execute their special abilities, or be only cosmetic (Doesn't affect lightning transformation) Must be " + + "disabled in both Client and Server to work properly"); + STATUS_OVERLAY = config.getBoolean("StatusOverlay", config.CATEGORY_GENERAL,true, "Show player status effects on screen?"); + TANKS_OVERLAY = config.getBoolean("BackpackOverlay", config.CATEGORY_GENERAL,true, "Show the different wearable overlays on screen?"); + HOVERING_TEXT_TANKS = config.getBoolean("HoveringText", config.CATEGORY_GENERAL,false, "Show hovering text on fluid tanks?"); + FIX_LEAD = config.getBoolean("FixVanillaLead", config.CATEGORY_GENERAL,true, "Fix the vanilla Lead? (Checks mobs falling on a leash to not die of fall damage if they're not falling so fast)"); + BACKPACK_DEATH_PLACE = config.getBoolean("BackpackDeathPlace", config.CATEGORY_GENERAL,true,"Place backpacks as a block when you die?"); + //RECIPES + SADDLE_RECIPE = config.getBoolean("SaddleRecipe", config.CATEGORY_GENERAL,true, "Add recipe for saddle?"); + if (config.hasChanged()) + { + config.save(); + } + } + + @SubscribeEvent + public void onConfigChangeEvent(ConfigChangedEvent.OnConfigChangedEvent event) + { + if (event.modID.equalsIgnoreCase(ModInfo.MOD_ID)) + { + loadConfiguration(); + } + } + + +} diff --git a/src/main/java/com/darkona/adventurebackpack/GeneralConfig.java b/src/main/java/com/darkona/adventurebackpack/GeneralConfig.java new file mode 100644 index 00000000..4d86a968 --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/GeneralConfig.java @@ -0,0 +1,13 @@ +package com.darkona.adventurebackpack.config; + +/** + * Created by Darkona on 12/10/2014. + */ +public class GeneralConfig +{ + + + public static final String GUI_TANK_KEY = "Tank_GUI_Resolution"; + public static final String GUI_TANK_COMMENT = "Resolution can take values of 1,2,4,8 or 16, other values will bork your game. The higher the value the smaller the fluids will look in your GUI"; +} + diff --git a/src/main/java/com/darkona/adventurebackpack/Keybindings.java b/src/main/java/com/darkona/adventurebackpack/Keybindings.java new file mode 100644 index 00000000..a8af9db1 --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/Keybindings.java @@ -0,0 +1,19 @@ +package com.darkona.adventurebackpack.config; + +import com.darkona.adventurebackpack.reference.Names; +import net.minecraft.client.settings.KeyBinding; +import org.lwjgl.input.Keyboard; + +/** + * Created on 14/10/2014 + * + * @author Darkona + */ +public class Keybindings +{ + public static KeyBinding openBackpack = new KeyBinding(Names.keys.OPEN_BACKPACK_INVENTORY, Keyboard.KEY_B, Names.keys.CATEGORY); + public static KeyBinding toggleHose = new KeyBinding(Names.keys.TOGGLE_HOSE_TANK, Keyboard.KEY_N, Names.keys.CATEGORY); +// public static KeyBinding jumpKey = +} + + diff --git a/src/main/java/com/darkona/adventurebackpack/ManualConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/ManualConfigHandler.java new file mode 100644 index 00000000..43530cc6 --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/ManualConfigHandler.java @@ -0,0 +1,35 @@ +package com.darkona.adventurebackpack.config; + +import net.minecraftforge.common.config.Configuration; + +import java.io.File; + +/** + * Created on 04/01/2015 + * + * @author Darkona + */ +public class ManualConfigHandler +{ + + public static Configuration config; + + public static void init(File configFile) + { + if (config == null) + { + config = new Configuration(configFile); + loadConfiguration(); + } + } + + private static void loadConfiguration() + { + + if (config.hasChanged()) + { + config.save(); + } + } + +} From d085a9b21622621fdb306ac428cdbed5ea383abf Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 7 Nov 2016 19:21:52 -0500 Subject: [PATCH 256/462] haha wrong selection --- .../adventurebackpack/Keybindings.java | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 src/main/java/com/darkona/adventurebackpack/Keybindings.java diff --git a/src/main/java/com/darkona/adventurebackpack/Keybindings.java b/src/main/java/com/darkona/adventurebackpack/Keybindings.java deleted file mode 100644 index a8af9db1..00000000 --- a/src/main/java/com/darkona/adventurebackpack/Keybindings.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.darkona.adventurebackpack.config; - -import com.darkona.adventurebackpack.reference.Names; -import net.minecraft.client.settings.KeyBinding; -import org.lwjgl.input.Keyboard; - -/** - * Created on 14/10/2014 - * - * @author Darkona - */ -public class Keybindings -{ - public static KeyBinding openBackpack = new KeyBinding(Names.keys.OPEN_BACKPACK_INVENTORY, Keyboard.KEY_B, Names.keys.CATEGORY); - public static KeyBinding toggleHose = new KeyBinding(Names.keys.TOGGLE_HOSE_TANK, Keyboard.KEY_N, Names.keys.CATEGORY); -// public static KeyBinding jumpKey = -} - - From d0d5a1142cd6ae5d5d7814ef29c1d80c41367f52 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 7 Nov 2016 19:22:03 -0500 Subject: [PATCH 257/462] haha wrong selection --- .../darkona/adventurebackpack/GeneralConfig.java | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 src/main/java/com/darkona/adventurebackpack/GeneralConfig.java diff --git a/src/main/java/com/darkona/adventurebackpack/GeneralConfig.java b/src/main/java/com/darkona/adventurebackpack/GeneralConfig.java deleted file mode 100644 index 4d86a968..00000000 --- a/src/main/java/com/darkona/adventurebackpack/GeneralConfig.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.darkona.adventurebackpack.config; - -/** - * Created by Darkona on 12/10/2014. - */ -public class GeneralConfig -{ - - - public static final String GUI_TANK_KEY = "Tank_GUI_Resolution"; - public static final String GUI_TANK_COMMENT = "Resolution can take values of 1,2,4,8 or 16, other values will bork your game. The higher the value the smaller the fluids will look in your GUI"; -} - From 68d6316504b1900046e3a26ce8ca4d1c0059ceec Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 7 Nov 2016 19:22:16 -0500 Subject: [PATCH 258/462] haha wrong selection --- .../adventurebackpack/ConfigHandler.java | 91 ------------------- 1 file changed, 91 deletions(-) delete mode 100644 src/main/java/com/darkona/adventurebackpack/ConfigHandler.java diff --git a/src/main/java/com/darkona/adventurebackpack/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/ConfigHandler.java deleted file mode 100644 index f9ae514e..00000000 --- a/src/main/java/com/darkona/adventurebackpack/ConfigHandler.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.darkona.adventurebackpack.config; - -import com.darkona.adventurebackpack.reference.ModInfo; -import cpw.mods.fml.client.event.ConfigChangedEvent; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import net.minecraftforge.common.config.Configuration; - -import java.io.File; - -/** - * Created on 10/10/2014. - * @author Javier Darkona - */ -public class ConfigHandler -{ - - - public static Configuration config; - - public static boolean IS_BUILDCRAFT = false; - public static boolean IS_BAUBLES = false; - public static boolean IS_TINKERS = false; - public static boolean IS_THAUM = false; - public static boolean IS_TWILIGHT = false; - public static boolean IS_ENVIROMINE = false; - public static boolean IS_RAILCRAFT = false; - - public static int GUI_TANK_RENDER = 2; - public static boolean ENABLE_TOOLS = true; - public static boolean ENABLE_TOOLS_RENDER = true; - public static boolean BONUS_CHEST_ALLOWED = false; - public static boolean PIGMAN_ALLOWED = false; - - public static boolean BACKPACK_DEATH_PLACE = true; - public static boolean BACKPACK_ABILITIES = true; - - public static boolean ALLOW_COPTER_SOUND = true; - public static boolean ALLOW_JETPACK_SOUNDS = true; - - public static boolean STATUS_OVERLAY = true; - public static boolean TANKS_OVERLAY = true; - public static boolean HOVERING_TEXT_TANKS = false; - public static boolean SADDLE_RECIPE = true; - public static boolean FIX_LEAD = true; - - - public static void init(File configFile) - { - if (config == null) - { - config = new Configuration(configFile); - loadConfiguration(); - } - } - - - @SuppressWarnings("static-access") - private static void loadConfiguration() - { - GUI_TANK_RENDER = config.getInt("TankRenderType", config.CATEGORY_GENERAL, 3, 1, 3, "1,2 or 3 for different rendering of fluids in the Backpack GUI"); - ENABLE_TOOLS = config.getBoolean("EnableTools", config.CATEGORY_GENERAL, true, "Enable/Disable scroll wheel tools"); - ENABLE_TOOLS_RENDER = config.getBoolean("EnableToolsRender", config.CATEGORY_GENERAL, true, "Enable rendering for tools in the backpack tool slots. May cause visual glitches with Gregtech tools"); - BONUS_CHEST_ALLOWED = config.getBoolean("BonusBackpack", config.CATEGORY_GENERAL, false, "Include a Standard Adventure Backpack in bonus chest?"); - PIGMAN_ALLOWED = config.getBoolean("PigmanBackpacks", config.CATEGORY_GENERAL, false, "Allow generation of Pigman Backpacks in dungeon loot and villager trades"); - ALLOW_COPTER_SOUND = config.getBoolean("CopterPackSound", config.CATEGORY_GENERAL, true, "Allow playing the CopterPack sound (Client Only, other players may hear it)"); - BACKPACK_ABILITIES = config.getBoolean("BackpackAbilities", config.CATEGORY_GENERAL, true, "Allow the backpacks to execute their special abilities, or be only cosmetic (Doesn't affect lightning transformation) Must be " + - "disabled in both Client and Server to work properly"); - STATUS_OVERLAY = config.getBoolean("StatusOverlay", config.CATEGORY_GENERAL,true, "Show player status effects on screen?"); - TANKS_OVERLAY = config.getBoolean("BackpackOverlay", config.CATEGORY_GENERAL,true, "Show the different wearable overlays on screen?"); - HOVERING_TEXT_TANKS = config.getBoolean("HoveringText", config.CATEGORY_GENERAL,false, "Show hovering text on fluid tanks?"); - FIX_LEAD = config.getBoolean("FixVanillaLead", config.CATEGORY_GENERAL,true, "Fix the vanilla Lead? (Checks mobs falling on a leash to not die of fall damage if they're not falling so fast)"); - BACKPACK_DEATH_PLACE = config.getBoolean("BackpackDeathPlace", config.CATEGORY_GENERAL,true,"Place backpacks as a block when you die?"); - //RECIPES - SADDLE_RECIPE = config.getBoolean("SaddleRecipe", config.CATEGORY_GENERAL,true, "Add recipe for saddle?"); - if (config.hasChanged()) - { - config.save(); - } - } - - @SubscribeEvent - public void onConfigChangeEvent(ConfigChangedEvent.OnConfigChangedEvent event) - { - if (event.modID.equalsIgnoreCase(ModInfo.MOD_ID)) - { - loadConfiguration(); - } - } - - -} From 13d63195a67a860c7a47f39eb7162173924663b0 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 7 Nov 2016 19:22:24 -0500 Subject: [PATCH 259/462] haha wrong selection --- .../ManualConfigHandler.java | 35 ------------------- 1 file changed, 35 deletions(-) delete mode 100644 src/main/java/com/darkona/adventurebackpack/ManualConfigHandler.java diff --git a/src/main/java/com/darkona/adventurebackpack/ManualConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/ManualConfigHandler.java deleted file mode 100644 index 43530cc6..00000000 --- a/src/main/java/com/darkona/adventurebackpack/ManualConfigHandler.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.darkona.adventurebackpack.config; - -import net.minecraftforge.common.config.Configuration; - -import java.io.File; - -/** - * Created on 04/01/2015 - * - * @author Darkona - */ -public class ManualConfigHandler -{ - - public static Configuration config; - - public static void init(File configFile) - { - if (config == null) - { - config = new Configuration(configFile); - loadConfiguration(); - } - } - - private static void loadConfiguration() - { - - if (config.hasChanged()) - { - config.save(); - } - } - -} From f73b6ceda0a10f3c0c089886a8094dbb31dc1f82 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 7 Nov 2016 19:23:07 -0500 Subject: [PATCH 260/462] added a new config abilities to enable/disable tool cycling --- .../com/darkona/adventurebackpack/config/ConfigHandler.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 155c39da..f9ae514e 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -26,6 +26,7 @@ public class ConfigHandler public static boolean IS_RAILCRAFT = false; public static int GUI_TANK_RENDER = 2; + public static boolean ENABLE_TOOLS = true; public static boolean ENABLE_TOOLS_RENDER = true; public static boolean BONUS_CHEST_ALLOWED = false; public static boolean PIGMAN_ALLOWED = false; @@ -57,6 +58,7 @@ public static void init(File configFile) private static void loadConfiguration() { GUI_TANK_RENDER = config.getInt("TankRenderType", config.CATEGORY_GENERAL, 3, 1, 3, "1,2 or 3 for different rendering of fluids in the Backpack GUI"); + ENABLE_TOOLS = config.getBoolean("EnableTools", config.CATEGORY_GENERAL, true, "Enable/Disable scroll wheel tools"); ENABLE_TOOLS_RENDER = config.getBoolean("EnableToolsRender", config.CATEGORY_GENERAL, true, "Enable rendering for tools in the backpack tool slots. May cause visual glitches with Gregtech tools"); BONUS_CHEST_ALLOWED = config.getBoolean("BonusBackpack", config.CATEGORY_GENERAL, false, "Include a Standard Adventure Backpack in bonus chest?"); PIGMAN_ALLOWED = config.getBoolean("PigmanBackpacks", config.CATEGORY_GENERAL, false, "Allow generation of Pigman Backpacks in dungeon loot and villager trades"); From 71a33fa13da577bf5a618f4f24d2d6789b5f4bdc Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 7 Nov 2016 19:25:20 -0500 Subject: [PATCH 261/462] fixed grammer --- .../com/darkona/adventurebackpack/config/ConfigHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index f9ae514e..f4e30f98 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -58,7 +58,7 @@ public static void init(File configFile) private static void loadConfiguration() { GUI_TANK_RENDER = config.getInt("TankRenderType", config.CATEGORY_GENERAL, 3, 1, 3, "1,2 or 3 for different rendering of fluids in the Backpack GUI"); - ENABLE_TOOLS = config.getBoolean("EnableTools", config.CATEGORY_GENERAL, true, "Enable/Disable scroll wheel tools"); + ENABLE_TOOLS = config.getBoolean("EnableTools", config.CATEGORY_GENERAL, true, "Enable/Disable tool cycling"); ENABLE_TOOLS_RENDER = config.getBoolean("EnableToolsRender", config.CATEGORY_GENERAL, true, "Enable rendering for tools in the backpack tool slots. May cause visual glitches with Gregtech tools"); BONUS_CHEST_ALLOWED = config.getBoolean("BonusBackpack", config.CATEGORY_GENERAL, false, "Include a Standard Adventure Backpack in bonus chest?"); PIGMAN_ALLOWED = config.getBoolean("PigmanBackpacks", config.CATEGORY_GENERAL, false, "Allow generation of Pigman Backpacks in dungeon loot and villager trades"); From 3f0c5f2cc37574e47ef149d9ad718ec80e303aee Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 7 Nov 2016 19:27:05 -0500 Subject: [PATCH 262/462] Add files via upload --- .../com/darkona/adventurebackpack/common/ServerActions.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index e2427a81..bccedb87 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -1,6 +1,7 @@ package com.darkona.adventurebackpack.common; import com.darkona.adventurebackpack.block.TileAdventureBackpack; +import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.inventory.InventoryBackpack; @@ -54,7 +55,7 @@ public static void cycleTool(EntityPlayer player, int direction, int slot) InventoryBackpack backpack = Wearing.getBackpackInv(player, true); ItemStack current = player.getCurrentEquippedItem(); backpack.openInventory(); - if(SlotTool.isValidTool(current)) { + if(SlotTool.isValidTool(current) && ConfigHandler.ENABLE_TOOLS) { if (direction < 0) { player.inventory.mainInventory[slot] = backpack.getStackInSlot(Constants.upperTool); backpack.setInventorySlotContentsNoSave(Constants.upperTool, backpack.getStackInSlot(Constants.lowerTool)); From d7d06cb8368126b32eb5b8e3ee10806d743ddac7 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 7 Nov 2016 19:29:51 -0500 Subject: [PATCH 263/462] fixed https://github.com/runescapejon/AdventureBackpack2/issues/24 --- .../inventory/SlotFluid.java | 41 ++++++++----------- .../adventurebackpack/inventory/SlotTool.java | 4 +- 2 files changed, 18 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java index 48a4cb43..0c58ae9b 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java @@ -1,16 +1,8 @@ package com.darkona.adventurebackpack.inventory; - -import com.darkona.adventurebackpack.item.ItemAdventureBackpack; -import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.util.Utils; import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; -import net.minecraft.item.ItemFishingRod; -import net.minecraft.item.ItemFlintAndSteel; -import net.minecraft.item.ItemHoe; -import net.minecraft.item.ItemShears; import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemTool; import net.minecraftforge.fluids.FluidContainerRegistry; /** @@ -43,30 +35,29 @@ public static boolean isValidTool(ItemStack stack) { String[] invalidToolNames = { "cell" }; - if (stack != null && stack.getMaxStackSize() == 1) - { - Item item = stack.getItem(); - String name = item.getUnlocalizedName().toLowerCase(); + if (stack != null && stack.getMaxStackSize() <= 16) { + Item item = stack.getItem(); + String name = item.getUnlocalizedName().toLowerCase(); - for (String toolName : validToolNames) - { - @SuppressWarnings("unused") + for (String toolName : validToolNames) { + @SuppressWarnings("unused") String a = toolName; - if (name.contains(toolName)) return true; - } + if (name.contains(toolName)) + return true; + } - for (String toolName : invalidToolNames) - { - @SuppressWarnings("unused") + for (String toolName : invalidToolNames) { + @SuppressWarnings("unused") String a = toolName; - if (name.contains(toolName)) return false; - } + if (name.contains(toolName)) + return false; + } - } + } - return valid; + return valid; -} + } @Override public void onSlotChanged() { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java index 9dcaca90..8adda8f1 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java @@ -4,6 +4,7 @@ import com.darkona.adventurebackpack.item.ItemHose; import net.minecraft.inventory.IInventory; import net.minecraft.item.*; +import com.darkona.adventurebackpack.config.ConfigHandler; /** * Created on 12/10/2014 @@ -12,7 +13,6 @@ */ public class SlotTool extends SlotAdventureBackpack { - public SlotTool(IInventory inventory, int id, int x, int y) { super(inventory, id, x, y); @@ -21,7 +21,7 @@ public SlotTool(IInventory inventory, int id, int x, int y) @Override public boolean isItemValid(ItemStack stack) { - return isValidTool(stack); + return isValidTool(stack); } public static boolean isValidTool(ItemStack stack) From 6e3cbba2a29245cc3c58784aceb226f48a1ee85f Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 7 Nov 2016 19:33:33 -0500 Subject: [PATCH 264/462] fixed an error --- .../darkona/adventurebackpack/fluids/FluidEffectRegistry.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/FluidEffectRegistry.java b/src/main/java/com/darkona/adventurebackpack/fluids/FluidEffectRegistry.java index 69ad39bb..3a9a73aa 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/FluidEffectRegistry.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/FluidEffectRegistry.java @@ -32,7 +32,6 @@ public class FluidEffectRegistry public static void init() { EFFECT_REGISTRY.clear(); - WATER_EFFECT = new WaterEffect(); LAVA_EFFECT = new LavaEffect(); MILK_EFFECT = new MilkEffect(); MELON_EFFECT = new MelonJuiceEffect(); From 18292192dd3b8d333a9bd8207b6ba343377125d9 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 8 Nov 2016 19:41:15 +0700 Subject: [PATCH 265/462] Prevent Bat Backpack nightvision blinking , renew effect before it start to fade. --- .../com/darkona/adventurebackpack/common/BackpackAbilities.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java index 70af52a3..3f51d0b1 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java @@ -207,7 +207,7 @@ public void itemBat(EntityPlayer player, World world, ItemStack backpack) if (player.isPotionActive(Potion.nightVision.id)) { nightVision = player.getActivePotionEffect(Potion.nightVision); } - if (nightVision == null || nightVision.getDuration() < 40 && nightVision.getAmplifier() != -4) + if (nightVision == null || nightVision.getDuration() < 220) { player.addPotionEffect(new PotionEffect(Potion.nightVision.id, 5000, -4)); } From e037a0fd0c170d9feed6e210dc8c1160b9fbbbaa Mon Sep 17 00:00:00 2001 From: runescapejon Date: Tue, 8 Nov 2016 15:55:00 -0500 Subject: [PATCH 266/462] added new config --- .../com/darkona/adventurebackpack/config/ConfigHandler.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index f4e30f98..82e1a925 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -42,6 +42,7 @@ public class ConfigHandler public static boolean HOVERING_TEXT_TANKS = false; public static boolean SADDLE_RECIPE = true; public static boolean FIX_LEAD = true; + public static boolean Copterpack_Recipe = true; public static void init(File configFile) @@ -72,6 +73,7 @@ private static void loadConfiguration() BACKPACK_DEATH_PLACE = config.getBoolean("BackpackDeathPlace", config.CATEGORY_GENERAL,true,"Place backpacks as a block when you die?"); //RECIPES SADDLE_RECIPE = config.getBoolean("SaddleRecipe", config.CATEGORY_GENERAL,true, "Add recipe for saddle?"); + Copterpack_Recipe = config.getBoolean("Copterpack_Recipe", config.CATEGORY_GENERAL, true, "Enable/Disable CopterPack recipe"); if (config.hasChanged()) { config.save(); From 8f1fca236ff30d3a16d9dafe538950bec7389758 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Tue, 8 Nov 2016 15:56:13 -0500 Subject: [PATCH 267/462] added new config Going to add more config to disable/enable recipe's soon this is just a start --- .../adventurebackpack/init/ModRecipes.java | 56 ++++++++++--------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java index af29c7d9..ba09281b 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java @@ -26,7 +26,35 @@ private static ItemStack bc(int damage) public static void init() { + if(ConfigHandler.SADDLE_RECIPE) + { + GameRegistry.addRecipe(new ItemStack(Items.saddle), + "LLL", + "L L", + "I I", + 'L', Items.leather, + 'I', Items.iron_ingot + ); + } + //Copter Pack + if(ConfigHandler.Copterpack_Recipe) + { + GameRegistry.addRecipe(new ItemStack(ModItems.copterPack), + "WBW", + "TEI", + "CDI", + 'W', Blocks.planks, + 'B', new ItemStack(ModItems.component, 1, 6), + 'T', new ItemStack(ModItems.component, 1, 2), + 'E', new ItemStack(ModItems.component, 1, 5), + 'C', new ItemStack(Items.dye, 1, 2), + 'D', Items.diamond, + 'I', Items.iron_ingot + ); + } + + //change to make it not support BuildCraft there are people out there who dont like that mod //CampFire GameRegistry.addRecipe(new ShapedOreRecipe(ModBlocks.blockCampFire, " S ", @@ -196,18 +224,6 @@ public static void init() public static void conditionalInit() { - if(ConfigHandler.SADDLE_RECIPE) - { - GameRegistry.addRecipe(new ItemStack(Items.saddle), - "LLL", - "L L", - "I I", - 'L', Items.leather, - 'I', Items.iron_ingot - ); - } - - //change to make it not support BuildCraft there are people out there who dont like that mod { //Copter Engine GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 5), @@ -250,20 +266,6 @@ public static void conditionalInit() 'S', Items.stick, 'W', Blocks.planks ); - - //Copter Pack - GameRegistry.addRecipe(new ItemStack(ModItems.copterPack), - "WBW", - "TEI", - "CDI", - 'W', Blocks.planks, - 'B', new ItemStack(ModItems.component, 1, 6), - 'T', new ItemStack(ModItems.component, 1, 2), - 'E', new ItemStack(ModItems.component, 1, 5), - 'C', new ItemStack(Items.dye, 1, 2), - 'D', Items.diamond, - 'I', Items.iron_ingot - ); //CoalJetpack GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.CoalJetpack), @@ -279,4 +281,4 @@ public static void conditionalInit() )); } } -} \ No newline at end of file + } \ No newline at end of file From 4ae760e21ae01b23cc516871a7111a85634b68cb Mon Sep 17 00:00:00 2001 From: runescapejon Date: Tue, 8 Nov 2016 16:01:56 -0500 Subject: [PATCH 268/462] Add files via upload --- .../adventurebackpack/init/ModRecipes.java | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java index ba09281b..b47a1faa 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java @@ -53,6 +53,21 @@ public static void init() 'I', Items.iron_ingot ); } + //CoalJetpack + if(ConfigHandler.CoalJetPackRecipe); + { + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.CoalJetpack), + "SWT", + "GIG", + "FWS", + 'W', Blocks.planks, + 'G', Items.gold_ingot, + 'I', Items.iron_ingot, + 'S', Blocks.stone, + 'F', Blocks.furnace, + 'T', new ItemStack(ModItems.component, 1, 2) + )); + } //change to make it not support BuildCraft there are people out there who dont like that mod //CampFire @@ -266,19 +281,6 @@ public static void conditionalInit() 'S', Items.stick, 'W', Blocks.planks ); - - //CoalJetpack - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.CoalJetpack), - "SWT", - "GIG", - "FWS", - 'W', Blocks.planks, - 'G', Items.gold_ingot, - 'I', Items.iron_ingot, - 'S', Blocks.stone, - 'F', Blocks.furnace, - 'T', new ItemStack(ModItems.component, 1, 2) - )); } } } \ No newline at end of file From 4b85be37f480162e6f339dea8ebddc7d57a5a07b Mon Sep 17 00:00:00 2001 From: runescapejon Date: Tue, 8 Nov 2016 16:02:32 -0500 Subject: [PATCH 269/462] Add files via upload --- .../com/darkona/adventurebackpack/config/ConfigHandler.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 82e1a925..8b7c4146 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -43,6 +43,7 @@ public class ConfigHandler public static boolean SADDLE_RECIPE = true; public static boolean FIX_LEAD = true; public static boolean Copterpack_Recipe = true; + public static boolean CoalJetPackRecipe = true; public static void init(File configFile) @@ -74,6 +75,7 @@ private static void loadConfiguration() //RECIPES SADDLE_RECIPE = config.getBoolean("SaddleRecipe", config.CATEGORY_GENERAL,true, "Add recipe for saddle?"); Copterpack_Recipe = config.getBoolean("Copterpack_Recipe", config.CATEGORY_GENERAL, true, "Enable/Disable CopterPack recipe"); + CoalJetPackRecipe = config.getBoolean("CoalJetPackRecipe", config.CATEGORY_GENERAL, true, "Enable/Disable CoalJetPack recipe"); if (config.hasChanged()) { config.save(); From 6ae8ce1a58a2cf947eceaf6bfff96ab012fe9306 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 10 Nov 2016 22:48:36 +0700 Subject: [PATCH 270/462] Fix removal Pigman Backpack --- .../com/darkona/adventurebackpack/common/BackpackAbilities.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java index 3f51d0b1..a9545d14 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java @@ -142,7 +142,7 @@ public void executeRemoval(EntityPlayer player, World world,ItemStack backpack ) "Bat", "Squid", "Pigman", "Cactus", "Cow", "Pig", "Dragon", "Slime", "Chicken", "Wolf", "Ocelot", "Creeper", "Rainbow", "Melon", "Sunflower","Mooshroom"}; private static String[] validRemovalBackpacks = { - "Bat", "Squid", "Dragon", "Rainbow" + "Bat", "Squid", "Pigman", "Dragon", "Rainbow" }; /** * These are the colorNames of the backpacks that have abilities while being blocks. Note that not all the From 3f6c429cefc59ea80ff3bd3b28c142a5d297f2b6 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 10 Nov 2016 22:54:04 +0700 Subject: [PATCH 271/462] Make Dragon great again wtf waterbreath dragon? change it to nightvision --- .../darkona/adventurebackpack/common/BackpackAbilities.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java index a9545d14..ddda61d4 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java @@ -413,8 +413,9 @@ public void itemMelon(EntityPlayer player, World world, ItemStack backpack) */ public void itemDragon(EntityPlayer player, World world, ItemStack backpack) { - itemPigman(player,world,backpack); - itemSquid(player, world, backpack); + itemBat(player, world, backpack); + itemPigman(player,world,backpack); + //itemSquid(player, world, backpack); PotionEffect potion = null; if (player.isPotionActive(Potion.regeneration.id)) { potion = player.getActivePotionEffect(Potion.regeneration); From 4f036e5a61d6c8de0058d519194e1e760a019e07 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 10 Nov 2016 22:55:57 +0700 Subject: [PATCH 272/462] Correctly removes Dragon buffs --- .../darkona/adventurebackpack/common/BackpackRemovals.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java index f899b331..9fb69bd4 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java @@ -70,7 +70,7 @@ public void itemDragon(EntityPlayer player, World world, ItemStack backpack) PotionEffect potion = null; if (player.isPotionActive(Potion.damageBoost.id)) { potion = player.getActivePotionEffect(Potion.damageBoost); - if (potion != null && potion.getAmplifier() == -5) { + if (potion != null && potion.getAmplifier() == 2) { if (player.worldObj.isRemote) { player.removePotionEffectClient(Potion.damageBoost.id); } else { @@ -82,7 +82,7 @@ public void itemDragon(EntityPlayer player, World world, ItemStack backpack) if (player.isPotionActive(Potion.regeneration.id)) { potion = player.getActivePotionEffect(Potion.regeneration); - if (potion != null && potion.getAmplifier() == -5) { + if (potion != null && potion.getAmplifier() == 2) { if (player.worldObj.isRemote) { player.removePotionEffectClient(Potion.regeneration.id); } else { From 035e4a0b1f3c3770032d8951501efd1e109847da Mon Sep 17 00:00:00 2001 From: runescapejon Date: Thu, 10 Nov 2016 20:45:50 -0500 Subject: [PATCH 273/462] Add files via upload --- .../textures/backpack/Fools.png | Bin 0 -> 17291 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/adventurebackpack/textures/backpack/Fools.png diff --git a/src/main/resources/assets/adventurebackpack/textures/backpack/Fools.png b/src/main/resources/assets/adventurebackpack/textures/backpack/Fools.png new file mode 100644 index 0000000000000000000000000000000000000000..4ecd5de1f967f348d603a0d8e49eea11fe233c91 GIT binary patch literal 17291 zcmeI4c~leU7QjCcWU(NNAXTg(P%71sJtQ$i_7W9D76rx1FqyyzBxw>%M8$|!L0iPS zw61{QF4`(Clu|%_)?JiZ1vk`+yXaFuwCbC%#u4ZAy!M@U-aC_%?SA*W_s;z8{q8sU zW0DgQ{+W&SAZq}CjU+TE68qF+FF(t^*!#KP=FGu9tdyZ~Y5@8<8eS$~^;#DIMs7x< zV>Pj1V}-CH%^Q*`5)p4*ni880fM}FX3Bf6dhLVURp>khpQ+Xwof=Yd<6S-lGFl8W; zjD}{Ykf@CCXgDJU7D%b1#MUC65Oa`*XdsF%Emf`->U^o~euda~!!VsnX`iA=@um73 z0#ahbA}E0h6++>9^Jp-G=R@%kcr&>^J{+GB6c&TYr8C%cHiO1u3porShehdpP{r2R zH<3yz6GjGwbcVwuUuv>OqZHEVTCLVw%l1~NlIToBh*YuJ9e+fo0isVXtgGI zI)Sqp-iDlgEV3^4N5}jN_moq-ZN-4v%9Ko%sl?oXgCI>>K0-8W3@S#C$4v&_|=gDXYhmCL{J_BOO`0WtG!i>$|aUG<9 z(+#TybKTKcqzV{w-*Z^ZL^gxPWy@%gPa*@$6~d$O`OHKb0(00{TY+R8nY1gAk+XLK zjZ>jm--A+(<`~XJiUmvLAuL$n1JR@`nUuzbI1o+1;IV0J7GH)1Ve?)jGqdim_U5?`%=X7jKVtDN@n)4yA-tYQ(Vqe5qXvu)C#ocPxWV`#Kgvu%Wk! zVZ-u3FbZ#t_8eBXWv3bXZaV)Qf)4*i=I@W8O-AHI%d5jx`>gjnQ7dE`Eu=#HlduZ; zGb_Kt>)U2{_aeGsFGxlI1Bp;W)Bjo;uo{QCY$=b1NMVTP!{Wd+0h`UD$(V-vlqIql z5Ym)bj*)6^wHGx_W3?62KJyc4ey<%#%jE2 z9I>gf8gJTT86!tEVpeA~+^~_A;o7HTV~)Zu(-AR`%Vl##bo?;hA_CPRsj)#Qwu7n- zI{}l0ZMyA7culXCaXpqijek#zre=EGxS-Ur&zw=Aa z8U3AJalXhPI3UC#iHn#IPD|p#0U;JiT*Q2ES`rry2(d`wBIbkBlDKd{h(!_?F&~_k z#DxPwERwj0`QWr9E*ubIk;FyJ2d5=*;eZf}Brak;I4y|_2ZUH8aS`*uX-Ql-AjBex ziprzLUWfDnr$E@D17Er|;UgjghT5%a-mNnAJ}#3G4{m=8`%;=%zT7D-&h zd~jM47Y+!qNa7;qgVU0@a6pJfLR{88ci$p%?3Pdz_ zzViTRdxL%61t6UPz`X)$Q1Q*we}n*F@wp_(KU!D+AU-WQYNAVK_@l68lYX1D z_+p8}h1|VIaz5ZSO1+%o>qKbqNAyYu_0ldE&gU$N)sQV-a)eD>_ZmchdxUVdD3 z!*f~RJvQ@iNT2j6F&jB~-_A{w>pj9$E$#xJvZ2Q+Q2EI))kg=O{hqmY&DGW!`K`W9 zf-9wA##@}wdy)nf#{FBDU+cB?#-R=2n!?98(=%C|^OyWB{VS&UahCd(_>E{C zm~aG@PYX~-IbtT0ocb;ap|Z{(M-Ve8C_=Y?hoVKW<^%BfQSPbbcBbP?{V8T+hBH0B z8F2N&)Zz`vhxS*BJl29U;N*#?$M#2FU9~@DMmon~seNCt+Nsq9Z1!!od_5)ZOB?+m z?<#Kx(Ue?&JIjfBhk3uVH7S!CSM;4QX#9t^lWN`cTl+)}xRnmRcgfvwT0Sq(4uBIs z@Ew*P^s4s@wXthZF3g|yak}Tcj~+c9{_EPkmkFu_&QVScSR%K)!ULe&~pWWrc$l&i(af;o;kTnst%CHMhCAdE8ApGR|@CpcS)h z=SdRctn4h0)*o|D4~@Ha@n}i3t@*I%8!?vqBsn+uA*FTuzo*O)OT0|;B2AojAJn5( z`DatctZ1+pkL)im*p33DcDr_;Z7-zKaol18q4Wm1)NXVZo)HwH=emD&M{Tsu8B zp-`W^Rc}v?-c$W4)gm+_o^^0mu?z1b?ZyQ;`v&_&TAceK|CT9GzPJ}-poBhuHG8&( z7U&NOE);IHE#Ay?92;fD_{36Q49d>d)Bv!1(a`N?_i|k$&GMoP^J=OJ?H9ax`BG3T zy#Gh-T#G30D^GL#u2gcqFLt$O-1V9N;H=5G0gEH_H+N0pmF#JHlsfFrA8kJhCAo3) zmg+M^8gZcIsYMAZTcdd63Y=_J$1-=Sr+K-?P80G+TGT|Cf1}7g8t9KW_?^oB%GAZS zkE_#YP*>W-Z7W`SkG<>l`30uSgJLqCy9S6&ceGvq3NBv0J$r0$+2(n)U7#snQBd{m zIg>c?8}pjGvrK``@%Vw6BPxdee*equ34lze;Fyh%XkVk(bfTUA92;WlyM(rU#4P`8Uh1=}PNSQq zFmGNud*_+U*WpWi9m~9B2Nxc?A))j)cm70w=juXTgF{fO806KT@Tv4dO_P?p%n}|r zY!TF%lE>Q)qN{Ik2{la$_<-l zbAF(vC1xtL(ZY!T)a~mv5T83Ge*qArCQTo94P=XTux_?Sbg@h>Z5xdvgyndf#6ok zWwlp8rh;44-*&y(>IZGdZAf)dMR=$6G|ak~M+cEiI?MI=!uBZ~v`xntmz%Df-n)_Z*J9#r5G?e7;HNb3}|q z!;*r1{Uq@wI?IMFcZK?xUpBkOx2s2g{l)@tc8y8TZTm9N@OK%K;P9ZG0SQ_E0>^?2 AcK`qY literal 0 HcmV?d00001 From fafdb8c708edeed0120ad27f7c97b27b2fa52b98 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Thu, 10 Nov 2016 20:51:59 -0500 Subject: [PATCH 274/462] remove some holidays cause i don't know what are they --- .../java/com/darkona/adventurebackpack/util/Utils.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index 62c3604e..79f769eb 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -77,7 +77,7 @@ public static String getHoliday() { if (day == 1) dia = "Shuttle";//Columbia if (day == 14) dia = "Valentines"; - if (day == 23) dia = "Fatherland"; + //if (day == 23) dia = "Fatherland"; } if (month == 3) { @@ -99,14 +99,14 @@ public static String getHoliday() { if (day == 4) dia = "USA"; if (day == 24) dia = "Bolivar"; - if (day == 14) dia = "Bastille"; + //if (day == 14) dia = "Bastille"; } if (month == 8) { } if (month == 9) { - if (day == 19) dia = "Pirate"; + //if (day == 19) dia = "Pirate"; } if (month == 10) { @@ -116,7 +116,7 @@ public static String getHoliday() } if (month == 11) { - if (day == 2) dia = "Muertos"; + // if (day == 2) dia = "Muertos"; } if (month == 12) { From a986a71f988be2f80e2c02f59ee37d859c5736a0 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 14 Nov 2016 17:01:49 +0700 Subject: [PATCH 275/462] Attempt to fix inventory synchronization --- .../adventurebackpack/inventory/ContainerBackpack.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 205371fc..c5fa8805 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -4,6 +4,7 @@ import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; import com.darkona.adventurebackpack.item.ItemAdventureBackpack; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.*; import net.minecraft.item.ItemStack; @@ -362,11 +363,11 @@ public void detectAndSendChanges() { refresh(); super.detectAndSendChanges(); - /* if(source == SOURCE_WEARING && player instanceof EntityPlayerMP) + if(source == SOURCE_WEARING && player instanceof EntityPlayerMP) { ((EntityPlayerMP) player).sendContainerAndContentsToPlayer(this, inventoryItemStacks); - BackpackProperty.syncToNear(player); - }*/ + //BackpackProperty.syncToNear(player); + } } @Override From 16d78ecd41c88170e84d1c865479b89f65694040 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 14 Nov 2016 17:30:09 +0700 Subject: [PATCH 276/462] Update en_US.lang set name for Sleeping Bag --- src/main/resources/assets/adventurebackpack/lang/en_US.lang | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/resources/assets/adventurebackpack/lang/en_US.lang b/src/main/resources/assets/adventurebackpack/lang/en_US.lang index 8859237a..267592b2 100644 --- a/src/main/resources/assets/adventurebackpack/lang/en_US.lang +++ b/src/main/resources/assets/adventurebackpack/lang/en_US.lang @@ -45,6 +45,8 @@ block.adventurebackpack:AdventureBackpack.name=Adventure Backpack Block block.adventurebackpack:CampFire.name=Campfire block.adventurebackpack:SleepingBag.name=Sleeping Bag blockCampFire.name=CampFire +blockSleepingBag.name=Sleeping Bag + ## CreativeTab itemGroup.adventurebackpack=Adventure Backpack Mod From 9d8eeb624bd54ea37ca82e7f4318ceee5b454161 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 14 Nov 2016 18:31:23 +0700 Subject: [PATCH 277/462] Sync for holding backpack --- .../darkona/adventurebackpack/inventory/ContainerBackpack.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index c5fa8805..5af4671e 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -363,7 +363,7 @@ public void detectAndSendChanges() { refresh(); super.detectAndSendChanges(); - if(source == SOURCE_WEARING && player instanceof EntityPlayerMP) + if((source == SOURCE_WEARING || source == SOURCE_HOLDING) && player instanceof EntityPlayerMP) { ((EntityPlayerMP) player).sendContainerAndContentsToPlayer(this, inventoryItemStacks); //BackpackProperty.syncToNear(player); From 517b8ec3f8cbae16d8084c45f83647b4a91c81b2 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 14 Nov 2016 17:49:50 -0500 Subject: [PATCH 278/462] Update version --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 7517bfc7..d6d4a64a 100644 --- a/build.gradle +++ b/build.gradle @@ -18,7 +18,7 @@ buildscript { apply plugin: 'forge' -version = "1.7.10-0.8ebeta27" +version = "1.7.10-0.9fbeta5" group = "com.darkona.adventurebackpack" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "adventurebackpack" From 7893ac1a770781bdc7a03066b746d79e841c17d2 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Mon, 14 Nov 2016 17:54:36 -0500 Subject: [PATCH 279/462] fixed a dupe i found --- .../adventurebackpack/util/BackpackUtils.java | 58 ++++++++++++------- 1 file changed, 37 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java index 1326f30b..78422d94 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java @@ -8,6 +8,9 @@ import net.minecraft.util.ChatComponentTranslation; import net.minecraftforge.common.MinecraftForge; +import java.util.Timer; +import java.util.TimerTask; + /** * Created on 08/01/2015 * @@ -15,12 +18,12 @@ */ public class BackpackUtils { + private static Timer timer = new Timer(); + private static TimerTask unequipTask; public enum reasons{ SUCCESFUL,ALREADY_EQUIPPED } - - public static Object packetHandler; public static reasons equipWearable(ItemStack backpack, EntityPlayer player) { BackpackProperty prop = BackpackProperty.get(player); @@ -42,24 +45,8 @@ public static reasons equipWearable(ItemStack backpack, EntityPlayer player) public static void unequipWearable(EntityPlayer player) { - BackpackProperty prop = BackpackProperty.get(player); - if(prop.getWearable() != null) - { - player.openContainer.onContainerClosed(player); - ItemStack gimme = prop.getWearable().copy(); - BackpackProperty.get(player).executeWearableUnequipProtocol(); - prop.setWearable(null); - if(!player.inventory.addItemStackToInventory(gimme)) - { - player.dropPlayerItemWithRandomChoice(gimme,false); - } - WearableEvent event = new WearableEvent.UnequipWearableEvent(player, gimme); - MinecraftForge.EVENT_BUS.post(event); - BackpackProperty.sync(player); - }else - { - player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.impossibru")); - } + unequipTask = new DelayUnequipTask(player); + timer.schedule(unequipTask, 200); } public static NBTTagCompound getBackpackData(ItemStack backpack) @@ -77,4 +64,33 @@ public static void setBackpackData(ItemStack stack, NBTTagCompound compound) stack.stackTagCompound.setTag("backpackData",compound); } -} + private static class DelayUnequipTask extends TimerTask { + private EntityPlayer player; + + DelayUnequipTask(EntityPlayer player) { + this.player = player; + } + + @Override + public void run() { + BackpackProperty prop = BackpackProperty.get(player); + if(prop.getWearable() != null) + { + player.openContainer.onContainerClosed(player); + ItemStack gimme = prop.getWearable().copy(); + BackpackProperty.get(player).executeWearableUnequipProtocol(); + prop.setWearable(null); + if(!player.inventory.addItemStackToInventory(gimme)) + { + player.dropPlayerItemWithRandomChoice(gimme,false); + } + WearableEvent event = new WearableEvent.UnequipWearableEvent(player, gimme); + MinecraftForge.EVENT_BUS.post(event); + BackpackProperty.sync(player); + }else + { + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.impossibru")); + } + } + } +} \ No newline at end of file From eee0f1f7bbe8edd6f21c892770bc2f49055ed945 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 15 Nov 2016 09:58:32 +0700 Subject: [PATCH 280/462] Fix textures location for CoalJetpack and Pants --- .../textures}/items/CoalJetpack.png | Bin .../textures}/models/CoalJetpack.png | Bin .../textures}/models/adventurepants_texture.png | Bin 3 files changed, 0 insertions(+), 0 deletions(-) rename src/main/resources/{ => assets/adventurebackpack/textures}/items/CoalJetpack.png (100%) rename src/main/resources/{ => assets/adventurebackpack/textures}/models/CoalJetpack.png (100%) rename src/main/resources/{ => assets/adventurebackpack/textures}/models/adventurepants_texture.png (100%) diff --git a/src/main/resources/items/CoalJetpack.png b/src/main/resources/assets/adventurebackpack/textures/items/CoalJetpack.png similarity index 100% rename from src/main/resources/items/CoalJetpack.png rename to src/main/resources/assets/adventurebackpack/textures/items/CoalJetpack.png diff --git a/src/main/resources/models/CoalJetpack.png b/src/main/resources/assets/adventurebackpack/textures/models/CoalJetpack.png similarity index 100% rename from src/main/resources/models/CoalJetpack.png rename to src/main/resources/assets/adventurebackpack/textures/models/CoalJetpack.png diff --git a/src/main/resources/models/adventurepants_texture.png b/src/main/resources/assets/adventurebackpack/textures/models/adventurepants_texture.png similarity index 100% rename from src/main/resources/models/adventurepants_texture.png rename to src/main/resources/assets/adventurebackpack/textures/models/adventurepants_texture.png From 18f5a145a6674012d75d05f3294ac667281d9853 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 15 Nov 2016 10:14:38 +0700 Subject: [PATCH 281/462] Fix CoalJetPack Recipe switcher --- .../java/com/darkona/adventurebackpack/init/ModRecipes.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java index b47a1faa..79596e7e 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java @@ -54,9 +54,9 @@ public static void init() ); } //CoalJetpack - if(ConfigHandler.CoalJetPackRecipe); + if(ConfigHandler.CoalJetPackRecipe) { - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.CoalJetpack), + GameRegistry.addRecipe(new ItemStack(ModItems.CoalJetpack), "SWT", "GIG", "FWS", @@ -66,7 +66,7 @@ public static void init() 'S', Blocks.stone, 'F', Blocks.furnace, 'T', new ItemStack(ModItems.component, 1, 2) - )); + ); } //change to make it not support BuildCraft there are people out there who dont like that mod From a2b37941e0fa6b86203b8413d932af292b36bc9b Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 16 Nov 2016 09:59:17 +0700 Subject: [PATCH 282/462] PistonBoots sepHeight --- .../handlers/PlayerEventHandler.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index d7fbfb65..8847db42 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -131,6 +131,29 @@ public void onPlayerJump(LivingEvent.LivingJumpEvent event) } } + + boolean pistonBootsStepHeight=false; + + @SubscribeEvent + public void pistonBootsUnequipped(LivingEvent.LivingUpdateEvent event) + { + if (event.entityLiving instanceof EntityPlayer) + { + EntityPlayer player = (EntityPlayer)event.entityLiving; + if (Wearing.isWearingBoots(player)) + { + if (!pistonBootsStepHeight) + { + pistonBootsStepHeight = true; + } + } else if (pistonBootsStepHeight) + { + player.stepHeight = 0.5F; + pistonBootsStepHeight=false; + } + } + } + /** * Used by the Piston boots to lessen the fall damage. It's hacky, but I don't care. * From 1221da04494484f1ead35cf12b6008f41b6cd889 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 16 Nov 2016 19:08:03 +0700 Subject: [PATCH 283/462] Check for valid (whitelisted) fluid container prevent crashes, dupes and wierdness when shift-click some not valid fluid containers --- .../darkona/adventurebackpack/inventory/ContainerBackpack.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 5af4671e..6f47c16a 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -316,7 +316,7 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) return null; } } - } else if (SlotFluid.valid(stack)) + } else if (SlotFluid.valid(stack) && SlotFluid.isValidTool(stack)) { if (!mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false)) { From 75f80b64b8194bd14f3ddf2d8e48c4ea505a32db Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 16 Nov 2016 19:14:11 +0700 Subject: [PATCH 284/462] Same for JetPack --- .../darkona/adventurebackpack/inventory/ContainerJetpack.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java index 5e51ca7b..81905478 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java @@ -133,7 +133,7 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) } if (i < 36) { - if (SlotFluid.valid(stack)) + if (SlotFluid.valid(stack) && SlotFluid.isValidTool(stack)) { int JETPACK_INV_START = PLAYER_INV_END + 1; if (!mergeItemStack(stack, JETPACK_INV_START, JETPACK_INV_START + 1, false)) From 7c756bedb6f31445a5ffd4a205e72d0dad0d0334 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 16 Nov 2016 19:17:18 +0700 Subject: [PATCH 285/462] And for Copter --- .../darkona/adventurebackpack/inventory/ContainerCopter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java index 74560074..ec055ab7 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java @@ -124,7 +124,7 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) } if (i < 36) { - if (SlotFluid.valid(stack)) + if (SlotFluid.valid(stack) && SlotFluid.isValidTool(stack)) { int COPTER_INV_START = PLAYER_INV_END + 1; if (!mergeItemStack(stack, COPTER_INV_START, COPTER_INV_START + 1, false)) From c52853bca6f582a443ba8b19629c3041950bcf2e Mon Sep 17 00:00:00 2001 From: runescapejon Date: Wed, 16 Nov 2016 11:16:26 -0500 Subject: [PATCH 286/462] added Build, so others can compile it easier --- build.bat | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 build.bat diff --git a/build.bat b/build.bat new file mode 100644 index 00000000..2f3b5f4d --- /dev/null +++ b/build.bat @@ -0,0 +1,3 @@ +@echo off +call gradlew build +pause \ No newline at end of file From b6bb460176a130321b97777d8a11a0dd1ee24062 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Wed, 16 Nov 2016 11:16:52 -0500 Subject: [PATCH 287/462] linux build command --- build.sh | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 build.sh diff --git a/build.sh b/build.sh new file mode 100644 index 00000000..249c540b --- /dev/null +++ b/build.sh @@ -0,0 +1,3 @@ +#!/bin/sh +./gradlew clean build +read -p "Press any key to continue..." \ No newline at end of file From 607f8c849ba074ba1f309f9b12366ac7834305dd Mon Sep 17 00:00:00 2001 From: runescapejon Date: Wed, 16 Nov 2016 11:18:53 -0500 Subject: [PATCH 288/462] information to where the jar --- build.gradle | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/build.gradle b/build.gradle index d6d4a64a..832c628d 100644 --- a/build.gradle +++ b/build.gradle @@ -1,3 +1,10 @@ +println """ +******************************************* + You are building AdventureBackpack2 Mod! + + Output files will be in [project]/build/libs +******************************************* +""" buildscript { repositories { mavenCentral() From 87c37bfb1e2164b89fc2a188af156373974f9539 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 17 Nov 2016 11:27:25 +0700 Subject: [PATCH 289/462] CoalJetPack accept only solid fuel also as temporary solution for fuel slot bucket dupe --- .../inventory/ContainerJetpack.java | 2 +- .../adventurebackpack/inventory/SlotFuel.java | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java index 81905478..61b7bbe9 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java @@ -141,7 +141,7 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) } } - else + else if (inventory.isFuel(stack) && !SlotFluid.valid(stack)) { int JETPACK_FUEL_START = PLAYER_INV_END + 3; if (inventory.isFuel(stack) && !mergeItemStack(stack, JETPACK_FUEL_START, JETPACK_FUEL_START + 1, false)) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java index 622d41d6..9b9d5881 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java @@ -1,19 +1,21 @@ package com.darkona.adventurebackpack.inventory; import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntityFurnace; /** * Created on 17/01/2015 * * @author Darkona */ -public class SlotFuel extends SlotAdventureBackpack -{ - public SlotFuel(IInventory p_i1824_1_, int p_i1824_2_, int p_i1824_3_, int p_i1824_4_) - { - super(p_i1824_1_, p_i1824_2_, p_i1824_3_, p_i1824_4_); +public class SlotFuel extends SlotAdventureBackpack { + public SlotFuel(IInventory inventory, int id, int x, int y) { + super(inventory, id, x, y); } - - -} + @Override + public boolean isItemValid(ItemStack stack) { + return (stack != null) && TileEntityFurnace.isItemFuel(stack) && !SlotFluid.valid(stack); //fuel slot accept only solid fuel + } +} \ No newline at end of file From ff0453ff74d05d2912bc409f8fafb983a7b6a134 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 17 Nov 2016 11:35:30 +0700 Subject: [PATCH 290/462] format --- .../adventurebackpack/inventory/SlotFuel.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java index 9b9d5881..50f3c2f2 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java @@ -9,13 +9,16 @@ * * @author Darkona */ -public class SlotFuel extends SlotAdventureBackpack { - public SlotFuel(IInventory inventory, int id, int x, int y) { - super(inventory, id, x, y); +public class SlotFuel extends SlotAdventureBackpack +{ + public SlotFuel(IInventory inventory, int id, int x, int y) + { + super(inventory, id, x, y); } @Override - public boolean isItemValid(ItemStack stack) { - return (stack != null) && TileEntityFurnace.isItemFuel(stack) && !SlotFluid.valid(stack); //fuel slot accept only solid fuel + public boolean isItemValid(ItemStack stack) + { + return (stack != null) && TileEntityFurnace.isItemFuel(stack) && !SlotFluid.valid(stack); //fuel slot accept only solid fuel } -} \ No newline at end of file +} From 3e65ffb7942be65af676704ce12d7c3d159f885b Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 17 Nov 2016 11:36:49 +0700 Subject: [PATCH 291/462] to be sure --- .../darkona/adventurebackpack/handlers/PlayerEventHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 8847db42..2a0ba6db 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -148,7 +148,7 @@ public void pistonBootsUnequipped(LivingEvent.LivingUpdateEvent event) } } else if (pistonBootsStepHeight) { - player.stepHeight = 0.5F; + player.stepHeight = 0.5001F; pistonBootsStepHeight=false; } } From 6d00c34c663206f6ad7657af5750eac2bad08bf0 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 17 Nov 2016 15:21:14 +0700 Subject: [PATCH 292/462] Revert attempt to fix sync due performance issues --- .../adventurebackpack/inventory/ContainerBackpack.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 6f47c16a..440e090c 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -363,11 +363,11 @@ public void detectAndSendChanges() { refresh(); super.detectAndSendChanges(); - if((source == SOURCE_WEARING || source == SOURCE_HOLDING) && player instanceof EntityPlayerMP) + /*if((source == SOURCE_WEARING || source == SOURCE_HOLDING) && player instanceof EntityPlayerMP) { ((EntityPlayerMP) player).sendContainerAndContentsToPlayer(this, inventoryItemStacks); //BackpackProperty.syncToNear(player); - } + }*/ } @Override From 9d01181f48197379fd946cbe135cca25a519603f Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Fri, 18 Nov 2016 23:39:23 +0700 Subject: [PATCH 293/462] No more backpacks in the Backpack Supported: Forestry(+addons), BackpackMod and Jabba --- .../config/ConfigHandler.java | 2 + .../inventory/ContainerBackpack.java | 4 +- .../inventory/SlotBackpack.java | 48 ++++++++++++++++++- 3 files changed, 49 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 8b7c4146..d9347795 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -33,6 +33,7 @@ public class ConfigHandler public static boolean BACKPACK_DEATH_PLACE = true; public static boolean BACKPACK_ABILITIES = true; + public static boolean DONT_GO_DEEPER = true; public static boolean ALLOW_COPTER_SOUND = true; public static boolean ALLOW_JETPACK_SOUNDS = true; @@ -72,6 +73,7 @@ private static void loadConfiguration() HOVERING_TEXT_TANKS = config.getBoolean("HoveringText", config.CATEGORY_GENERAL,false, "Show hovering text on fluid tanks?"); FIX_LEAD = config.getBoolean("FixVanillaLead", config.CATEGORY_GENERAL,true, "Fix the vanilla Lead? (Checks mobs falling on a leash to not die of fall damage if they're not falling so fast)"); BACKPACK_DEATH_PLACE = config.getBoolean("BackpackDeathPlace", config.CATEGORY_GENERAL,true,"Place backpacks as a block when you die?"); + DONT_GO_DEEPER = config.getBoolean("ForbidRecursion", config.CATEGORY_GENERAL,true,"Disallow holding other mods backpacks in Adventure Backpack"); //RECIPES SADDLE_RECIPE = config.getBoolean("SaddleRecipe", config.CATEGORY_GENERAL,true, "Add recipe for saddle?"); Copterpack_Recipe = config.getBoolean("Copterpack_Recipe", config.CATEGORY_GENERAL, true, "Enable/Disable CopterPack recipe"); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 440e090c..071a83b6 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -328,9 +328,7 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) } } } - - - } else if (!(stack.getItem() instanceof ItemAdventureBackpack)) + } else if (SlotBackpack.valid(stack)) { if (!mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false)) { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java index bcf50b24..f9b6a177 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java @@ -1,8 +1,10 @@ package com.darkona.adventurebackpack.inventory; import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; +import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.item.ItemAdventureBackpack; + import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -18,10 +20,53 @@ public SlotBackpack(IInventoryAdventureBackpack inventory, int id, int x, int y) super(inventory, id, x, y); } + public static boolean valid(ItemStack stack) + { + if ((stack != null) && (stack.getItem() instanceof ItemAdventureBackpack || stack.getItem() == Item.getItemFromBlock(ModBlocks.blockBackpack))) return false; + + if (ConfigHandler.DONT_GO_DEEPER) + { + String[] forbiddenItemClasses = + { + // Adventure Backpack 2 + //"com.darkona.adventurebackpack.item.ItemAdventureBackpack", + // Jabba Dolly + "mcp.mobius.betterbarrels.common.items.dolly.ItemBarrelMover", + "mcp.mobius.betterbarrels.common.items.dolly.ItemDiamondMover", + // Forestry Backpacks, includes Railcraft and MagicBees addons + "forestry.storage.items.ItemBackpack", + "forestry.storage.items.ItemBackpackNaturalist", + // Backpack Mod + "de.eydamos.backpack.item.ItemBackpack", + "de.eydamos.backpack.item.ItemWorkbenchBackpack" + }; + + String[] forbiddenItemNames = { + // "backpack", "blahblahblah" + }; + + Item item = stack.getItem(); + String name = item.getUnlocalizedName().toLowerCase(); + + for (String itemClass : forbiddenItemClasses) + { + if (item.getClass().getName() == (itemClass)) return false; + } + + for (String itemName : forbiddenItemNames) + { + @SuppressWarnings("unused") + String a = itemName; + if (name.contains(itemName)) return false; + } + } + return true; + } + @Override public boolean isItemValid(ItemStack stack) { - return (!(stack.getItem() instanceof ItemAdventureBackpack) && !(stack.getItem() == Item.getItemFromBlock(ModBlocks.blockBackpack))); + return ((stack != null) && (valid(stack))); } @Override @@ -30,5 +75,4 @@ public void onPickupFromSlot(EntityPlayer p_82870_1_, ItemStack p_82870_2_) super.onPickupFromSlot(p_82870_1_, p_82870_2_); } - } From 2738cefe75ad47fc26a01043adcc195a8400e3f5 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sat, 19 Nov 2016 00:01:10 +0700 Subject: [PATCH 294/462] Do not draw tool icons when render disabled --- .../darkona/adventurebackpack/client/gui/GuiOverlay.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java index d3b9093e..756e720b 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java @@ -161,8 +161,11 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) GL11.glPushMatrix(); GL11.glTranslatef(xStart[1] + textureWidth + 2, yStart[0], 0); GL11.glScalef(0.5f, 0.5f, 0.5f); - drawItemStack(inv.getStackInSlot(Constants.upperTool), 0, 0); - drawItemStack(inv.getStackInSlot(Constants.lowerTool), 0, 16); + if (ConfigHandler.ENABLE_TOOLS_RENDER) + { + drawItemStack(inv.getStackInSlot(Constants.upperTool), 0, 0); + drawItemStack(inv.getStackInSlot(Constants.lowerTool), 0, 16); + } GL11.glPopMatrix(); RenderHelper.disableStandardItemLighting(); From d72cc969dc84b23929b9fd13804b015c6b0f69f0 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sat, 19 Nov 2016 09:40:58 +0700 Subject: [PATCH 295/462] Edit forbiddenClasses --- .../config/ConfigHandler.java | 2 +- .../handlers/KeybindHandler.java | 31 ++++++++++++------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index d9347795..63710b36 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -73,7 +73,7 @@ private static void loadConfiguration() HOVERING_TEXT_TANKS = config.getBoolean("HoveringText", config.CATEGORY_GENERAL,false, "Show hovering text on fluid tanks?"); FIX_LEAD = config.getBoolean("FixVanillaLead", config.CATEGORY_GENERAL,true, "Fix the vanilla Lead? (Checks mobs falling on a leash to not die of fall damage if they're not falling so fast)"); BACKPACK_DEATH_PLACE = config.getBoolean("BackpackDeathPlace", config.CATEGORY_GENERAL,true,"Place backpacks as a block when you die?"); - DONT_GO_DEEPER = config.getBoolean("ForbidRecursion", config.CATEGORY_GENERAL,true,"Disallow holding other mods backpacks in Adventure Backpack"); + //DONT_GO_DEEPER = config.getBoolean("ForbidRecursion", config.CATEGORY_GENERAL,true,"Disallow holding other mods backpacks in Adventure Backpack"); //RECIPES SADDLE_RECIPE = config.getBoolean("SaddleRecipe", config.CATEGORY_GENERAL,true, "Add recipe for saddle?"); Copterpack_Recipe = config.getBoolean("Copterpack_Recipe", config.CATEGORY_GENERAL, true, "Enable/Disable CopterPack recipe"); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java index be15a885..dabe877d 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java @@ -4,6 +4,7 @@ import com.darkona.adventurebackpack.config.Keybindings; import com.darkona.adventurebackpack.entity.EntityFriendlySpider; import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.item.ItemAdventureBackpack; import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.network.*; import com.darkona.adventurebackpack.reference.Key; @@ -50,18 +51,24 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) { if (mc.inGameHasFocus) { - ModNetwork.net.sendToServer(new SyncPropertiesPacket.Message()); - if (Wearing.isWearingBackpack(player)) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_KEYBIND)); - } - if (Wearing.isWearingCopter(player)) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.COPTER_GUI, GUIPacket.FROM_KEYBIND)); - } - if (Wearing.isWearingSteam(player)) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.JETPACK_GUI, GUIPacket.FROM_KEYBIND)); + if (player.isSneaking() && (player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemAdventureBackpack)) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); + } else + { + ModNetwork.net.sendToServer(new SyncPropertiesPacket.Message()); + if (Wearing.isWearingBackpack(player)) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_KEYBIND)); + } + if (Wearing.isWearingCopter(player)) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.COPTER_GUI, GUIPacket.FROM_KEYBIND)); + } + if (Wearing.isWearingSteam(player)) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.JETPACK_GUI, GUIPacket.FROM_KEYBIND)); + } } } } From d145f5b92c4c1ffa81737d1ac24728ecabb39388 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sat, 19 Nov 2016 09:43:58 +0700 Subject: [PATCH 296/462] Shift+BackpackInventory open holding backpack PistonBoots nerf --- .../inventory/SlotBackpack.java | 45 ++++++++++--------- .../item/ItemPistonBoots.java | 5 +-- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java index f9b6a177..abb47797 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java @@ -14,6 +14,27 @@ */ public class SlotBackpack extends SlotAdventureBackpack { + + private static String[] forbiddenItemClasses = + { + // Adventure Backpack 2 + //"com.darkona.adventurebackpack.item.ItemAdventureBackpack", + // Jabba Dolly + "mcp.mobius.betterbarrels.common.items.dolly.ItemBarrelMover", + "mcp.mobius.betterbarrels.common.items.dolly.ItemDiamondMover", + // Forestry Backpacks, includes Railcraft and MagicBees addons + "forestry.storage.items.ItemBackpack", + "forestry.storage.items.ItemBackpackNaturalist", + // Backpack Mod + "de.eydamos.backpack.item.ItemBackpack", + "de.eydamos.backpack.item.ItemWorkbenchBackpack" + }; + + /*private static String[] forbiddenItemNames = + { + // "backpack", "blahblahblah" + };*/ + public SlotBackpack(IInventoryAdventureBackpack inventory, int id, int x, int y) { @@ -26,39 +47,21 @@ public static boolean valid(ItemStack stack) if (ConfigHandler.DONT_GO_DEEPER) { - String[] forbiddenItemClasses = - { - // Adventure Backpack 2 - //"com.darkona.adventurebackpack.item.ItemAdventureBackpack", - // Jabba Dolly - "mcp.mobius.betterbarrels.common.items.dolly.ItemBarrelMover", - "mcp.mobius.betterbarrels.common.items.dolly.ItemDiamondMover", - // Forestry Backpacks, includes Railcraft and MagicBees addons - "forestry.storage.items.ItemBackpack", - "forestry.storage.items.ItemBackpackNaturalist", - // Backpack Mod - "de.eydamos.backpack.item.ItemBackpack", - "de.eydamos.backpack.item.ItemWorkbenchBackpack" - }; - - String[] forbiddenItemNames = { - // "backpack", "blahblahblah" - }; - Item item = stack.getItem(); - String name = item.getUnlocalizedName().toLowerCase(); for (String itemClass : forbiddenItemClasses) { if (item.getClass().getName() == (itemClass)) return false; } + /*String name = item.getUnlocalizedName().toLowerCase(); + for (String itemName : forbiddenItemNames) { @SuppressWarnings("unused") String a = itemName; if (name.contains(itemName)) return false; - } + }*/ } return true; } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java b/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java index ce46c9ba..a92b6e72 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java @@ -21,13 +21,10 @@ public ItemPistonBoots() public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) { + player.stepHeight = 1.001F; if (player.isSprinting()) { - player.stepHeight = 1.001F; player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 1)); - } else - { - player.stepHeight = 2.5001F; } } From a4281735db76f74fa3a7fd1dede6c2ced2a0b8cd Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sat, 19 Nov 2016 10:12:41 +0700 Subject: [PATCH 297/462] Keybind logic --- .../com/darkona/adventurebackpack/handlers/KeybindHandler.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java index dabe877d..c1a43130 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java @@ -60,6 +60,9 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) if (Wearing.isWearingBackpack(player)) { ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_KEYBIND)); + } else if ((player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemAdventureBackpack)) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); } if (Wearing.isWearingCopter(player)) { From cc5cabee526c83bf5a4f3eed515c4d6eefb42357 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sat, 19 Nov 2016 10:16:25 +0700 Subject: [PATCH 298/462] whitespace... --- .../darkona/adventurebackpack/handlers/KeybindHandler.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java index c1a43130..04672a5a 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java @@ -53,7 +53,7 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) { if (player.isSneaking() && (player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemAdventureBackpack)) { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); } else { ModNetwork.net.sendToServer(new SyncPropertiesPacket.Message()); @@ -71,7 +71,7 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) if (Wearing.isWearingSteam(player)) { ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.JETPACK_GUI, GUIPacket.FROM_KEYBIND)); - } + } } } } @@ -115,4 +115,4 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) } } } -} \ No newline at end of file +} From c36773198bc0bd97917d3464f8db4f0d6bb0a92b Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sun, 20 Nov 2016 12:09:34 +0700 Subject: [PATCH 299/462] Simplified check for forbidden items --- .../config/ConfigHandler.java | 5 +-- .../inventory/SlotBackpack.java | 37 +++++++------------ 2 files changed, 15 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 63710b36..0397a15c 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -14,7 +14,6 @@ public class ConfigHandler { - public static Configuration config; public static boolean IS_BUILDCRAFT = false; @@ -33,8 +32,7 @@ public class ConfigHandler public static boolean BACKPACK_DEATH_PLACE = true; public static boolean BACKPACK_ABILITIES = true; - public static boolean DONT_GO_DEEPER = true; - + public static boolean ALLOW_COPTER_SOUND = true; public static boolean ALLOW_JETPACK_SOUNDS = true; @@ -73,7 +71,6 @@ private static void loadConfiguration() HOVERING_TEXT_TANKS = config.getBoolean("HoveringText", config.CATEGORY_GENERAL,false, "Show hovering text on fluid tanks?"); FIX_LEAD = config.getBoolean("FixVanillaLead", config.CATEGORY_GENERAL,true, "Fix the vanilla Lead? (Checks mobs falling on a leash to not die of fall damage if they're not falling so fast)"); BACKPACK_DEATH_PLACE = config.getBoolean("BackpackDeathPlace", config.CATEGORY_GENERAL,true,"Place backpacks as a block when you die?"); - //DONT_GO_DEEPER = config.getBoolean("ForbidRecursion", config.CATEGORY_GENERAL,true,"Disallow holding other mods backpacks in Adventure Backpack"); //RECIPES SADDLE_RECIPE = config.getBoolean("SaddleRecipe", config.CATEGORY_GENERAL,true, "Add recipe for saddle?"); Copterpack_Recipe = config.getBoolean("Copterpack_Recipe", config.CATEGORY_GENERAL, true, "Enable/Disable CopterPack recipe"); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java index abb47797..732137c1 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java @@ -14,11 +14,11 @@ */ public class SlotBackpack extends SlotAdventureBackpack { - + private static String[] forbiddenItemClasses = { // Adventure Backpack 2 - //"com.darkona.adventurebackpack.item.ItemAdventureBackpack", + "com.darkona.adventurebackpack.item.ItemAdventureBackpack", // Jabba Dolly "mcp.mobius.betterbarrels.common.items.dolly.ItemBarrelMover", "mcp.mobius.betterbarrels.common.items.dolly.ItemDiamondMover", @@ -35,7 +35,6 @@ public class SlotBackpack extends SlotAdventureBackpack // "backpack", "blahblahblah" };*/ - public SlotBackpack(IInventoryAdventureBackpack inventory, int id, int x, int y) { super(inventory, id, x, y); @@ -43,26 +42,18 @@ public SlotBackpack(IInventoryAdventureBackpack inventory, int id, int x, int y) public static boolean valid(ItemStack stack) { - if ((stack != null) && (stack.getItem() instanceof ItemAdventureBackpack || stack.getItem() == Item.getItemFromBlock(ModBlocks.blockBackpack))) return false; - - if (ConfigHandler.DONT_GO_DEEPER) - { - Item item = stack.getItem(); - - for (String itemClass : forbiddenItemClasses) - { - if (item.getClass().getName() == (itemClass)) return false; - } - - /*String name = item.getUnlocalizedName().toLowerCase(); - - for (String itemName : forbiddenItemNames) - { - @SuppressWarnings("unused") - String a = itemName; - if (name.contains(itemName)) return false; - }*/ - } + for (String itemClass : forbiddenItemClasses) + { + if (stack.getItem().getClass().getName().equals(itemClass)) return false; + } + + //if (ConfigHandler.YOU_SHALL_NOT_PASS) + { + /*for (String itemName : forbiddenItemNames) + { + if (stack.getItem().getUnlocalizedName().toLowerCase().contains(itemName)) return false; + }*/ + } return true; } From 690a3f350c663b91ddd5b38e7f7136946df2543f Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sun, 20 Nov 2016 12:10:59 +0700 Subject: [PATCH 300/462] Fix inventory sync I want to believe xD --- .../adventurebackpack/inventory/ContainerBackpack.java | 5 ----- .../adventurebackpack/inventory/ContainerJetpack.java | 5 ----- .../inventory/SlotAdventureBackpack.java | 10 ---------- 3 files changed, 20 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 071a83b6..a84cd19b 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -361,11 +361,6 @@ public void detectAndSendChanges() { refresh(); super.detectAndSendChanges(); - /*if((source == SOURCE_WEARING || source == SOURCE_HOLDING) && player instanceof EntityPlayerMP) - { - ((EntityPlayerMP) player).sendContainerAndContentsToPlayer(this, inventoryItemStacks); - //BackpackProperty.syncToNear(player); - }*/ } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java index 61b7bbe9..3b2edf80 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java @@ -82,11 +82,6 @@ public void detectAndSendChanges() { refresh(); super.detectAndSendChanges(); - if (wearing && player instanceof EntityPlayerMP) - { - ((EntityPlayerMP) player).sendContainerAndContentsToPlayer(this, inventoryItemStacks); - BackpackProperty.syncToNear(player); - } }else{ super.detectAndSendChanges(); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotAdventureBackpack.java index dfc48f5d..9d9492e2 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotAdventureBackpack.java @@ -15,14 +15,4 @@ public SlotAdventureBackpack(IInventory p_i1824_1_, int p_i1824_2_, int p_i1824_ { super(p_i1824_1_, p_i1824_2_, p_i1824_3_, p_i1824_4_); } - - @Override - public void onSlotChanged() - { - if(Utils.inServer()) - { - if (inventory instanceof IInventoryTanks) - ((IInventoryTanks) this.inventory).dirtyInventory(); - } - } } From 0f5abd76f8a1e8b3edc9624de3b0e7c46ade2613 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sun, 20 Nov 2016 12:58:33 +0700 Subject: [PATCH 301/462] Whitespace test --- .../handlers/KeybindHandler.java | 43 ++++--- .../inventory/SlotBackpack.java | 30 ++--- .../inventory/SlotFluid.java | 121 +++++++++--------- 3 files changed, 101 insertions(+), 93 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java index 04672a5a..8483a5e8 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java @@ -6,9 +6,14 @@ import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.item.ItemAdventureBackpack; import com.darkona.adventurebackpack.item.ItemHose; -import com.darkona.adventurebackpack.network.*; +import com.darkona.adventurebackpack.network.CycleToolPacket; +import com.darkona.adventurebackpack.network.GUIPacket; +import com.darkona.adventurebackpack.network.PlayerActionPacket; +import com.darkona.adventurebackpack.network.SyncPropertiesPacket; +import com.darkona.adventurebackpack.network.WearableModePacket; import com.darkona.adventurebackpack.reference.Key; import com.darkona.adventurebackpack.util.Wearing; + import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.InputEvent; import net.minecraft.client.Minecraft; @@ -35,7 +40,7 @@ private static Key getPressedKeyBinding() { return Key.JUMP; } - return Key.UNKNOWN; + return Key.UNKNOWN; } @SubscribeEvent @@ -51,26 +56,26 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) { if (mc.inGameHasFocus) { - if (player.isSneaking() && (player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemAdventureBackpack)) + if (player.isSneaking() && (player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemAdventureBackpack)) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); + } else + { + ModNetwork.net.sendToServer(new SyncPropertiesPacket.Message()); + if (Wearing.isWearingBackpack(player)) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_KEYBIND)); + } else if ((player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemAdventureBackpack)) { ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); - } else + } + if (Wearing.isWearingCopter(player)) { - ModNetwork.net.sendToServer(new SyncPropertiesPacket.Message()); - if (Wearing.isWearingBackpack(player)) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_KEYBIND)); - } else if ((player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemAdventureBackpack)) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); - } - if (Wearing.isWearingCopter(player)) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.COPTER_GUI, GUIPacket.FROM_KEYBIND)); - } - if (Wearing.isWearingSteam(player)) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.JETPACK_GUI, GUIPacket.FROM_KEYBIND)); + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.COPTER_GUI, GUIPacket.FROM_KEYBIND)); + } + if (Wearing.isWearingSteam(player)) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.JETPACK_GUI, GUIPacket.FROM_KEYBIND)); } } } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java index 732137c1..901834bc 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java @@ -1,12 +1,8 @@ package com.darkona.adventurebackpack.inventory; import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; -import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.init.ModBlocks; -import com.darkona.adventurebackpack.item.ItemAdventureBackpack; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; /** @@ -20,7 +16,7 @@ public class SlotBackpack extends SlotAdventureBackpack // Adventure Backpack 2 "com.darkona.adventurebackpack.item.ItemAdventureBackpack", // Jabba Dolly - "mcp.mobius.betterbarrels.common.items.dolly.ItemBarrelMover", + "mcp.mobius.betterbarrels.common.items.dolly.ItemBarrelMover", "mcp.mobius.betterbarrels.common.items.dolly.ItemDiamondMover", // Forestry Backpacks, includes Railcraft and MagicBees addons "forestry.storage.items.ItemBackpack", @@ -29,8 +25,8 @@ public class SlotBackpack extends SlotAdventureBackpack "de.eydamos.backpack.item.ItemBackpack", "de.eydamos.backpack.item.ItemWorkbenchBackpack" }; - - /*private static String[] forbiddenItemNames = + + /*private static String[] forbiddenItemNames = { // "backpack", "blahblahblah" };*/ @@ -44,23 +40,23 @@ public static boolean valid(ItemStack stack) { for (String itemClass : forbiddenItemClasses) { - if (stack.getItem().getClass().getName().equals(itemClass)) return false; + if (stack.getItem().getClass().getName().equals(itemClass)) return false; } - + //if (ConfigHandler.YOU_SHALL_NOT_PASS) - { - /*for (String itemName : forbiddenItemNames) - { - if (stack.getItem().getUnlocalizedName().toLowerCase().contains(itemName)) return false; - }*/ - } + /*{ + for (String itemName : forbiddenItemNames) + { + if (stack.getItem().getUnlocalizedName().toLowerCase().contains(itemName)) return false; + } + }*/ return true; } - + @Override public boolean isItemValid(ItemStack stack) { - return ((stack != null) && (valid(stack))); + return ((stack != null) && (valid(stack))); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java index 0c58ae9b..d75dfab6 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java @@ -1,5 +1,6 @@ package com.darkona.adventurebackpack.inventory; import com.darkona.adventurebackpack.util.Utils; + import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -7,71 +8,77 @@ /** * Created on 12/10/2014 - * + * * @author Darkona - * + * * */ -public class SlotFluid extends SlotAdventureBackpack { - - public SlotFluid(IInventory inventory, int id, int x, int y) { - super(inventory, id, x, y); - } +public class SlotFluid extends SlotAdventureBackpack +{ + public SlotFluid(IInventory inventory, int id, int x, int y) { + super(inventory, id, x, y); + } + + public static boolean valid(ItemStack stack) + { + return ((stack != null) && (FluidContainerRegistry.isContainer(stack))); + } + + @Override + public boolean isItemValid(ItemStack stack) + { + return ((stack != null) && (FluidContainerRegistry.isContainer(stack)) && isValidTool(stack)); + } + + public static boolean isValidTool(ItemStack stack) + { + boolean valid = false; + String[] validToolNames = { "bucket" }; + + String[] invalidToolNames = { "cell" }; + + if (stack != null && stack.getMaxStackSize() <= 16) + { + Item item = stack.getItem(); + String name = item.getUnlocalizedName().toLowerCase(); + + for (String toolName : validToolNames) + { + @SuppressWarnings("unused") + String a = toolName; + if (name.contains(toolName)) + return true; + } + + for (String toolName : invalidToolNames) + { + @SuppressWarnings("unused") + String a = toolName; + if (name.contains(toolName)) + return false; + } - public static boolean valid(ItemStack stack) { - return ((stack != null) && (FluidContainerRegistry.isContainer(stack))); } - @Override - public boolean isItemValid(ItemStack stack) { - return ((stack != null) && (FluidContainerRegistry.isContainer(stack)) && isValidTool(stack)); - } - - public static boolean isValidTool(ItemStack stack) { - - boolean valid = false; - - String[] validToolNames = { "bucket" }; + return valid; - String[] invalidToolNames = { "cell" }; - - if (stack != null && stack.getMaxStackSize() <= 16) { - Item item = stack.getItem(); - String name = item.getUnlocalizedName().toLowerCase(); - - for (String toolName : validToolNames) { - @SuppressWarnings("unused") - String a = toolName; - if (name.contains(toolName)) - return true; - } - - for (String toolName : invalidToolNames) { - @SuppressWarnings("unused") - String a = toolName; - if (name.contains(toolName)) - return false; - } - - } - - return valid; + } + @Override + public void onSlotChanged() + { + if (Utils.inServer()) + { + if (inventory instanceof IInventoryTanks) + { + ((IInventoryTanks) this.inventory).updateTankSlots(); + } } + super.onSlotChanged(); + } - @Override - public void onSlotChanged() { - - if (Utils.inServer()) { - if (inventory instanceof IInventoryTanks) { - ((IInventoryTanks) this.inventory).updateTankSlots(); - } - } - super.onSlotChanged(); - } - - @Override - public void putStack(ItemStack par1ItemStack) { - super.putStack(par1ItemStack); - } + @Override + public void putStack(ItemStack par1ItemStack) { + super.putStack(par1ItemStack); + } } From eef214071efdd2ca3203d0c1d5edbc64067aea4c Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sun, 20 Nov 2016 20:51:50 +0700 Subject: [PATCH 302/462] Adventure's set repairable Defined MaxDamage, changed recipes a bit Code clead up and unification --- .../adventurebackpack/init/ModItems.java | 43 ++++++++++++------ .../adventurebackpack/init/ModRecipes.java | 40 ++++++++-------- .../inventory/SlotFluid.java | 11 +++-- .../adventurebackpack/item/ArmorAB.java | 1 + .../item/ItemAdventureHat.java | 11 ++++- .../item/ItemAdventureJacket.java | 28 ++---------- .../item/ItemAdventurePantaloon.java | 37 ++------------- .../item/ItemPistonBoots.java | 10 +++- .../assets/adventurebackpack/lang/en_US.lang | 4 +- .../textures/items/adventurePants.png | Bin 0 -> 238 bytes 10 files changed, 87 insertions(+), 98 deletions(-) create mode 100644 src/main/resources/assets/adventurebackpack/textures/items/adventurePants.png diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModItems.java b/src/main/java/com/darkona/adventurebackpack/init/ModItems.java index 504c8d4a..b8a7a5e1 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModItems.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModItems.java @@ -1,6 +1,19 @@ package com.darkona.adventurebackpack.init; -import com.darkona.adventurebackpack.item.*; +import com.darkona.adventurebackpack.item.ArmorAB; +import com.darkona.adventurebackpack.item.ItemAdventureBackpack; +import com.darkona.adventurebackpack.item.ItemAdventureHat; +import com.darkona.adventurebackpack.item.ItemAdventureJacket; +import com.darkona.adventurebackpack.item.ItemAdventurePantaloon; +import com.darkona.adventurebackpack.item.ItemCoalJetpack; +import com.darkona.adventurebackpack.item.ItemComponent; +import com.darkona.adventurebackpack.item.ItemCopterPack; +import com.darkona.adventurebackpack.item.ItemCrossbow; +import com.darkona.adventurebackpack.item.ItemHose; +import com.darkona.adventurebackpack.item.ItemJuiceBottle; +import com.darkona.adventurebackpack.item.ItemMachete; +import com.darkona.adventurebackpack.item.ItemPistonBoots; + import cpw.mods.fml.common.registry.GameRegistry; /** @@ -12,32 +25,32 @@ public class ModItems { public static final ItemMachete machete = new ItemMachete(); - public static final ItemComponent component = new ItemComponent(); - public static final ItemHose hose = new ItemHose(); + public static final ItemCrossbow cwxbow = new ItemCrossbow(); public static final ArmorAB adventureHat = new ItemAdventureHat(); - public static final ArmorAB pistonBoots = new ItemPistonBoots(); public static final ArmorAB adventureSuit = new ItemAdventureJacket(); - public static final ItemAdventureBackpack adventureBackpack = new ItemAdventureBackpack(); - public static final ItemJuiceBottle melonJuiceBottle = new ItemJuiceBottle(); + public static final ArmorAB adventurePants = new ItemAdventurePantaloon(); + public static final ArmorAB pistonBoots = new ItemPistonBoots(); public static final ItemCopterPack copterPack = new ItemCopterPack(); - public static final ItemCrossbow cwxbow = new ItemCrossbow(); public static final ItemCoalJetpack CoalJetpack = new ItemCoalJetpack(); - public static final ItemAdventurePantaloon Pantaloon = new ItemAdventurePantaloon(); + public static final ItemAdventureBackpack adventureBackpack = new ItemAdventureBackpack(); + public static final ItemComponent component = new ItemComponent(); + public static final ItemHose hose = new ItemHose(); + public static final ItemJuiceBottle melonJuiceBottle = new ItemJuiceBottle(); + public static void init() { - GameRegistry.registerItem(component, "backpackComponent"); GameRegistry.registerItem(machete, "machete"); + GameRegistry.registerItem(cwxbow, "clockworkCrossbow"); GameRegistry.registerItem(adventureHat, "adventureHat"); - GameRegistry.registerItem(pistonBoots, "pistonBoots"); GameRegistry.registerItem(adventureSuit, "adventureSuit"); + GameRegistry.registerItem(adventurePants, "adventurePants"); + GameRegistry.registerItem(pistonBoots, "pistonBoots"); + GameRegistry.registerItem(copterPack, "copterPack"); + GameRegistry.registerItem(CoalJetpack, "CoalJetpack"); GameRegistry.registerItem(adventureBackpack, "adventureBackpack"); + GameRegistry.registerItem(component, "backpackComponent"); GameRegistry.registerItem(hose, "backpackHose"); GameRegistry.registerItem(melonJuiceBottle, "melonJuiceBottle"); - GameRegistry.registerItem(cwxbow, "clockworkCrossbow"); - GameRegistry.registerItem(CoalJetpack, "CoalJetpack"); - GameRegistry.registerItem(copterPack, "copterPack"); - GameRegistry.registerItem(Pantaloon, "Pantaloon"); - } } diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java index 79596e7e..549a5ed5 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java @@ -1,17 +1,18 @@ package com.darkona.adventurebackpack.init; +import java.lang.reflect.Field; + import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.init.recipes.BackpackRecipesList; import com.darkona.adventurebackpack.reference.BackpackNames; import com.darkona.adventurebackpack.util.LogHelper; + import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.ShapedOreRecipe; -import java.lang.reflect.Field; - /** * Created on 20/10/2014 * @@ -38,8 +39,8 @@ public static void init() } //Copter Pack - if(ConfigHandler.Copterpack_Recipe) - { + if(ConfigHandler.Copterpack_Recipe) + { GameRegistry.addRecipe(new ItemStack(ModItems.copterPack), "WBW", "TEI", @@ -68,8 +69,8 @@ public static void init() 'T', new ItemStack(ModItems.component, 1, 2) ); } - - //change to make it not support BuildCraft there are people out there who dont like that mod + + //change to make it not support BuildCraft there are people out there who dont like that mod //CampFire GameRegistry.addRecipe(new ShapedOreRecipe(ModBlocks.blockCampFire, " S ", @@ -79,7 +80,7 @@ public static void init() 'x', Items.coal, 'c', "cobblestone" )); - //Inflatable Boat + //Inflatable Boat GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 7), " ", "w w", @@ -103,8 +104,7 @@ public static void init() 'G', Blocks.glass, 'I', Items.iron_ingot ); - - + //Inflatable Boat (Motorized) GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 8), " B ", @@ -138,7 +138,7 @@ public static void init() 'S', Items.stick ); - //Mechete + //Machete GameRegistry.addRecipe(new ItemStack(ModItems.machete), " I ", " I ", @@ -146,7 +146,7 @@ public static void init() 'I', Items.iron_ingot, 'H', new ItemStack(ModItems.component, 1, 4) ); - //Adventure Hats + //Adventure Hat GameRegistry.addRecipe(new ItemStack(ModItems.adventureHat), " ", "nC ", @@ -157,19 +157,21 @@ public static void init() ); //Adventure Suit GameRegistry.addRecipe(new ItemStack(ModItems.adventureSuit), - " V ", - " W ", + "LWL", + "LVL", " ", 'V', Items.leather_chestplate, - 'W', Blocks.wool + 'W', Blocks.wool, + 'L', Items.leather ); //Adventure Pants - GameRegistry.addRecipe(new ItemStack(ModItems.Pantaloon), - " V ", - " W ", + GameRegistry.addRecipe(new ItemStack(ModItems.adventurePants), + "LVL", + "LWL", " ", 'V', Items.leather_leggings, - 'W', Blocks.wool + 'W', Blocks.wool, + 'L', Items.leather ); //Piston Boots GameRegistry.addRecipe(new ItemStack(ModItems.pistonBoots), @@ -270,7 +272,7 @@ public static void conditionalInit() 'I', Items.iron_ingot, 'F', Blocks.fence ); - + //Clockwork Crossbow GameRegistry.addRecipe(new ItemStack(ModItems.cwxbow), " ", diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java index d75dfab6..deb1653d 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java @@ -21,7 +21,12 @@ public SlotFluid(IInventory inventory, int id, int x, int y) { public static boolean valid(ItemStack stack) { - return ((stack != null) && (FluidContainerRegistry.isContainer(stack))); + return ((stack != null) && FluidContainerRegistry.isContainer(stack)); + } + + public static boolean isEmpty(ItemStack stack) + { + return ((stack != null) && FluidContainerRegistry.isEmptyContainer(stack)); } @Override @@ -57,11 +62,8 @@ public static boolean isValidTool(ItemStack stack) if (name.contains(toolName)) return false; } - } - return valid; - } @Override @@ -81,4 +83,5 @@ public void onSlotChanged() public void putStack(ItemStack par1ItemStack) { super.putStack(par1ItemStack); } + } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ArmorAB.java b/src/main/java/com/darkona/adventurebackpack/item/ArmorAB.java index 7e29bb0f..0c564b7b 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ArmorAB.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ArmorAB.java @@ -4,6 +4,7 @@ import com.darkona.adventurebackpack.init.ModMaterials; import com.darkona.adventurebackpack.reference.ModInfo; import com.darkona.adventurebackpack.util.Resources; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java index 9e89dbe9..eb77f555 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java @@ -2,11 +2,13 @@ import com.darkona.adventurebackpack.client.models.ModelAdventureHat; import com.darkona.adventurebackpack.util.Resources; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.init.Items; import net.minecraft.item.ItemStack; /** @@ -18,6 +20,7 @@ public class ItemAdventureHat extends ArmorAB public ItemAdventureHat() { super(2, 0); + setMaxDamage(Items.leather_helmet.getMaxDamage() + 45); setUnlocalizedName("adventureHat"); } @@ -28,7 +31,6 @@ public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemSta return new ModelAdventureHat(); } - @SideOnly(Side.CLIENT) @Override public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) @@ -38,5 +40,12 @@ public String getArmorTexture(ItemStack stack, Entity entity, int slot, String t return modelTexture; } + + @Override + public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) + { + return par2ItemStack.isItemEqual(new ItemStack(Items.leather)); + } + } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureJacket.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureJacket.java index a10a9ce8..f84de9cb 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureJacket.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureJacket.java @@ -1,46 +1,26 @@ package com.darkona.adventurebackpack.item; -import com.darkona.adventurebackpack.client.models.ModelFullArmor; -import com.darkona.adventurebackpack.util.Resources; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.model.ModelBiped; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; +import net.minecraft.init.Items; import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; /** * Created on 11/10/2014 * * @author Darkona */ -@SuppressWarnings("unused") public class ItemAdventureJacket extends ArmorAB { public ItemAdventureJacket() { super(1, 1); + setMaxDamage(Items.leather_chestplate.getMaxDamage() + 70); setUnlocalizedName("adventureSuit"); } @Override - public boolean isValidArmor(ItemStack stack, int armorType, Entity entity) + public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) { - return armorType == 1; - } - - @Override - public IIcon getIcon(ItemStack stack, int pass) - { - return itemIcon; - } - - @Override - @SideOnly(Side.CLIENT) - public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) - { - return Resources.modelTextureResourceString("adventureSuit_texture.png"); + return par2ItemStack.isItemEqual(new ItemStack(Items.leather)); } } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventurePantaloon.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventurePantaloon.java index cbee8b4a..9e70f585 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventurePantaloon.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventurePantaloon.java @@ -1,14 +1,7 @@ package com.darkona.adventurebackpack.item; -import com.darkona.adventurebackpack.client.models.ModelFullArmor; -import com.darkona.adventurebackpack.util.Resources; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.model.ModelBiped; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; +import net.minecraft.init.Items; import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; /** * Created on 11/10/2014 @@ -21,33 +14,13 @@ public class ItemAdventurePantaloon extends ArmorAB public ItemAdventurePantaloon() { super(2, 2); - setUnlocalizedName("pants"); + setMaxDamage(Items.leather_leggings.getMaxDamage() + 75); + setUnlocalizedName("adventurePants"); } @Override - public boolean isValidArmor(ItemStack stack, int armorType, Entity entity) + public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) { - return armorType == 2; + return par2ItemStack.isItemEqual(new ItemStack(Items.leather)); } - - @Override - public IIcon getIcon(ItemStack stack, int pass) - { - return itemIcon; - } - - @Override - @SideOnly(Side.CLIENT) - public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) - { - return Resources.modelTextureResourceString("adventurepants_texture.png"); - } - - @Override - @SideOnly(Side.CLIENT) - public ModelBiped getArmorModel(EntityLivingBase entity, ItemStack itemStack, int armorSlot) - { - return new ModelFullArmor(); - } - } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java b/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java index a92b6e72..aad3b200 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java @@ -1,7 +1,8 @@ package com.darkona.adventurebackpack.item; - import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; @@ -16,9 +17,11 @@ public class ItemPistonBoots extends ArmorAB public ItemPistonBoots() { super(2, 3); + setMaxDamage(Items.iron_boots.getMaxDamage() + 55); setUnlocalizedName("pistonBoots"); } + @Override public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) { player.stepHeight = 1.001F; @@ -28,4 +31,9 @@ public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) } } + @Override + public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) + { + return par2ItemStack.isItemEqual(new ItemStack(Blocks.piston)); + } } diff --git a/src/main/resources/assets/adventurebackpack/lang/en_US.lang b/src/main/resources/assets/adventurebackpack/lang/en_US.lang index 267592b2..0b752baa 100644 --- a/src/main/resources/assets/adventurebackpack/lang/en_US.lang +++ b/src/main/resources/assets/adventurebackpack/lang/en_US.lang @@ -33,9 +33,9 @@ item.adventurebackpack:copterPack.name=Copter Pack item.adventurebackpack:CoalJetpack.name=Coal Jetpack ## Armor -item.adventurebackpack:pants.name=Adventurer's Pants -item.adventurebackpack:adventureSuit.name=Adventurer's Suit item.adventurebackpack:adventureHat.name=Adventurer's Fedora +item.adventurebackpack:adventureSuit.name=Adventurer's Suit +item.adventurebackpack:adventurePants.name=Adventurer's Pants item.adventurebackpack:pistonBoots.name=Piston Boots ## Blocks diff --git a/src/main/resources/assets/adventurebackpack/textures/items/adventurePants.png b/src/main/resources/assets/adventurebackpack/textures/items/adventurePants.png new file mode 100644 index 0000000000000000000000000000000000000000..051ac38647652c23676a80c8af6fa2cef9d68c69 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL8%hgh?3y^w370~qEv=}#LT=BJwMkFg)(D3 zQ$0gN_s>q|Kvl7xE{-7<{>c(G2fSim*xT`hw#hb#gt*Uqc;w%*N&ib#BMYRNj1!8Z z6(oXF7(5J()J`(YP@9k>pmv%erFF* Date: Sun, 20 Nov 2016 21:15:52 +0700 Subject: [PATCH 303/462] Texure naming --- .../client/render/RendererItemAdventureHat.java | 9 +++++++-- .../adventurebackpack/item/ItemAdventureHat.java | 12 ------------ .../{adventureHat.png => adventureHat_texture.png} | Bin 3 files changed, 7 insertions(+), 14 deletions(-) rename src/main/resources/assets/adventurebackpack/textures/models/{adventureHat.png => adventureHat_texture.png} (100%) diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureHat.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureHat.java index e770243a..86a22715 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureHat.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureHat.java @@ -1,14 +1,16 @@ package com.darkona.adventurebackpack.client.render; +import org.lwjgl.opengl.GL11; + import com.darkona.adventurebackpack.client.models.ModelAdventureHat; import com.darkona.adventurebackpack.util.Resources; + import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.IItemRenderer; -import org.lwjgl.opengl.GL11; /** @@ -26,6 +28,7 @@ public RendererItemAdventureHat() model = ModelAdventureHat.instance; } + @Override public boolean handleRenderType(ItemStack item, IItemRenderer.ItemRenderType type) { switch (type) @@ -44,6 +47,7 @@ public boolean handleRenderType(ItemStack item, IItemRenderer.ItemRenderType typ return false; } + @Override public boolean shouldUseRenderHelper(IItemRenderer.ItemRenderType type, ItemStack item, IItemRenderer.ItemRendererHelper helper) { switch (type) @@ -62,9 +66,10 @@ public boolean shouldUseRenderHelper(IItemRenderer.ItemRenderType type, ItemStac return false; } + @Override public void renderItem(IItemRenderer.ItemRenderType type, ItemStack item, Object... data) { - ResourceLocation modelTexture = Resources.modelTextures("adventureHat"); + ResourceLocation modelTexture = Resources.modelTextures("adventureHat_texture"); Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); switch (type) { diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java index eb77f555..9eee68c4 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java @@ -1,12 +1,10 @@ package com.darkona.adventurebackpack.item; import com.darkona.adventurebackpack.client.models.ModelAdventureHat; -import com.darkona.adventurebackpack.util.Resources; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; -import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -31,16 +29,6 @@ public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemSta return new ModelAdventureHat(); } - @SideOnly(Side.CLIENT) - @Override - public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) - { - String modelTexture; - modelTexture = Resources.modelTextures("adventureHat").toString(); - - return modelTexture; - } - @Override public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) { diff --git a/src/main/resources/assets/adventurebackpack/textures/models/adventureHat.png b/src/main/resources/assets/adventurebackpack/textures/models/adventureHat_texture.png similarity index 100% rename from src/main/resources/assets/adventurebackpack/textures/models/adventureHat.png rename to src/main/resources/assets/adventurebackpack/textures/models/adventureHat_texture.png From aa9b970b18aa940fcf800a4f29001b26158e2370 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sun, 20 Nov 2016 21:21:08 +0700 Subject: [PATCH 304/462] Delete adventureSuit_texture.png --- .../textures/adventureSuit_texture.png | Bin 1810 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/main/resources/assets/adventurebackpack/textures/adventureSuit_texture.png diff --git a/src/main/resources/assets/adventurebackpack/textures/adventureSuit_texture.png b/src/main/resources/assets/adventurebackpack/textures/adventureSuit_texture.png deleted file mode 100644 index 8fafe06217074bf8bdfc336bdf2cd567e7989711..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1810 zcmV+t2krQYP)*b0WD_NUKq3W0K%lTdSt3QsDiVkV8&+fqWW^6) z#{#7Mg8TvbWHP%>TjWyO-V~sV|SYwUmpue(?J9IYz;UK!}O<;5JFXXh;I@U-9a3 z0iQlS$}vIZ6w`4D!2Z0W4H;`dvLxaQgUS9yXE9ae=d%B>8_&K;;ZZE3DQSb8kUL zpOlDU4EX?}b0=5pal z`cGBWjK^czjmcBS+FNE+QdKo@NJyEKGr#%Mbqd=j;G=N2Z=63f&UgDoVKoXUou&&y zlAb{CK`Bu5^Nm)7C^)OJMiWy%_ar^Sj%&-gC#PKdbRRHO2pgl4vT%6sF$(s`geVlw zusN>!BnykPhL{ASdgA&Q3w3Fk&*$u1c;))x#Y;v;HFar$Off7nB_SqZd!wTDkuD_K zkOvhiN@u7FJNzeDqXAhGCK;^h8)1k-%0j8lFb_aZv_}-zM zo=%vIYff#B*<_4|{b|muydJO4q;87){|!zi6lV`05RQ^wW2-^%j$tUQG4I4j*5= zLFF{1GZfBXOi#rAyrU}Y@T@wL{QkVdnEoAAVX?zAtCbE>5XmIb$e@tbxyNpSC$`2M zE-V+mc$UM)v%OKVwNX)*C5MZa5CcjntkKj}iP0Ko4Wr7@bpfpug|m#Rf<@cWx6Q;x z?byHl4?cJ9ODr0HB(c69cv4D;%Iwd(<&g<2lXphrjAB&P{T4brAP&k=s+V|@Oh~f) z4MOW9RblBuJf46M1#1jvwkK?DL<(mqtY+Rcq$HHqGOkMYw4!nr$uO!Mb!o{tQ#gyW zju11TmQsH08!z(CyMN@pUw#|QY>;=t7y~Nftm}=4lBHKz^$l)N)@l-y$!70On)#9l z5K3q0LPC@Qj*@UJ0X{^=bwSg`VV}ZeV*_S0oQ1NmC~XFhkdU0QMl)|bDG8kyd}!_k zG@1(Gm6x97!|R_A7I%n)0<6*a5b;A&);My`l!Zmd#QwYkpme=22r(`Dz$#XWXniEa zNEC%8lTlQKCPaDQxrg?Es<2drr7kUnb8L=B9L{F6KKAY}Mixy&j0tNLb?NXS_Odhm zNpU~gka^~rbG&h(;(I^*3C+QcWrJHq7ZNeCOtie)M+(~;r39^y#MCDfLLh`d+ctDv zOPe%42tH;cMM6rXl!@`)iE*p~b`Kint*0(aLiG5UAxCBlk7PyDC1Mgf-(jtzbeX1$ z_z-Z`P?naQ;(cC1@#NX_yechjw8Pu){EEswcp8Zktk!6)j!3rk5v?^kXJShIksO7C zxyKkq5mRr^tpQ_!!5W*sxpq+~ttOu26gX@;4(6V{*}NZcz1&B2iB_5Y*@8Aie9Roo zT5jylX*$o`3v(Ya4_+r|L#8>r&1Aa63+Jc2_2zdTssMvRa_=6EF|zjUVov;mA#kj>ecsQK4Nv;Y54O$3($%}D`M(zXIjA*wgXR1EnO6L=fdSZ$K5Sy zv?1h7mcIJN^!EYoUWSIVJtg7h?(8!oAm_}#0ri8S5G9lXX8-^I07*qoM6N<$f^<)3 AzW@LL From 6d3370ac4fc181c55565d0e996d2a9128eff40f0 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sun, 20 Nov 2016 16:03:20 -0500 Subject: [PATCH 305/462] renaming --- .../textures/models/adventurepants_texture.png | Bin 927 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/main/resources/assets/adventurebackpack/textures/models/adventurepants_texture.png diff --git a/src/main/resources/assets/adventurebackpack/textures/models/adventurepants_texture.png b/src/main/resources/assets/adventurebackpack/textures/models/adventurepants_texture.png deleted file mode 100644 index 9d6c6bd16d18a54b0535ad9feb2844bc311e4364..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 927 zcmV;Q17Q4#P)q_55!|2U{OY@xGAbyc6T~SY$xVo zJ~o}nY7 zh8QjJb;HH1pr{;m4N8Gc3`Q#wV@QnTr=QQ?N%{9dXAT(jG@pO+m}k!~0EMMt*iT6l zgL4ig;1v-c8WN*;G_ceS*hFKrI=mNmV=FTBhvN}t<@o#M3~K~ND?WHUz#2{IQ@7)XpJ(UR9iL0vbbS~IXIucW{lO%tJS z4ZTzo2(uYRLz-xWT%7d~YML0)N-`@P^#O~6 zyV9;G+i06;Y_f1XF$S9$u4Xez7qE%Oxqz!3Av9 Date: Sun, 20 Nov 2016 16:03:29 -0500 Subject: [PATCH 306/462] renaming --- .../textures/models/adventurePants_texture.png | Bin 0 -> 927 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/adventurebackpack/textures/models/adventurePants_texture.png diff --git a/src/main/resources/assets/adventurebackpack/textures/models/adventurePants_texture.png b/src/main/resources/assets/adventurebackpack/textures/models/adventurePants_texture.png new file mode 100644 index 0000000000000000000000000000000000000000..9d6c6bd16d18a54b0535ad9feb2844bc311e4364 GIT binary patch literal 927 zcmV;Q17Q4#P)q_55!|2U{OY@xGAbyc6T~SY$xVo zJ~o}nY7 zh8QjJb;HH1pr{;m4N8Gc3`Q#wV@QnTr=QQ?N%{9dXAT(jG@pO+m}k!~0EMMt*iT6l zgL4ig;1v-c8WN*;G_ceS*hFKrI=mNmV=FTBhvN}t<@o#M3~K~ND?WHUz#2{IQ@7)XpJ(UR9iL0vbbS~IXIucW{lO%tJS z4ZTzo2(uYRLz-xWT%7d~YML0)N-`@P^#O~6 zyV9;G+i06;Y_f1XF$S9$u4Xez7qE%Oxqz!3Av9 Date: Tue, 22 Nov 2016 18:09:36 +0700 Subject: [PATCH 307/462] New Config implementation, step 1 --- .../client/ClientActions.java | 12 +- .../client/gui/GuiOverlay.java | 60 +++++--- .../client/gui/ModGuiConfig.java | 52 ++++++- .../common/ServerActions.java | 10 +- .../config/ConfigHandler.java | 135 +++++++++++++----- .../handlers/PlayerEventHandler.java | 24 ++-- .../adventurebackpack/init/ModItems.java | 8 +- .../adventurebackpack/init/ModRecipes.java | 90 +++++++----- .../inventory/SlotBackpack.java | 41 ++++-- ...Pantaloon.java => ItemAdventurePants.java} | 4 +- ...tureJacket.java => ItemAdventureSuit.java} | 4 +- .../adventurebackpack/reference/ModInfo.java | 4 +- .../assets/adventurebackpack/lang/en_US.lang | 16 +++ 13 files changed, 327 insertions(+), 133 deletions(-) rename src/main/java/com/darkona/adventurebackpack/item/{ItemAdventurePantaloon.java => ItemAdventurePants.java} (84%) rename src/main/java/com/darkona/adventurebackpack/item/{ItemAdventureJacket.java => ItemAdventureSuit.java} (85%) diff --git a/src/main/java/com/darkona/adventurebackpack/client/ClientActions.java b/src/main/java/com/darkona/adventurebackpack/client/ClientActions.java index 5f342344..abf21200 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/ClientActions.java +++ b/src/main/java/com/darkona/adventurebackpack/client/ClientActions.java @@ -1,9 +1,14 @@ package com.darkona.adventurebackpack.client; -import com.darkona.adventurebackpack.client.audio.*; +import com.darkona.adventurebackpack.client.audio.BoilingBoilerSound; +import com.darkona.adventurebackpack.client.audio.CopterPackSound; +import com.darkona.adventurebackpack.client.audio.JetpackSoundOn; +import com.darkona.adventurebackpack.client.audio.LeakingBoilerSound; +import com.darkona.adventurebackpack.client.audio.NyanMovingSound; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; + import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -65,7 +70,10 @@ public static void playSoundAtEntity(Entity entity, byte soundCode) snd.playSound(new NyanMovingSound(player)); break; case EntitySoundPacket.JETPACK_FIZZ: - snd.playSound(new JetpackSoundOn(player)); + if (ConfigHandler.ALLOW_JETPACK_SOUND) + { + snd.playSound(new JetpackSoundOn(player)); + } break; case EntitySoundPacket.BOILING_BUBBLES: snd.playSound(new BoilingBoilerSound(player)); diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java index 756e720b..a73e2369 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java @@ -1,6 +1,11 @@ package com.darkona.adventurebackpack.client.gui; -import codechicken.lib.render.TextureUtils; +import java.util.Collection; +import java.util.Iterator; + +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.inventory.IInventoryTanks; @@ -8,6 +13,8 @@ import com.darkona.adventurebackpack.reference.ModInfo; import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Wearing; + +import codechicken.lib.render.TextureUtils; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.client.Minecraft; @@ -25,11 +32,6 @@ import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; - -import java.util.Collection; -import java.util.Iterator; /** * Created on 09/01/2015 @@ -56,7 +58,7 @@ public GuiOverlay(Minecraft mc) } private static final int BUFF_ICON_SIZE = 18; - private static final int BUFF_ICON_SPACING = BUFF_ICON_SIZE + 2; // 2 pixels between buff icons + private static final int BUFF_ICON_SPACING = 2; // 2 pixels between buff icons private static final int BUFF_ICON_BASE_U_OFFSET = 0; private static final int BUFF_ICON_BASE_V_OFFSET = 198; private static final int BUFF_ICONS_PER_ROW = 8; @@ -74,8 +76,19 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) screenHeight = resolution.getScaledHeight(); if(ConfigHandler.STATUS_OVERLAY) { - int xPos = 2; - int yPos = 2; + int xPos = ConfigHandler.STATUS_OVERLAY_INDENT_H; + int xStep = BUFF_ICON_SIZE + BUFF_ICON_SPACING;; + if (!ConfigHandler.STATUS_OVERLAY_LEFT) + { + xPos = screenWidth - BUFF_ICON_SIZE - ConfigHandler.STATUS_OVERLAY_INDENT_H; + xStep = - BUFF_ICON_SIZE - BUFF_ICON_SPACING;; + } + int yPos = ConfigHandler.STATUS_OVERLAY_INDENT_V; + if (!ConfigHandler.STATUS_OVERLAY_TOP) + { + yPos = screenHeight - BUFF_ICON_SIZE - ConfigHandler.STATUS_OVERLAY_INDENT_V; + } + @SuppressWarnings("rawtypes") Collection collection = this.mc.thePlayer.getActivePotionEffects(); if (!collection.isEmpty()) @@ -85,19 +98,19 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) this.mc.renderEngine.bindTexture(new ResourceLocation("textures/gui/container/inventory.png")); for (@SuppressWarnings("rawtypes") - Iterator iterator = this.mc.thePlayer.getActivePotionEffects() - .iterator(); iterator.hasNext(); xPos += BUFF_ICON_SPACING) + Iterator iterator = this.mc.thePlayer.getActivePotionEffects() + .iterator(); iterator.hasNext(); xPos += xStep) { PotionEffect potioneffect = (PotionEffect) iterator.next(); Potion potion = Potion.potionTypes[potioneffect.getPotionID()]; if (potion.hasStatusIcon()) { - int iconIndex = potion.getStatusIconIndex(); - this.drawTexturedModalRect( - xPos, yPos, - BUFF_ICON_BASE_U_OFFSET + iconIndex % BUFF_ICONS_PER_ROW * BUFF_ICON_SIZE, BUFF_ICON_BASE_V_OFFSET + iconIndex / BUFF_ICONS_PER_ROW * BUFF_ICON_SIZE, - BUFF_ICON_SIZE, BUFF_ICON_SIZE); + int iconIndex = potion.getStatusIconIndex(); + this.drawTexturedModalRect( + xPos, yPos, + BUFF_ICON_BASE_U_OFFSET + iconIndex % BUFF_ICONS_PER_ROW * BUFF_ICON_SIZE, BUFF_ICON_BASE_V_OFFSET + iconIndex / BUFF_ICONS_PER_ROW * BUFF_ICON_SIZE, + BUFF_ICON_SIZE, BUFF_ICON_SIZE); } } } @@ -115,9 +128,16 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) int textureHeight = 23; int textureWidth = 10; - int xPos = screenWidth - (textureWidth*3) - 4 ; - //int yPos = ((screenHeight / 3) * 2) - textureHeight - 2; - int yPos = (screenHeight) - textureHeight - 2; + int xPos = screenWidth - (textureWidth*3) - ConfigHandler.TANKS_OVERLAY_INDENT_H; + if (!ConfigHandler.TANKS_OVERLAY_RIGHT) + { + xPos = ConfigHandler.TANKS_OVERLAY_INDENT_H; + } + int yPos = screenHeight - textureHeight - ConfigHandler.TANKS_OVERLAY_INDENT_V; + if (!ConfigHandler.TANKS_OVERLAY_BOTTOM) + { + yPos = ConfigHandler.TANKS_OVERLAY_INDENT_V; + } GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glDisable(GL11.GL_LIGHTING); @@ -161,7 +181,7 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) GL11.glPushMatrix(); GL11.glTranslatef(xStart[1] + textureWidth + 2, yStart[0], 0); GL11.glScalef(0.5f, 0.5f, 0.5f); - if (ConfigHandler.ENABLE_TOOLS_RENDER) + if (ConfigHandler.ENABLE_TOOLS_RENDER) { drawItemStack(inv.getStackInSlot(Constants.upperTool), 0, 0); drawItemStack(inv.getStackInSlot(Constants.lowerTool), 0, 16); diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java b/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java index d69d137a..e3b5a50b 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java @@ -1,11 +1,16 @@ package com.darkona.adventurebackpack.client.gui; +import java.util.ArrayList; +import java.util.List; + import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.reference.ModInfo; + +import cpw.mods.fml.client.config.DummyConfigElement.DummyCategoryElement; import cpw.mods.fml.client.config.GuiConfig; +import cpw.mods.fml.client.config.IConfigElement; import net.minecraft.client.gui.GuiScreen; import net.minecraftforge.common.config.ConfigElement; -import net.minecraftforge.common.config.Configuration; /** * Created by Darkona on 10/10/2014. @@ -14,13 +19,54 @@ public class ModGuiConfig extends GuiConfig { @SuppressWarnings({ "rawtypes", "unchecked" }) - public ModGuiConfig(GuiScreen guiScreen) + public ModGuiConfig(GuiScreen guiScreen) { super(guiScreen, - new ConfigElement(ConfigHandler.config.getCategory(Configuration.CATEGORY_GENERAL)).getChildElements(), + getConfigElements(), ModInfo.MOD_ID, false, false, GuiConfig.getAbridgedConfigPath(ConfigHandler.config.toString())); } + + private static List getConfigElements() + { + List catGraphics = new ArrayList(); + List catStatus = new ArrayList(); + List catTanks = new ArrayList(); + List catSound = new ArrayList(); + List catItems = new ArrayList(); + List catDisallowed = new ArrayList(); + List catRecipes = new ArrayList(); + List catWorldGen = new ArrayList(); + List catCommon = new ArrayList(); + //Pattern commaDelimitedPattern = Pattern.compile("([A-Za-z]+((,){1}( )*|$))+?"); + + //Graphics category + catStatus.addAll(new ConfigElement(ConfigHandler.config.getCategory(ConfigHandler.CAT_STATUS)).getChildElements()); + catGraphics.add(new DummyCategoryElement("Status Overlay", "client.gui.ModGuiConfig.catStatus", catStatus)); + catTanks.addAll(new ConfigElement(ConfigHandler.config.getCategory(ConfigHandler.CAT_TANKS)).getChildElements()); + catGraphics.add(new DummyCategoryElement("Backpack Overlay", "client.gui.ModGuiConfig.catTanks", catTanks)); + catGraphics.addAll(new ConfigElement(ConfigHandler.config.getCategory(ConfigHandler.CAT_GRAPHICS)).getChildElements()); + catCommon.add(new DummyCategoryElement("Graphics", "client.gui.ModGuiConfig.catGraphics", catGraphics)); + //Sound category + catSound.addAll(new ConfigElement(ConfigHandler.config.getCategory(ConfigHandler.CAT_SOUND)).getChildElements()); + catCommon.add(new DummyCategoryElement("Sound", "client.gui.ModGuiConfig.catSound", catSound)); + //Items category + catRecipes.addAll(new ConfigElement(ConfigHandler.config.getCategory(ConfigHandler.CAT_RECIPES)).getChildElements()); + catItems.add(new DummyCategoryElement("Item Recipes", "client.gui.ModGuiConfig.catRecipes", catRecipes)); + catDisallowed.addAll(new ConfigElement(ConfigHandler.config.getCategory(ConfigHandler.CAT_DISALLOWED)).getChildElements()); + catItems.add(new DummyCategoryElement("Disallowed Items", "client.gui.ModGuiConfig.catDisallowed", catDisallowed)); + catItems.addAll(new ConfigElement(ConfigHandler.config.getCategory(ConfigHandler.CAT_ITEMS)).getChildElements()); + catCommon.add(new DummyCategoryElement("Items", "client.gui.ModGuiConfig.catItems", catItems)); + //WorldGen category + catWorldGen.addAll(new ConfigElement(ConfigHandler.config.getCategory(ConfigHandler.CAT_WORLDGEN)).getChildElements()); + catCommon.add(new DummyCategoryElement("WorldGen", "client.gui.ModGuiConfig.catWorldGen", catWorldGen)); + //Common category + catCommon.addAll(new ConfigElement(ConfigHandler.config.getCategory(ConfigHandler.CAT_COMMON)).getChildElements()); + + return catCommon; + } + } + diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index bccedb87..cd5ed141 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -1,5 +1,7 @@ package com.darkona.adventurebackpack.common; +import java.util.Random; + import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; @@ -14,6 +16,7 @@ import com.darkona.adventurebackpack.reference.BackpackNames; import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Wearing; + import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.player.EntityPlayer; @@ -27,8 +30,6 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; -import java.util.Random; - /** * Created on 23/12/2014 * @@ -333,7 +334,10 @@ public static void pistonBootsJump(EntityPlayer player) { //TODO add configuration for the playing of the sound effect. //TODO Maybe configurable jump height too, because why not. - player.playSound("tile.piston.out", 0.5F, player.getRNG().nextFloat() * 0.25F + 0.6F); + if (ConfigHandler.ALLOW_PISTON_SOUND) + { + player.playSound("tile.piston.out", 0.5F, player.getRNG().nextFloat() * 0.25F + 0.6F); + } player.motionY += 0.30; player.jumpMovementFactor += 0.3; } diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 0397a15c..4e51ccb1 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -1,11 +1,13 @@ package com.darkona.adventurebackpack.config; +import java.io.File; + import com.darkona.adventurebackpack.reference.ModInfo; + import cpw.mods.fml.client.event.ConfigChangedEvent; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.common.config.Configuration; -import java.io.File; /** * Created on 10/10/2014. @@ -16,6 +18,16 @@ public class ConfigHandler public static Configuration config; + public static String CAT_GRAPHICS = "graphics"; + public static String CAT_STATUS = "graphics status"; + public static String CAT_TANKS = "graphics tanks"; + public static String CAT_SOUND = "sound"; + public static String CAT_ITEMS = "items"; + public static String CAT_DISALLOWED = "items disallowed"; + public static String CAT_RECIPES = "items recipes"; + public static String CAT_WORLDGEN = "worldgen"; + public static String CAT_COMMON = "common"; + public static boolean IS_BUILDCRAFT = false; public static boolean IS_BAUBLES = false; public static boolean IS_TINKERS = false; @@ -24,26 +36,48 @@ public class ConfigHandler public static boolean IS_ENVIROMINE = false; public static boolean IS_RAILCRAFT = false; - public static int GUI_TANK_RENDER = 2; - public static boolean ENABLE_TOOLS = true; public static boolean ENABLE_TOOLS_RENDER = true; + public static int GUI_TANK_RENDER = 2; + public static boolean HOVERING_TEXT_TANKS = false; + + public static boolean STATUS_OVERLAY = true; + public static boolean STATUS_OVERLAY_LEFT = true; + public static boolean STATUS_OVERLAY_TOP = true; + public static int STATUS_OVERLAY_INDENT_H = 2; + public static int STATUS_OVERLAY_INDENT_V = 2; + + public static boolean TANKS_OVERLAY = true; + public static boolean TANKS_OVERLAY_RIGHT = true; + public static boolean TANKS_OVERLAY_BOTTOM = true; + public static int TANKS_OVERLAY_INDENT_H = 4; + public static int TANKS_OVERLAY_INDENT_V = 2; + + public static boolean ALLOW_COPTER_SOUND = true; + public static boolean ALLOW_JETPACK_SOUND = true; + public static boolean ALLOW_PISTON_SOUND = true; + + public static boolean YOU_SHALL_NOT_PASS = false; + + public static String[] NAME_LOCALIZED; + public static String[] NAME_UNLOCALIZED; + public static String[] NAME_DEFAULT = {}; + //public static String[] DISALLOWED_CLASS; + + public static boolean RECIPE_ADVENTURES_SET = true; + public static boolean RECIPE_CLOCKWORK_CROSSBOW = true; + public static boolean RECIPE_COAL_JETPACK = true; + public static boolean RECIPE_COPTER_PACK = true; + public static boolean RECIPE_PISTON_BOOTS = true; + public static boolean RECIPE_SADDLE = true; + public static boolean RECIPE_MACHETE = true; + public static boolean BONUS_CHEST_ALLOWED = false; public static boolean PIGMAN_ALLOWED = false; public static boolean BACKPACK_DEATH_PLACE = true; public static boolean BACKPACK_ABILITIES = true; - - public static boolean ALLOW_COPTER_SOUND = true; - public static boolean ALLOW_JETPACK_SOUNDS = true; - - public static boolean STATUS_OVERLAY = true; - public static boolean TANKS_OVERLAY = true; - public static boolean HOVERING_TEXT_TANKS = false; - public static boolean SADDLE_RECIPE = true; + public static boolean ENABLE_TOOLS = true; public static boolean FIX_LEAD = true; - public static boolean Copterpack_Recipe = true; - public static boolean CoalJetPackRecipe = true; - public static void init(File configFile) { @@ -54,27 +88,61 @@ public static void init(File configFile) } } - @SuppressWarnings("static-access") - private static void loadConfiguration() + private static void loadConfiguration() { - GUI_TANK_RENDER = config.getInt("TankRenderType", config.CATEGORY_GENERAL, 3, 1, 3, "1,2 or 3 for different rendering of fluids in the Backpack GUI"); - ENABLE_TOOLS = config.getBoolean("EnableTools", config.CATEGORY_GENERAL, true, "Enable/Disable tool cycling"); - ENABLE_TOOLS_RENDER = config.getBoolean("EnableToolsRender", config.CATEGORY_GENERAL, true, "Enable rendering for tools in the backpack tool slots. May cause visual glitches with Gregtech tools"); - BONUS_CHEST_ALLOWED = config.getBoolean("BonusBackpack", config.CATEGORY_GENERAL, false, "Include a Standard Adventure Backpack in bonus chest?"); - PIGMAN_ALLOWED = config.getBoolean("PigmanBackpacks", config.CATEGORY_GENERAL, false, "Allow generation of Pigman Backpacks in dungeon loot and villager trades"); - ALLOW_COPTER_SOUND = config.getBoolean("CopterPackSound", config.CATEGORY_GENERAL, true, "Allow playing the CopterPack sound (Client Only, other players may hear it)"); - BACKPACK_ABILITIES = config.getBoolean("BackpackAbilities", config.CATEGORY_GENERAL, true, "Allow the backpacks to execute their special abilities, or be only cosmetic (Doesn't affect lightning transformation) Must be " + - "disabled in both Client and Server to work properly"); - STATUS_OVERLAY = config.getBoolean("StatusOverlay", config.CATEGORY_GENERAL,true, "Show player status effects on screen?"); - TANKS_OVERLAY = config.getBoolean("BackpackOverlay", config.CATEGORY_GENERAL,true, "Show the different wearable overlays on screen?"); - HOVERING_TEXT_TANKS = config.getBoolean("HoveringText", config.CATEGORY_GENERAL,false, "Show hovering text on fluid tanks?"); - FIX_LEAD = config.getBoolean("FixVanillaLead", config.CATEGORY_GENERAL,true, "Fix the vanilla Lead? (Checks mobs falling on a leash to not die of fall damage if they're not falling so fast)"); - BACKPACK_DEATH_PLACE = config.getBoolean("BackpackDeathPlace", config.CATEGORY_GENERAL,true,"Place backpacks as a block when you die?"); - //RECIPES - SADDLE_RECIPE = config.getBoolean("SaddleRecipe", config.CATEGORY_GENERAL,true, "Add recipe for saddle?"); - Copterpack_Recipe = config.getBoolean("Copterpack_Recipe", config.CATEGORY_GENERAL, true, "Enable/Disable CopterPack recipe"); - CoalJetPackRecipe = config.getBoolean("CoalJetPackRecipe", config.CATEGORY_GENERAL, true, "Enable/Disable CoalJetPack recipe"); + + //Graphics + GUI_TANK_RENDER = config.getInt("TankRenderType", CAT_GRAPHICS, 3, 1, 3, "1,2 or 3 for different rendering of fluids in the Backpack GUI"); + ENABLE_TOOLS_RENDER = config.getBoolean("EnableToolsRender", CAT_GRAPHICS, true, "Enable rendering for tools in the backpack tool slots. May cause visual glitches with Gregtech tools"); + HOVERING_TEXT_TANKS = config.getBoolean("HoveringText", CAT_GRAPHICS, false, "Show hovering text on fluid tanks?"); + + //Graphics.Status + STATUS_OVERLAY = config.getBoolean("EnableOverlay", CAT_STATUS, true, "Show player status effects on screen?"); + STATUS_OVERLAY_LEFT = config.getBoolean("StickToLeft", CAT_STATUS, true, "Stick to left? Icons will appears from left to right. If false: stick to right, icons will appears from right to left"); + STATUS_OVERLAY_TOP = config.getBoolean("StickToTop", CAT_STATUS, true, "Stick to top?"); + STATUS_OVERLAY_INDENT_H = config.getInt("IndentHorizontal", CAT_STATUS, 2, 0, 1000, "Horizontal indent from the window border"); + STATUS_OVERLAY_INDENT_V = config.getInt("IndentVertical", CAT_STATUS, 2, 0, 500, "Vertical indent from the window border"); + + //Graphics.Tanks + TANKS_OVERLAY = config.getBoolean("EnableOverlay", CAT_TANKS, true, "Show the different wearable overlays on screen?"); + TANKS_OVERLAY_RIGHT = config.getBoolean("StickToRight", CAT_TANKS, true, "Stick to right?"); + TANKS_OVERLAY_BOTTOM = config.getBoolean("StickToBottom", CAT_TANKS, true, "Stick to bottom?"); + TANKS_OVERLAY_INDENT_H = config.getInt("IndentHorizontal", CAT_TANKS, 4, 0, 1000, "Horizontal indent from the window border"); + TANKS_OVERLAY_INDENT_V = config.getInt("IndentVertical", CAT_TANKS, 2, 0, 500, "Vertical indent from the window border"); + + //Sound + ALLOW_COPTER_SOUND = config.getBoolean("CopterPack", CAT_SOUND, true, "Allow playing the CopterPack sound (Client Only, other players may hear it)"); + ALLOW_JETPACK_SOUND = config.getBoolean("CoalJetpack", CAT_SOUND, true, "Allow playing the CoalJetpack sound (Client Only, other players may hear it)"); + ALLOW_PISTON_SOUND = config.getBoolean("PistonBoots", CAT_SOUND, true, "Allow playing the PistonBoots sound (Client Only, other players may hear it)"); + + //Items + YOU_SHALL_NOT_PASS = config.getBoolean("EnableItemFilters", CAT_ITEMS, false, "FOR TEST ONLY. Enable filters from Disallowed category"); + + //Items.Recipes + RECIPE_ADVENTURES_SET = config.getBoolean("AdventuresSet", CAT_RECIPES, true, "Enable/Disable recipe for Adventure's Hat, Suit and Pants"); + RECIPE_CLOCKWORK_CROSSBOW = config.getBoolean("ClockworkCrossbow", CAT_RECIPES, true, "Enable/Disable Clockwork Crossbow recipe"); + RECIPE_COPTER_PACK = config.getBoolean("CopterPack", CAT_RECIPES, true, "Enable/Disable CopterPack recipe"); + RECIPE_COAL_JETPACK = config.getBoolean("CoalJetpack", CAT_RECIPES, true, "Enable/Disable CoalJetpack recipe"); + RECIPE_PISTON_BOOTS = config.getBoolean("PistonBoots", CAT_RECIPES, true, "Enable/Disable PistonBoots recipe"); + RECIPE_SADDLE = config.getBoolean("Saddle", CAT_RECIPES, true, "Add recipe for saddle?"); + RECIPE_MACHETE = config.getBoolean("Machete", CAT_RECIPES, true, "Enable/Disable Machete recipe"); + + //Items.Disallowed + NAME_LOCALIZED = config.getStringList("ByDisplaedName", CAT_DISALLOWED, NAME_DEFAULT, "FOR TEST ONLY. Disallowed items by dispaled (localized) name. Not case sensitive"); + NAME_UNLOCALIZED = config.getStringList("ByInternalName", CAT_DISALLOWED, NAME_DEFAULT, "FOR TEST ONLY. Disallowed items by internal (unlocalized) name. Not case sensitive"); + + //WorldGen + BONUS_CHEST_ALLOWED = config.getBoolean("BonusBackpack", CAT_WORLDGEN, false, "Include a Standard Adventure Backpack in bonus chest?"); + PIGMAN_ALLOWED = config.getBoolean("PigmanBackpacks", CAT_WORLDGEN, false, "Allow generation of Pigman Backpacks in dungeon loot and villager trades"); + + //Common + BACKPACK_ABILITIES = config.getBoolean("BackpackAbilities", CAT_COMMON, true, "Allow the backpacks to execute their special abilities, or be only cosmetic (Doesn't affect lightning transformation) Must be " + + "disabled in both Client and Server to work properly"); + BACKPACK_DEATH_PLACE = config.getBoolean("BackpackDeathPlace", CAT_COMMON, true,"Place backpacks as a block when you die?"); + ENABLE_TOOLS = config.getBoolean("EnableTools", CAT_COMMON, true, "Enable/Disable tool cycling"); + FIX_LEAD = config.getBoolean("FixVanillaLead", CAT_COMMON, true, "Fix the vanilla Lead? (Checks mobs falling on a leash to not die of fall damage if they're not falling so fast)"); + if (config.hasChanged()) { config.save(); @@ -90,5 +158,4 @@ public void onConfigChangeEvent(ConfigChangedEvent.OnConfigChangedEvent event) } } - } diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 2a0ba6db..a713b017 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -2,19 +2,20 @@ import com.darkona.adventurebackpack.common.ServerActions; import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.develop.msg; +import com.darkona.adventurebackpack.develop.texturemsg; import com.darkona.adventurebackpack.entity.EntityFriendlySpider; import com.darkona.adventurebackpack.entity.ai.EntityAIHorseFollowOwner; import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.init.ModItems; -import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.item.IBackWearableItem; -import com.darkona.adventurebackpack.network.SyncPropertiesPacket; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.proxy.ServerProxy; import com.darkona.adventurebackpack.reference.BackpackNames; import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Utils; import com.darkona.adventurebackpack.util.Wearing; + import cpw.mods.fml.common.eventhandler.Event; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; @@ -38,8 +39,6 @@ import net.minecraftforge.event.entity.living.LivingFallEvent; import net.minecraftforge.event.entity.player.EntityInteractEvent; import net.minecraftforge.event.entity.player.PlayerWakeUpEvent; -import com.darkona.adventurebackpack.develop.msg; -import com.darkona.adventurebackpack.develop.texturemsg; /** * Created on 11/10/2014 @@ -123,7 +122,6 @@ public void onPlayerJump(LivingEvent.LivingJumpEvent event) { EntityPlayer player = (EntityPlayer) event.entity; - if (Wearing.isWearingBoots(player) && player.onGround) { ServerActions.pistonBootsJump(player); @@ -133,26 +131,26 @@ public void onPlayerJump(LivingEvent.LivingJumpEvent event) boolean pistonBootsStepHeight=false; - + @SubscribeEvent - public void pistonBootsUnequipped(LivingEvent.LivingUpdateEvent event) - { + public void pistonBootsUnequipped(LivingEvent.LivingUpdateEvent event) + { if (event.entityLiving instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer)event.entityLiving; + EntityPlayer player = (EntityPlayer)event.entityLiving; if (Wearing.isWearingBoots(player)) { if (!pistonBootsStepHeight) { - pistonBootsStepHeight = true; + pistonBootsStepHeight = true; } } else if (pistonBootsStepHeight) { player.stepHeight = 0.5001F; - pistonBootsStepHeight=false; + pistonBootsStepHeight=false; } - } - } + } + } /** * Used by the Piston boots to lessen the fall damage. It's hacky, but I don't care. diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModItems.java b/src/main/java/com/darkona/adventurebackpack/init/ModItems.java index b8a7a5e1..ca431d26 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModItems.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModItems.java @@ -3,8 +3,8 @@ import com.darkona.adventurebackpack.item.ArmorAB; import com.darkona.adventurebackpack.item.ItemAdventureBackpack; import com.darkona.adventurebackpack.item.ItemAdventureHat; -import com.darkona.adventurebackpack.item.ItemAdventureJacket; -import com.darkona.adventurebackpack.item.ItemAdventurePantaloon; +import com.darkona.adventurebackpack.item.ItemAdventureSuit; +import com.darkona.adventurebackpack.item.ItemAdventurePants; import com.darkona.adventurebackpack.item.ItemCoalJetpack; import com.darkona.adventurebackpack.item.ItemComponent; import com.darkona.adventurebackpack.item.ItemCopterPack; @@ -27,8 +27,8 @@ public class ModItems public static final ItemMachete machete = new ItemMachete(); public static final ItemCrossbow cwxbow = new ItemCrossbow(); public static final ArmorAB adventureHat = new ItemAdventureHat(); - public static final ArmorAB adventureSuit = new ItemAdventureJacket(); - public static final ArmorAB adventurePants = new ItemAdventurePantaloon(); + public static final ArmorAB adventureSuit = new ItemAdventureSuit(); + public static final ArmorAB adventurePants = new ItemAdventurePants(); public static final ArmorAB pistonBoots = new ItemPistonBoots(); public static final ItemCopterPack copterPack = new ItemCopterPack(); public static final ItemCoalJetpack CoalJetpack = new ItemCoalJetpack(); diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java index 549a5ed5..2ee1edb8 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java @@ -27,7 +27,7 @@ private static ItemStack bc(int damage) public static void init() { - if(ConfigHandler.SADDLE_RECIPE) + if(ConfigHandler.RECIPE_SADDLE) { GameRegistry.addRecipe(new ItemStack(Items.saddle), "LLL", @@ -39,7 +39,7 @@ public static void init() } //Copter Pack - if(ConfigHandler.Copterpack_Recipe) + if(ConfigHandler.RECIPE_COPTER_PACK) { GameRegistry.addRecipe(new ItemStack(ModItems.copterPack), "WBW", @@ -53,9 +53,10 @@ public static void init() 'D', Items.diamond, 'I', Items.iron_ingot ); - } + } + //CoalJetpack - if(ConfigHandler.CoalJetPackRecipe) + if(ConfigHandler.RECIPE_COAL_JETPACK) { GameRegistry.addRecipe(new ItemStack(ModItems.CoalJetpack), "SWT", @@ -80,6 +81,7 @@ public static void init() 'x', Items.coal, 'c', "cobblestone" )); + //Inflatable Boat GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 7), " ", @@ -88,6 +90,7 @@ public static void init() 'w', Blocks.wool, 's', Blocks.sand ); + //Sleeping Bag GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 1), " X", @@ -125,8 +128,10 @@ public static void init() 'L', Blocks.lever ); - //Machete Handle - GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 4), + if (ConfigHandler.RECIPE_MACHETE) + { + //Machete Handle + GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 4), "YIY", "BSB", "RbR", @@ -136,62 +141,90 @@ public static void init() 'b', new ItemStack(Items.dye, 1, 0), 'I', Items.iron_ingot, 'S', Items.stick - ); + ); - //Machete - GameRegistry.addRecipe(new ItemStack(ModItems.machete), + //Machete + GameRegistry.addRecipe(new ItemStack(ModItems.machete), " I ", " I ", " H ", 'I', Items.iron_ingot, 'H', new ItemStack(ModItems.component, 1, 4) - ); - //Adventure Hat - GameRegistry.addRecipe(new ItemStack(ModItems.adventureHat), + ); + } + + //Clockwork Crossbow + if (ConfigHandler.RECIPE_CLOCKWORK_CROSSBOW) + { + GameRegistry.addRecipe(new ItemStack(ModItems.cwxbow), + " ", + "BA ", + "SW ", + 'B', Items.bow, + 'A', Items.arrow, + 'S', Items.stick, + 'W', Blocks.planks + ); + } + + if (ConfigHandler.RECIPE_ADVENTURES_SET) + { + //Adventure Hat + GameRegistry.addRecipe(new ItemStack(ModItems.adventureHat), " ", "nC ", "LLL", 'n', Items.gold_nugget, 'C', Items.leather_helmet, 'L', Items.leather - ); - //Adventure Suit - GameRegistry.addRecipe(new ItemStack(ModItems.adventureSuit), + ); + + //Adventure Suit + GameRegistry.addRecipe(new ItemStack(ModItems.adventureSuit), "LWL", "LVL", " ", 'V', Items.leather_chestplate, 'W', Blocks.wool, 'L', Items.leather - ); - //Adventure Pants - GameRegistry.addRecipe(new ItemStack(ModItems.adventurePants), + ); + + //Adventure Pants + GameRegistry.addRecipe(new ItemStack(ModItems.adventurePants), "LVL", "LWL", " ", 'V', Items.leather_leggings, 'W', Blocks.wool, 'L', Items.leather - ); + ); + } + //Piston Boots - GameRegistry.addRecipe(new ItemStack(ModItems.pistonBoots), + if (ConfigHandler.RECIPE_PISTON_BOOTS) + { + GameRegistry.addRecipe(new ItemStack(ModItems.pistonBoots), " B ", "PSP", 'B', Items.leather_boots, 'P', Blocks.piston, 'S', Items.slime_ball - ); + ); + } + //Melon Juice Bottle GameRegistry.addShapelessRecipe(new ItemStack(ModItems.melonJuiceBottle), Items.melon, Items.potionitem ); - //Hose + + //Hose GameRegistry.addRecipe(new ItemStack(ModItems.hose), "NGG", " G", 'N', new ItemStack(ModItems.component, 1, 3), 'G', new ItemStack(Items.dye, 1, 2) ); + BackpackRecipesList br = new BackpackRecipesList(); int counter = 0; for (int i = 0; i < BackpackNames.backpackNames.length; i++) @@ -272,17 +305,6 @@ public static void conditionalInit() 'I', Items.iron_ingot, 'F', Blocks.fence ); - - //Clockwork Crossbow - GameRegistry.addRecipe(new ItemStack(ModItems.cwxbow), - " ", - "BA ", - "SW ", - 'B', Items.bow, - 'A', Items.arrow, - 'S', Items.stick, - 'W', Blocks.planks - ); } } - } \ No newline at end of file +} \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java index 901834bc..c680a484 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java @@ -1,6 +1,7 @@ package com.darkona.adventurebackpack.inventory; import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; +import com.darkona.adventurebackpack.config.ConfigHandler; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -11,19 +12,25 @@ public class SlotBackpack extends SlotAdventureBackpack { - private static String[] forbiddenItemClasses = + public static String[] forbiddenItemClasses = { // Adventure Backpack 2 "com.darkona.adventurebackpack.item.ItemAdventureBackpack", + // Backpack Mod + "de.eydamos.backpack.item.ItemBackpack", + "de.eydamos.backpack.item.ItemWorkbenchBackpack", + // Blue Power Canvas Bags + "com.bluepowermod.item.ItemCanvasBag", + // Extra Utilities Golden Bag of Holding + "com.rwtema.extrautils.item.ItemGoldenBag", + // Forestry Backpacks +addons + "forestry.storage.items.ItemBackpack", + "forestry.storage.items.ItemBackpackNaturalist", // Jabba Dolly "mcp.mobius.betterbarrels.common.items.dolly.ItemBarrelMover", "mcp.mobius.betterbarrels.common.items.dolly.ItemDiamondMover", - // Forestry Backpacks, includes Railcraft and MagicBees addons - "forestry.storage.items.ItemBackpack", - "forestry.storage.items.ItemBackpackNaturalist", - // Backpack Mod - "de.eydamos.backpack.item.ItemBackpack", - "de.eydamos.backpack.item.ItemWorkbenchBackpack" + // Project Red Exploration Backpacks + "mrtjp.projectred.exploration.ItemBackpack" }; /*private static String[] forbiddenItemNames = @@ -38,25 +45,31 @@ public SlotBackpack(IInventoryAdventureBackpack inventory, int id, int x, int y) public static boolean valid(ItemStack stack) { + if (stack == null) {return false;} + for (String itemClass : forbiddenItemClasses) { if (stack.getItem().getClass().getName().equals(itemClass)) return false; } - //if (ConfigHandler.YOU_SHALL_NOT_PASS) - /*{ - for (String itemName : forbiddenItemNames) + if (ConfigHandler.YOU_SHALL_NOT_PASS) + { + for (String itemName : ConfigHandler.NAME_LOCALIZED) { - if (stack.getItem().getUnlocalizedName().toLowerCase().contains(itemName)) return false; + if (stack.getDisplayName().toLowerCase().contains(itemName.toLowerCase())) return false; } - }*/ - return true; + for (String itemName : ConfigHandler.NAME_UNLOCALIZED) + { + if (stack.getItem().getUnlocalizedName().toLowerCase().contains(itemName.toLowerCase())) return false; + } + } + return true; } @Override public boolean isItemValid(ItemStack stack) { - return ((stack != null) && (valid(stack))); + return valid(stack); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventurePantaloon.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventurePants.java similarity index 84% rename from src/main/java/com/darkona/adventurebackpack/item/ItemAdventurePantaloon.java rename to src/main/java/com/darkona/adventurebackpack/item/ItemAdventurePants.java index 9e70f585..f6639186 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventurePantaloon.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventurePants.java @@ -8,10 +8,10 @@ * * @author Darkona */ -public class ItemAdventurePantaloon extends ArmorAB +public class ItemAdventurePants extends ArmorAB { - public ItemAdventurePantaloon() + public ItemAdventurePants() { super(2, 2); setMaxDamage(Items.leather_leggings.getMaxDamage() + 75); diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureJacket.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureSuit.java similarity index 85% rename from src/main/java/com/darkona/adventurebackpack/item/ItemAdventureJacket.java rename to src/main/java/com/darkona/adventurebackpack/item/ItemAdventureSuit.java index f84de9cb..b34e5d67 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureJacket.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureSuit.java @@ -8,10 +8,10 @@ * * @author Darkona */ -public class ItemAdventureJacket extends ArmorAB +public class ItemAdventureSuit extends ArmorAB { - public ItemAdventureJacket() + public ItemAdventureSuit() { super(1, 1); setMaxDamage(Items.leather_chestplate.getMaxDamage() + 70); diff --git a/src/main/java/com/darkona/adventurebackpack/reference/ModInfo.java b/src/main/java/com/darkona/adventurebackpack/reference/ModInfo.java index 0de0d4bb..47e354f0 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/ModInfo.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/ModInfo.java @@ -6,10 +6,10 @@ public class ModInfo { public static final String MOD_NAME = "Adventure Backpack"; - public static final String MOD_VERSION = "1.7.10-0.8f"; + public static final String MOD_VERSION = "1.7.10-0.9f"; public static final String MOD_ID = "adventurebackpack"; public static final String MOD_CHANNEL = "advBackpackChan"; public static final String MOD_CLIENT_PROXY = "com.darkona.adventurebackpack.proxy.ClientProxy"; public static final String GUI_FACTORY_CLASS = "com.darkona.adventurebackpack.client.gui.GuiFactory"; - public static final String MOD_SERVER_PROXY = "com.darkona.adventurebackpack.proxy.ServerProxy"; + public static final String MOD_SERVER_PROXY = "com.darkona.adventurebackpack.proxy.ServerProxy"; } diff --git a/src/main/resources/assets/adventurebackpack/lang/en_US.lang b/src/main/resources/assets/adventurebackpack/lang/en_US.lang index 0b752baa..5d4623ec 100644 --- a/src/main/resources/assets/adventurebackpack/lang/en_US.lang +++ b/src/main/resources/assets/adventurebackpack/lang/en_US.lang @@ -12,6 +12,9 @@ item.adventurebackpack:hydroBlades.name=Hydro Blades item.adventurebackpack:inflatableBoat.name=Inflatable Boat item.adventurebackpack:inflatableBoatMotorized.name=Inflatable Boat (Motorized) +## Entity +entity.adventurebackpack.inflatableBoat.name=Inflatable Boat + ## Tools and consumables item.adventurebackpack:clockworkCrossbow.name=Clockwork Crossbow item.adventurebackpack:melonJuiceBottle.name=Melon Juice Bottle @@ -71,3 +74,16 @@ adventurebackpack:messages.copterpack.off=CopterPack: Off. adventurebackpack:messages.jetpack.on=Coal Jetpack: On. adventurebackpack:messages.jetpack.off=Coal Jetpack: Off. adventurebackpack:messages.crossbow.outofammo=Clockwork Crossbow: Out of ammo. + +## Config +client.gui.ModGuiConfig.catGraphics.tooltip=Graphics Options +client.gui.ModGuiConfig.catStatus.tooltip=Status Overlay Options +client.gui.ModGuiConfig.catTanks.tooltip=Backpack Overlay Options +client.gui.ModGuiConfig.catSound.tooltip=Sound Options +client.gui.ModGuiConfig.catItems.tooltip=Items Options +client.gui.ModGuiConfig.catDisallowed.tooltip=Disallowed Items Options +client.gui.ModGuiConfig.catRecipes.tooltip=Item Recipes Options +client.gui.ModGuiConfig.catWorldGen.tooltip=WorldGen Options +client.gui.ModGuiConfig.catCommon.tooltip=Common Options + + From 2d29e2f30e229bed9636b95deef7bc9ba580a2b4 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 23 Nov 2016 11:15:02 +0700 Subject: [PATCH 308/462] New Config implementation, step 2 --- .../adventurebackpack/AdventureBackpack.java | 18 +- .../client/ClientActions.java | 4 +- .../client/gui/GuiAdvBackpack.java | 6 +- .../client/gui/GuiCoalJetpack.java | 4 +- .../client/gui/GuiCopterPack.java | 2 +- .../client/gui/GuiOverlay.java | 34 +-- .../adventurebackpack/client/gui/GuiTank.java | 2 +- .../client/gui/ModGuiConfig.java | 56 +---- .../client/models/ModelBackpackArmor.java | 2 +- .../client/render/RendererHose.java | 2 +- .../common/ServerActions.java | 9 +- .../config/ConfigHandler.java | 205 +++++++++--------- .../handlers/GeneralEventHandler.java | 8 +- .../handlers/PlayerEventHandler.java | 4 +- .../adventurebackpack/init/ModRecipes.java | 14 +- .../adventurebackpack/init/ModWorldGen.java | 4 +- .../inventory/SlotBackpack.java | 15 +- .../item/ItemAdventureBackpack.java | 4 +- .../adventurebackpack/proxy/ClientProxy.java | 2 +- .../assets/adventurebackpack/lang/en_US.lang | 13 -- 20 files changed, 182 insertions(+), 226 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java index 51b847b8..e2614ef8 100644 --- a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java @@ -1,18 +1,27 @@ package com.darkona.adventurebackpack; +import java.util.Calendar; + import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; import com.darkona.adventurebackpack.handlers.ClientEventHandler; import com.darkona.adventurebackpack.handlers.GeneralEventHandler; import com.darkona.adventurebackpack.handlers.GuiHandler; import com.darkona.adventurebackpack.handlers.PlayerEventHandler; -import com.darkona.adventurebackpack.init.*; +import com.darkona.adventurebackpack.init.ModBlocks; +import com.darkona.adventurebackpack.init.ModEntities; +import com.darkona.adventurebackpack.init.ModFluids; +import com.darkona.adventurebackpack.init.ModItems; +import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.init.ModRecipes; +import com.darkona.adventurebackpack.init.ModWorldGen; import com.darkona.adventurebackpack.proxy.IProxy; import com.darkona.adventurebackpack.reference.ModInfo; import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Utils; import com.darkona.adventurebackpack.util.calendar.ChineseCalendar; import com.darkona.adventurebackpack.util.calendar.JewishCalendar; + import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.Mod; @@ -22,10 +31,6 @@ import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.network.NetworkRegistry; import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.fluids.Fluid; -import net.minecraftforge.fluids.FluidRegistry; - -import java.util.Calendar; /** * Created on 10/10/2014 @@ -118,6 +123,7 @@ public void postInit(FMLPostInitializationEvent event) ConfigHandler.IS_BUILDCRAFT = Loader.isModLoaded("BuildCraft|Core"); + if (ConfigHandler.IS_BUILDCRAFT) { LogHelper.info("Buildcraft is present. Acting accordingly"); @@ -152,7 +158,7 @@ public void postInit(FMLPostInitializationEvent event) } LogHelper.info("-------------------------------------------------------------------------"); */ - + } } diff --git a/src/main/java/com/darkona/adventurebackpack/client/ClientActions.java b/src/main/java/com/darkona/adventurebackpack/client/ClientActions.java index abf21200..16e83ffd 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/ClientActions.java +++ b/src/main/java/com/darkona/adventurebackpack/client/ClientActions.java @@ -61,7 +61,7 @@ public static void playSoundAtEntity(Entity entity, byte soundCode) switch (soundCode) { case EntitySoundPacket.COPTER_SOUND: - if (ConfigHandler.ALLOW_COPTER_SOUND) + if (ConfigHandler.allowSoundCopter) { snd.playSound(new CopterPackSound(player)); } @@ -70,7 +70,7 @@ public static void playSoundAtEntity(Entity entity, byte soundCode) snd.playSound(new NyanMovingSound(player)); break; case EntitySoundPacket.JETPACK_FIZZ: - if (ConfigHandler.ALLOW_JETPACK_SOUND) + if (ConfigHandler.allowSoundJetpack) { snd.playSound(new JetpackSoundOn(player)); } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index fc511525..ce0ac166 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -39,8 +39,8 @@ public class GuiAdvBackpack extends GuiWithTanks private static GuiImageButtonNormal bedButton = new GuiImageButtonNormal(5, 91, 18, 18); private static GuiImageButtonNormal equipButton = new GuiImageButtonNormal(5, 91, 18, 18); private static GuiImageButtonNormal unequipButton = new GuiImageButtonNormal(5, 91, 18, 18); - private static GuiTank tankLeft = new GuiTank(25, 7, 100, 16, ConfigHandler.GUI_TANK_RENDER); - private static GuiTank tankRight = new GuiTank(207, 7, 100, 16, ConfigHandler.GUI_TANK_RENDER); + private static GuiTank tankLeft = new GuiTank(25, 7, 100, 16, ConfigHandler.typeTankRender); + private static GuiTank tankRight = new GuiTank(207, 7, 100, 16, ConfigHandler.typeTankRender); private FluidTank lft; private FluidTank rgt; public int lefties; @@ -126,7 +126,7 @@ protected void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) } } //zLevel +=1; - if(ConfigHandler.HOVERING_TEXT_TANKS) + if(ConfigHandler.tanksHoveringText) { if (tankLeft.inTank(this, mouseX, mouseY)) { diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java index 487a97af..1219ed39 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java @@ -25,8 +25,8 @@ public class GuiCoalJetpack extends GuiWithTanks { private static final ResourceLocation texture = Resources.guiTextures("guiSteamJetpack"); - private static GuiTank waterTank = new GuiTank(8, 8,72, 16, ConfigHandler.GUI_TANK_RENDER); - private static GuiTank steamTank = new GuiTank(116, 8,72, 16, ConfigHandler.GUI_TANK_RENDER); + private static GuiTank waterTank = new GuiTank(8, 8,72, 16, ConfigHandler.typeTankRender); + private static GuiTank steamTank = new GuiTank(116, 8,72, 16, ConfigHandler.typeTankRender); private static GuiImageButtonNormal equipButton = new GuiImageButtonNormal(150, 64, 18, 18); private static GuiImageButtonNormal unequipButton = new GuiImageButtonNormal(150, 64, 18, 18); private boolean wearing; diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java index 639c1f3c..e9857de1 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java @@ -25,7 +25,7 @@ public class GuiCopterPack extends GuiWithTanks { private InventoryCopterPack inventory; private static final ResourceLocation texture = Resources.guiTextures("guiCopterPack"); - private static GuiTank fuelTank = new GuiTank(8, 8,72, 32, ConfigHandler.GUI_TANK_RENDER); + private static GuiTank fuelTank = new GuiTank(8, 8,72, 32, ConfigHandler.typeTankRender); private static GuiImageButtonNormal equipButton = new GuiImageButtonNormal(150, 64, 18, 18); private static GuiImageButtonNormal unequipButton = new GuiImageButtonNormal(150, 64, 18, 18); diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java index a73e2369..efdaf4a0 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java @@ -74,19 +74,19 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) resolution = new ScaledResolution(this.mc, this.mc.displayWidth, this.mc.displayHeight); screenWidth = resolution.getScaledWidth(); screenHeight = resolution.getScaledHeight(); - if(ConfigHandler.STATUS_OVERLAY) + if(ConfigHandler.statusOverlay) { - int xPos = ConfigHandler.STATUS_OVERLAY_INDENT_H; - int xStep = BUFF_ICON_SIZE + BUFF_ICON_SPACING;; - if (!ConfigHandler.STATUS_OVERLAY_LEFT) + int xPos = ConfigHandler.statusOverlayIndentH; + int xStep = BUFF_ICON_SIZE + BUFF_ICON_SPACING; + if (!ConfigHandler.statusOverlayLeft) { - xPos = screenWidth - BUFF_ICON_SIZE - ConfigHandler.STATUS_OVERLAY_INDENT_H; - xStep = - BUFF_ICON_SIZE - BUFF_ICON_SPACING;; + xPos = screenWidth - BUFF_ICON_SIZE - ConfigHandler.statusOverlayIndentH; + xStep = - BUFF_ICON_SIZE - BUFF_ICON_SPACING; } - int yPos = ConfigHandler.STATUS_OVERLAY_INDENT_V; - if (!ConfigHandler.STATUS_OVERLAY_TOP) + int yPos = ConfigHandler.statusOverlayIndentV; + if (!ConfigHandler.statusOverlayTop) { - yPos = screenHeight - BUFF_ICON_SIZE - ConfigHandler.STATUS_OVERLAY_INDENT_V; + yPos = screenHeight - BUFF_ICON_SIZE - ConfigHandler.statusOverlayIndentV; } @SuppressWarnings("rawtypes") @@ -116,7 +116,7 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) } } - if(ConfigHandler.TANKS_OVERLAY) + if(ConfigHandler.tanksOverlay) { EntityPlayer player= mc.thePlayer; if(Wearing.isWearingWearable(player)) @@ -128,15 +128,15 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) int textureHeight = 23; int textureWidth = 10; - int xPos = screenWidth - (textureWidth*3) - ConfigHandler.TANKS_OVERLAY_INDENT_H; - if (!ConfigHandler.TANKS_OVERLAY_RIGHT) + int xPos = screenWidth - (textureWidth*3) - ConfigHandler.tanksOverlayIndentH; + if (!ConfigHandler.tanksOverlayRight) { - xPos = ConfigHandler.TANKS_OVERLAY_INDENT_H; + xPos = ConfigHandler.tanksOverlayIndentH; } - int yPos = screenHeight - textureHeight - ConfigHandler.TANKS_OVERLAY_INDENT_V; - if (!ConfigHandler.TANKS_OVERLAY_BOTTOM) + int yPos = screenHeight - textureHeight - ConfigHandler.tanksOverlayIndentV; + if (!ConfigHandler.tanksOverlayBottom) { - yPos = ConfigHandler.TANKS_OVERLAY_INDENT_V; + yPos = ConfigHandler.tanksOverlayIndentV; } GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); @@ -181,7 +181,7 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) GL11.glPushMatrix(); GL11.glTranslatef(xStart[1] + textureWidth + 2, yStart[0], 0); GL11.glScalef(0.5f, 0.5f, 0.5f); - if (ConfigHandler.ENABLE_TOOLS_RENDER) + if (ConfigHandler.enableToolsRender) { drawItemStack(inv.getStackInSlot(Constants.upperTool), 0, 0); drawItemStack(inv.getStackInSlot(Constants.lowerTool), 0, 16); diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiTank.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiTank.java index 0f79b777..36f390f2 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiTank.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiTank.java @@ -74,7 +74,7 @@ public void draw(GuiWithTanks gui, FluidTank theFluid) tank = theFluid; liquidPerPixel = tank.getCapacity() / this.height; this.zLevel = gui.getZLevel()+1; - switch (ConfigHandler.GUI_TANK_RENDER) + switch (ConfigHandler.typeTankRender) { case 1: drawMethodOne(gui); diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java b/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java index e3b5a50b..1dee6e75 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java @@ -1,15 +1,16 @@ package com.darkona.adventurebackpack.client.gui; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.reference.ModInfo; -import cpw.mods.fml.client.config.DummyConfigElement.DummyCategoryElement; import cpw.mods.fml.client.config.GuiConfig; import cpw.mods.fml.client.config.IConfigElement; import net.minecraft.client.gui.GuiScreen; +import net.minecraftforge.common.config.ConfigCategory; import net.minecraftforge.common.config.ConfigElement; /** @@ -18,54 +19,21 @@ public class ModGuiConfig extends GuiConfig { - @SuppressWarnings({ "rawtypes", "unchecked" }) public ModGuiConfig(GuiScreen guiScreen) { - super(guiScreen, - getConfigElements(), - ModInfo.MOD_ID, - false, - false, - GuiConfig.getAbridgedConfigPath(ConfigHandler.config.toString())); + super (guiScreen, getConfigElements(), ModInfo.MOD_ID, false, false, ModInfo.MOD_NAME); } - private static List getConfigElements() - { - List catGraphics = new ArrayList(); - List catStatus = new ArrayList(); - List catTanks = new ArrayList(); - List catSound = new ArrayList(); - List catItems = new ArrayList(); - List catDisallowed = new ArrayList(); - List catRecipes = new ArrayList(); - List catWorldGen = new ArrayList(); - List catCommon = new ArrayList(); - //Pattern commaDelimitedPattern = Pattern.compile("([A-Za-z]+((,){1}( )*|$))+?"); - - //Graphics category - catStatus.addAll(new ConfigElement(ConfigHandler.config.getCategory(ConfigHandler.CAT_STATUS)).getChildElements()); - catGraphics.add(new DummyCategoryElement("Status Overlay", "client.gui.ModGuiConfig.catStatus", catStatus)); - catTanks.addAll(new ConfigElement(ConfigHandler.config.getCategory(ConfigHandler.CAT_TANKS)).getChildElements()); - catGraphics.add(new DummyCategoryElement("Backpack Overlay", "client.gui.ModGuiConfig.catTanks", catTanks)); - catGraphics.addAll(new ConfigElement(ConfigHandler.config.getCategory(ConfigHandler.CAT_GRAPHICS)).getChildElements()); - catCommon.add(new DummyCategoryElement("Graphics", "client.gui.ModGuiConfig.catGraphics", catGraphics)); - //Sound category - catSound.addAll(new ConfigElement(ConfigHandler.config.getCategory(ConfigHandler.CAT_SOUND)).getChildElements()); - catCommon.add(new DummyCategoryElement("Sound", "client.gui.ModGuiConfig.catSound", catSound)); - //Items category - catRecipes.addAll(new ConfigElement(ConfigHandler.config.getCategory(ConfigHandler.CAT_RECIPES)).getChildElements()); - catItems.add(new DummyCategoryElement("Item Recipes", "client.gui.ModGuiConfig.catRecipes", catRecipes)); - catDisallowed.addAll(new ConfigElement(ConfigHandler.config.getCategory(ConfigHandler.CAT_DISALLOWED)).getChildElements()); - catItems.add(new DummyCategoryElement("Disallowed Items", "client.gui.ModGuiConfig.catDisallowed", catDisallowed)); - catItems.addAll(new ConfigElement(ConfigHandler.config.getCategory(ConfigHandler.CAT_ITEMS)).getChildElements()); - catCommon.add(new DummyCategoryElement("Items", "client.gui.ModGuiConfig.catItems", catItems)); - //WorldGen category - catWorldGen.addAll(new ConfigElement(ConfigHandler.config.getCategory(ConfigHandler.CAT_WORLDGEN)).getChildElements()); - catCommon.add(new DummyCategoryElement("WorldGen", "client.gui.ModGuiConfig.catWorldGen", catWorldGen)); - //Common category - catCommon.addAll(new ConfigElement(ConfigHandler.config.getCategory(ConfigHandler.CAT_COMMON)).getChildElements()); + private static List getConfigElements() { + List configElements = new ArrayList(); - return catCommon; + List topCategories = Arrays.asList("gameplay", "graphics", "sound", "items", "worldgen"); + for (String categoryName : topCategories) + { + ConfigCategory category = ConfigHandler.config.getCategory(categoryName); + configElements.add(new ConfigElement(category)); + } + return configElements; } } diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java index 32de2dac..faad2498 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java @@ -258,7 +258,7 @@ private void renderBackpack(Float scale) setOffset(lowerTool, -.28F, 0.8F, -.1F); setOffset(upperTool, 0.0f, 0.04f, 0.25f); - if (ConfigHandler.ENABLE_TOOLS_RENDER) + if (ConfigHandler.enableToolsRender) { lowerTool.stack = backpack.getStackInSlot(Constants.lowerTool); upperTool.stack = backpack.getStackInSlot(Constants.upperTool); diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java index 50a74a98..faa5a44e 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java @@ -71,7 +71,7 @@ public void renderItem(ItemRenderType type, ItemStack hose, Object... data) if (fontRenderer != null) { fontRenderer.drawString(mode, 0, 0, 0xFFFFFF); - if (!ConfigHandler.TANKS_OVERLAY) + if (!ConfigHandler.tanksOverlay) { fontRenderer.drawString(amount, 0, 18, 0xFFFFFF); fontRenderer.drawString(name, 0, 24, 0xFFFFFF); diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index cd5ed141..197530d0 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -56,7 +56,7 @@ public static void cycleTool(EntityPlayer player, int direction, int slot) InventoryBackpack backpack = Wearing.getBackpackInv(player, true); ItemStack current = player.getCurrentEquippedItem(); backpack.openInventory(); - if(SlotTool.isValidTool(current) && ConfigHandler.ENABLE_TOOLS) { + if(SlotTool.isValidTool(current) && ConfigHandler.enableToolsCycling) { if (direction < 0) { player.inventory.mainInventory[slot] = backpack.getStackInSlot(Constants.upperTool); backpack.setInventorySlotContentsNoSave(Constants.upperTool, backpack.getStackInSlot(Constants.lowerTool)); @@ -115,7 +115,10 @@ public static void switchHose(EntityPlayer player, boolean action, int direction if (!action) { int mode = ItemHose.getHoseMode(hose); - if (direction > 0) + if (!ConfigHandler.enableHoseDrink) + { + mode = (mode + 1) % 2; + } else if (direction > 0) { mode = (mode + 1) % 3; } else if (direction < 0) @@ -334,7 +337,7 @@ public static void pistonBootsJump(EntityPlayer player) { //TODO add configuration for the playing of the sound effect. //TODO Maybe configurable jump height too, because why not. - if (ConfigHandler.ALLOW_PISTON_SOUND) + if (ConfigHandler.allowSoundPiston) { player.playSound("tile.piston.out", 0.5F, player.getRNG().nextFloat() * 0.25F + 0.6F); } diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 4e51ccb1..5a205776 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -16,68 +16,60 @@ public class ConfigHandler { + //public static final String configVersion = "1.0.0"; public static Configuration config; - public static String CAT_GRAPHICS = "graphics"; - public static String CAT_STATUS = "graphics status"; - public static String CAT_TANKS = "graphics tanks"; - public static String CAT_SOUND = "sound"; - public static String CAT_ITEMS = "items"; - public static String CAT_DISALLOWED = "items disallowed"; - public static String CAT_RECIPES = "items recipes"; - public static String CAT_WORLDGEN = "worldgen"; - public static String CAT_COMMON = "common"; - public static boolean IS_BUILDCRAFT = false; public static boolean IS_BAUBLES = false; public static boolean IS_TINKERS = false; public static boolean IS_THAUM = false; public static boolean IS_TWILIGHT = false; - public static boolean IS_ENVIROMINE = false; + public static boolean IS_ENVIROMINE = false; public static boolean IS_RAILCRAFT = false; - public static boolean ENABLE_TOOLS_RENDER = true; - public static int GUI_TANK_RENDER = 2; - public static boolean HOVERING_TEXT_TANKS = false; - - public static boolean STATUS_OVERLAY = true; - public static boolean STATUS_OVERLAY_LEFT = true; - public static boolean STATUS_OVERLAY_TOP = true; - public static int STATUS_OVERLAY_INDENT_H = 2; - public static int STATUS_OVERLAY_INDENT_V = 2; - - public static boolean TANKS_OVERLAY = true; - public static boolean TANKS_OVERLAY_RIGHT = true; - public static boolean TANKS_OVERLAY_BOTTOM = true; - public static int TANKS_OVERLAY_INDENT_H = 4; - public static int TANKS_OVERLAY_INDENT_V = 2; - - public static boolean ALLOW_COPTER_SOUND = true; - public static boolean ALLOW_JETPACK_SOUND = true; - public static boolean ALLOW_PISTON_SOUND = true; - - public static boolean YOU_SHALL_NOT_PASS = false; - - public static String[] NAME_LOCALIZED; - public static String[] NAME_UNLOCALIZED; - public static String[] NAME_DEFAULT = {}; - //public static String[] DISALLOWED_CLASS; - - public static boolean RECIPE_ADVENTURES_SET = true; - public static boolean RECIPE_CLOCKWORK_CROSSBOW = true; - public static boolean RECIPE_COAL_JETPACK = true; - public static boolean RECIPE_COPTER_PACK = true; - public static boolean RECIPE_PISTON_BOOTS = true; - public static boolean RECIPE_SADDLE = true; - public static boolean RECIPE_MACHETE = true; - - public static boolean BONUS_CHEST_ALLOWED = false; - public static boolean PIGMAN_ALLOWED = false; - - public static boolean BACKPACK_DEATH_PLACE = true; - public static boolean BACKPACK_ABILITIES = true; - public static boolean ENABLE_TOOLS = true; - public static boolean FIX_LEAD = true; + public static boolean backpackDeathPlace = true; + public static boolean backpackAbilities = true; + public static boolean enableToolsCycling = true; + public static boolean enableHoseDrink = true; + public static boolean fixLead = true; + + public static boolean enableToolsRender = true; + public static int typeTankRender = 2; + public static boolean tanksHoveringText = false; + + public static boolean statusOverlay = true; + public static boolean statusOverlayLeft = true; + public static boolean statusOverlayTop = true; + public static int statusOverlayIndentH = 2; + public static int statusOverlayIndentV = 2; + + public static boolean tanksOverlay = true; + public static boolean tanksOverlayRight = true; + public static boolean tanksOverlayBottom = true; + public static int tanksOverlayIndentH = 4; + public static int tanksOverlayIndentV = 2; + + public static boolean allowSoundCopter = true; + public static boolean allowSoundJetpack = true; + public static boolean allowSoundPiston = true; + + public static boolean enableItemFilters = false; + + public static String[] nameLocalized; + public static String[] nameUnlocalized; + public static String[] nameDefault = {}; + //public static String[] classDisallowed; + + public static boolean recipeAdventuresSet = true; + public static boolean recipeClockCrossbow = true; + public static boolean recipeCoalJetpack = true; + public static boolean recipeCopterPack = true; + public static boolean recipePitonBoots = true; + public static boolean recipeSaddle = true; + public static boolean recipeMachete = true; + + public static boolean allowBonusGen = false; + public static boolean allowPigmanGen = false; public static void init(File configFile) { @@ -91,57 +83,57 @@ public static void init(File configFile) @SuppressWarnings("static-access") private static void loadConfiguration() { - - //Graphics - GUI_TANK_RENDER = config.getInt("TankRenderType", CAT_GRAPHICS, 3, 1, 3, "1,2 or 3 for different rendering of fluids in the Backpack GUI"); - ENABLE_TOOLS_RENDER = config.getBoolean("EnableToolsRender", CAT_GRAPHICS, true, "Enable rendering for tools in the backpack tool slots. May cause visual glitches with Gregtech tools"); - HOVERING_TEXT_TANKS = config.getBoolean("HoveringText", CAT_GRAPHICS, false, "Show hovering text on fluid tanks?"); - - //Graphics.Status - STATUS_OVERLAY = config.getBoolean("EnableOverlay", CAT_STATUS, true, "Show player status effects on screen?"); - STATUS_OVERLAY_LEFT = config.getBoolean("StickToLeft", CAT_STATUS, true, "Stick to left? Icons will appears from left to right. If false: stick to right, icons will appears from right to left"); - STATUS_OVERLAY_TOP = config.getBoolean("StickToTop", CAT_STATUS, true, "Stick to top?"); - STATUS_OVERLAY_INDENT_H = config.getInt("IndentHorizontal", CAT_STATUS, 2, 0, 1000, "Horizontal indent from the window border"); - STATUS_OVERLAY_INDENT_V = config.getInt("IndentVertical", CAT_STATUS, 2, 0, 500, "Vertical indent from the window border"); - - //Graphics.Tanks - TANKS_OVERLAY = config.getBoolean("EnableOverlay", CAT_TANKS, true, "Show the different wearable overlays on screen?"); - TANKS_OVERLAY_RIGHT = config.getBoolean("StickToRight", CAT_TANKS, true, "Stick to right?"); - TANKS_OVERLAY_BOTTOM = config.getBoolean("StickToBottom", CAT_TANKS, true, "Stick to bottom?"); - TANKS_OVERLAY_INDENT_H = config.getInt("IndentHorizontal", CAT_TANKS, 4, 0, 1000, "Horizontal indent from the window border"); - TANKS_OVERLAY_INDENT_V = config.getInt("IndentVertical", CAT_TANKS, 2, 0, 500, "Vertical indent from the window border"); - - //Sound - ALLOW_COPTER_SOUND = config.getBoolean("CopterPack", CAT_SOUND, true, "Allow playing the CopterPack sound (Client Only, other players may hear it)"); - ALLOW_JETPACK_SOUND = config.getBoolean("CoalJetpack", CAT_SOUND, true, "Allow playing the CoalJetpack sound (Client Only, other players may hear it)"); - ALLOW_PISTON_SOUND = config.getBoolean("PistonBoots", CAT_SOUND, true, "Allow playing the PistonBoots sound (Client Only, other players may hear it)"); - - //Items - YOU_SHALL_NOT_PASS = config.getBoolean("EnableItemFilters", CAT_ITEMS, false, "FOR TEST ONLY. Enable filters from Disallowed category"); - - //Items.Recipes - RECIPE_ADVENTURES_SET = config.getBoolean("AdventuresSet", CAT_RECIPES, true, "Enable/Disable recipe for Adventure's Hat, Suit and Pants"); - RECIPE_CLOCKWORK_CROSSBOW = config.getBoolean("ClockworkCrossbow", CAT_RECIPES, true, "Enable/Disable Clockwork Crossbow recipe"); - RECIPE_COPTER_PACK = config.getBoolean("CopterPack", CAT_RECIPES, true, "Enable/Disable CopterPack recipe"); - RECIPE_COAL_JETPACK = config.getBoolean("CoalJetpack", CAT_RECIPES, true, "Enable/Disable CoalJetpack recipe"); - RECIPE_PISTON_BOOTS = config.getBoolean("PistonBoots", CAT_RECIPES, true, "Enable/Disable PistonBoots recipe"); - RECIPE_SADDLE = config.getBoolean("Saddle", CAT_RECIPES, true, "Add recipe for saddle?"); - RECIPE_MACHETE = config.getBoolean("Machete", CAT_RECIPES, true, "Enable/Disable Machete recipe"); - - //Items.Disallowed - NAME_LOCALIZED = config.getStringList("ByDisplaedName", CAT_DISALLOWED, NAME_DEFAULT, "FOR TEST ONLY. Disallowed items by dispaled (localized) name. Not case sensitive"); - NAME_UNLOCALIZED = config.getStringList("ByInternalName", CAT_DISALLOWED, NAME_DEFAULT, "FOR TEST ONLY. Disallowed items by internal (unlocalized) name. Not case sensitive"); - - //WorldGen - BONUS_CHEST_ALLOWED = config.getBoolean("BonusBackpack", CAT_WORLDGEN, false, "Include a Standard Adventure Backpack in bonus chest?"); - PIGMAN_ALLOWED = config.getBoolean("PigmanBackpacks", CAT_WORLDGEN, false, "Allow generation of Pigman Backpacks in dungeon loot and villager trades"); - - //Common - BACKPACK_ABILITIES = config.getBoolean("BackpackAbilities", CAT_COMMON, true, "Allow the backpacks to execute their special abilities, or be only cosmetic (Doesn't affect lightning transformation) Must be " + - "disabled in both Client and Server to work properly"); - BACKPACK_DEATH_PLACE = config.getBoolean("BackpackDeathPlace", CAT_COMMON, true,"Place backpacks as a block when you die?"); - ENABLE_TOOLS = config.getBoolean("EnableTools", CAT_COMMON, true, "Enable/Disable tool cycling"); - FIX_LEAD = config.getBoolean("FixVanillaLead", CAT_COMMON, true, "Fix the vanilla Lead? (Checks mobs falling on a leash to not die of fall damage if they're not falling so fast)"); + // Gameplay + backpackAbilities = config.getBoolean("Backpack Abilities", "gameplay", true, "Allow the backpacks to execute their special abilities, or be only cosmetic (Doesn't affect lightning transformation) Must be " + + "disabled in both Client and Server to work properly"); + backpackDeathPlace = config.getBoolean("Backpack Death Place", "gameplay", true,"Place backpacks as a block when you die?"); + fixLead = config.getBoolean("Fix Vanilla Lead", "gameplay", true, "Fix the vanilla Lead? (Checks mobs falling on a leash to not die of fall damage if they're not falling so fast)"); + enableHoseDrink = config.getBoolean("Enable Hose Drink", "gameplay", true, "Enable/Disable hose drink mode"); + enableToolsCycling = config.getBoolean("Enable Tools Cycling", "gameplay", true, "Enable/Disable tool cycling"); + + // Graphics + typeTankRender = config.getInt("Tank Render Type", "graphics", 3, 1, 3, "1,2 or 3 for different rendering of fluids in the Backpack GUI"); + enableToolsRender = config.getBoolean("Enable Tools Render", "graphics", true, "Enable rendering for tools in the backpack tool slots. May cause visual glitches with Gregtech tools"); + tanksHoveringText = config.getBoolean("Hovering Text", "graphics", false, "Show hovering text on fluid tanks?"); + + // Graphics.Status + statusOverlay = config.getBoolean("Enable Overlay", "graphics.status", true, "Show player status effects on screen?"); + statusOverlayLeft = config.getBoolean("Stick To Left", "graphics.status", true, "Stick to left? Icons will appears from left to right. If false: stick to right, icons will appears from right to left"); + statusOverlayTop = config.getBoolean("Stick To Top", "graphics.status", true, "Stick to top?"); + statusOverlayIndentH = config.getInt("Indent Horizontal", "graphics.status", 2, 0, 1000, "Horizontal indent from the window border"); + statusOverlayIndentV = config.getInt("Indent Vertical", "graphics.status", 2, 0, 500, "Vertical indent from the window border"); + + // Graphics.Tanks + tanksOverlay = config.getBoolean("Enable Overlay", "graphics.tanks", true, "Show the different wearable overlays on screen?"); + tanksOverlayRight = config.getBoolean("Stick To Right", "graphics.tanks", true, "Stick to right?"); + tanksOverlayBottom = config.getBoolean("Stick To Bottom", "graphics.tanks", true, "Stick to bottom?"); + tanksOverlayIndentH = config.getInt("Indent Horizontal", "graphics.tanks", 4, -10, 1000, "Horizontal indent from the window border"); + tanksOverlayIndentV = config.getInt("Indent Vertical", "graphics.tanks", 2, 0, 500, "Vertical indent from the window border"); + + // Sound + allowSoundCopter = config.getBoolean("Copter Pack", "sound", true, "Allow playing the CopterPack sound (Client Only, other players may hear it)"); + allowSoundJetpack = config.getBoolean("Coal Jetpack", "sound", true, "Allow playing the CoalJetpack sound (Client Only, other players may hear it)"); + allowSoundPiston = config.getBoolean("Piston Boots", "sound", true, "Allow playing the PistonBoots sound"); + + // Items + enableItemFilters = config.getBoolean("Enable Item Filters", "items", false, "FOR TEST ONLY. Enable filters from Disallowed category"); + + // Items.Recipes + recipeAdventuresSet = config.getBoolean("Adventures Set", "items.recipes", true, "Enable/Disable recipe for Adventure's Hat, Suit and Pants"); + recipeClockCrossbow = config.getBoolean("Clockwork Crossbow", "items.recipes", true, "Enable/Disable Clockwork Crossbow recipe"); + recipeCopterPack = config.getBoolean("Copter Pack", "items.recipes", true, "Enable/Disable CopterPack recipe"); + recipeCoalJetpack = config.getBoolean("Coal Jetpack", "items.recipes", true, "Enable/Disable CoalJetpack recipe"); + recipePitonBoots = config.getBoolean("Piston Boots", "items.recipes", true, "Enable/Disable PistonBoots recipe"); + recipeSaddle = config.getBoolean("Saddle", "items.recipes", true, "Add recipe for saddle?"); + recipeMachete = config.getBoolean("Machete", "items.recipes", true, "Enable/Disable Machete recipe"); + + // Items.Disallowed + nameLocalized = config.getStringList("By Displaed Name", "items.disallowed", nameDefault, "FOR TEST ONLY. Disallowed items by dispaled (localized) name. Not case sensitive"); + nameUnlocalized = config.getStringList("By Internal Name", "items.disallowed", nameDefault, "FOR TEST ONLY. Disallowed items by internal (unlocalized) name. Not case sensitive"); + + // WorldGen + allowBonusGen = config.getBoolean("Bonus Backpack", "worldgen", false, "Include a Standard Adventure Backpack in bonus chest?"); + allowPigmanGen = config.getBoolean("Pigman Backpacks", "worldgen", false, "Allow generation of Pigman Backpacks in dungeon loot and villager trades"); if (config.hasChanged()) { @@ -158,4 +150,9 @@ public void onConfigChangeEvent(ConfigChangedEvent.OnConfigChangedEvent event) } } + /*private static boolean isConfigVersionWrong(Configuration configuration) + { + return !configuration.getLoadedConfigVersion().equals(configuration.getDefinedConfigVersion()); + }*/ + } diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java index de24fb6b..63fa52b0 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java @@ -43,7 +43,7 @@ public class GeneralEventHandler public void eatGoldenApple(PlayerUseItemEvent.Finish event) { EntityPlayer player = event.entityPlayer; - if (ConfigHandler.BACKPACK_ABILITIES) + if (ConfigHandler.backpackAbilities) { if (event.item.getItem() instanceof ItemAppleGold && //((ItemAppleGold) event.item.getItem()).getRarity(event.item) == EnumRarity.epic && @@ -83,7 +83,7 @@ public void eatGoldenApple(PlayerUseItemEvent.Finish event) @SubscribeEvent public void detectBow(ArrowNockEvent event) { - if (!ConfigHandler.BACKPACK_ABILITIES) return; + if (!ConfigHandler.backpackAbilities) return; if (Wearing.isWearingTheRightBackpack(event.entityPlayer, "Skeleton")) { InventoryBackpack backpack = new InventoryBackpack(Wearing.getWearingBackpack(event.entityPlayer)); @@ -98,7 +98,7 @@ public void detectBow(ArrowNockEvent event) @SubscribeEvent public void detectArrow(ArrowLooseEvent event) { - if (!ConfigHandler.BACKPACK_ABILITIES) return; + if (!ConfigHandler.backpackAbilities) return; if (Wearing.isWearingTheRightBackpack(event.entityPlayer, "Skeleton")) { InventoryBackpack backpack = new InventoryBackpack(Wearing.getWearingBackpack(event.entityPlayer)); @@ -125,7 +125,7 @@ public void detectLightning(EntityStruckByLightningEvent event) @SubscribeEvent public void makeHorsesFollowOwner(EntityJoinWorldEvent event) { - if(!ConfigHandler.BACKPACK_ABILITIES)return; + if(!ConfigHandler.backpackAbilities)return; if(event.entity instanceof EntityHorse) { diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index a713b017..743a74ab 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -162,7 +162,7 @@ public void onFall(LivingFallEvent event) { if (event.entity != null) { - if (event.entityLiving instanceof EntityCreature && ConfigHandler.FIX_LEAD) + if (event.entityLiving instanceof EntityCreature && ConfigHandler.fixLead) { EntityCreature creature = (EntityCreature) event.entityLiving; if (creature.getLeashed() && creature.getLeashedToEntity() != null && creature.getLeashedToEntity() instanceof EntityPlayer) @@ -191,7 +191,7 @@ public void onFall(LivingFallEvent event) { event.setCanceled(true); } - if(Wearing.isWearingTheRightBackpack((EntityPlayer)event.entityLiving,"IronGolem") && ConfigHandler.BACKPACK_ABILITIES) + if(Wearing.isWearingTheRightBackpack((EntityPlayer)event.entityLiving,"IronGolem") && ConfigHandler.backpackAbilities) { event.setCanceled(true); } diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java index 2ee1edb8..4fa8cd5c 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java @@ -27,7 +27,7 @@ private static ItemStack bc(int damage) public static void init() { - if(ConfigHandler.RECIPE_SADDLE) + if(ConfigHandler.recipeSaddle) { GameRegistry.addRecipe(new ItemStack(Items.saddle), "LLL", @@ -39,7 +39,7 @@ public static void init() } //Copter Pack - if(ConfigHandler.RECIPE_COPTER_PACK) + if(ConfigHandler.recipeCopterPack) { GameRegistry.addRecipe(new ItemStack(ModItems.copterPack), "WBW", @@ -56,7 +56,7 @@ public static void init() } //CoalJetpack - if(ConfigHandler.RECIPE_COAL_JETPACK) + if(ConfigHandler.recipeCoalJetpack) { GameRegistry.addRecipe(new ItemStack(ModItems.CoalJetpack), "SWT", @@ -128,7 +128,7 @@ public static void init() 'L', Blocks.lever ); - if (ConfigHandler.RECIPE_MACHETE) + if (ConfigHandler.recipeMachete) { //Machete Handle GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 4), @@ -154,7 +154,7 @@ public static void init() } //Clockwork Crossbow - if (ConfigHandler.RECIPE_CLOCKWORK_CROSSBOW) + if (ConfigHandler.recipeClockCrossbow) { GameRegistry.addRecipe(new ItemStack(ModItems.cwxbow), " ", @@ -167,7 +167,7 @@ public static void init() ); } - if (ConfigHandler.RECIPE_ADVENTURES_SET) + if (ConfigHandler.recipeAdventuresSet) { //Adventure Hat GameRegistry.addRecipe(new ItemStack(ModItems.adventureHat), @@ -201,7 +201,7 @@ public static void init() } //Piston Boots - if (ConfigHandler.RECIPE_PISTON_BOOTS) + if (ConfigHandler.recipePitonBoots) { GameRegistry.addRecipe(new ItemStack(ModItems.pistonBoots), " B ", diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java b/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java index 795519c4..511acdfa 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java @@ -36,7 +36,7 @@ public static void init() ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i); ChestGenHooks.addItem(ChestGenHooks.DUNGEON_CHEST, new WeightedRandomChestContent(backpack, 1, 1, 2)); ChestGenHooks.addItem(ChestGenHooks.MINESHAFT_CORRIDOR, new WeightedRandomChestContent(backpack, 1, 1, 12)); - } else if (BackpackNames.backpackNames[i].equals("Pigman") && ConfigHandler.PIGMAN_ALLOWED) + } else if (BackpackNames.backpackNames[i].equals("Pigman") && ConfigHandler.allowPigmanGen) { ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i); ChestGenHooks.addItem(ChestGenHooks.PYRAMID_DESERT_CHEST, new WeightedRandomChestContent(backpack, 1, 1, 12)); @@ -47,7 +47,7 @@ public static void init() VillagerRegistry.instance().registerVillageTradeHandler(1, new ModWorldGen.TradeHandler(backpack)); VillagerRegistry.instance().registerVillageTradeHandler(2, new ModWorldGen.TradeHandler(backpack)); VillagerRegistry.instance().registerVillageTradeHandler(3, new ModWorldGen.TradeHandler(backpack)); - } else if (BackpackNames.backpackNames[i].equals("Standard") && ConfigHandler.BONUS_CHEST_ALLOWED) + } else if (BackpackNames.backpackNames[i].equals("Standard") && ConfigHandler.allowBonusGen) { ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i); ChestGenHooks.addItem(ChestGenHooks.BONUS_CHEST, new WeightedRandomChestContent(backpack, 0, 1, 5)); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java index c680a484..deac7df3 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java @@ -12,7 +12,7 @@ public class SlotBackpack extends SlotAdventureBackpack { - public static String[] forbiddenItemClasses = + private static final String[] forbiddenItemClasses = { // Adventure Backpack 2 "com.darkona.adventurebackpack.item.ItemAdventureBackpack", @@ -33,11 +33,6 @@ public class SlotBackpack extends SlotAdventureBackpack "mrtjp.projectred.exploration.ItemBackpack" }; - /*private static String[] forbiddenItemNames = - { - // "backpack", "blahblahblah" - };*/ - public SlotBackpack(IInventoryAdventureBackpack inventory, int id, int x, int y) { super(inventory, id, x, y); @@ -45,20 +40,20 @@ public SlotBackpack(IInventoryAdventureBackpack inventory, int id, int x, int y) public static boolean valid(ItemStack stack) { - if (stack == null) {return false;} + if (stack == null) return false; for (String itemClass : forbiddenItemClasses) { if (stack.getItem().getClass().getName().equals(itemClass)) return false; } - if (ConfigHandler.YOU_SHALL_NOT_PASS) + if (ConfigHandler.enableItemFilters) { - for (String itemName : ConfigHandler.NAME_LOCALIZED) + for (String itemName : ConfigHandler.nameLocalized) { if (stack.getDisplayName().toLowerCase().contains(itemName.toLowerCase())) return false; } - for (String itemName : ConfigHandler.NAME_UNLOCALIZED) + for (String itemName : ConfigHandler.nameUnlocalized) { if (stack.getItem().getUnlocalizedName().toLowerCase().contains(itemName.toLowerCase())) return false; } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index f9e0f9cb..86253820 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -282,7 +282,7 @@ public void getSubItems(Item item, CreativeTabs par2CreativeTabs, List subItems) public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) { - if (!ConfigHandler.BACKPACK_ABILITIES) return; + if (!ConfigHandler.backpackAbilities) return; if (world == null || player == null || stack == null) return; if (BackpackAbilities.hasAbility(BackpackNames.getBackpackColorName(stack))) @@ -301,7 +301,7 @@ public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) player.worldObj.createExplosion(player, player.posX, player.posY, player.posZ, 4.0F, false); } - if(ConfigHandler.BACKPACK_DEATH_PLACE) + if(ConfigHandler.backpackDeathPlace) { if (!tryPlace(world, player, stack)) { diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java index 09c6b8d4..6f5aab87 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java @@ -102,7 +102,7 @@ public void initRenderers() rendererItemAdventureHat = new RendererItemAdventureHat(); MinecraftForgeClient.registerItemRenderer(ModItems.adventureHat, rendererItemAdventureHat); - if(!ConfigHandler.TANKS_OVERLAY) + if(!ConfigHandler.tanksOverlay) { rendererHose = new RendererHose(); MinecraftForgeClient.registerItemRenderer(ModItems.hose, rendererHose); diff --git a/src/main/resources/assets/adventurebackpack/lang/en_US.lang b/src/main/resources/assets/adventurebackpack/lang/en_US.lang index 5d4623ec..4b954ad7 100644 --- a/src/main/resources/assets/adventurebackpack/lang/en_US.lang +++ b/src/main/resources/assets/adventurebackpack/lang/en_US.lang @@ -74,16 +74,3 @@ adventurebackpack:messages.copterpack.off=CopterPack: Off. adventurebackpack:messages.jetpack.on=Coal Jetpack: On. adventurebackpack:messages.jetpack.off=Coal Jetpack: Off. adventurebackpack:messages.crossbow.outofammo=Clockwork Crossbow: Out of ammo. - -## Config -client.gui.ModGuiConfig.catGraphics.tooltip=Graphics Options -client.gui.ModGuiConfig.catStatus.tooltip=Status Overlay Options -client.gui.ModGuiConfig.catTanks.tooltip=Backpack Overlay Options -client.gui.ModGuiConfig.catSound.tooltip=Sound Options -client.gui.ModGuiConfig.catItems.tooltip=Items Options -client.gui.ModGuiConfig.catDisallowed.tooltip=Disallowed Items Options -client.gui.ModGuiConfig.catRecipes.tooltip=Item Recipes Options -client.gui.ModGuiConfig.catWorldGen.tooltip=WorldGen Options -client.gui.ModGuiConfig.catCommon.tooltip=Common Options - - From 408cccb19e38220666d3307657233a7124154fd0 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 23 Nov 2016 13:13:47 +0700 Subject: [PATCH 309/462] typo --- .../com/darkona/adventurebackpack/config/ConfigHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 5a205776..886f62d6 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -128,7 +128,7 @@ private static void loadConfiguration() recipeMachete = config.getBoolean("Machete", "items.recipes", true, "Enable/Disable Machete recipe"); // Items.Disallowed - nameLocalized = config.getStringList("By Displaed Name", "items.disallowed", nameDefault, "FOR TEST ONLY. Disallowed items by dispaled (localized) name. Not case sensitive"); + nameLocalized = config.getStringList("By Displayed Name", "items.disallowed", nameDefault, "FOR TEST ONLY. Disallowed items by displayed (localized) name. Not case sensitive"); nameUnlocalized = config.getStringList("By Internal Name", "items.disallowed", nameDefault, "FOR TEST ONLY. Disallowed items by internal (unlocalized) name. Not case sensitive"); // WorldGen From 97e28530d409e66986a7d853fc74d35c5a1e70a3 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 23 Nov 2016 23:13:00 +0700 Subject: [PATCH 310/462] New Config implementation, finishing touches Finished item filters. It should work now. Added key for switch tool cycling mode - BackpackToggleKey when wearing backpack. --- .../client/gui/ModGuiConfig.java | 4 ++-- .../adventurebackpack/common/ServerActions.java | 4 +++- .../adventurebackpack/config/ConfigHandler.java | 13 ++++++++----- .../handlers/KeybindHandler.java | 16 ++++++++++++++++ .../inventory/SlotBackpack.java | 13 +++++++++++-- .../assets/adventurebackpack/lang/en_US.lang | 2 ++ 6 files changed, 42 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java b/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java index 1dee6e75..60853fa0 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java @@ -30,8 +30,8 @@ private static List getConfigElements() { List topCategories = Arrays.asList("gameplay", "graphics", "sound", "items", "worldgen"); for (String categoryName : topCategories) { - ConfigCategory category = ConfigHandler.config.getCategory(categoryName); - configElements.add(new ConfigElement(category)); + ConfigCategory category = ConfigHandler.config.getCategory(categoryName); + configElements.add(new ConfigElement(category)); } return configElements; } diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index 197530d0..86f45a7e 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -5,6 +5,7 @@ import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; +import com.darkona.adventurebackpack.handlers.KeybindHandler; import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.inventory.InventoryBackpack; import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; @@ -56,7 +57,8 @@ public static void cycleTool(EntityPlayer player, int direction, int slot) InventoryBackpack backpack = Wearing.getBackpackInv(player, true); ItemStack current = player.getCurrentEquippedItem(); backpack.openInventory(); - if(SlotTool.isValidTool(current) && ConfigHandler.enableToolsCycling) { + if(SlotTool.isValidTool(current) && KeybindHandler.currentToolCycling) + { if (direction < 0) { player.inventory.mainInventory[slot] = backpack.getStackInSlot(Constants.upperTool); backpack.setInventorySlotContentsNoSave(Constants.upperTool, backpack.getStackInSlot(Constants.lowerTool)); diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 886f62d6..120ddcdd 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -24,7 +24,7 @@ public class ConfigHandler public static boolean IS_TINKERS = false; public static boolean IS_THAUM = false; public static boolean IS_TWILIGHT = false; - public static boolean IS_ENVIROMINE = false; + public static boolean IS_ENVIROMINE = false; public static boolean IS_RAILCRAFT = false; public static boolean backpackDeathPlace = true; @@ -56,9 +56,10 @@ public class ConfigHandler public static boolean enableItemFilters = false; public static String[] nameLocalized; + public static String[] nameInternalID; + public static String[] nameInternalIDs; public static String[] nameUnlocalized; public static String[] nameDefault = {}; - //public static String[] classDisallowed; public static boolean recipeAdventuresSet = true; public static boolean recipeClockCrossbow = true; @@ -116,7 +117,7 @@ private static void loadConfiguration() allowSoundPiston = config.getBoolean("Piston Boots", "sound", true, "Allow playing the PistonBoots sound"); // Items - enableItemFilters = config.getBoolean("Enable Item Filters", "items", false, "FOR TEST ONLY. Enable filters from Disallowed category"); + enableItemFilters = config.getBoolean("Enable Item Filters", "items", true, "Enable filters from Disallow category"); // Items.Recipes recipeAdventuresSet = config.getBoolean("Adventures Set", "items.recipes", true, "Enable/Disable recipe for Adventure's Hat, Suit and Pants"); @@ -128,8 +129,10 @@ private static void loadConfiguration() recipeMachete = config.getBoolean("Machete", "items.recipes", true, "Enable/Disable Machete recipe"); // Items.Disallowed - nameLocalized = config.getStringList("By Displayed Name", "items.disallowed", nameDefault, "FOR TEST ONLY. Disallowed items by displayed (localized) name. Not case sensitive"); - nameUnlocalized = config.getStringList("By Internal Name", "items.disallowed", nameDefault, "FOR TEST ONLY. Disallowed items by internal (unlocalized) name. Not case sensitive"); + nameLocalized = config.getStringList("By Displayed Name", "items.disallowed", nameDefault, "Disallow items by displayed (localized) name. Not case sensitive. Worst option, use only when there is no choice. Example: Dirt"); + nameInternalID = config.getStringList("By Internal ID", "items.disallowed", nameDefault, "Disallow items by internal ID. Case sensitive. Example: minecraft:dirt"); + nameInternalIDs = config.getStringList("By Internal IDs", "items.disallowed", nameDefault, "Disallow items by internal ID. Case sensitive. Will be disallowed all items containing that word in their IDs. Use with caution. Example: minecraft:di"); + nameUnlocalized = config.getStringList("By Internal Name", "items.disallowed", nameDefault, "Disallow items by internal (unlocalized) name. Not case sensitive. Example: tile.dirt"); // WorldGen allowBonusGen = config.getBoolean("Bonus Backpack", "worldgen", false, "Include a Standard Adventure Backpack in bonus chest?"); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java index 8483a5e8..34f75eac 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java @@ -1,6 +1,7 @@ package com.darkona.adventurebackpack.handlers; import com.darkona.adventurebackpack.common.ServerActions; +import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.config.Keybindings; import com.darkona.adventurebackpack.entity.EntityFriendlySpider; import com.darkona.adventurebackpack.init.ModNetwork; @@ -18,12 +19,14 @@ import cpw.mods.fml.common.gameevent.InputEvent; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ChatComponentTranslation; /** * Created by Darkona on 11/10/2014. */ public class KeybindHandler { + public static boolean currentToolCycling = ConfigHandler.enableToolsCycling; private static Key getPressedKeyBinding() { @@ -88,6 +91,19 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(0, (player).inventory.currentItem, CycleToolPacket.TOGGLE_HOSE_TANK)); ServerActions.switchHose(player, ServerActions.HOSE_TOGGLE, 0, (player).inventory.currentItem); } + if (Wearing.isWearingBackpack(player)) + { + currentToolCycling=!currentToolCycling; + if (player.worldObj.isRemote) + { + if (currentToolCycling !=true) + { + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.cycling.off")); + } else { + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.cycling.on")); + } + } + } if (Wearing.isWearingCopter(player)) { if (!player.isSneaking()) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java index deac7df3..ac6aa443 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java @@ -4,6 +4,7 @@ import com.darkona.adventurebackpack.config.ConfigHandler; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; /** @@ -51,11 +52,19 @@ public static boolean valid(ItemStack stack) { for (String itemName : ConfigHandler.nameLocalized) { - if (stack.getDisplayName().toLowerCase().contains(itemName.toLowerCase())) return false; + if (stack.getDisplayName().equalsIgnoreCase(itemName)) return false; + } + for (String itemName : ConfigHandler.nameInternalID) + { + if (Item.itemRegistry.getNameForObject(stack.getItem()).equals(itemName)) return false; + } + for (String itemName : ConfigHandler.nameInternalIDs) + { + if (Item.itemRegistry.getNameForObject(stack.getItem()).contains(itemName)) return false; } for (String itemName : ConfigHandler.nameUnlocalized) { - if (stack.getItem().getUnlocalizedName().toLowerCase().contains(itemName.toLowerCase())) return false; + if (stack.getItem().getUnlocalizedName().equalsIgnoreCase(itemName)) return false; } } return true; diff --git a/src/main/resources/assets/adventurebackpack/lang/en_US.lang b/src/main/resources/assets/adventurebackpack/lang/en_US.lang index 4b954ad7..e028a2cb 100644 --- a/src/main/resources/assets/adventurebackpack/lang/en_US.lang +++ b/src/main/resources/assets/adventurebackpack/lang/en_US.lang @@ -73,4 +73,6 @@ adventurebackpack:messages.copterpack.cantwater=CopterPack: Can't function in wa adventurebackpack:messages.copterpack.off=CopterPack: Off. adventurebackpack:messages.jetpack.on=Coal Jetpack: On. adventurebackpack:messages.jetpack.off=Coal Jetpack: Off. +adventurebackpack:messages.cycling.on=Tool Cycling: On. +adventurebackpack:messages.cycling.off=Tool Cycling: Off. adventurebackpack:messages.crossbow.outofammo=Clockwork Crossbow: Out of ammo. From 965948193006b435d680ba807fce9794be94c088 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 24 Nov 2016 21:35:00 +0700 Subject: [PATCH 311/462] Fix continer logic for respect item filters Added check for valid Gregtech tools for tool slot --- .../inventory/ContainerBackpack.java | 16 +++--- .../inventory/SlotBackpack.java | 27 +++++----- .../adventurebackpack/inventory/SlotTool.java | 51 +++++++++++-------- 3 files changed, 53 insertions(+), 41 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index a84cd19b..76c090b9 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -2,11 +2,15 @@ import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; -import com.darkona.adventurebackpack.item.ItemAdventureBackpack; + import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.*; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.InventoryCraftResult; +import net.minecraft.inventory.InventoryCrafting; +import net.minecraft.inventory.Slot; +import net.minecraft.inventory.SlotCrafting; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; @@ -311,7 +315,7 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) { if (!mergeItemStack(stack, TOOL_START, TOOL_END + 1, false)) { - if (!mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false)) + if (SlotBackpack.isValidItem(stack) && (!mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false))) { return null; } @@ -322,13 +326,13 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) { if (!mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false)) { - if (!mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false)) + if (SlotBackpack.isValidItem(stack) && (!mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false))) { return null; } } } - } else if (SlotBackpack.valid(stack)) + } else if (SlotBackpack.isValidItem(stack)) { if (!mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false)) { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java index ac6aa443..a0b6b65e 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java @@ -13,7 +13,7 @@ public class SlotBackpack extends SlotAdventureBackpack { - private static final String[] forbiddenItemClasses = + private static final String[] FORBIDDEN_CLASSES = { // Adventure Backpack 2 "com.darkona.adventurebackpack.item.ItemAdventureBackpack", @@ -39,32 +39,33 @@ public SlotBackpack(IInventoryAdventureBackpack inventory, int id, int x, int y) super(inventory, id, x, y); } - public static boolean valid(ItemStack stack) + public static boolean isValidItem(ItemStack stack) { if (stack == null) return false; + Item itemCurrent = stack.getItem(); - for (String itemClass : forbiddenItemClasses) + for (String classDisallowed : FORBIDDEN_CLASSES) { - if (stack.getItem().getClass().getName().equals(itemClass)) return false; + if (itemCurrent.getClass().getName().equals(classDisallowed)) return false; } if (ConfigHandler.enableItemFilters) { - for (String itemName : ConfigHandler.nameLocalized) + for (String itemDisallowed : ConfigHandler.nameLocalized) { - if (stack.getDisplayName().equalsIgnoreCase(itemName)) return false; + if (stack.getDisplayName().equalsIgnoreCase(itemDisallowed)) return false; } - for (String itemName : ConfigHandler.nameInternalID) + for (String itemDisallowed : ConfigHandler.nameInternalID) { - if (Item.itemRegistry.getNameForObject(stack.getItem()).equals(itemName)) return false; + if (Item.itemRegistry.getNameForObject(itemCurrent).equals(itemDisallowed)) return false; } - for (String itemName : ConfigHandler.nameInternalIDs) + for (String itemDisallowed : ConfigHandler.nameInternalIDs) { - if (Item.itemRegistry.getNameForObject(stack.getItem()).contains(itemName)) return false; + if (Item.itemRegistry.getNameForObject(itemCurrent).contains(itemDisallowed)) return false; } - for (String itemName : ConfigHandler.nameUnlocalized) + for (String itemDisallowed : ConfigHandler.nameUnlocalized) { - if (stack.getItem().getUnlocalizedName().equalsIgnoreCase(itemName)) return false; + if (itemCurrent.getUnlocalizedName().equalsIgnoreCase(itemDisallowed)) return false; } } return true; @@ -73,7 +74,7 @@ public static boolean valid(ItemStack stack) @Override public boolean isItemValid(ItemStack stack) { - return valid(stack); + return isValidItem(stack); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java index 8adda8f1..51ff042d 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java @@ -2,9 +2,15 @@ import com.darkona.adventurebackpack.item.ItemAdventureBackpack; import com.darkona.adventurebackpack.item.ItemHose; + import net.minecraft.inventory.IInventory; -import net.minecraft.item.*; -import com.darkona.adventurebackpack.config.ConfigHandler; +import net.minecraft.item.Item; +import net.minecraft.item.ItemFishingRod; +import net.minecraft.item.ItemFlintAndSteel; +import net.minecraft.item.ItemHoe; +import net.minecraft.item.ItemShears; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemTool; /** * Created on 12/10/2014 @@ -24,19 +30,16 @@ public boolean isItemValid(ItemStack stack) return isValidTool(stack); } - public static boolean isValidTool(ItemStack stack) - { - - boolean valid = false; + private static final String[] VALID_TOOL_NAMES = { + "wrench", "hammer", "axe", "shovel", "grafter", "scoop", "crowbar", "mattock", "drill", //"hatchet","excavator","chisel" + }; - String[] validToolNames = { - "wrench", "hammer", "axe", "shovel", "grafter", "scoop", "crowbar", "mattock", "drill",/*"hatchet","excavator","chisel"*/ - }; - - String[] invalidToolNames = { - "bucket", "sword", "dagger", "sabre", "rapier", "shield", "cutlass", "bow", "whip", "disassembler", "robit" - }; + private static final String[] INVALID_TOOL_NAMES = { + "bucket", "sword", "dagger", "sabre", "rapier", "shield", "cutlass", "bow", "whip", "disassembler", "robit" + }; + public static boolean isValidTool(ItemStack stack) + { if (stack != null && stack.getMaxStackSize() == 1) { Item item = stack.getItem(); @@ -54,18 +57,26 @@ public static boolean isValidTool(ItemStack stack) return false; } + //GregTech + if (name.equals("gt.metatool.01")) + { + //0 = sword, 170 = turbines + if ((stack.getItemDamage() == 0) || (stack.getItemDamage() > 169)) return false; + return true; + } + // Just for extra compatibility and/or security and/or less annoyance - for (String toolName : validToolNames) + for (String toolName : VALID_TOOL_NAMES) { @SuppressWarnings("unused") - String a = toolName; + String a = toolName; if (name.contains(toolName)) return true; } - for (String toolName : invalidToolNames) + for (String toolName : INVALID_TOOL_NAMES) { @SuppressWarnings("unused") - String a = toolName; + String a = toolName; if (name.contains(toolName)) return false; } @@ -112,11 +123,7 @@ public static boolean isValidTool(ItemStack stack) { // oops.printStackTrace(); } - } - - return valid; + return false; } - - } From 470fc5b0fc1a5d5d676712a35461474178d115ce Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Fri, 25 Nov 2016 16:25:29 +0700 Subject: [PATCH 312/462] Fix keys --- .../com/darkona/adventurebackpack/handlers/KeybindHandler.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java index 34f75eac..76ff2af1 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java @@ -90,8 +90,7 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) { ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(0, (player).inventory.currentItem, CycleToolPacket.TOGGLE_HOSE_TANK)); ServerActions.switchHose(player, ServerActions.HOSE_TOGGLE, 0, (player).inventory.currentItem); - } - if (Wearing.isWearingBackpack(player)) + } else if (Wearing.isWearingBackpack(player)) { currentToolCycling=!currentToolCycling; if (player.worldObj.isRemote) From f254b0cd016636793cace36378e8116d08a5c06d Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Fri, 25 Nov 2016 20:30:19 +0700 Subject: [PATCH 313/462] Container logic for fluid slots also some minor thing --- .../handlers/KeybindHandler.java | 6 +- .../inventory/ContainerBackpack.java | 67 +++++++++++++++++-- .../inventory/ContainerCopter.java | 2 +- .../inventory/ContainerJetpack.java | 4 +- .../inventory/InventoryActions.java | 4 +- .../inventory/InventoryCoalJetpack.java | 2 +- .../inventory/SlotFluid.java | 55 ++++++++++----- .../adventurebackpack/inventory/SlotFuel.java | 2 +- 8 files changed, 114 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java index 76ff2af1..3cbf2458 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java @@ -95,11 +95,11 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) currentToolCycling=!currentToolCycling; if (player.worldObj.isRemote) { - if (currentToolCycling !=true) + if (currentToolCycling) { - player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.cycling.off")); - } else { player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.cycling.on")); + } else { + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.cycling.off")); } } } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 76c090b9..10adeef1 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -13,6 +13,7 @@ import net.minecraft.inventory.SlotCrafting; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; +import net.minecraftforge.fluids.FluidTank; /** * Created on 12/10/2014 @@ -320,9 +321,66 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) return null; } } - } else if (SlotFluid.valid(stack) && SlotFluid.isValidTool(stack)) - { - if (!mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false)) + } else if (SlotFluid.isValidItem(stack) && SlotFluid.isValidTool(stack)) { + + FluidTank leftTank = inventory.getLeftTank(); + FluidTank rightTank = inventory.getRightTank(); + int maxAmount = leftTank.getCapacity(); + int leftAmount = leftTank.getFluidAmount(); + int rightAmount = rightTank.getFluidAmount(); + String leftFluidName = SlotFluid.getFluidName(leftTank); + String rightFluidName = SlotFluid.getFluidName(rightTank); + + boolean containerFilled = !SlotFluid.isEmpty(stack); + int containerCapacity = SlotFluid.getCapacity(stack); + String containerFluidName = SlotFluid.getFluidName(stack); + + if (containerFilled) + { + if (leftAmount == 0) + { + if ((rightAmount > 0) && (rightAmount + containerCapacity <= maxAmount) && (rightFluidName.equals(containerFluidName))) + { + mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false); + } + else + { + mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false); + } + } + else if ((leftAmount + containerCapacity <= maxAmount) && (leftFluidName.equals(containerFluidName))) + { + mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false); + } + else if ((rightAmount == 0) || (rightAmount + containerCapacity <= maxAmount) && (rightFluidName.equals(containerFluidName))) + { + mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false); + } + else if (SlotBackpack.isValidItem(stack)); + { + mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false); + } + } + else if (!containerFilled) + { + if (leftAmount == 0) + { + if (rightAmount != 0) + { + mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false); + } + else if (SlotBackpack.isValidItem(stack)); + { + mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false); + } + } + else + { + mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false); + } + } + + /*if (!mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false)) { if (!mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false)) { @@ -331,7 +389,8 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) return null; } } - } + }*/ + } else if (SlotBackpack.isValidItem(stack)) { if (!mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false)) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java index ec055ab7..7fb8335b 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java @@ -124,7 +124,7 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) } if (i < 36) { - if (SlotFluid.valid(stack) && SlotFluid.isValidTool(stack)) + if (SlotFluid.isValidItem(stack) && SlotFluid.isValidTool(stack)) { int COPTER_INV_START = PLAYER_INV_END + 1; if (!mergeItemStack(stack, COPTER_INV_START, COPTER_INV_START + 1, false)) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java index 3b2edf80..883b4b18 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java @@ -128,7 +128,7 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) } if (i < 36) { - if (SlotFluid.valid(stack) && SlotFluid.isValidTool(stack)) + if (SlotFluid.isValidItem(stack) && SlotFluid.isValidTool(stack)) { int JETPACK_INV_START = PLAYER_INV_END + 1; if (!mergeItemStack(stack, JETPACK_INV_START, JETPACK_INV_START + 1, false)) @@ -136,7 +136,7 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) } } - else if (inventory.isFuel(stack) && !SlotFluid.valid(stack)) + else if (inventory.isFuel(stack) && !SlotFluid.isValidItem(stack)) { int JETPACK_FUEL_START = PLAYER_INV_END + 3; if (inventory.isFuel(stack) && !mergeItemStack(stack, JETPACK_FUEL_START, JETPACK_FUEL_START + 1, false)) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java index e4884903..78e2b29c 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java @@ -3,6 +3,7 @@ import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; import com.darkona.adventurebackpack.util.FluidUtils; + import net.minecraft.block.Block; import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; @@ -33,13 +34,14 @@ public class InventoryActions */ public static boolean transferContainerTank(IInventoryTanks inventory, FluidTank tank, int slotIn) { - ItemStack stackIn = inventory.getStackInSlot(slotIn); + ItemStack stackIn = inventory.getStackInSlot(slotIn); if (tank == null || stackIn == null) return false; //Set slot out for whatever number the output slot should be. int slotOut = slotIn + 1; //CONTAINER ===========> TANK + //if (!SlotFluid.isEmpty(stackIn)) if (FluidContainerRegistry.isFilledContainer(stackIn)) { //See if the tank can accept moar fluid. diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index 6a9a3ed1..9b7ce94e 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -349,7 +349,7 @@ public void closeInventory() @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { - if(slot == BUCKET_IN_SLOT)return SlotFluid.valid(stack) && FluidUtils.isContainerForFluid(stack, FluidRegistry.WATER); + if(slot == BUCKET_IN_SLOT)return SlotFluid.isValidItem(stack) && FluidUtils.isContainerForFluid(stack, FluidRegistry.WATER); if(slot == FUEL_SLOT)return TileEntityFurnace.isItemFuel(stack); return false; } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java index deb1653d..5bf7edd2 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java @@ -5,6 +5,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidTank; /** * Created on 12/10/2014 @@ -15,18 +16,50 @@ */ public class SlotFluid extends SlotAdventureBackpack { + private static final String[] VALID_TOOL_NAMES = { + "bucket" + + }; + + private static final String[] INVALID_TOOL_NAMES = { + "cell" + }; + + public SlotFluid(IInventory inventory, int id, int x, int y) { super(inventory, id, x, y); } - public static boolean valid(ItemStack stack) + public static boolean isEmpty(ItemStack stack) { - return ((stack != null) && FluidContainerRegistry.isContainer(stack)); + return ((stack != null) && FluidContainerRegistry.isEmptyContainer(stack)); } - public static boolean isEmpty(ItemStack stack) + public static String getFluidName(ItemStack stack) { - return ((stack != null) && FluidContainerRegistry.isEmptyContainer(stack)); + if ((stack == null) || (isEmpty(stack))) return ""; + return FluidContainerRegistry.getFluidForFilledItem(stack).getUnlocalizedName(); + } + + public static String getFluidName(FluidTank stack) + { + if ((stack != null) && (stack.getFluidAmount() != 0)) + { + return stack.getFluid().getUnlocalizedName(); + } + return ""; + } + + public static int getCapacity(ItemStack stack) + { + return FluidContainerRegistry.getContainerCapacity(stack); + } + + + + public static boolean isValidItem(ItemStack stack) + { + return ((stack != null) && FluidContainerRegistry.isContainer(stack)); } @Override @@ -37,33 +70,25 @@ public boolean isItemValid(ItemStack stack) public static boolean isValidTool(ItemStack stack) { - boolean valid = false; - String[] validToolNames = { "bucket" }; - - String[] invalidToolNames = { "cell" }; if (stack != null && stack.getMaxStackSize() <= 16) { Item item = stack.getItem(); String name = item.getUnlocalizedName().toLowerCase(); - for (String toolName : validToolNames) + for (String toolName : VALID_TOOL_NAMES) { - @SuppressWarnings("unused") - String a = toolName; if (name.contains(toolName)) return true; } - for (String toolName : invalidToolNames) + for (String toolName : INVALID_TOOL_NAMES) { - @SuppressWarnings("unused") - String a = toolName; if (name.contains(toolName)) return false; } } - return valid; + return false; } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java index 50f3c2f2..933b6d58 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java @@ -19,6 +19,6 @@ public SlotFuel(IInventory inventory, int id, int x, int y) @Override public boolean isItemValid(ItemStack stack) { - return (stack != null) && TileEntityFurnace.isItemFuel(stack) && !SlotFluid.valid(stack); //fuel slot accept only solid fuel + return (stack != null) && TileEntityFurnace.isItemFuel(stack) && !SlotFluid.isValidItem(stack); //fuel slot accept only solid fuel } } From 763a042a90d3151f99d030c074e3c6a64eeb8461 Mon Sep 17 00:00:00 2001 From: runescapejon Date: Sat, 26 Nov 2016 16:23:10 -0500 Subject: [PATCH 314/462] Update build.gradle --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 832c628d..7aa5f268 100644 --- a/build.gradle +++ b/build.gradle @@ -25,7 +25,7 @@ buildscript { apply plugin: 'forge' -version = "1.7.10-0.9fbeta5" +version = "1.7.10-0.9fbeta9" group = "com.darkona.adventurebackpack" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "adventurebackpack" From 31be3aac48ccb8a171f130fc4841dfc6642ad046 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 28 Nov 2016 05:21:48 +0700 Subject: [PATCH 315/462] Quick fix for tool cycling --- .../com/darkona/adventurebackpack/common/ServerActions.java | 3 +-- .../darkona/adventurebackpack/handlers/KeybindHandler.java | 5 ++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index 86f45a7e..a0bdd168 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -5,7 +5,6 @@ import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; -import com.darkona.adventurebackpack.handlers.KeybindHandler; import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.inventory.InventoryBackpack; import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; @@ -57,7 +56,7 @@ public static void cycleTool(EntityPlayer player, int direction, int slot) InventoryBackpack backpack = Wearing.getBackpackInv(player, true); ItemStack current = player.getCurrentEquippedItem(); backpack.openInventory(); - if(SlotTool.isValidTool(current) && KeybindHandler.currentToolCycling) + if(SlotTool.isValidTool(current) && ConfigHandler.enableToolsCycling) { if (direction < 0) { player.inventory.mainInventory[slot] = backpack.getStackInSlot(Constants.upperTool); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java index 3cbf2458..8b38e6a1 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java @@ -19,7 +19,6 @@ import cpw.mods.fml.common.gameevent.InputEvent; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.ChatComponentTranslation; /** * Created by Darkona on 11/10/2014. @@ -90,7 +89,7 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) { ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(0, (player).inventory.currentItem, CycleToolPacket.TOGGLE_HOSE_TANK)); ServerActions.switchHose(player, ServerActions.HOSE_TOGGLE, 0, (player).inventory.currentItem); - } else if (Wearing.isWearingBackpack(player)) + } /*else if (Wearing.isWearingBackpack(player)) { currentToolCycling=!currentToolCycling; if (player.worldObj.isRemote) @@ -102,7 +101,7 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.cycling.off")); } } - } + }*/ if (Wearing.isWearingCopter(player)) { if (!player.isSneaking()) From 0be71f8208b8ecca15b14f0fc06440ac8b60eb8d Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 29 Nov 2016 05:01:14 +0700 Subject: [PATCH 316/462] Fixed backpack placement --- .../inventory/ContainerBackpack.java | 4 ++-- .../inventory/InventoryActions.java | 7 ++++--- .../adventurebackpack/inventory/SlotFluid.java | 7 ++++--- .../item/ItemAdventureBackpack.java | 7 ++++--- .../darkona/adventurebackpack/util/Utils.java | 18 ++++++++++++++---- 5 files changed, 28 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 10adeef1..835a2832 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -321,8 +321,8 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) return null; } } - } else if (SlotFluid.isValidItem(stack) && SlotFluid.isValidTool(stack)) { - + } else if (SlotFluid.isValidItem(stack) && SlotFluid.isValidTool(stack)) + { FluidTank leftTank = inventory.getLeftTank(); FluidTank rightTank = inventory.getRightTank(); int maxAmount = leftTank.getCapacity(); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java index 78e2b29c..7fece460 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java @@ -62,6 +62,7 @@ public static boolean transferContainerTank(IInventoryTanks inventory, FluidTank //inventory.dirtyInventory(); return true; } else if (inventory.getStackInSlot(slotOut).getItem() == stackOut.getItem()) + //} else if (inventory.getStackInSlot(slotOut).getItem().equals(stackOut.getItem())) { int maxStack = inventory.getStackInSlot(slotOut).getMaxStackSize(); if (maxStack > 1 && (inventory.getStackInSlot(slotOut).stackSize + 1) <= maxStack) @@ -71,7 +72,7 @@ public static boolean transferContainerTank(IInventoryTanks inventory, FluidTank //inventory.dirtyTanks(); inventory.decrStackSizeNoSave(slotIn, 1); inventory.getStackInSlot(slotOut).stackSize++; - // inventory.dirtyInventory(); + //inventory.dirtyInventory(); return true; } } @@ -100,7 +101,7 @@ public static boolean transferContainerTank(IInventoryTanks inventory, FluidTank //inventory.dirtyInventory(); return true; } else - if (stackOut.getItem() != null + if (stackOut != null && stackOut.getItem() != null // ??! && stackOut.getItem() == inventory.getStackInSlot(slotOut).getItem()) { int maxStack = inventory.getStackInSlot(slotOut).getMaxStackSize(); @@ -110,7 +111,7 @@ public static boolean transferContainerTank(IInventoryTanks inventory, FluidTank //inventory.dirtyTanks(); inventory.decrStackSizeNoSave(slotIn, 1); inventory.getStackInSlot(slotOut).stackSize++; - // inventory.dirtyInventory(); + //inventory.dirtyInventory(); return true; } } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java index 5bf7edd2..d380c6ed 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java @@ -18,12 +18,11 @@ public class SlotFluid extends SlotAdventureBackpack { private static final String[] VALID_TOOL_NAMES = { "bucket" - - }; + }; private static final String[] INVALID_TOOL_NAMES = { "cell" - }; + }; public SlotFluid(IInventory inventory, int id, int x, int y) { @@ -45,6 +44,8 @@ public static String getFluidName(FluidTank stack) { if ((stack != null) && (stack.getFluidAmount() != 0)) { + //if (stack.getFluidAmount() == 0); + //if ((stack == null) || (isEmpty(stack))) return ""; // todo return stack.getFluid().getUnlocalizedName(); } return ""; diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 86253820..cfd99b9d 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -1,5 +1,7 @@ package com.darkona.adventurebackpack.item; +import java.util.List; + import com.darkona.adventurebackpack.AdventureBackpack; import com.darkona.adventurebackpack.block.BlockAdventureBackpack; import com.darkona.adventurebackpack.block.TileAdventureBackpack; @@ -18,6 +20,7 @@ import com.darkona.adventurebackpack.util.Resources; import com.darkona.adventurebackpack.util.Utils; import com.darkona.adventurebackpack.util.Wearing; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -36,8 +39,6 @@ import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.util.ForgeDirection; -import java.util.List; - /** * Created on 12/10/2014 * @@ -323,7 +324,7 @@ private boolean tryPlace(World world, EntityPlayer player, ItemStack backpack) for (int Y: positions) { ChunkCoordinates spawn = - Utils.getNearestEmptyChunkCoordinatesSpiral(world, X, Z, X, (int)player.posY + Y, Z, 12, true, 1, (byte) 0, false); + Utils.getNearestEmptyChunkCoordinatesSpiral(world, X, Z, X, (int)player.posY + Y, Z, 5, true, 1, (byte) 0, false); if (spawn != null) { return placeBackpack(backpack, player, world, spawn.posX, spawn.posY, spawn.posZ, ForgeDirection.UP.ordinal(), false); diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index 79f769eb..035ae71b 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -1,6 +1,9 @@ package com.darkona.adventurebackpack.util; +import java.util.Calendar; + import com.darkona.adventurebackpack.AdventureBackpack; + import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; import net.minecraft.block.Block; @@ -15,8 +18,6 @@ import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidRegistry; -import java.util.Calendar; - /** * Created on 12/10/2014 * @author Darkona @@ -273,12 +274,15 @@ public static boolean inServer() private static ChunkCoordinates checkCoordsForBackpack(IBlockAccess world, int origX, int origZ, int X, int Y, int Z, boolean except) { //LogHelper.info("Checking coordinates in X="+X+", Y="+Y+", Z="+Z); - if (except && world.isSideSolid(X, Y - 1, Z, ForgeDirection.UP,true) && world.isAirBlock(X, Y, Z) && !areCoordinatesTheSame(origX, Y, origZ, X, Y, Z)) + //if (except && world.isSideSolid(X, Y - 1, Z, ForgeDirection.UP,true) && world.isAirBlock(X, Y, Z) && !areCoordinatesTheSame(origX, Y, origZ, X, Y, Z)) + if (except && world.isSideSolid(X, Y - 1, Z, ForgeDirection.UP,true) || world.isAirBlock(X, Y, Z) || isReplaceable(world, X, Y, Z) && !areCoordinatesTheSame(origX, Y, origZ, X, Y, Z)) { //LogHelper.info("Found spot with the exception of the death point"); return new ChunkCoordinates(X, Y, Z); } - if (!except && world.isSideSolid(X, Y - 1, Z, ForgeDirection.UP,true) && world.isAirBlock(X, Y, Z)) + //if (!except && world.isSideSolid(X, Y - 1, Z, ForgeDirection.UP,true) && world.isAirBlock(X, Y, Z)) + if (!except && world.isSideSolid(X, Y - 1, Z, ForgeDirection.UP,true) || world.isAirBlock(X, Y, Z) || isReplaceable(world, X, Y, Z)) + { //LogHelper.info("Found spot without exceptions"); return new ChunkCoordinates(X, Y, Z); @@ -286,6 +290,12 @@ private static ChunkCoordinates checkCoordsForBackpack(IBlockAccess world, int o return null; } + public static boolean isReplaceable(IBlockAccess world, int x, int y, int z) + { + Block block = world.getBlock(x, y, z); + return block.isReplaceable(world, x, y, z); + } + private static ChunkCoordinates checkCoordsForPlayer(IBlockAccess world, int origX, int origZ, int X, int Y, int Z, boolean except) { LogHelper.info("Checking coordinates in X="+X+", Y="+Y+", Z="+Z); From 129e5f5f950779bf641e0c42fabe65810539d2bb Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 29 Nov 2016 06:12:36 +0700 Subject: [PATCH 317/462] Readded ingame tool cycling key --- .../common/ServerActions.java | 27 ++++++++++++++++++- .../handlers/KeybindHandler.java | 19 +++---------- .../inventory/InventoryBackpack.java | 24 +++++++++++++++++ .../network/WearableModePacket.java | 5 ++++ 4 files changed, 59 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index a0bdd168..aae02a09 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -56,7 +56,7 @@ public static void cycleTool(EntityPlayer player, int direction, int slot) InventoryBackpack backpack = Wearing.getBackpackInv(player, true); ItemStack current = player.getCurrentEquippedItem(); backpack.openInventory(); - if(SlotTool.isValidTool(current) && ConfigHandler.enableToolsCycling) + if (ConfigHandler.enableToolsCycling && backpack.getCyclingStatus() && SlotTool.isValidTool(current)) { if (direction < 0) { player.inventory.mainInventory[slot] = backpack.getStackInSlot(Constants.upperTool); @@ -410,6 +410,30 @@ public static void toggleCopterPack(EntityPlayer player, ItemStack copter, byte } } + public static void toggleToolCycling(EntityPlayer player, ItemStack backpack, byte on_off) + { + InventoryBackpack inv = new InventoryBackpack(backpack); + if (ConfigHandler.enableToolsCycling) + { + if (inv.getCyclingStatus()) + { + inv.setCyclingStatus(false); + inv.markDirty(); + if (player.worldObj.isRemote) + { + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.cycling.off")); + } + } else { + inv.setCyclingStatus(true); + inv.markDirty(); + if (player.worldObj.isRemote) + { + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.cycling.on")); + } + } + } + } + public static void toggleSteamJetpack(EntityPlayer player, ItemStack jetpack, byte on_off) { InventoryCoalJetpack inv = new InventoryCoalJetpack(jetpack); @@ -430,4 +454,5 @@ public static void toggleSteamJetpack(EntityPlayer player, ItemStack jetpack, by } } } + } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java index 8b38e6a1..a22e1133 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java @@ -1,7 +1,6 @@ package com.darkona.adventurebackpack.handlers; import com.darkona.adventurebackpack.common.ServerActions; -import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.config.Keybindings; import com.darkona.adventurebackpack.entity.EntityFriendlySpider; import com.darkona.adventurebackpack.init.ModNetwork; @@ -25,8 +24,6 @@ */ public class KeybindHandler { - public static boolean currentToolCycling = ConfigHandler.enableToolsCycling; - private static Key getPressedKeyBinding() { if (Keybindings.openBackpack.isPressed()) @@ -89,19 +86,11 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) { ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(0, (player).inventory.currentItem, CycleToolPacket.TOGGLE_HOSE_TANK)); ServerActions.switchHose(player, ServerActions.HOSE_TOGGLE, 0, (player).inventory.currentItem); - } /*else if (Wearing.isWearingBackpack(player)) + } else if (Wearing.isWearingBackpack(player)) { - currentToolCycling=!currentToolCycling; - if (player.worldObj.isRemote) - { - if (currentToolCycling) - { - player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.cycling.on")); - } else { - player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.cycling.off")); - } - } - }*/ + ModNetwork.net.sendToServer(new WearableModePacket.Message(WearableModePacket.CYCLING_ON_OFF, "")); + ServerActions.toggleToolCycling(player, Wearing.getWearingBackpack(player), WearableModePacket.CYCLING_ON_OFF); + } if (Wearing.isWearingCopter(player)) { if (!player.isSneaking()) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index 51e96f05..863f23af 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -7,6 +7,7 @@ import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; import com.darkona.adventurebackpack.item.ItemAdventureBackpack; + import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -37,6 +38,11 @@ public void setContainerStack(ItemStack containerStack) this.containerStack = containerStack; } + public static final boolean OFF = false; + public static final boolean ON = true; + + private boolean cyclingStatus = ON; + private ItemStack containerStack; private String colorName = "Standard"; private int lastTime = 0; @@ -209,6 +215,7 @@ public ItemStack decrStackSizeNoSave(int slot, int quantity) return stack; } + @Override public boolean updateTankSlots() { return InventoryActions.transferContainerTank(this, getLeftTank(), Constants.bucketInLeft) || @@ -238,6 +245,7 @@ public void loadFromNBT(NBTTagCompound compound) lastTime = backpackData.getInteger("lastTime"); special = backpackData.getBoolean("special"); extendedProperties = backpackData.getCompoundTag("extendedProperties"); + cyclingStatus = backpackData.getBoolean("cyclingStatus"); } } @@ -267,6 +275,7 @@ public void saveToNBT(NBTTagCompound compound) backpackData.setTag("extendedProperties", extendedProperties); backpackData.setTag("rightTank", rightTank.writeToNBT(new NBTTagCompound())); backpackData.setTag("leftTank", leftTank.writeToNBT(new NBTTagCompound())); + backpackData.setBoolean("cyclingStatus", cyclingStatus); compound.setTag("backpackData",backpackData); //} @@ -362,23 +371,27 @@ public ItemStack getStackInSlot(int slot) return inventory[slot]; } + @Override public void dirtyTanks() { containerStack.stackTagCompound.getCompoundTag("backpackData").setTag("leftTank",leftTank.writeToNBT(new NBTTagCompound())); containerStack.stackTagCompound.getCompoundTag("backpackData").setTag("rightTank",rightTank.writeToNBT(new NBTTagCompound())); } + @Override public void dirtyTime() { containerStack.stackTagCompound.getCompoundTag("backpackData").setInteger("lastTime",lastTime); } + @Override public void dirtyExtended() { containerStack.stackTagCompound.getCompoundTag("backpackData").removeTag("extendedProperties"); containerStack.stackTagCompound.getCompoundTag("backpackData").setTag("extendedProperties",extendedProperties); } + @Override public void dirtyInventory() { if(updateTankSlots()){ @@ -404,5 +417,16 @@ public boolean hasBlock(Block block) { return InventoryActions.hasBlockItem(this, block); } + + public boolean getCyclingStatus() + { + return cyclingStatus; + } + + public void setCyclingStatus(boolean status) + { + this.cyclingStatus = status; + } + } diff --git a/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java b/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java index ecb0ed56..e384737e 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java @@ -2,6 +2,7 @@ import com.darkona.adventurebackpack.common.ServerActions; import com.darkona.adventurebackpack.util.Wearing; + import cpw.mods.fml.common.network.ByteBufUtils; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; @@ -19,6 +20,7 @@ public class WearableModePacket implements IMessageHandler Date: Tue, 29 Nov 2016 21:08:02 +0700 Subject: [PATCH 318/462] if tool cycling off shift+wheel cycle hotbar slot --- .../darkona/adventurebackpack/common/ServerActions.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index aae02a09..3e17cd9a 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -70,6 +70,14 @@ public static void cycleTool(EntityPlayer player, int direction, int slot) backpack.setInventorySlotContentsNoSave(Constants.upperTool, current); } } + } else if ((slot >= 0) && (slot <= 8)) + { + int nextSlot = slot; + if (direction > 0) nextSlot = slot - 1; + if (direction < 0) nextSlot = slot + 1; + if (slot == 0 && direction > 0) nextSlot = 8; + if (slot == 8 && direction < 0) nextSlot = 0; + player.inventory.currentItem = nextSlot; } backpack.markDirty(); player.inventory.closeInventory(); From d55aaaa6aa8991d333e694d2f159f4fb17d6bf29 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 30 Nov 2016 11:52:56 +0700 Subject: [PATCH 319/462] Backpack remembers his cyclingStatus Hotbar slot cycling --- .../block/TileAdventureBackpack.java | 15 ++++++ .../common/ServerActions.java | 54 +++++++++++-------- 2 files changed, 46 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 0ef77b14..a9554a6e 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -9,6 +9,7 @@ import com.darkona.adventurebackpack.inventory.SlotTool; import com.darkona.adventurebackpack.item.ItemAdventureBackpack; import com.darkona.adventurebackpack.util.BackpackUtils; + import net.minecraft.block.Block; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -46,27 +47,32 @@ public class TileAdventureBackpack extends TileEntity implements IInventoryAdven private int lastTime; private int luminosity; private NBTTagCompound extendedProperties; + private boolean cyclingStatus; public int getLuminosity() { return luminosity; } + @Override public int getLastTime() { return lastTime; } + @Override public void setLastTime(int lastTime) { this.lastTime = lastTime; } + @Override public NBTTagCompound getExtendedProperties() { return extendedProperties; } + @Override public void setExtendedProperties(NBTTagCompound extendedProperties) { this.extendedProperties = extendedProperties; @@ -145,6 +151,7 @@ public boolean removeSleepingBag(World world) //=====================================================GETTERS====================================================// + @Override public String getColorName() { return colorName; @@ -213,11 +220,13 @@ public boolean isUseableByPlayer(EntityPlayer player) return worldObj.getTileEntity(xCoord, yCoord, zCoord) == this && player.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) <= 64; } + @Override public boolean isSBDeployed() { return this.sleepingBagDeployed; } + @Override public boolean isSpecial() { return special; @@ -272,6 +281,7 @@ public void loadFromNBT(NBTTagCompound compound) lastTime = backpackData.getInteger("lastTime"); special = backpackData.getBoolean("special"); extendedProperties = backpackData.getCompoundTag("extended"); + cyclingStatus = backpackData.getBoolean("cyclingStatus"); } } @@ -298,6 +308,7 @@ public void saveToNBT(NBTTagCompound compound) backpackData.setTag("extended", extendedProperties); backpackData.setTag("rightTank", rightTank.writeToNBT(new NBTTagCompound())); backpackData.setTag("leftTank", leftTank.writeToNBT(new NBTTagCompound())); + backpackData.setBoolean("cyclingStatus", cyclingStatus); compound.setTag("backpackData",backpackData); } @@ -586,20 +597,24 @@ public boolean updateTankSlots() return false; } + @Override public void dirtyTanks() { } + @Override public void dirtyTime() { } + @Override public void dirtyExtended() { } + @Override public void dirtyInventory() { diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index 3e17cd9a..324b3bb1 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -54,33 +54,41 @@ public static void cycleTool(EntityPlayer player, int direction, int slot) try { InventoryBackpack backpack = Wearing.getBackpackInv(player, true); - ItemStack current = player.getCurrentEquippedItem(); - backpack.openInventory(); - if (ConfigHandler.enableToolsCycling && backpack.getCyclingStatus() && SlotTool.isValidTool(current)) - { - if (direction < 0) { - player.inventory.mainInventory[slot] = backpack.getStackInSlot(Constants.upperTool); - backpack.setInventorySlotContentsNoSave(Constants.upperTool, backpack.getStackInSlot(Constants.lowerTool)); - backpack.setInventorySlotContentsNoSave(Constants.lowerTool, current); - - } else { - if (direction > 0) { - player.inventory.mainInventory[slot] = backpack.getStackInSlot(Constants.lowerTool); - backpack.setInventorySlotContentsNoSave(Constants.lowerTool, backpack.getStackInSlot(Constants.upperTool)); - backpack.setInventorySlotContentsNoSave(Constants.upperTool, current); - } - } - } else if ((slot >= 0) && (slot <= 8)) + boolean enableBackpackCycling = backpack.getCyclingStatus(); + if ((!ConfigHandler.enableToolsCycling || !enableBackpackCycling) && (slot >= 0 && slot <= 8)) { int nextSlot = slot; - if (direction > 0) nextSlot = slot - 1; - if (direction < 0) nextSlot = slot + 1; - if (slot == 0 && direction > 0) nextSlot = 8; - if (slot == 8 && direction < 0) nextSlot = 0; + if (direction > 0) + { + if (slot == 0) nextSlot = 8; + else nextSlot = slot - 1; + } + else if (direction < 0) + { + if (slot == 8) nextSlot = 0; + else nextSlot = slot + 1; + } player.inventory.currentItem = nextSlot; + } else { + ItemStack current = player.getCurrentEquippedItem(); + backpack.openInventory(); + if (SlotTool.isValidTool(current)) + { + if (direction < 0) { + player.inventory.mainInventory[slot] = backpack.getStackInSlot(Constants.upperTool); + backpack.setInventorySlotContentsNoSave(Constants.upperTool, backpack.getStackInSlot(Constants.lowerTool)); + backpack.setInventorySlotContentsNoSave(Constants.lowerTool, current); + } else { + if (direction > 0) { + player.inventory.mainInventory[slot] = backpack.getStackInSlot(Constants.lowerTool); + backpack.setInventorySlotContentsNoSave(Constants.lowerTool, backpack.getStackInSlot(Constants.upperTool)); + backpack.setInventorySlotContentsNoSave(Constants.upperTool, current); + } + } + } + backpack.markDirty(); + player.inventory.closeInventory(); } - backpack.markDirty(); - player.inventory.closeInventory(); } catch (Exception oops) { LogHelper.debug("Exception trying to cycle tools."); From ba01225c124e99e3f1815999b8318f634876e90f Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 30 Nov 2016 21:34:25 +0700 Subject: [PATCH 320/462] Shift-wheel again --- .../common/ServerActions.java | 44 ++++++------------- .../handlers/ClientEventHandler.java | 7 ++- 2 files changed, 17 insertions(+), 34 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index 324b3bb1..5ae946a3 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -55,40 +55,24 @@ public static void cycleTool(EntityPlayer player, int direction, int slot) { InventoryBackpack backpack = Wearing.getBackpackInv(player, true); boolean enableBackpackCycling = backpack.getCyclingStatus(); - if ((!ConfigHandler.enableToolsCycling || !enableBackpackCycling) && (slot >= 0 && slot <= 8)) + ItemStack current = player.getCurrentEquippedItem(); + backpack.openInventory(); + if (SlotTool.isValidTool(current)) { - int nextSlot = slot; - if (direction > 0) - { - if (slot == 0) nextSlot = 8; - else nextSlot = slot - 1; - } - else if (direction < 0) - { - if (slot == 8) nextSlot = 0; - else nextSlot = slot + 1; - } - player.inventory.currentItem = nextSlot; - } else { - ItemStack current = player.getCurrentEquippedItem(); - backpack.openInventory(); - if (SlotTool.isValidTool(current)) - { - if (direction < 0) { - player.inventory.mainInventory[slot] = backpack.getStackInSlot(Constants.upperTool); - backpack.setInventorySlotContentsNoSave(Constants.upperTool, backpack.getStackInSlot(Constants.lowerTool)); - backpack.setInventorySlotContentsNoSave(Constants.lowerTool, current); - } else { - if (direction > 0) { - player.inventory.mainInventory[slot] = backpack.getStackInSlot(Constants.lowerTool); - backpack.setInventorySlotContentsNoSave(Constants.lowerTool, backpack.getStackInSlot(Constants.upperTool)); - backpack.setInventorySlotContentsNoSave(Constants.upperTool, current); - } + if (direction < 0) { + player.inventory.mainInventory[slot] = backpack.getStackInSlot(Constants.upperTool); + backpack.setInventorySlotContentsNoSave(Constants.upperTool, backpack.getStackInSlot(Constants.lowerTool)); + backpack.setInventorySlotContentsNoSave(Constants.lowerTool, current); + } else { + if (direction > 0) { + player.inventory.mainInventory[slot] = backpack.getStackInSlot(Constants.lowerTool); + backpack.setInventorySlotContentsNoSave(Constants.lowerTool, backpack.getStackInSlot(Constants.upperTool)); + backpack.setInventorySlotContentsNoSave(Constants.upperTool, current); } } - backpack.markDirty(); - player.inventory.closeInventory(); } + backpack.markDirty(); + player.inventory.closeInventory(); } catch (Exception oops) { LogHelper.debug("Exception trying to cycle tools."); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java index 6ce51ecb..5942f19c 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java @@ -2,16 +2,15 @@ import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.common.ServerActions; -import com.darkona.adventurebackpack.config.Keybindings; +import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.inventory.SlotTool; import com.darkona.adventurebackpack.item.ItemAdventureBackpack; import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.network.CycleToolPacket; import com.darkona.adventurebackpack.reference.BackpackNames; -import com.darkona.adventurebackpack.reference.Key; -import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Wearing; + import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -91,7 +90,7 @@ public void mouseWheelDetect(MouseEvent event) ItemStack heldItem = player.inventory.getStackInSlot(slot); Item theItem = heldItem.getItem(); - if (SlotTool.isValidTool(heldItem) || + if (ConfigHandler.enableToolsCycling && Wearing.getBackpackInv(player, true).getCyclingStatus() && SlotTool.isValidTool(heldItem) || (BackpackNames.getBackpackColorName(backpack).equals("Skeleton") && theItem.equals(Items.bow))) { ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(dWheel, slot, CycleToolPacket.CYCLE_TOOL_ACTION)); From d2e956d38ab89de4223df2201507275d2145a4f2 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 1 Dec 2016 09:40:53 +0700 Subject: [PATCH 321/462] Fixed rainbow abilities/removals --- .../common/BackpackAbilities.java | 143 +++++++++--------- .../common/BackpackRemovals.java | 16 +- 2 files changed, 82 insertions(+), 77 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java index ddda61d4..7bcefe1d 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java @@ -1,5 +1,8 @@ package com.darkona.adventurebackpack.common; +import java.util.Iterator; +import java.util.List; + import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.entity.ai.EntityAIAvoidPlayerWithBackpack; import com.darkona.adventurebackpack.init.ModFluids; @@ -9,6 +12,7 @@ import com.darkona.adventurebackpack.reference.BackpackNames; import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Utils; + import net.minecraft.entity.Entity; import net.minecraft.entity.ai.EntityAIBase; import net.minecraft.entity.ai.EntityAITasks; @@ -25,9 +29,6 @@ import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; -import java.util.Iterator; -import java.util.List; - /** * Created on 12/10/2014 * @@ -209,7 +210,7 @@ public void itemBat(EntityPlayer player, World world, ItemStack backpack) } if (nightVision == null || nightVision.getDuration() < 220) { - player.addPotionEffect(new PotionEffect(Potion.nightVision.id, 5000, -4)); + player.addPotionEffect(new PotionEffect(Potion.nightVision.id, 5000, -1)); } } @@ -217,30 +218,90 @@ public void itemSquid(EntityPlayer player, World world, ItemStack backpack) { if (player.isInWater()) { - player.addPotionEffect(new PotionEffect(Potion.waterBreathing.getId(), 1, -5)); + player.addPotionEffect(new PotionEffect(Potion.waterBreathing.getId(), 1, -1)); itemBat(player, world, backpack); }else{ backpackRemovals.itemSquid(player,world, backpack); } } - public void itemIronGolem(EntityPlayer player, World world, ItemStack backpack) - { - - } - public void itemPigman(EntityPlayer player, World world, ItemStack backpack) { PotionEffect potion = null; if (player.isPotionActive(Potion.fireResistance.id)) { potion = player.getActivePotionEffect(Potion.fireResistance); } - if (potion == null || potion.getDuration() < 5 && potion.getAmplifier() != -5) + if (potion == null || potion.getDuration() < 5 && potion.getAmplifier() != -1) { - player.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 5000, -5)); + player.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 5000, -1)); } } + /** + * The Dragon Backpack does something awesome. + * + * @param player + * @param world + * @param backpack + */ + public void itemDragon(EntityPlayer player, World world, ItemStack backpack) + { + itemBat(player, world, backpack); + itemPigman(player,world,backpack); + //itemSquid(player, world, backpack); + PotionEffect potion = null; + if (player.isPotionActive(Potion.regeneration.id)) { + potion = player.getActivePotionEffect(Potion.regeneration); + } + if (potion == null || potion.getDuration() < 40 && potion.getAmplifier() != 2) + { + player.addPotionEffect(new PotionEffect(Potion.regeneration.getId(), 5000, 2)); + } + potion = null; + if (player.isPotionActive(Potion.damageBoost.id)) { + potion = player.getActivePotionEffect(Potion.damageBoost); + } + if (potion == null || potion.getDuration() < 40 && potion.getAmplifier() != 2) { + player.addPotionEffect(new PotionEffect(Potion.damageBoost.getId(), 5000, 2)); + } + } + + public void itemRainbow(EntityPlayer player, World world, ItemStack backpack) + { + InventoryBackpack inv = new InventoryBackpack(backpack); + int noteTime = inv.getLastTime() - 1; + if (noteTime >= 0 && noteTime < Utils.secondsToTicks(147)) + { + //player.setSprinting(true); + player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 60, 3)); + player.addPotionEffect(new PotionEffect(Potion.jump.getId(), 60, 1)); + if (noteTime % 2 == 0) + { + //Visuals.NyanParticles(player, world); + if (!world.isRemote) + { + ModNetwork.sendToNearby(new EntityParticlePacket.Message(EntityParticlePacket.NYAN_PARTICLE, player), player); + } + } + } + PotionEffect moveSpeed = null; + if (player.isPotionActive(Potion.moveSpeed.id)) { + moveSpeed = player.getActivePotionEffect(Potion.moveSpeed); + } + if (moveSpeed == null || moveSpeed.getDuration() < 40 && moveSpeed.getAmplifier() != 0) { + player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 5000, 0)); + } + inv.setLastTime(noteTime); + inv.markDirty(); + } + + + + public void itemIronGolem(EntityPlayer player, World world, ItemStack backpack) + { + + } + /** * Mirroring real life cactii, the Cactus Backpack fills with water slowly or rapidly depending where is the player. * If it's raining it will fill 1milibucket of water each tick. @@ -404,35 +465,6 @@ public void itemMelon(EntityPlayer player, World world, ItemStack backpack) inv.dirtyTanks(); } - /** - * The Dragon Backpack does something awesome. - * - * @param player - * @param world - * @param backpack - */ - public void itemDragon(EntityPlayer player, World world, ItemStack backpack) - { - itemBat(player, world, backpack); - itemPigman(player,world,backpack); - //itemSquid(player, world, backpack); - PotionEffect potion = null; - if (player.isPotionActive(Potion.regeneration.id)) { - potion = player.getActivePotionEffect(Potion.regeneration); - } - if (potion == null || potion.getDuration() < 40 && potion.getAmplifier() != 2) - { - player.addPotionEffect(new PotionEffect(Potion.regeneration.getId(), 5000, 2)); - } - potion = null; - if (player.isPotionActive(Potion.damageBoost.id)) { - potion = player.getActivePotionEffect(Potion.damageBoost); - } - if (potion == null || potion.getDuration() < 40 && potion.getAmplifier() != 2) { - player.addPotionEffect(new PotionEffect(Potion.damageBoost.getId(), 5000, 2)); - } - } - /** * Sneaky! Scare your friends! Or your enemies! * Sneak on another player to make them jump in confusion as they think one of those green bastards is behind him/her. @@ -725,35 +757,6 @@ public void itemOcelot(EntityPlayer player, World world, ItemStack backpack) inv.markDirty(); } - - public void itemRainbow(EntityPlayer player, World world, ItemStack backpack) - { - InventoryBackpack inv = new InventoryBackpack(backpack); - int noteTime = inv.getLastTime() - 1; - if (noteTime >= 0 && noteTime < Utils.secondsToTicks(147)) - { - player.setSprinting(true); - player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 100, 0)); - player.addPotionEffect((new PotionEffect(Potion.jump.getId(), 100, 0))); - if (noteTime % 2 == 0) - { - //Visuals.NyanParticles(player, world); - if (!world.isRemote) - { - ModNetwork.sendToNearby(new EntityParticlePacket.Message(EntityParticlePacket.NYAN_PARTICLE, player), player); - } - } - } - PotionEffect potion = null; - if (player.isPotionActive(Potion.moveSpeed.id)) { - potion = player.getActivePotionEffect(Potion.moveSpeed); - } - if (potion == null || potion.getDuration() < 40 && potion.getAmplifier() != -5) { - player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 500, -5)); - } - inv.setLastTime(noteTime); - inv.markDirty(); - } /* ==================================== TILE ABILITIES ==========================================*/ private void fillWithRain(World world, TileAdventureBackpack backpack, FluidStack fluid, int time) diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java index 9fb69bd4..4d91eb49 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java @@ -2,6 +2,7 @@ import com.darkona.adventurebackpack.inventory.InventoryBackpack; import com.darkona.adventurebackpack.util.Wearing; + import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; @@ -21,7 +22,7 @@ public void itemBat(EntityPlayer player, World world, ItemStack backpack) if (player.isPotionActive(Potion.nightVision.id)) { potion = player.getActivePotionEffect(Potion.nightVision); - if (potion != null && potion.getAmplifier() == -4) { + if (potion != null && potion.getAmplifier() == -1) { if (player.worldObj.isRemote) { player.removePotionEffectClient(Potion.nightVision.id); } else { @@ -38,7 +39,7 @@ public void itemSquid(EntityPlayer player, World world, ItemStack backpack) if (player.isPotionActive(Potion.waterBreathing.id)) { potion = player.getActivePotionEffect(Potion.waterBreathing); - if (potion != null && potion.getAmplifier() == -5) { + if (potion != null && potion.getAmplifier() == -1) { if (player.worldObj.isRemote) { player.removePotionEffectClient(Potion.waterBreathing.id); } else { @@ -54,7 +55,7 @@ public void itemPigman(EntityPlayer player, World world, ItemStack backpack) if (player.isPotionActive(Potion.fireResistance.id)) { potion = player.getActivePotionEffect(Potion.fireResistance); - if (potion != null && potion.getAmplifier() == -5) { + if (potion != null && potion.getAmplifier() == -1) { if (player.worldObj.isRemote) { player.removePotionEffectClient(Potion.fireResistance.id); } else { @@ -63,6 +64,7 @@ public void itemPigman(EntityPlayer player, World world, ItemStack backpack) } } } + public void itemDragon(EntityPlayer player, World world, ItemStack backpack) { itemBat(player, world, backpack); @@ -101,7 +103,7 @@ public void itemRainbow(EntityPlayer player, World world, ItemStack backpack) PotionEffect potion = null; if (player.isPotionActive(Potion.moveSpeed.id)) { potion = player.getActivePotionEffect(Potion.moveSpeed); - if (potion != null && potion.getAmplifier() == 2) { + if (potion != null && potion.getAmplifier() == 0) { if (player.worldObj.isRemote) { player.removePotionEffectClient(Potion.moveSpeed.id); } else { @@ -109,16 +111,16 @@ public void itemRainbow(EntityPlayer player, World world, ItemStack backpack) } } } - potion = null; + /*potion = null; if (player.isPotionActive(Potion.jump.id)) { potion = player.getActivePotionEffect(Potion.jump); - if (potion != null && potion.getAmplifier() == 2) { + if (potion != null && potion.getAmplifier() == 1) { if (player.worldObj.isRemote) { player.removePotionEffectClient(Potion.jump.id); } else { player.removePotionEffect(Potion.jump.id); } } - } + }*/ } } From 8e0db42342dd584a2bf8ecbf9694a90ab145680c Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 7 Dec 2016 09:01:15 +0700 Subject: [PATCH 322/462] Fix placement in negative coordinates --- .../darkona/adventurebackpack/item/ItemAdventureBackpack.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index cfd99b9d..655227e5 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -318,7 +318,9 @@ public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) private boolean tryPlace(World world, EntityPlayer player, ItemStack backpack) { int X = (int) player.posX; + if (player.posX < 0) X--; int Z = (int) player.posZ; + if (player.posZ < 0) Z--; int positions[] = {0,-1,1,-2,2,-3,3,-4,4,-5,5,-6,6}; for (int Y: positions) From 38f70be1025b4d74b3edbdde9fd7bb4145ae101d Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 7 Dec 2016 20:58:47 +0700 Subject: [PATCH 323/462] Forbidden dimensions config --- .../block/BlockAdventureBackpack.java | 32 +++++++++----- .../config/ConfigHandler.java | 20 +++++---- .../handlers/KeybindHandler.java | 44 +++++++++++++------ .../item/ItemAdventureBackpack.java | 3 +- 4 files changed, 64 insertions(+), 35 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java index 4fe04093..9333e169 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java @@ -1,13 +1,16 @@ package com.darkona.adventurebackpack.block; +import java.util.Random; + import com.darkona.adventurebackpack.AdventureBackpack; import com.darkona.adventurebackpack.client.Icons; import com.darkona.adventurebackpack.handlers.GuiHandler; +import com.darkona.adventurebackpack.handlers.KeybindHandler; import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.reference.BackpackNames; import com.darkona.adventurebackpack.reference.ModInfo; -import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Utils; + import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -17,22 +20,24 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EnumCreatureType; -import net.minecraft.entity.boss.EntityDragon; -import net.minecraft.entity.boss.EntityWither; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.*; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.ChunkCoordinates; +import net.minecraft.util.DamageSource; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; import net.minecraft.world.Explosion; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -import java.util.Random; - /** * Created on 12/10/2014. * @author Javier Darkona @@ -82,6 +87,7 @@ public void randomDisplayTick(World world, int x, int y, int z, Random random) } } + @Override public int getMobilityFlag() { return 0; @@ -125,7 +131,7 @@ public boolean canEntityDestroy(IBlockAccess world, int x, int y, int z, Entity @Override public float getEnchantPowerBonus(World world, int x, int y, int z) { - return getAssociatedTileColorName(world, x, y, z).equals("Bookshelf") ? 10 : 0; + return getAssociatedTileColorName(world, x, y, z).equals("Bookshelf") ? 10 : 0; } @Override @@ -221,7 +227,7 @@ public String getUnlocalizedName() private void setUnlocalizedName(String string) { setUnlocalizedName("blockAdventureBackpack"); - + } @Override @@ -250,6 +256,7 @@ public int getLightValue(IBlockAccess world, int x, int y, int z) } } + @Override public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int meta) { return getAssociatedTileColorName(world, x, y, z).equals("Redstone") ? 15 : 0; @@ -264,9 +271,12 @@ public boolean canConnectRedstone(IBlockAccess world, int x, int y, int z, int s @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - - FMLNetworkHandler.openGui(player, AdventureBackpack.instance, GuiHandler.BACKPACK_TILE, world, x, y, z); - return true; + if (KeybindHandler.isDimensionAllowed()) + { + FMLNetworkHandler.openGui(player, AdventureBackpack.instance, GuiHandler.BACKPACK_TILE, world, x, y, z); + return true; + } + return false; } diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 120ddcdd..49fa9de6 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -54,6 +54,7 @@ public class ConfigHandler public static boolean allowSoundPiston = true; public static boolean enableItemFilters = false; + public static String[] forbiddenDimensions; public static String[] nameLocalized; public static String[] nameInternalID; @@ -84,15 +85,15 @@ public static void init(File configFile) @SuppressWarnings("static-access") private static void loadConfiguration() { - // Gameplay - backpackAbilities = config.getBoolean("Backpack Abilities", "gameplay", true, "Allow the backpacks to execute their special abilities, or be only cosmetic (Doesn't affect lightning transformation) Must be " + - "disabled in both Client and Server to work properly"); - backpackDeathPlace = config.getBoolean("Backpack Death Place", "gameplay", true,"Place backpacks as a block when you die?"); - fixLead = config.getBoolean("Fix Vanilla Lead", "gameplay", true, "Fix the vanilla Lead? (Checks mobs falling on a leash to not die of fall damage if they're not falling so fast)"); - enableHoseDrink = config.getBoolean("Enable Hose Drink", "gameplay", true, "Enable/Disable hose drink mode"); - enableToolsCycling = config.getBoolean("Enable Tools Cycling", "gameplay", true, "Enable/Disable tool cycling"); - - // Graphics + // Gameplay + backpackAbilities = config.getBoolean("Backpack Abilities", "gameplay", true, "Allow the backpacks to execute their special abilities, or be only cosmetic (Doesn't affect lightning transformation) Must be " + + "disabled in both Client and Server to work properly"); + backpackDeathPlace = config.getBoolean("Backpack Death Place", "gameplay", true,"Place backpacks as a block when you die?"); + fixLead = config.getBoolean("Fix Vanilla Lead", "gameplay", true, "Fix the vanilla Lead? (Checks mobs falling on a leash to not die of fall damage if they're not falling so fast)"); + enableHoseDrink = config.getBoolean("Enable Hose Drink", "gameplay", true, "Enable/Disable hose drink mode"); + enableToolsCycling = config.getBoolean("Enable Tools Cycling", "gameplay", true, "Enable/Disable tool cycling"); + + // Graphics typeTankRender = config.getInt("Tank Render Type", "graphics", 3, 1, 3, "1,2 or 3 for different rendering of fluids in the Backpack GUI"); enableToolsRender = config.getBoolean("Enable Tools Render", "graphics", true, "Enable rendering for tools in the backpack tool slots. May cause visual glitches with Gregtech tools"); tanksHoveringText = config.getBoolean("Hovering Text", "graphics", false, "Show hovering text on fluid tanks?"); @@ -118,6 +119,7 @@ private static void loadConfiguration() // Items enableItemFilters = config.getBoolean("Enable Item Filters", "items", true, "Enable filters from Disallow category"); + forbiddenDimensions = config.getStringList("Forbidden Dimensions", "items", nameDefault, "Disallow opening backpack inventory for specific dimension ID"); // Items.Recipes recipeAdventuresSet = config.getBoolean("Adventures Set", "items.recipes", true, "Enable/Disable recipe for Adventure's Hat, Suit and Pants"); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java index a22e1133..47510948 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java @@ -1,6 +1,7 @@ package com.darkona.adventurebackpack.handlers; import com.darkona.adventurebackpack.common.ServerActions; +import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.config.Keybindings; import com.darkona.adventurebackpack.entity.EntityFriendlySpider; import com.darkona.adventurebackpack.init.ModNetwork; @@ -42,6 +43,17 @@ private static Key getPressedKeyBinding() return Key.UNKNOWN; } + public static boolean isDimensionAllowed() + { + Integer currentID = (Minecraft.getMinecraft().thePlayer.worldObj.provider.dimensionId); + for (String id : ConfigHandler.forbiddenDimensions) + { + if (id.equals(currentID.toString())) return false; + } + return true; + } + + @SubscribeEvent public void handleKeyInputEvent(InputEvent.KeyInputEvent event) { @@ -55,19 +67,24 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) { if (mc.inGameHasFocus) { - if (player.isSneaking() && (player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemAdventureBackpack)) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); - } else + if (isDimensionAllowed()) { - ModNetwork.net.sendToServer(new SyncPropertiesPacket.Message()); - if (Wearing.isWearingBackpack(player)) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_KEYBIND)); - } else if ((player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemAdventureBackpack)) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); - } + if (player.isSneaking() && (player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemAdventureBackpack)) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); + } else + { + ModNetwork.net.sendToServer(new SyncPropertiesPacket.Message()); + if (Wearing.isWearingBackpack(player)) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_KEYBIND)); + } else if ((player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemAdventureBackpack)) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); + } + } + } + if (Wearing.isWearingCopter(player)) { ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.COPTER_GUI, GUIPacket.FROM_KEYBIND)); @@ -75,8 +92,7 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) if (Wearing.isWearingSteam(player)) { ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.JETPACK_GUI, GUIPacket.FROM_KEYBIND)); - } - } + } } } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 655227e5..02fcd016 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -9,6 +9,7 @@ import com.darkona.adventurebackpack.common.BackpackAbilities; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.events.WearableEvent; +import com.darkona.adventurebackpack.handlers.KeybindHandler; import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.init.ModNetwork; @@ -204,7 +205,7 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla MovingObjectPosition mop = getMovingObjectPositionFromPlayer(world, player, true); if (mop == null || mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY) { - if (world.isRemote) + if (world.isRemote && KeybindHandler.isDimensionAllowed()) { ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); } From b37fb8ca931b06f0fd65f707564cf506bff51a85 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 8 Dec 2016 23:27:50 +0700 Subject: [PATCH 324/462] Dimension check on server side only --- .../block/BlockAdventureBackpack.java | 11 ++-- .../handlers/KeybindHandler.java | 50 +++++++------------ .../item/ItemAdventureBackpack.java | 3 +- .../adventurebackpack/network/GUIPacket.java | 8 +++ 4 files changed, 34 insertions(+), 38 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java index 9333e169..c92931c2 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java @@ -4,8 +4,8 @@ import com.darkona.adventurebackpack.AdventureBackpack; import com.darkona.adventurebackpack.client.Icons; +import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.handlers.GuiHandler; -import com.darkona.adventurebackpack.handlers.KeybindHandler; import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.reference.BackpackNames; import com.darkona.adventurebackpack.reference.ModInfo; @@ -271,15 +271,20 @@ public boolean canConnectRedstone(IBlockAccess world, int x, int y, int z, int s @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if (KeybindHandler.isDimensionAllowed()) + if (!world.isRemote) { + Integer currentDimID = (player.worldObj.provider.dimensionId); + for (String id : ConfigHandler.forbiddenDimensions) + { + if (id.equals(currentDimID.toString())) return false; + } + FMLNetworkHandler.openGui(player, AdventureBackpack.instance, GuiHandler.BACKPACK_TILE, world, x, y, z); return true; } return false; } - @Override public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z, EntityPlayer player) { diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java index 47510948..069b9902 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java @@ -1,7 +1,6 @@ package com.darkona.adventurebackpack.handlers; import com.darkona.adventurebackpack.common.ServerActions; -import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.config.Keybindings; import com.darkona.adventurebackpack.entity.EntityFriendlySpider; import com.darkona.adventurebackpack.init.ModNetwork; @@ -41,19 +40,8 @@ private static Key getPressedKeyBinding() return Key.JUMP; } return Key.UNKNOWN; - } - - public static boolean isDimensionAllowed() - { - Integer currentID = (Minecraft.getMinecraft().thePlayer.worldObj.provider.dimensionId); - for (String id : ConfigHandler.forbiddenDimensions) - { - if (id.equals(currentID.toString())) return false; - } - return true; } - @SubscribeEvent public void handleKeyInputEvent(InputEvent.KeyInputEvent event) { @@ -67,32 +55,28 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) { if (mc.inGameHasFocus) { - if (isDimensionAllowed()) + if (player.isSneaking() && (player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemAdventureBackpack)) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); + } else { - if (player.isSneaking() && (player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemAdventureBackpack)) + ModNetwork.net.sendToServer(new SyncPropertiesPacket.Message()); + if (Wearing.isWearingBackpack(player)) { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); - } else + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_KEYBIND)); + } else if ((player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemAdventureBackpack)) { - ModNetwork.net.sendToServer(new SyncPropertiesPacket.Message()); - if (Wearing.isWearingBackpack(player)) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_KEYBIND)); - } else if ((player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemAdventureBackpack)) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); - } + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); } } - - if (Wearing.isWearingCopter(player)) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.COPTER_GUI, GUIPacket.FROM_KEYBIND)); - } - if (Wearing.isWearingSteam(player)) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.JETPACK_GUI, GUIPacket.FROM_KEYBIND)); - } + } + if (Wearing.isWearingCopter(player)) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.COPTER_GUI, GUIPacket.FROM_KEYBIND)); + } + if (Wearing.isWearingSteam(player)) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.JETPACK_GUI, GUIPacket.FROM_KEYBIND)); } } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 02fcd016..655227e5 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -9,7 +9,6 @@ import com.darkona.adventurebackpack.common.BackpackAbilities; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.events.WearableEvent; -import com.darkona.adventurebackpack.handlers.KeybindHandler; import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.init.ModNetwork; @@ -205,7 +204,7 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla MovingObjectPosition mop = getMovingObjectPositionFromPlayer(world, player, true); if (mop == null || mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY) { - if (world.isRemote && KeybindHandler.isDimensionAllowed()) + if (world.isRemote) { ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); } diff --git a/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java b/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java index 797212d7..593e06a2 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java @@ -2,9 +2,11 @@ import com.darkona.adventurebackpack.AdventureBackpack; import com.darkona.adventurebackpack.block.TileAdventureBackpack; +import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.handlers.GuiHandler; import com.darkona.adventurebackpack.inventory.ContainerBackpack; import com.darkona.adventurebackpack.util.Wearing; + import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; @@ -82,6 +84,12 @@ public IMessage onMessage(GUImessage message, MessageContext ctx) } if (message.type == BACKPACK_GUI) { + Integer currentDimID = (player.worldObj.provider.dimensionId); + for (String id : ConfigHandler.forbiddenDimensions) + { + if (id.equals(currentDimID.toString())) return null; + } + if (message.from == FROM_KEYBIND) { if (Wearing.isWearingBackpack(player)) From eee7db8e4ec95f4fb40cfa982a4676c97260d270 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 8 Dec 2016 23:49:39 +0700 Subject: [PATCH 325/462] derp --- .../handlers/KeybindHandler.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java index 069b9902..d4dd6ed0 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java @@ -68,16 +68,16 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) { ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); } + if (Wearing.isWearingCopter(player)) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.COPTER_GUI, GUIPacket.FROM_KEYBIND)); + } + if (Wearing.isWearingSteam(player)) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.JETPACK_GUI, GUIPacket.FROM_KEYBIND)); + } } } - if (Wearing.isWearingCopter(player)) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.COPTER_GUI, GUIPacket.FROM_KEYBIND)); - } - if (Wearing.isWearingSteam(player)) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.JETPACK_GUI, GUIPacket.FROM_KEYBIND)); - } } if (keypressed == Key.TOGGLE_KEY) From 613fbbe4719d339d3cc5804b0bb9338d82b7ff4a Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 9 Dec 2016 14:03:10 -0500 Subject: [PATCH 326/462] Fixed issue #50 --- .../adventurebackpack/handlers/ClientEventHandler.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java index 5942f19c..f3558f36 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java @@ -90,7 +90,7 @@ public void mouseWheelDetect(MouseEvent event) ItemStack heldItem = player.inventory.getStackInSlot(slot); Item theItem = heldItem.getItem(); - if (ConfigHandler.enableToolsCycling && Wearing.getBackpackInv(player, true).getCyclingStatus() && SlotTool.isValidTool(heldItem) || + if (SlotTool.isValidTool(heldItem) || (BackpackNames.getBackpackColorName(backpack).equals("Skeleton") && theItem.equals(Items.bow))) { ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(dWheel, slot, CycleToolPacket.CYCLE_TOOL_ACTION)); @@ -109,4 +109,4 @@ public void mouseWheelDetect(MouseEvent event) } } } -} \ No newline at end of file +} From 25fe6706adada437822374fe03d45b080f18350c Mon Sep 17 00:00:00 2001 From: runescapejon Date: Fri, 9 Dec 2016 21:56:05 -0500 Subject: [PATCH 327/462] Revert it back to use this feature the tool cycling use the default action key "N" to enable/disable it --- .../darkona/adventurebackpack/handlers/ClientEventHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java index f3558f36..e514fd25 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java @@ -90,7 +90,7 @@ public void mouseWheelDetect(MouseEvent event) ItemStack heldItem = player.inventory.getStackInSlot(slot); Item theItem = heldItem.getItem(); - if (SlotTool.isValidTool(heldItem) || + if (ConfigHandler.enableToolsCycling && Wearing.getBackpackInv(player, true).getCyclingStatus() && SlotTool.isValidTool(heldItem) || (BackpackNames.getBackpackColorName(backpack).equals("Skeleton") && theItem.equals(Items.bow))) { ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(dWheel, slot, CycleToolPacket.CYCLE_TOOL_ACTION)); From 8eda826f46ac3134907951b69ca546955abca6ad Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sat, 10 Dec 2016 20:18:51 +0700 Subject: [PATCH 328/462] Allow milk bucket & some formatting --- .../inventory/SlotBackpack.java | 8 +- .../inventory/SlotFluid.java | 98 ++++++++++--------- .../darkona/adventurebackpack/util/Utils.java | 12 +-- 3 files changed, 60 insertions(+), 58 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java index a0b6b65e..a30735aa 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java @@ -53,19 +53,19 @@ public static boolean isValidItem(ItemStack stack) { for (String itemDisallowed : ConfigHandler.nameLocalized) { - if (stack.getDisplayName().equalsIgnoreCase(itemDisallowed)) return false; + if (stack.getDisplayName().equalsIgnoreCase(itemDisallowed)) return false; } for (String itemDisallowed : ConfigHandler.nameInternalID) { - if (Item.itemRegistry.getNameForObject(itemCurrent).equals(itemDisallowed)) return false; + if (Item.itemRegistry.getNameForObject(itemCurrent).equals(itemDisallowed)) return false; } for (String itemDisallowed : ConfigHandler.nameInternalIDs) { - if (Item.itemRegistry.getNameForObject(itemCurrent).contains(itemDisallowed)) return false; + if (Item.itemRegistry.getNameForObject(itemCurrent).contains(itemDisallowed)) return false; } for (String itemDisallowed : ConfigHandler.nameUnlocalized) { - if (itemCurrent.getUnlocalizedName().equalsIgnoreCase(itemDisallowed)) return false; + if (itemCurrent.getUnlocalizedName().equalsIgnoreCase(itemDisallowed)) return false; } } return true; diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java index d380c6ed..b3082613 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java @@ -17,97 +17,101 @@ public class SlotFluid extends SlotAdventureBackpack { private static final String[] VALID_TOOL_NAMES = { - "bucket" - }; + "bucket", + }; + + private static final String[] VALID_TOOL_IDS = { + "minecraft:milk_bucket", + //"Railcraft:fluid.creosote.bottle", + }; private static final String[] INVALID_TOOL_NAMES = { - "cell" - }; + "cell", + }; public SlotFluid(IInventory inventory, int id, int x, int y) { - super(inventory, id, x, y); + super(inventory, id, x, y); } public static boolean isEmpty(ItemStack stack) { - return ((stack != null) && FluidContainerRegistry.isEmptyContainer(stack)); + return ((stack != null) && FluidContainerRegistry.isEmptyContainer(stack)); } public static String getFluidName(ItemStack stack) { - if ((stack == null) || (isEmpty(stack))) return ""; + if ((stack == null) || (isEmpty(stack))) return ""; return FluidContainerRegistry.getFluidForFilledItem(stack).getUnlocalizedName(); } public static String getFluidName(FluidTank stack) { - if ((stack != null) && (stack.getFluidAmount() != 0)) - { - //if (stack.getFluidAmount() == 0); - //if ((stack == null) || (isEmpty(stack))) return ""; // todo - return stack.getFluid().getUnlocalizedName(); - } - return ""; + if ((stack != null) && (stack.getFluidAmount() != 0)) + { + return stack.getFluid().getUnlocalizedName(); + } + return ""; } public static int getCapacity(ItemStack stack) { - return FluidContainerRegistry.getContainerCapacity(stack); + return FluidContainerRegistry.getContainerCapacity(stack); } - - public static boolean isValidItem(ItemStack stack) { - return ((stack != null) && FluidContainerRegistry.isContainer(stack)); + return ((stack != null) && FluidContainerRegistry.isContainer(stack)); } @Override public boolean isItemValid(ItemStack stack) { - return ((stack != null) && (FluidContainerRegistry.isContainer(stack)) && isValidTool(stack)); + return ((stack != null) && (FluidContainerRegistry.isContainer(stack)) && isValidTool(stack)); } public static boolean isValidTool(ItemStack stack) { - if (stack != null && stack.getMaxStackSize() <= 16) - { - Item item = stack.getItem(); - String name = item.getUnlocalizedName().toLowerCase(); - - for (String toolName : VALID_TOOL_NAMES) - { - if (name.contains(toolName)) - return true; - } - - for (String toolName : INVALID_TOOL_NAMES) - { - if (name.contains(toolName)) - return false; - } - } - return false; + if (stack != null && stack.getMaxStackSize() <= 16) + { + Item itemCurrent = stack.getItem(); + String nameCurrent = itemCurrent.getUnlocalizedName().toLowerCase(); + + for (String toolName : VALID_TOOL_NAMES) + { + if (nameCurrent.contains(toolName)) return true; + } + for (String toolID : VALID_TOOL_IDS) + { + if (Item.itemRegistry.getNameForObject(itemCurrent).equals(toolID)) return true; + } + + for (String toolName : INVALID_TOOL_NAMES) + { + if (nameCurrent.contains(toolName)) return false; + } + } + return false; } @Override public void onSlotChanged() { - if (Utils.inServer()) - { - if (inventory instanceof IInventoryTanks) - { - ((IInventoryTanks) this.inventory).updateTankSlots(); - } - } - super.onSlotChanged(); + if (Utils.inServer()) + { + if (inventory instanceof IInventoryTanks) + { + ((IInventoryTanks) this.inventory).updateTankSlots(); + } + } + super.onSlotChanged(); } @Override - public void putStack(ItemStack par1ItemStack) { - super.putStack(par1ItemStack); + public void putStack(ItemStack par1ItemStack) + { + super.putStack(par1ItemStack); } } diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index 035ae71b..fa0322da 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -274,15 +274,13 @@ public static boolean inServer() private static ChunkCoordinates checkCoordsForBackpack(IBlockAccess world, int origX, int origZ, int X, int Y, int Z, boolean except) { //LogHelper.info("Checking coordinates in X="+X+", Y="+Y+", Z="+Z); - //if (except && world.isSideSolid(X, Y - 1, Z, ForgeDirection.UP,true) && world.isAirBlock(X, Y, Z) && !areCoordinatesTheSame(origX, Y, origZ, X, Y, Z)) - if (except && world.isSideSolid(X, Y - 1, Z, ForgeDirection.UP,true) || world.isAirBlock(X, Y, Z) || isReplaceable(world, X, Y, Z) && !areCoordinatesTheSame(origX, Y, origZ, X, Y, Z)) + /*if (except && world.isSideSolid(X, Y - 1, Z, ForgeDirection.UP,true) && world.isAirBlock(X, Y, Z) && !areCoordinatesTheSame(origX, Y, origZ, X, Y, Z)) { //LogHelper.info("Found spot with the exception of the death point"); return new ChunkCoordinates(X, Y, Z); - } + }*/ //if (!except && world.isSideSolid(X, Y - 1, Z, ForgeDirection.UP,true) && world.isAirBlock(X, Y, Z)) - if (!except && world.isSideSolid(X, Y - 1, Z, ForgeDirection.UP,true) || world.isAirBlock(X, Y, Z) || isReplaceable(world, X, Y, Z)) - + if (world.isAirBlock(X, Y, Z) || isReplaceable(world, X, Y, Z)) { //LogHelper.info("Found spot without exceptions"); return new ChunkCoordinates(X, Y, Z); @@ -292,8 +290,8 @@ private static ChunkCoordinates checkCoordsForBackpack(IBlockAccess world, int o public static boolean isReplaceable(IBlockAccess world, int x, int y, int z) { - Block block = world.getBlock(x, y, z); - return block.isReplaceable(world, x, y, z); + Block block = world.getBlock(x, y, z); + return block.isReplaceable(world, x, y, z); } private static ChunkCoordinates checkCoordsForPlayer(IBlockAccess world, int origX, int origZ, int X, int Y, int Z, boolean except) From f5e1ef26658469b994ced6c937171e6e62b3d9c8 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 15 Dec 2016 13:35:09 +0700 Subject: [PATCH 329/462] Removes backpack buffs on player death --- .../com/darkona/adventurebackpack/inventory/SlotFluid.java | 4 ++-- .../adventurebackpack/item/ItemAdventureBackpack.java | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java index b3082613..c06b7f34 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java @@ -18,7 +18,7 @@ public class SlotFluid extends SlotAdventureBackpack { private static final String[] VALID_TOOL_NAMES = { "bucket", - }; + }; private static final String[] VALID_TOOL_IDS = { "minecraft:milk_bucket", @@ -27,7 +27,7 @@ public class SlotFluid extends SlotAdventureBackpack private static final String[] INVALID_TOOL_NAMES = { "cell", - }; + }; public SlotFluid(IInventory inventory, int id, int x, int y) { diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 655227e5..ced14df4 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -295,7 +295,8 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) @Override public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) { - if(world.isRemote)return; + onUnequipped (world, player, stack); + if (world.isRemote) return; if (Wearing.isWearingTheRightBackpack(player, "Creeper")) { @@ -309,7 +310,8 @@ public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) player.dropPlayerItemWithRandomChoice(stack, false); BackpackProperty.get(player).setWearable(null); } - }else{ + } else + { player.dropPlayerItemWithRandomChoice(stack, false); BackpackProperty.get(player).setWearable(null); } From 471d2ca118443ac403cbff3de291a1e6cce7f4a5 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sat, 24 Dec 2016 02:14:23 +0700 Subject: [PATCH 330/462] Added config for Bat/IronGolem Backpacks worldgen --- .../darkona/adventurebackpack/config/ConfigHandler.java | 4 ++++ .../adventurebackpack/handlers/ClientEventHandler.java | 2 +- .../com/darkona/adventurebackpack/init/ModWorldGen.java | 9 +++++---- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 49fa9de6..4403589b 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -70,7 +70,9 @@ public class ConfigHandler public static boolean recipeSaddle = true; public static boolean recipeMachete = true; + public static boolean allowBatGen = true; public static boolean allowBonusGen = false; + public static boolean allowGolemGen = true; public static boolean allowPigmanGen = false; public static void init(File configFile) @@ -137,7 +139,9 @@ private static void loadConfiguration() nameUnlocalized = config.getStringList("By Internal Name", "items.disallowed", nameDefault, "Disallow items by internal (unlocalized) name. Not case sensitive. Example: tile.dirt"); // WorldGen + allowBatGen = config.getBoolean("Bat Backpacks", "worldgen", true, "Allow generation of Bat Backpacks in dungeon and mineshaft loot. It cannot be obtained by crafting"); allowBonusGen = config.getBoolean("Bonus Backpack", "worldgen", false, "Include a Standard Adventure Backpack in bonus chest?"); + allowGolemGen = config.getBoolean("IronGolem Backpacks", "worldgen", true, "Allow generation of IronGolem Backpacks in village blacksmith loot. It cannot be obtained by crafting"); allowPigmanGen = config.getBoolean("Pigman Backpacks", "worldgen", false, "Allow generation of Pigman Backpacks in dungeon loot and villager trades"); if (config.hasChanged()) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java index e514fd25..5942f19c 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java @@ -109,4 +109,4 @@ public void mouseWheelDetect(MouseEvent event) } } } -} +} \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java b/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java index 511acdfa..a49b67df 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java @@ -1,7 +1,10 @@ package com.darkona.adventurebackpack.init; +import java.util.Random; + import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.reference.BackpackNames; + import cpw.mods.fml.common.registry.VillagerRegistry; import net.minecraft.entity.passive.EntityVillager; import net.minecraft.init.Items; @@ -11,8 +14,6 @@ import net.minecraft.village.MerchantRecipeList; import net.minecraftforge.common.ChestGenHooks; -import java.util.Random; - /** * Created on 24/12/2014 * @@ -27,11 +28,11 @@ public static void init() for (int i = 0; i < BackpackNames.backpackNames.length; i++) { - if (BackpackNames.backpackNames[i].equals("IronGolem")) + if (BackpackNames.backpackNames[i].equals("IronGolem") && ConfigHandler.allowGolemGen) { ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i); ChestGenHooks.addItem(ChestGenHooks.VILLAGE_BLACKSMITH, new WeightedRandomChestContent(backpack, 1, 1, 2)); - } else if (BackpackNames.backpackNames[i].equals("Bat")) + } else if (BackpackNames.backpackNames[i].equals("Bat") && ConfigHandler.allowBatGen) { ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i); ChestGenHooks.addItem(ChestGenHooks.DUNGEON_CHEST, new WeightedRandomChestContent(backpack, 1, 1, 2)); From 4b1a580d5d4cf6f02fb967da05d8f5ebb2d10942 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 26 Dec 2016 20:33:12 +0700 Subject: [PATCH 331/462] Deleted Hannukah and ChinaNewYear because no textures PistonBoots can be repaired by leather --- .../darkona/adventurebackpack/AdventureBackpack.java | 10 ++++------ .../adventurebackpack/item/ItemAdventureHat.java | 2 +- .../adventurebackpack/item/ItemAdventurePants.java | 2 +- .../adventurebackpack/item/ItemAdventureSuit.java | 2 +- .../adventurebackpack/item/ItemPistonBoots.java | 3 +-- .../java/com/darkona/adventurebackpack/util/Utils.java | 6 ++---- 6 files changed, 10 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java index e2614ef8..4bd9bf7c 100644 --- a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java @@ -19,8 +19,6 @@ import com.darkona.adventurebackpack.reference.ModInfo; import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Utils; -import com.darkona.adventurebackpack.util.calendar.ChineseCalendar; -import com.darkona.adventurebackpack.util.calendar.JewishCalendar; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Loader; @@ -55,8 +53,8 @@ public class AdventureBackpack public static CreativeTabAB creativeTab = new CreativeTabAB(); - public boolean chineseNewYear; - public boolean hannukah; + //public boolean chineseNewYear; + //public boolean hannukah; public String Holiday; PlayerEventHandler playerEventHandler; ClientEventHandler clientEventHandler; @@ -73,8 +71,8 @@ public void preInit(FMLPreInitializationEvent event) //Configuration FMLCommonHandler.instance().bus().register(new ConfigHandler()); ConfigHandler.init(event.getSuggestedConfigurationFile()); - chineseNewYear = ChineseCalendar.isChineseNewYear(year, month, day); - hannukah = JewishCalendar.isHannukah(year, month, day); + //chineseNewYear = ChineseCalendar.isChineseNewYear(year, month, day); + //hannukah = JewishCalendar.isHannukah(year, month, day); Holiday = Utils.getHoliday(); //ModStuff diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java index 9eee68c4..659eb7b2 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java @@ -32,7 +32,7 @@ public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemSta @Override public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) { - return par2ItemStack.isItemEqual(new ItemStack(Items.leather)); + return par2ItemStack.isItemEqual(new ItemStack(Items.leather)); } } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventurePants.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventurePants.java index f6639186..773b7387 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventurePants.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventurePants.java @@ -21,6 +21,6 @@ public ItemAdventurePants() @Override public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) { - return par2ItemStack.isItemEqual(new ItemStack(Items.leather)); + return par2ItemStack.isItemEqual(new ItemStack(Items.leather)); } } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureSuit.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureSuit.java index b34e5d67..f3c9d316 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureSuit.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureSuit.java @@ -21,6 +21,6 @@ public ItemAdventureSuit() @Override public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) { - return par2ItemStack.isItemEqual(new ItemStack(Items.leather)); + return par2ItemStack.isItemEqual(new ItemStack(Items.leather)); } } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java b/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java index aad3b200..2aad0d1a 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java @@ -1,7 +1,6 @@ package com.darkona.adventurebackpack.item; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; @@ -34,6 +33,6 @@ public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) @Override public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) { - return par2ItemStack.isItemEqual(new ItemStack(Blocks.piston)); + return par2ItemStack.isItemEqual(new ItemStack(Items.leather)); } } diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index fa0322da..c91d3d86 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -2,8 +2,6 @@ import java.util.Calendar; -import com.darkona.adventurebackpack.AdventureBackpack; - import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; import net.minecraft.block.Block; @@ -65,8 +63,8 @@ public static String getHoliday() month = calendar.get(Calendar.MONTH) + 1, day = calendar.get(Calendar.DAY_OF_MONTH); - if (AdventureBackpack.instance.chineseNewYear) return "ChinaNewYear"; - if (AdventureBackpack.instance.hannukah) return "Hannukah"; + //if (AdventureBackpack.instance.chineseNewYear) return "ChinaNewYear"; + //if (AdventureBackpack.instance.hannukah) return "Hannukah"; if (month == Utils.calculateEaster(year)[0] && day == Utils.calculateEaster(year)[1]) return "Easter"; String dia = "Standard"; if (month == 1) From 72f3300b6b8b79917f0be7bb73ebdf32fbf317b4 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sun, 1 Jan 2017 21:08:43 +0700 Subject: [PATCH 332/462] Avoid void --- .../item/ItemAdventureBackpack.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index ced14df4..313d3bcc 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -323,15 +323,21 @@ private boolean tryPlace(World world, EntityPlayer player, ItemStack backpack) if (player.posX < 0) X--; int Z = (int) player.posZ; if (player.posZ < 0) Z--; + int Y = (int) player.posY; + if (Y < 1) Y = 1; + int positions[] = {0,-1,1,-2,2,-3,3,-4,4,-5,5,-6,6}; - for (int Y: positions) + for (int shiftY : positions) { - ChunkCoordinates spawn = - Utils.getNearestEmptyChunkCoordinatesSpiral(world, X, Z, X, (int)player.posY + Y, Z, 5, true, 1, (byte) 0, false); - if (spawn != null) + if (Y + shiftY >= 1) { - return placeBackpack(backpack, player, world, spawn.posX, spawn.posY, spawn.posZ, ForgeDirection.UP.ordinal(), false); + ChunkCoordinates spawn = + Utils.getNearestEmptyChunkCoordinatesSpiral(world, X, Z, X, Y + shiftY, Z, 6, true, 1, (byte) 0, false); + if (spawn != null) + { + return placeBackpack(backpack, player, world, spawn.posX, spawn.posY, spawn.posZ, ForgeDirection.UP.ordinal(), false); + } } } return false; From 3499a632ae7df9ad4940726b477bb5138205232f Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sat, 7 Jan 2017 12:02:33 +0700 Subject: [PATCH 333/462] Typos --- .../inventory/ContainerBackpack.java | 81 ++++++++----------- 1 file changed, 35 insertions(+), 46 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 835a2832..14fab192 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -337,59 +337,48 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) if (containerFilled) { - if (leftAmount == 0) - { - if ((rightAmount > 0) && (rightAmount + containerCapacity <= maxAmount) && (rightFluidName.equals(containerFluidName))) - { - mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false); - } - else - { - mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false); - } - } - else if ((leftAmount + containerCapacity <= maxAmount) && (leftFluidName.equals(containerFluidName))) - { - mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false); - } - else if ((rightAmount == 0) || (rightAmount + containerCapacity <= maxAmount) && (rightFluidName.equals(containerFluidName))) - { - mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false); - } - else if (SlotBackpack.isValidItem(stack)); - { - mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false); - } + if (leftAmount == 0) + { + if ((rightAmount > 0) && (rightAmount + containerCapacity <= maxAmount) && (rightFluidName.equals(containerFluidName))) + { + mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false); + } + else + { + mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false); + } + } + else if ((leftAmount + containerCapacity <= maxAmount) && (leftFluidName.equals(containerFluidName))) + { + mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false); + } + else if ((rightAmount == 0) || (rightAmount + containerCapacity <= maxAmount) && (rightFluidName.equals(containerFluidName))) + { + mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false); + } + else if (SlotBackpack.isValidItem(stack)) + { + mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false); + } } else if (!containerFilled) { - if (leftAmount == 0) - { - if (rightAmount != 0) - { - mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false); - } - else if (SlotBackpack.isValidItem(stack)); - { - mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false); - } - } - else - { - mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false); - } - } - - /*if (!mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false)) - { - if (!mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false)) + if (leftAmount == 0) { - if (SlotBackpack.isValidItem(stack) && (!mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false))) + if (rightAmount != 0) { - return null; + mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false); + } + else if (SlotBackpack.isValidItem(stack)) + { + mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false); } } - }*/ + else + { + mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false); + } + } } else if (SlotBackpack.isValidItem(stack)) { From 56166bad956a51372824179143ea08e7592e352a Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sun, 8 Jan 2017 21:29:03 +0700 Subject: [PATCH 334/462] Added ingame key for switch NightVision BackpackToggleKey when wearing backpack --- .../common/BackpackAbilities.java | 73 +++++++++++------ .../common/BackpackRemovals.java | 81 ++++++++++++------- .../common/ServerActions.java | 52 ++++++++---- .../handlers/KeybindHandler.java | 27 +++++-- .../inventory/InventoryBackpack.java | 14 +++- .../network/WearableModePacket.java | 7 +- .../assets/adventurebackpack/lang/en_US.lang | 2 + 7 files changed, 182 insertions(+), 74 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java index 7bcefe1d..b296d2fe 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java @@ -12,6 +12,7 @@ import com.darkona.adventurebackpack.reference.BackpackNames; import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Utils; +import com.darkona.adventurebackpack.util.Wearing; import net.minecraft.entity.Entity; import net.minecraft.entity.ai.EntityAIBase; @@ -136,15 +137,20 @@ public void executeRemoval(EntityPlayer player, World world,ItemStack backpack ) oops.printStackTrace(); } } + /** * These are the colorNames of the backpacks that have abilities when being worn. */ - private static String[] validWearingBackpacks = { - "Bat", "Squid", "Pigman", "Cactus", "Cow", "Pig", "Dragon", "Slime", "Chicken", "Wolf", "Ocelot", "Creeper", "Rainbow", "Melon", "Sunflower","Mooshroom"}; + private static String[] validWearingBackpacks = + { + "Bat", "Squid", "Pigman", "Cactus", "Cow", "Pig", "Dragon", "Slime", "Chicken", "Wolf", "Ocelot", "Creeper", "Rainbow", "Melon", "Sunflower","Mooshroom" + }; - private static String[] validRemovalBackpacks = { + private static String[] validRemovalBackpacks = + { "Bat", "Squid", "Pigman", "Dragon", "Rainbow" - }; + }; + /** * These are the colorNames of the backpacks that have abilities while being blocks. Note that not all the * backpacks that have particularities while in block form necessarily have abilities. @@ -152,7 +158,10 @@ public void executeRemoval(EntityPlayer player, World world,ItemStack backpack ) * @see com.darkona.adventurebackpack.block.BlockAdventureBackpack */ @SuppressWarnings("unused") - private static String[] validTileBackpacks = {"Cactus","Melon"}; + private static String[] validTileBackpacks = + { + "Cactus", "Melon" + }; /** * Detects if a player is under the rain. For detecting when it is Under The Sea (maybe to sing a nice Disney tune) @@ -188,7 +197,8 @@ public void itemSunflower(EntityPlayer player, World world, ItemStack backpack) //LogHelper.info("OMNOMNOMNOM"); } inv.setLastTime(Utils.secondsToTicks(120)); - }else{ + } else + { inv.setLastTime(inv.getLastTime() - 1); } inv.dirtyTime(); @@ -205,12 +215,16 @@ public void itemBat(EntityPlayer player, World world, ItemStack backpack) //Shameless rip-off from Machinemuse. Thanks Claire, I don't have to reinvent the wheel thanks to you. //I will use a different potion id to avoid conflicting with her modular suits PotionEffect nightVision = null; - if (player.isPotionActive(Potion.nightVision.id)) { + if (player.isPotionActive(Potion.nightVision.id)) + { nightVision = player.getActivePotionEffect(Potion.nightVision); } - if (nightVision == null || nightVision.getDuration() < 220) + if ((nightVision == null || nightVision.getDuration() < 220) && !Wearing.getBackpackInv(player, true).getDisableNightVision()) + { + player.addPotionEffect(new PotionEffect(Potion.nightVision.id, 6000, -1)); + } else if (nightVision != null && Wearing.getBackpackInv(player, true).getDisableNightVision()) { - player.addPotionEffect(new PotionEffect(Potion.nightVision.id, 5000, -1)); + backpackRemovals.itemBat(player, world, backpack); } } @@ -220,7 +234,8 @@ public void itemSquid(EntityPlayer player, World world, ItemStack backpack) { player.addPotionEffect(new PotionEffect(Potion.waterBreathing.getId(), 1, -1)); itemBat(player, world, backpack); - }else{ + } else + { backpackRemovals.itemSquid(player,world, backpack); } } @@ -228,12 +243,13 @@ public void itemSquid(EntityPlayer player, World world, ItemStack backpack) public void itemPigman(EntityPlayer player, World world, ItemStack backpack) { PotionEffect potion = null; - if (player.isPotionActive(Potion.fireResistance.id)) { + if (player.isPotionActive(Potion.fireResistance.id)) + { potion = player.getActivePotionEffect(Potion.fireResistance); } - if (potion == null || potion.getDuration() < 5 && potion.getAmplifier() != -1) + if (potion == null || potion.getDuration() < 220 && potion.getAmplifier() <= -1) { - player.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 5000, -1)); + player.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 6000, -1)); } } @@ -247,22 +263,24 @@ public void itemPigman(EntityPlayer player, World world, ItemStack backpack) public void itemDragon(EntityPlayer player, World world, ItemStack backpack) { itemBat(player, world, backpack); - itemPigman(player,world,backpack); - //itemSquid(player, world, backpack); + itemPigman(player,world,backpack); + PotionEffect potion = null; - if (player.isPotionActive(Potion.regeneration.id)) { + if (player.isPotionActive(Potion.regeneration.id)) + { potion = player.getActivePotionEffect(Potion.regeneration); } - if (potion == null || potion.getDuration() < 40 && potion.getAmplifier() != 2) + if (potion == null || potion.getDuration() < 220 && potion.getAmplifier() <= 2) { - player.addPotionEffect(new PotionEffect(Potion.regeneration.getId(), 5000, 2)); + player.addPotionEffect(new PotionEffect(Potion.regeneration.getId(), 6000, 2)); } potion = null; - if (player.isPotionActive(Potion.damageBoost.id)) { + if (player.isPotionActive(Potion.damageBoost.id)) + { potion = player.getActivePotionEffect(Potion.damageBoost); } - if (potion == null || potion.getDuration() < 40 && potion.getAmplifier() != 2) { - player.addPotionEffect(new PotionEffect(Potion.damageBoost.getId(), 5000, 2)); + if (potion == null || potion.getDuration() < 220 && potion.getAmplifier() <= 2) { + player.addPotionEffect(new PotionEffect(Potion.damageBoost.getId(), 6000, 2)); } } @@ -285,11 +303,13 @@ public void itemRainbow(EntityPlayer player, World world, ItemStack backpack) } } PotionEffect moveSpeed = null; - if (player.isPotionActive(Potion.moveSpeed.id)) { + if (player.isPotionActive(Potion.moveSpeed.id)) + { moveSpeed = player.getActivePotionEffect(Potion.moveSpeed); } - if (moveSpeed == null || moveSpeed.getDuration() < 40 && moveSpeed.getAmplifier() != 0) { - player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 5000, 0)); + if (moveSpeed == null || moveSpeed.getDuration() < 220 && moveSpeed.getAmplifier() <= 0) + { + player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 6000, 0)); } inv.setLastTime(noteTime); inv.markDirty(); @@ -316,7 +336,7 @@ public void itemIronGolem(EntityPlayer player, World world, ItemStack backpack) public void itemCactus(EntityPlayer player, World world, ItemStack backpack) { //lastTime is in ticks for this backpack. - if(world.isRemote)return; + if (world.isRemote) return; InventoryBackpack inv = new InventoryBackpack(backpack); int drops = 0; if (player.isInWater()) @@ -334,7 +354,8 @@ public void itemCactus(EntityPlayer player, World world, ItemStack backpack) FluidStack raindrop = new FluidStack(FluidRegistry.WATER, drops); inv.getLeftTank().fill(raindrop, true); inv.getRightTank().fill(raindrop, true); - }else{ + } else + { inv.setLastTime(inv.getLastTime() - 1); } inv.dirtyTime(); diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java index 4d91eb49..06fc0662 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java @@ -19,13 +19,17 @@ public class BackpackRemovals public void itemBat(EntityPlayer player, World world, ItemStack backpack) { PotionEffect potion = null; - if (player.isPotionActive(Potion.nightVision.id)) { + if (player.isPotionActive(Potion.nightVision.id)) + { potion = player.getActivePotionEffect(Potion.nightVision); - if (potion != null && potion.getAmplifier() == -1) { - if (player.worldObj.isRemote) { + if (potion != null && potion.getAmplifier() == -1) + { + if (player.worldObj.isRemote) + { player.removePotionEffectClient(Potion.nightVision.id); - } else { + } else + { player.removePotionEffect(Potion.nightVision.id); } } @@ -36,13 +40,17 @@ public void itemSquid(EntityPlayer player, World world, ItemStack backpack) { itemBat(player, world, backpack); PotionEffect potion = null; - if (player.isPotionActive(Potion.waterBreathing.id)) { + if (player.isPotionActive(Potion.waterBreathing.id)) + { potion = player.getActivePotionEffect(Potion.waterBreathing); - if (potion != null && potion.getAmplifier() == -1) { - if (player.worldObj.isRemote) { + if (potion != null && potion.getAmplifier() == -1) + { + if (player.worldObj.isRemote) + { player.removePotionEffectClient(Potion.waterBreathing.id); - } else { + } else + { player.removePotionEffect(Potion.waterBreathing.id); } } @@ -52,13 +60,17 @@ public void itemSquid(EntityPlayer player, World world, ItemStack backpack) public void itemPigman(EntityPlayer player, World world, ItemStack backpack) { PotionEffect potion = null; - if (player.isPotionActive(Potion.fireResistance.id)) { + if (player.isPotionActive(Potion.fireResistance.id)) + { potion = player.getActivePotionEffect(Potion.fireResistance); - if (potion != null && potion.getAmplifier() == -1) { - if (player.worldObj.isRemote) { + if (potion != null && potion.getAmplifier() == -1) + { + if (player.worldObj.isRemote) + { player.removePotionEffectClient(Potion.fireResistance.id); - } else { + } else + { player.removePotionEffect(Potion.fireResistance.id); } } @@ -70,24 +82,32 @@ public void itemDragon(EntityPlayer player, World world, ItemStack backpack) itemBat(player, world, backpack); itemPigman(player,world,backpack); PotionEffect potion = null; - if (player.isPotionActive(Potion.damageBoost.id)) { + if (player.isPotionActive(Potion.damageBoost.id)) + { potion = player.getActivePotionEffect(Potion.damageBoost); - if (potion != null && potion.getAmplifier() == 2) { - if (player.worldObj.isRemote) { + if (potion != null && potion.getAmplifier() == 2) + { + if (player.worldObj.isRemote) + { player.removePotionEffectClient(Potion.damageBoost.id); - } else { + } else + { player.removePotionEffect(Potion.damageBoost.id); } } } potion = null; - if (player.isPotionActive(Potion.regeneration.id)) { + if (player.isPotionActive(Potion.regeneration.id)) + { potion = player.getActivePotionEffect(Potion.regeneration); - if (potion != null && potion.getAmplifier() == 2) { - if (player.worldObj.isRemote) { + if (potion != null && potion.getAmplifier() == 2) + { + if (player.worldObj.isRemote) + { player.removePotionEffectClient(Potion.regeneration.id); - } else { + } else + { player.removePotionEffect(Potion.regeneration.id); } } @@ -101,12 +121,16 @@ public void itemRainbow(EntityPlayer player, World world, ItemStack backpack) inv.setLastTime(0); inv.dirtyTime(); PotionEffect potion = null; - if (player.isPotionActive(Potion.moveSpeed.id)) { + if (player.isPotionActive(Potion.moveSpeed.id)) + { potion = player.getActivePotionEffect(Potion.moveSpeed); - if (potion != null && potion.getAmplifier() == 0) { - if (player.worldObj.isRemote) { + if (potion != null && potion.getAmplifier() == 0) + { + if (player.worldObj.isRemote) + { player.removePotionEffectClient(Potion.moveSpeed.id); - } else { + } else + { player.removePotionEffect(Potion.moveSpeed.id); } } @@ -114,10 +138,13 @@ public void itemRainbow(EntityPlayer player, World world, ItemStack backpack) /*potion = null; if (player.isPotionActive(Potion.jump.id)) { potion = player.getActivePotionEffect(Potion.jump); - if (potion != null && potion.getAmplifier() == 1) { - if (player.worldObj.isRemote) { + if (potion != null && potion.getAmplifier() == 1) + { + if (player.worldObj.isRemote) + { player.removePotionEffectClient(Potion.jump.id); - } else { + } else + { player.removePotionEffect(Potion.jump.id); } } diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index 5ae946a3..7049cf31 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -417,19 +417,42 @@ public static void toggleToolCycling(EntityPlayer player, ItemStack backpack, by { if (inv.getCyclingStatus()) { - inv.setCyclingStatus(false); - inv.markDirty(); - if (player.worldObj.isRemote) - { - player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.cycling.off")); - } - } else { - inv.setCyclingStatus(true); - inv.markDirty(); - if (player.worldObj.isRemote) - { - player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.cycling.on")); - } + inv.setCyclingStatus(false); + inv.markDirty(); + if (player.worldObj.isRemote) + { + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.cycling.off")); + } + } else + { + inv.setCyclingStatus(true); + inv.markDirty(); + if (player.worldObj.isRemote) + { + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.cycling.on")); + } + } + } + } + + public static void toggleNightVision(EntityPlayer player, ItemStack backpack, byte on_off) + { + InventoryBackpack inv = new InventoryBackpack(backpack); + if (inv.getDisableNightVision()) + { + inv.setDisableNightVision(false); + inv.markDirty(); + if (player.worldObj.isRemote) + { + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.nightvision.on")); + } + } else + { + inv.setDisableNightVision(true); + inv.markDirty(); + if (player.worldObj.isRemote) + { + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.nightvision.off")); } } } @@ -445,7 +468,8 @@ public static void toggleSteamJetpack(EntityPlayer player, ItemStack jetpack, by { player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.jetpack.off")); } - }else{ + } else + { inv.setStatus(true); inv.markDirty(); if (player.worldObj.isRemote) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java index d4dd6ed0..ac18c715 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java @@ -22,6 +22,8 @@ /** * Created by Darkona on 11/10/2014. */ + + public class KeybindHandler { private static Key getPressedKeyBinding() @@ -42,6 +44,8 @@ private static Key getPressedKeyBinding() return Key.UNKNOWN; } + private static final String[] NIGHTVISION_BACKPACKS = {"Bat", "Squid", "Dragon"}; + @SubscribeEvent public void handleKeyInputEvent(InputEvent.KeyInputEvent event) { @@ -49,7 +53,7 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) Minecraft mc = Minecraft.getMinecraft(); EntityPlayer player = mc.thePlayer; - if(player != null) + if (player != null) { if (keypressed == Key.INVENTORY_KEY) { @@ -71,7 +75,7 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) if (Wearing.isWearingCopter(player)) { ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.COPTER_GUI, GUIPacket.FROM_KEYBIND)); - } + } if (Wearing.isWearingSteam(player)) { ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.JETPACK_GUI, GUIPacket.FROM_KEYBIND)); @@ -82,14 +86,27 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) if (keypressed == Key.TOGGLE_KEY) { - if(player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemHose) + if (player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemHose) { ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(0, (player).inventory.currentItem, CycleToolPacket.TOGGLE_HOSE_TANK)); ServerActions.switchHose(player, ServerActions.HOSE_TOGGLE, 0, (player).inventory.currentItem); } else if (Wearing.isWearingBackpack(player)) { - ModNetwork.net.sendToServer(new WearableModePacket.Message(WearableModePacket.CYCLING_ON_OFF, "")); - ServerActions.toggleToolCycling(player, Wearing.getWearingBackpack(player), WearableModePacket.CYCLING_ON_OFF); + if (player.isSneaking()) + { + for (String valid : NIGHTVISION_BACKPACKS) + { + if (Wearing.getBackpackInv(player, true).getColorName().equals(valid)) + { + ModNetwork.net.sendToServer(new WearableModePacket.Message(WearableModePacket.NIGHTVISION_ON_OFF, "")); + ServerActions.toggleNightVision(player, Wearing.getWearingBackpack(player), WearableModePacket.NIGHTVISION_ON_OFF); + } + } + } else + { + ModNetwork.net.sendToServer(new WearableModePacket.Message(WearableModePacket.CYCLING_ON_OFF, "")); + ServerActions.toggleToolCycling(player, Wearing.getWearingBackpack(player), WearableModePacket.CYCLING_ON_OFF); + } } if (Wearing.isWearingCopter(player)) { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index 863f23af..c3cf93dc 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -41,6 +41,7 @@ public void setContainerStack(ItemStack containerStack) public static final boolean OFF = false; public static final boolean ON = true; + private boolean disableNightVision = OFF; private boolean cyclingStatus = ON; private ItemStack containerStack; @@ -246,6 +247,7 @@ public void loadFromNBT(NBTTagCompound compound) special = backpackData.getBoolean("special"); extendedProperties = backpackData.getCompoundTag("extendedProperties"); cyclingStatus = backpackData.getBoolean("cyclingStatus"); + disableNightVision = backpackData.getBoolean("disableNightVision"); } } @@ -276,6 +278,7 @@ public void saveToNBT(NBTTagCompound compound) backpackData.setTag("rightTank", rightTank.writeToNBT(new NBTTagCompound())); backpackData.setTag("leftTank", leftTank.writeToNBT(new NBTTagCompound())); backpackData.setBoolean("cyclingStatus", cyclingStatus); + backpackData.setBoolean("disableNightVision", disableNightVision); compound.setTag("backpackData",backpackData); //} @@ -428,5 +431,14 @@ public void setCyclingStatus(boolean status) this.cyclingStatus = status; } -} + public boolean getDisableNightVision() + { + return disableNightVision; + } + + public void setDisableNightVision(boolean vision) + { + this.disableNightVision = vision; + } +} \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java b/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java index e384737e..fdad0b00 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java @@ -21,6 +21,8 @@ public class WearableModePacket implements IMessageHandler Date: Sun, 8 Jan 2017 21:57:14 +0700 Subject: [PATCH 335/462] Save NightVision status in tile form --- .../adventurebackpack/block/TileAdventureBackpack.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index a9554a6e..68a1641d 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -48,6 +48,8 @@ public class TileAdventureBackpack extends TileEntity implements IInventoryAdven private int luminosity; private NBTTagCompound extendedProperties; private boolean cyclingStatus; + private boolean disableNightVision; + public int getLuminosity() { @@ -282,6 +284,7 @@ public void loadFromNBT(NBTTagCompound compound) special = backpackData.getBoolean("special"); extendedProperties = backpackData.getCompoundTag("extended"); cyclingStatus = backpackData.getBoolean("cyclingStatus"); + disableNightVision = backpackData.getBoolean("disableNightVision"); } } @@ -309,6 +312,7 @@ public void saveToNBT(NBTTagCompound compound) backpackData.setTag("rightTank", rightTank.writeToNBT(new NBTTagCompound())); backpackData.setTag("leftTank", leftTank.writeToNBT(new NBTTagCompound())); backpackData.setBoolean("cyclingStatus", cyclingStatus); + backpackData.setBoolean("disableNightVision", disableNightVision); compound.setTag("backpackData",backpackData); } From b5649e10f587557a223d0271c3d036f41ad2beef Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 9 Jan 2017 00:55:50 +0700 Subject: [PATCH 336/462] Added config for consume Dragon Egg when Dragon backpack crafted --- .../com/darkona/adventurebackpack/config/ConfigHandler.java | 2 ++ .../darkona/adventurebackpack/handlers/PlayerEventHandler.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 4403589b..f2f29537 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -62,6 +62,7 @@ public class ConfigHandler public static String[] nameUnlocalized; public static String[] nameDefault = {}; + public static boolean consumeDragonEgg = false; public static boolean recipeAdventuresSet = true; public static boolean recipeClockCrossbow = true; public static boolean recipeCoalJetpack = true; @@ -124,6 +125,7 @@ private static void loadConfiguration() forbiddenDimensions = config.getStringList("Forbidden Dimensions", "items", nameDefault, "Disallow opening backpack inventory for specific dimension ID"); // Items.Recipes + consumeDragonEgg = config.getBoolean("Consume Dragon Egg", "items.recipes", false, "Consume Dragon Egg when Dragon backpack crafted?"); recipeAdventuresSet = config.getBoolean("Adventures Set", "items.recipes", true, "Enable/Disable recipe for Adventure's Hat, Suit and Pants"); recipeClockCrossbow = config.getBoolean("Clockwork Crossbow", "items.recipes", true, "Enable/Disable Clockwork Crossbow recipe"); recipeCopterPack = config.getBoolean("Copter Pack", "items.recipes", true, "Enable/Disable CopterPack recipe"); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 743a74ab..0315797c 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -247,7 +247,7 @@ public void playerCraftsBackpack(PlayerEvent.ItemCraftedEvent event) if (event.crafting.getItem() == ModItems.adventureBackpack) { LogHelper.info("Player crafted a backpack, and that backpack's appearance is: " + event.crafting.getTagCompound().getString("colorName")); - if (BackpackNames.getBackpackColorName(event.crafting).equals("Dragon")) + if (BackpackNames.getBackpackColorName(event.crafting).equals("Dragon") && !ConfigHandler.consumeDragonEgg) { event.player.dropPlayerItemWithRandomChoice(new ItemStack(Blocks.dragon_egg, 1), false); event.player.playSound("mob.enderdragon.growl", 1.0f, 5.0f); From 1bf312db55369cd937a41297d10e928b5fde6f3a Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 9 Jan 2017 01:19:02 +0700 Subject: [PATCH 337/462] Format & Tuning potion effects --- .../common/BackpackAbilities.java | 23 +++++++------- .../handlers/PlayerEventHandler.java | 31 +++++++++---------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java index b296d2fe..b6685960 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java @@ -190,9 +190,10 @@ public void itemSunflower(EntityPlayer player, World world, ItemStack backpack) if (inv.getLastTime() <= 0) { - if(world.isDaytime() && + if (world.isDaytime() && /*!world.isRemote &&*/ - world.canBlockSeeTheSky(MathHelper.floor_double(player.posX),MathHelper.floor_double(player.posY+1),MathHelper.floor_double(player.posZ))) { + world.canBlockSeeTheSky(MathHelper.floor_double(player.posX),MathHelper.floor_double(player.posY+1),MathHelper.floor_double(player.posZ))) + { player.getFoodStats().addStats(2, 0.2f); //LogHelper.info("OMNOMNOMNOM"); } @@ -247,7 +248,7 @@ public void itemPigman(EntityPlayer player, World world, ItemStack backpack) { potion = player.getActivePotionEffect(Potion.fireResistance); } - if (potion == null || potion.getDuration() < 220 && potion.getAmplifier() <= -1) + if (potion == null || potion.getDuration() < 220) { player.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 6000, -1)); } @@ -270,7 +271,7 @@ public void itemDragon(EntityPlayer player, World world, ItemStack backpack) { potion = player.getActivePotionEffect(Potion.regeneration); } - if (potion == null || potion.getDuration() < 220 && potion.getAmplifier() <= 2) + if (potion == null || (potion.getDuration() < 220 && potion.getAmplifier() <= 2) || potion.getDuration() < 40) { player.addPotionEffect(new PotionEffect(Potion.regeneration.getId(), 6000, 2)); } @@ -279,7 +280,8 @@ public void itemDragon(EntityPlayer player, World world, ItemStack backpack) { potion = player.getActivePotionEffect(Potion.damageBoost); } - if (potion == null || potion.getDuration() < 220 && potion.getAmplifier() <= 2) { + if (potion == null || (potion.getDuration() < 220 && potion.getAmplifier() <= 2) || potion.getDuration() < 40) + { player.addPotionEffect(new PotionEffect(Potion.damageBoost.getId(), 6000, 2)); } } @@ -315,8 +317,6 @@ public void itemRainbow(EntityPlayer player, World world, ItemStack backpack) inv.markDirty(); } - - public void itemIronGolem(EntityPlayer player, World world, ItemStack backpack) { @@ -461,7 +461,7 @@ public void itemChicken(EntityPlayer player, World world, ItemStack backpack) public void itemMelon(EntityPlayer player, World world, ItemStack backpack) { //lastTime is in ticks for this backpack. - if(world.isRemote)return; + if (world.isRemote) return; InventoryBackpack inv = new InventoryBackpack(backpack); int drops = 0; if (player.isInWater()) @@ -479,7 +479,8 @@ public void itemMelon(EntityPlayer player, World world, ItemStack backpack) FluidStack raindrop = new FluidStack(ModFluids.melonJuice, drops); inv.getLeftTank().fill(raindrop, true); inv.getRightTank().fill(raindrop, true); - }else{ + } else + { inv.setLastTime(inv.getLastTime() - 1); } inv.dirtyTime(); @@ -601,7 +602,7 @@ public void itemCow(EntityPlayer player, World world, ItemStack backpack) inv.extendedProperties.setInteger("wheatConsumed", wheatConsumed); inv.extendedProperties.setInteger("milkTime", milkTime); inv.setLastTime(eatTime); - // inv.setLastTime(eatTime); + //inv.setLastTime(eatTime); inv.dirtyExtended(); //inv.dirtyTanks(); inv.dirtyTime(); @@ -662,7 +663,7 @@ public void itemMooshroom(EntityPlayer player, World world, ItemStack backpack) inv.extendedProperties.setInteger("wheatConsumed", wheatConsumed); inv.extendedProperties.setInteger("milkTime", milkTime); inv.setLastTime(eatTime); - // inv.setLastTime(eatTime); + //inv.setLastTime(eatTime); inv.dirtyExtended(); //inv.dirtyTanks(); inv.dirtyTime(); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 0315797c..68c43f18 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -86,7 +86,6 @@ public void joinPlayer(EntityJoinWorldEvent event) } } } - } @SubscribeEvent @@ -95,10 +94,10 @@ public NBTTagCompound playerLogsIn(PlayerEvent.PlayerLoggedInEvent event) if (event.player instanceof EntityPlayerMP) { BackpackProperty.sync(event.player); - return new NBTTagCompound(); - } - return null; + return new NBTTagCompound(); } + return null; + } @SubscribeEvent public void playerTravelsAcrossDimensions(PlayerEvent.PlayerChangedDimensionEvent event) @@ -130,26 +129,26 @@ public void onPlayerJump(LivingEvent.LivingJumpEvent event) } - boolean pistonBootsStepHeight=false; + boolean pistonBootsStepHeight = false; @SubscribeEvent public void pistonBootsUnequipped(LivingEvent.LivingUpdateEvent event) { - if (event.entityLiving instanceof EntityPlayer) - { + if (event.entityLiving instanceof EntityPlayer) + { EntityPlayer player = (EntityPlayer)event.entityLiving; if (Wearing.isWearingBoots(player)) { - if (!pistonBootsStepHeight) - { - pistonBootsStepHeight = true; - } + if (!pistonBootsStepHeight) + { + pistonBootsStepHeight = true; + } } else if (pistonBootsStepHeight) { - player.stepHeight = 0.5001F; - pistonBootsStepHeight=false; + player.stepHeight = 0.5001F; + pistonBootsStepHeight=false; } - } + } } /** @@ -322,14 +321,14 @@ public void tickPlayer(TickEvent.PlayerTickEvent event) { BackpackProperty.get(event.player).executeWearableUpdateProtocol(); } - if (event.phase == TickEvent.Phase.END) + /*if (event.phase == TickEvent.Phase.END) { if (event.side.isServer()) { //Thanks @knoxz for fixing performance issue //BackpackProperty.syncToNear(event.player); } - } + }*/ } } From bc971a5849dceb4871694970c258e3b261985584 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 9 Jan 2017 14:40:16 +0700 Subject: [PATCH 338/462] Forbid gt.metaitem (batteries and such) in toolslots --- .../inventory/SlotBackpack.java | 40 +++++++++---------- .../inventory/SlotFluid.java | 29 +++++++------- .../adventurebackpack/inventory/SlotFuel.java | 10 ++--- .../adventurebackpack/inventory/SlotTool.java | 20 ++++++---- 4 files changed, 52 insertions(+), 47 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java index a30735aa..1a7480b2 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java @@ -14,25 +14,25 @@ public class SlotBackpack extends SlotAdventureBackpack { private static final String[] FORBIDDEN_CLASSES = - { - // Adventure Backpack 2 - "com.darkona.adventurebackpack.item.ItemAdventureBackpack", - // Backpack Mod - "de.eydamos.backpack.item.ItemBackpack", - "de.eydamos.backpack.item.ItemWorkbenchBackpack", - // Blue Power Canvas Bags - "com.bluepowermod.item.ItemCanvasBag", - // Extra Utilities Golden Bag of Holding - "com.rwtema.extrautils.item.ItemGoldenBag", - // Forestry Backpacks +addons - "forestry.storage.items.ItemBackpack", - "forestry.storage.items.ItemBackpackNaturalist", - // Jabba Dolly - "mcp.mobius.betterbarrels.common.items.dolly.ItemBarrelMover", - "mcp.mobius.betterbarrels.common.items.dolly.ItemDiamondMover", - // Project Red Exploration Backpacks - "mrtjp.projectred.exploration.ItemBackpack" - }; + { + // Adventure Backpack 2 + "com.darkona.adventurebackpack.item.ItemAdventureBackpack", + // Backpack Mod + "de.eydamos.backpack.item.ItemBackpack", + "de.eydamos.backpack.item.ItemWorkbenchBackpack", + // Blue Power Canvas Bags + "com.bluepowermod.item.ItemCanvasBag", + // Extra Utilities Golden Bag of Holding + "com.rwtema.extrautils.item.ItemGoldenBag", + // Forestry Backpacks +addons + "forestry.storage.items.ItemBackpack", + "forestry.storage.items.ItemBackpackNaturalist", + // Jabba Dolly + "mcp.mobius.betterbarrels.common.items.dolly.ItemBarrelMover", + "mcp.mobius.betterbarrels.common.items.dolly.ItemDiamondMover", + // Project Red Exploration Backpacks + "mrtjp.projectred.exploration.ItemBackpack", + }; public SlotBackpack(IInventoryAdventureBackpack inventory, int id, int x, int y) { @@ -74,7 +74,7 @@ public static boolean isValidItem(ItemStack stack) @Override public boolean isItemValid(ItemStack stack) { - return isValidItem(stack); + return isValidItem(stack); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java index c06b7f34..f0f1b675 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java @@ -11,23 +11,24 @@ * Created on 12/10/2014 * * @author Darkona - * - * */ public class SlotFluid extends SlotAdventureBackpack { - private static final String[] VALID_TOOL_NAMES = { - "bucket", - }; + private static final String[] VALID_TOOL_NAMES = + { + "bucket", + }; - private static final String[] VALID_TOOL_IDS = { + private static final String[] VALID_TOOL_IDS = + { "minecraft:milk_bucket", //"Railcraft:fluid.creosote.bottle", - }; + }; - private static final String[] INVALID_TOOL_NAMES = { - "cell", - }; + private static final String[] INVALID_TOOL_NAMES = + { + "cell", + }; public SlotFluid(IInventory inventory, int id, int x, int y) { @@ -41,13 +42,13 @@ public static boolean isEmpty(ItemStack stack) public static String getFluidName(ItemStack stack) { - if ((stack == null) || (isEmpty(stack))) return ""; + if (stack == null || isEmpty(stack)) return ""; return FluidContainerRegistry.getFluidForFilledItem(stack).getUnlocalizedName(); } public static String getFluidName(FluidTank stack) { - if ((stack != null) && (stack.getFluidAmount() != 0)) + if (stack != null && stack.getFluidAmount() != 0) { return stack.getFluid().getUnlocalizedName(); } @@ -61,13 +62,13 @@ public static int getCapacity(ItemStack stack) public static boolean isValidItem(ItemStack stack) { - return ((stack != null) && FluidContainerRegistry.isContainer(stack)); + return (stack != null && FluidContainerRegistry.isContainer(stack)); } @Override public boolean isItemValid(ItemStack stack) { - return ((stack != null) && (FluidContainerRegistry.isContainer(stack)) && isValidTool(stack)); + return (stack != null && FluidContainerRegistry.isContainer(stack) && isValidTool(stack)); } public static boolean isValidTool(ItemStack stack) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java index 933b6d58..6f064325 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java @@ -9,16 +9,16 @@ * * @author Darkona */ -public class SlotFuel extends SlotAdventureBackpack +public class SlotFuel extends SlotAdventureBackpack { - public SlotFuel(IInventory inventory, int id, int x, int y) + public SlotFuel(IInventory inventory, int id, int x, int y) { - super(inventory, id, x, y); + super(inventory, id, x, y); } @Override - public boolean isItemValid(ItemStack stack) + public boolean isItemValid(ItemStack stack) { - return (stack != null) && TileEntityFurnace.isItemFuel(stack) && !SlotFluid.isValidItem(stack); //fuel slot accept only solid fuel + return (stack != null) && TileEntityFurnace.isItemFuel(stack) && !SlotFluid.isValidItem(stack); //fuel slot accept only solid fuel } } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java index 51ff042d..8ca138e5 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java @@ -30,13 +30,15 @@ public boolean isItemValid(ItemStack stack) return isValidTool(stack); } - private static final String[] VALID_TOOL_NAMES = { - "wrench", "hammer", "axe", "shovel", "grafter", "scoop", "crowbar", "mattock", "drill", //"hatchet","excavator","chisel" - }; + private static final String[] VALID_TOOL_NAMES = + { + "wrench", "hammer", "axe", "shovel", "grafter", "scoop", "crowbar", "mattock", "drill", //"hatchet", "excavator", "chisel" + }; - private static final String[] INVALID_TOOL_NAMES = { - "bucket", "sword", "dagger", "sabre", "rapier", "shield", "cutlass", "bow", "whip", "disassembler", "robit" - }; + private static final String[] INVALID_TOOL_NAMES = + { + "bucket", "sword", "dagger", "sabre", "rapier", "shield", "cutlass", "bow", "whip", "disassembler", "robit" + }; public static boolean isValidTool(ItemStack stack) { @@ -60,10 +62,12 @@ public static boolean isValidTool(ItemStack stack) //GregTech if (name.equals("gt.metatool.01")) { - //0 = sword, 170 = turbines - if ((stack.getItemDamage() == 0) || (stack.getItemDamage() > 169)) return false; + //0 = sword, 170 = turbines + if (stack.getItemDamage() == 0 || stack.getItemDamage() > 169) return false; return true; } + //Charged baterries and such + if (name.contains("gt.metaitem")) return false; // Just for extra compatibility and/or security and/or less annoyance for (String toolName : VALID_TOOL_NAMES) From fcccf97ce0bc4ae6d43398fda926f951bc563b12 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 12 Jan 2017 16:10:04 +0700 Subject: [PATCH 339/462] Disable shift dependence while equipping --- .../client/gui/GuiAdvBackpack.java | 59 ++++++++++--------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index ce0ac166..ab099ce2 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -1,5 +1,7 @@ package com.darkona.adventurebackpack.client.gui; +import org.lwjgl.opengl.GL11; + import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; import com.darkona.adventurebackpack.config.ConfigHandler; @@ -10,14 +12,12 @@ import com.darkona.adventurebackpack.network.EquipUnequipBackWearablePacket; import com.darkona.adventurebackpack.network.SleepingBagPacket; import com.darkona.adventurebackpack.util.Resources; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fluids.FluidTank; -import org.lwjgl.input.Keyboard; -import org.lwjgl.opengl.GL11; /** * Created on 12/10/2014 @@ -103,30 +103,30 @@ protected void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) { bedButton.draw(this, 1, 227); } - }else + } else { - if(wearing) + if (wearing) { - if(unequipButton.inButton(this,mouseX,mouseY)) + if (unequipButton.inButton(this, mouseX, mouseY)) { - unequipButton.draw(this,96,227); - }else + unequipButton.draw(this, 96, 227); + } else { - unequipButton.draw(this,77,227); + unequipButton.draw(this, 77, 227); } - }else + } else { - if(equipButton.inButton(this,mouseX,mouseY)) + if (equipButton.inButton(this, mouseX, mouseY)) { - equipButton.draw(this,96,208); - }else + equipButton.draw(this, 96, 208); + } else { - equipButton.draw(this,77,208); + equipButton.draw(this, 77, 208); } } } //zLevel +=1; - if(ConfigHandler.tanksHoveringText) + if (ConfigHandler.tanksHoveringText) { if (tankLeft.inTank(this, mouseX, mouseY)) { @@ -151,10 +151,11 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) tankRight.draw(this, rgt); GL11.glDisable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_BLEND); - /* - if(!ConfigHandler.HOVERING_TEXT_TANKS){ + + /*if (!ConfigHandler.HOVERING_TEXT_TANKS) + { GL11.glPushMatrix(); - //GL11.glTranslatef(8f,64f,0f); + // GL11.glTranslatef(8f,64f,0f); GL11.glScalef(0.6f, 0.6f, 0.6f); String name = (lft.getFluid() != null) ? lft.getFluid().getLocalizedName() : "None"; String amount = (lft.getFluid() != null ? lft.getFluid().amount : "Empty").toString(); @@ -172,8 +173,8 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) fontRendererObj.drawString(capacity, 369 + offsetX, 94 + offsetY, 0x373737, false); GL11.glPopMatrix(); - } - */ + }*/ + } @Override @@ -204,28 +205,29 @@ public int getTop() @Override protected void mouseClicked(int mouseX, int mouseY, int button) { - int sneakKey = Minecraft.getMinecraft().gameSettings.keyBindSneak.getKeyCode(); - if(isTile) + //int sneakKey = Minecraft.getMinecraft().gameSettings.keyBindSneak.getKeyCode(); + if (isTile) { if (bedButton.inButton(this, mouseX, mouseY)) { TileAdventureBackpack te = (TileAdventureBackpack) inventory; ModNetwork.net.sendToServer(new SleepingBagPacket.SleepingBagMessage(te.xCoord, te.yCoord, te.zCoord)); } - }else + } else { - if(wearing) + if (wearing) { - if(unequipButton.inButton(this,mouseX,mouseY)) + if (unequipButton.inButton(this, mouseX, mouseY)) { - ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.UNEQUIP_WEARABLE,false)); + ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.UNEQUIP_WEARABLE, false)); player.closeScreen(); } } else { - if(equipButton.inButton(this,mouseX,mouseY)) + if (equipButton.inButton(this, mouseX, mouseY)) { - ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, Keyboard.isKeyDown(sneakKey))); + ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, false)); + //ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, Keyboard.isKeyDown(sneakKey))); player.closeScreen(); } @@ -244,4 +246,3 @@ protected void keyTyped(char key, int keycode) super.keyTyped(key, keycode); } } - From 0777074573eb7403269d3cdd1d9c3eba05c01a95 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 12 Jan 2017 18:20:39 +0700 Subject: [PATCH 340/462] Disable shift+wear for Copter and Jetpack Deleted Steam Jetpack artifacts --- .../block/TileAdventureBackpack.java | 2 +- .../client/audio/BoilingBoilerSound.java | 4 +- .../client/audio/JetpackSoundOn.java | 4 +- .../client/audio/LeakingBoilerSound.java | 4 +- .../client/gui/GuiCoalJetpack.java | 88 ++++++++---------- .../client/gui/GuiCopterPack.java | 50 +++++----- .../client/models/ModelCoalJetpack.java | 29 +++--- .../common/ServerActions.java | 2 +- .../handlers/GuiHandler.java | 16 ++-- .../handlers/KeybindHandler.java | 6 +- .../EquipUnequipBackWearablePacket.java | 41 +++++--- .../adventurebackpack/network/GUIPacket.java | 4 +- .../network/PlayerActionPacket.java | 4 +- .../network/WearableModePacket.java | 2 +- .../adventurebackpack/util/Wearing.java | 12 +-- .../assets/adventurebackpack/lang/en_US.lang | 4 +- ...guiSteamJetpack.png => guiCoalJetpack.png} | Bin 17 files changed, 140 insertions(+), 132 deletions(-) rename src/main/resources/assets/adventurebackpack/textures/gui/{guiSteamJetpack.png => guiCoalJetpack.png} (100%) diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 68a1641d..0f022d40 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -564,7 +564,7 @@ public boolean equip(World world, EntityPlayer player, int x, int y, int z) removeSleepingBag(world); if (BackpackUtils.equipWearable(stacky, player) != BackpackUtils.reasons.SUCCESFUL) { - player.addChatComponentMessage(new ChatComponentTranslation("You already have a adventurebackpack on your back please take it off if you want to equip this one")); + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.equipped.backpack")); if (!player.inventory.addItemStackToInventory(stacky)) { return drop(world, player, x, y, z); diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java index 4f5af1ca..dd63dffc 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java @@ -55,13 +55,13 @@ public boolean isDonePlaying() public void update() { - if (thePlayer == null || thePlayer.isDead || thePlayer.worldObj == null || !Wearing.isWearingSteam(thePlayer)) + if (thePlayer == null || thePlayer.isDead || thePlayer.worldObj == null || !Wearing.isWearingJetpack(thePlayer)) { setDonePlaying(); return; } - InventoryCoalJetpack inv = new InventoryCoalJetpack(Wearing.getWearingSteam(thePlayer)); + InventoryCoalJetpack inv = new InventoryCoalJetpack(Wearing.getWearingJetpack(thePlayer)); if(inv.isBoiling() && inv.getCoalTank().getFluidAmount() > 0) { xPosF = (float)thePlayer.posX; diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java b/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java index 689aae64..becbe1a0 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java @@ -54,13 +54,13 @@ public boolean isDonePlaying() @Override public void update() { - if (thePlayer == null || thePlayer.isDead || thePlayer.worldObj == null || !Wearing.isWearingSteam(thePlayer)) + if (thePlayer == null || thePlayer.isDead || thePlayer.worldObj == null || !Wearing.isWearingJetpack(thePlayer)) { setDonePlaying(); return; } - InventoryCoalJetpack inv = new InventoryCoalJetpack(Wearing.getWearingSteam(thePlayer)); + InventoryCoalJetpack inv = new InventoryCoalJetpack(Wearing.getWearingJetpack(thePlayer)); if(inv.isInUse()) { xPosF = (float)thePlayer.posX; diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java index b544ba41..d7c18df7 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java @@ -54,13 +54,13 @@ public boolean isDonePlaying() @Override public void update() { - if (thePlayer == null || thePlayer.isDead || thePlayer.worldObj == null || !Wearing.isWearingSteam(thePlayer)) + if (thePlayer == null || thePlayer.isDead || thePlayer.worldObj == null || !Wearing.isWearingJetpack(thePlayer)) { setDonePlaying(); return; } - InventoryCoalJetpack inv = new InventoryCoalJetpack(Wearing.getWearingSteam(thePlayer)); + InventoryCoalJetpack inv = new InventoryCoalJetpack(Wearing.getWearingJetpack(thePlayer)); if(inv.isLeaking()) { xPosF = (float)thePlayer.posX; diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java index 1219ed39..cf221851 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java @@ -1,5 +1,7 @@ package com.darkona.adventurebackpack.client.gui; +import org.lwjgl.opengl.GL11; + import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.config.Keybindings; import com.darkona.adventurebackpack.init.ModNetwork; @@ -9,13 +11,11 @@ import com.darkona.adventurebackpack.util.Resources; import com.darkona.adventurebackpack.util.Utils; import com.darkona.adventurebackpack.util.Wearing; -import net.minecraft.client.Minecraft; + import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidTank; -import org.lwjgl.input.Keyboard; -import org.lwjgl.opengl.GL11; /** * Created on 15/01/2015 @@ -24,18 +24,19 @@ */ public class GuiCoalJetpack extends GuiWithTanks { - private static final ResourceLocation texture = Resources.guiTextures("guiSteamJetpack"); - private static GuiTank waterTank = new GuiTank(8, 8,72, 16, ConfigHandler.typeTankRender); - private static GuiTank steamTank = new GuiTank(116, 8,72, 16, ConfigHandler.typeTankRender); + private static final ResourceLocation texture = Resources.guiTextures("guiCoalJetpack"); + private static GuiTank waterTank = new GuiTank(8, 8, 72, 16, ConfigHandler.typeTankRender); + private static GuiTank steamTank = new GuiTank(116, 8, 72, 16, ConfigHandler.typeTankRender); private static GuiImageButtonNormal equipButton = new GuiImageButtonNormal(150, 64, 18, 18); private static GuiImageButtonNormal unequipButton = new GuiImageButtonNormal(150, 64, 18, 18); private boolean wearing; EntityPlayer player; InventoryCoalJetpack inventory; int boiling = 0; + public GuiCoalJetpack(EntityPlayer player, InventoryCoalJetpack inventory, boolean wearing) { - super(new ContainerJetpack(player, inventory,wearing)); + super(new ContainerJetpack(player, inventory, wearing)); this.wearing = wearing; this.player = player; this.inventory = inventory; @@ -43,8 +44,6 @@ public GuiCoalJetpack(EntityPlayer player, InventoryCoalJetpack inventory, boole ySize = 166; } - - @Override protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int mouseX, int mouseY) { @@ -52,33 +51,27 @@ protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int mouseX, in this.mc.renderEngine.bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - if(wearing) + if (wearing) { - if(unequipButton.inButton(this,mouseX,mouseY)) + if (unequipButton.inButton(this, mouseX, mouseY)) { - unequipButton.draw(this,20,186); - }else + unequipButton.draw(this, 20, 186); + } else { - unequipButton.draw(this,1,186); + unequipButton.draw(this, 1, 186); } - }else + } else { - if(equipButton.inButton(this,mouseX,mouseY)) + if (equipButton.inButton(this, mouseX, mouseY)) { - equipButton.draw(this,20,167); - }else + equipButton.draw(this, 20, 167); + } else { - equipButton.draw(this,1,167); + equipButton.draw(this, 1, 167); } } - - - - - // if(wearing) inventory = new InventorySteamJetpack(Wearing.getWearingSteam(player)); - - + //if (wearing) inventory = new InventoryCoalJetpack(Wearing.getWearingJetpack(player)); } @@ -86,41 +79,40 @@ protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int mouseX, in protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { this.mc.renderEngine.bindTexture(texture); - if(wearing) inventory = new InventoryCoalJetpack(Wearing.getWearingSteam(player)); + if (wearing) + inventory = new InventoryCoalJetpack(Wearing.getWearingJetpack(player)); FluidTank water = inventory.getWaterTank(); FluidTank steam = inventory.getCoalTank(); GL11.glPushMatrix(); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - if( inventory.isBoiling() - && steam.getFluidAmount() < steam.getCapacity() - && water.getFluidAmount() > 0) + if (inventory.isBoiling() && steam.getFluidAmount() < steam.getCapacity() && water.getFluidAmount() > 0) { - if(boiling < 83) + if (boiling < 83) { - drawTexturedModalRect(28,40,50,172,boiling++,37); - }else boiling = 0; + drawTexturedModalRect(28, 40, 50, 172, boiling++, 37); + } else + boiling = 0; } - if(inventory.getBurnTicks() > 0) + if (inventory.getBurnTicks() > 0) { - int i1 =inventory.getBurnTimeRemainingScaled(13); + int i1 = inventory.getBurnTimeRemainingScaled(13); this.drawTexturedModalRect(78, 48 + 12 - i1, 176, 12 - i1, 14, i1 + 1); } - int H = Math.round(((float)72 / (float)InventoryCoalJetpack.MAX_TEMPERATURE) * (float)inventory.getTemperature()); - drawTexturedModalRect( 139, 8 + (72- H), 40, 167 + (72 - H), 5, H); + int H = Math.round(((float) 72 / (float) InventoryCoalJetpack.MAX_TEMPERATURE) * (float) inventory.getTemperature()); + drawTexturedModalRect(139, 8 + (72 - H), 40, 167 + (72 - H), 5, H); GL11.glDisable(GL11.GL_BLEND); GL11.glPopMatrix(); GL11.glDisable(GL11.GL_LIGHTING); - waterTank.draw(this, water); steamTank.draw(this, steam); float factor = 0.7f; - String show = ((water.getFluidAmount() > 0) ? Utils.capitalize(FluidRegistry.getFluidName(water.getFluid())) : "None")+ "-" + water.getFluidAmount(); + String show = ((water.getFluidAmount() > 0) ? Utils.capitalize(FluidRegistry.getFluidName(water.getFluid())) : "None") + "-" + water.getFluidAmount(); GL11.glPushMatrix(); GL11.glTranslatef(70, 10, 0); @@ -139,33 +131,31 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) GL11.glPopMatrix(); GL11.glPushMatrix(); - GL11.glTranslatef(145,8,0); + GL11.glTranslatef(145, 8, 0); GL11.glScalef(0.9f, 0.9f, 0.9f); fontRendererObj.drawString((inventory.getTemperature()) + " C", 0, 0, 0x373737, false); GL11.glScalef(1, 1, 1); GL11.glPopMatrix(); - - - } @Override protected void mouseClicked(int mouseX, int mouseY, int mouseButton) { - int sneakKey = Minecraft.getMinecraft().gameSettings.keyBindSneak.getKeyCode(); - if(wearing) + //int sneakKey = Minecraft.getMinecraft().gameSettings.keyBindSneak.getKeyCode(); + if (wearing) { - if(unequipButton.inButton(this,mouseX,mouseY)) + if (unequipButton.inButton(this, mouseX, mouseY)) { - ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.UNEQUIP_WEARABLE,false)); + ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.UNEQUIP_WEARABLE, false)); player.closeScreen(); } } else { - if(equipButton.inButton(this,mouseX,mouseY)) + if (equipButton.inButton(this, mouseX, mouseY)) { - ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, Keyboard.isKeyDown(sneakKey))); + ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, false)); + //ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, Keyboard.isKeyDown(sneakKey))); player.closeScreen(); } } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java index e9857de1..84b9e7d7 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java @@ -1,5 +1,7 @@ package com.darkona.adventurebackpack.client.gui; +import org.lwjgl.opengl.GL11; + import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.config.Keybindings; import com.darkona.adventurebackpack.init.ModNetwork; @@ -9,12 +11,10 @@ import com.darkona.adventurebackpack.reference.GeneralReference; import com.darkona.adventurebackpack.util.Resources; import com.darkona.adventurebackpack.util.Utils; -import net.minecraft.client.Minecraft; + import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fluids.FluidTank; -import org.lwjgl.input.Keyboard; -import org.lwjgl.opengl.GL11; /** * Created on 03/01/2015 @@ -25,7 +25,7 @@ public class GuiCopterPack extends GuiWithTanks { private InventoryCopterPack inventory; private static final ResourceLocation texture = Resources.guiTextures("guiCopterPack"); - private static GuiTank fuelTank = new GuiTank(8, 8,72, 32, ConfigHandler.typeTankRender); + private static GuiTank fuelTank = new GuiTank(8, 8, 72, 32, ConfigHandler.typeTankRender); private static GuiImageButtonNormal equipButton = new GuiImageButtonNormal(150, 64, 18, 18); private static GuiImageButtonNormal unequipButton = new GuiImageButtonNormal(150, 64, 18, 18); @@ -49,27 +49,26 @@ protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int mouseX, in this.mc.renderEngine.bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - if(wearing) + if (wearing) { - if(unequipButton.inButton(this,mouseX,mouseY)) + if (unequipButton.inButton(this, mouseX, mouseY)) { - unequipButton.draw(this,20,186); - }else + unequipButton.draw(this, 20, 186); + } else { - unequipButton.draw(this,1,186); + unequipButton.draw(this, 1, 186); } - }else + } else { - if(equipButton.inButton(this,mouseX,mouseY)) + if (equipButton.inButton(this, mouseX, mouseY)) { - equipButton.draw(this,20,167); - }else + equipButton.draw(this, 20, 167); + } else { - equipButton.draw(this,1,167); + equipButton.draw(this, 1, 167); } } - } @Override @@ -83,7 +82,7 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) GL11.glPushMatrix(); String name = (fuel.getFluid() != null) ? Utils.capitalize(fuel.getFluid().getFluid().getName()) : "None"; - String amount = (fuel.getFluid() != null) ? ""+ fuel.getFluid().amount : "0"; + String amount = (fuel.getFluid() != null) ? "" + fuel.getFluid().amount : "0"; String capacity = Integer.toString(fuel.getCapacity()); int offsetY = 8; int offsetX = 83; @@ -91,12 +90,12 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) fontRendererObj.drawString(amount, 1 + offsetX, 10 + offsetY, 0x373737, false); fontRendererObj.drawString(capacity, 1 + offsetX, 20 + offsetY, 0x373737, false); - if(fuel.getFluid()!=null) + if (fuel.getFluid() != null) { Float f = GeneralReference.liquidFuels.get(name); String conLev = (f != null) ? f.toString() : "0"; - if(conLev != null && !conLev.isEmpty()) - fontRendererObj.drawString("Consumption: " + conLev , 1 + offsetX, 40 + offsetY, 0x373737, false); + if (conLev != null && !conLev.isEmpty()) + fontRendererObj.drawString("Consumption: " + conLev, 1 + offsetX, 40 + offsetY, 0x373737, false); } GL11.glPopMatrix(); } @@ -122,19 +121,20 @@ public float getZLevel() @Override protected void mouseClicked(int mouseX, int mouseY, int mouseButton) { - int sneakKey = Minecraft.getMinecraft().gameSettings.keyBindSneak.getKeyCode(); - if(wearing) + //int sneakKey = Minecraft.getMinecraft().gameSettings.keyBindSneak.getKeyCode(); + if (wearing) { - if(unequipButton.inButton(this,mouseX,mouseY)) + if (unequipButton.inButton(this, mouseX, mouseY)) { - ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.UNEQUIP_WEARABLE,false)); + ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.UNEQUIP_WEARABLE, false)); player.closeScreen(); } } else { - if(equipButton.inButton(this,mouseX,mouseY)) + if (equipButton.inButton(this, mouseX, mouseY)) { - ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, Keyboard.isKeyDown(sneakKey))); + ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, false)); + //ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, Keyboard.isKeyDown(sneakKey))); player.closeScreen(); } } diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelCoalJetpack.java index d0af05d2..601fa6ea 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelCoalJetpack.java @@ -1,17 +1,19 @@ package com.darkona.adventurebackpack.client.models; -import codechicken.lib.vec.Vector3; +import java.util.List; + +import org.lwjgl.opengl.GL11; + import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; + +import codechicken.lib.vec.Vector3; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; -import org.lwjgl.opengl.GL11; - -import java.util.List; - -public class ModelCoalJetpack extends ModelWearable { +public class ModelCoalJetpack extends ModelWearable +{ public ModelRenderer Base; public ModelRenderer tubeStraightLeft; public ModelRenderer tubeStraightRight; @@ -30,7 +32,8 @@ public class ModelCoalJetpack extends ModelWearable { private ItemStack jetpack; @SuppressWarnings("unchecked") - public ModelCoalJetpack() { + public ModelCoalJetpack() + { this.textureWidth = 64; this.textureHeight = 32; @@ -103,7 +106,6 @@ public ModelCoalJetpack() { bipedBody.addChild(tankWallLeft); bipedBody.addChild(tankWallRight); - float offsetZ = 0.08F; float offsetY = 0.0F; for (ModelRenderer part : (List) bipedBody.childModels) @@ -118,10 +120,11 @@ public ModelCoalJetpack setWearable(ItemStack wearable) return this; } + @Override public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack stack) { this.jetpack = stack; - render(entity, f, f1,f2,f3,f4,f5); + render(entity, f, f1, f2, f3, f4, f5); } @Override @@ -142,11 +145,11 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f { if (bipedBody.rotationPointX == 0.0F && bipedBody.rotationPointY == 0.0F && bipedBody.rotationPointZ == 0.0F) { - renderSteamPack(f5); + renderCoalJetpack(f5); } else { GL11.glTranslatef(bipedBody.rotationPointX * f5, bipedBody.rotationPointY * f5, bipedBody.rotationPointZ * f5); - renderSteamPack(f5); + renderCoalJetpack(f5); GL11.glTranslatef(-bipedBody.rotationPointX * f5, -bipedBody.rotationPointY * f5, -bipedBody.rotationPointZ * f5); } } else @@ -168,7 +171,7 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f { GL11.glRotatef(bipedBody.rotateAngleX * (180F / (float) Math.PI), 1.0F, 0.0F, 0.0F); } - renderSteamPack(f5); + renderCoalJetpack(f5); GL11.glPopMatrix(); } GL11.glTranslatef(-bipedBody.offsetX, -bipedBody.offsetY, -(bipedBody.offsetZ)); @@ -177,7 +180,7 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f } - public void renderSteamPack(float f5) + public void renderCoalJetpack(float f5) { InventoryCoalJetpack inv = new InventoryCoalJetpack(jetpack); diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index 7049cf31..2e7fd8d6 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -457,7 +457,7 @@ public static void toggleNightVision(EntityPlayer player, ItemStack backpack, by } } - public static void toggleSteamJetpack(EntityPlayer player, ItemStack jetpack, byte on_off) + public static void toggleCoalJetpack(EntityPlayer player, ItemStack jetpack, byte on_off) { InventoryCoalJetpack inv = new InventoryCoalJetpack(jetpack); if(inv.getStatus()) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java index 1c4a3b20..491581dd 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java @@ -66,15 +66,15 @@ public Object getServerGuiElement(int ID, EntityPlayer player, World world, int } break; case JETPACK_HOLDING: - if (Wearing.isHoldingSteam(player)) + if (Wearing.isHoldingJetpack(player)) { - return new ContainerJetpack(player, new InventoryCoalJetpack(Wearing.getHoldingSteam(player)),false); + return new ContainerJetpack(player, new InventoryCoalJetpack(Wearing.getHoldingJetpack(player)),false); } break; case JETPACK_WEARING: - if (Wearing.isWearingSteam(player)) + if (Wearing.isWearingJetpack(player)) { - return new ContainerJetpack(player, new InventoryCoalJetpack(Wearing.getWearingSteam(player)), true); + return new ContainerJetpack(player, new InventoryCoalJetpack(Wearing.getWearingJetpack(player)), true); } break; default: @@ -122,15 +122,15 @@ public Object getClientGuiElement(int ID, EntityPlayer player, World world, int } break; case JETPACK_HOLDING: - if (Wearing.isHoldingSteam(player)) + if (Wearing.isHoldingJetpack(player)) { - return new GuiCoalJetpack(player, new InventoryCoalJetpack(Wearing.getHoldingSteam(player)),false); + return new GuiCoalJetpack(player, new InventoryCoalJetpack(Wearing.getHoldingJetpack(player)),false); } break; case JETPACK_WEARING: - if (Wearing.isWearingSteam(player)) + if (Wearing.isWearingJetpack(player)) { - return new GuiCoalJetpack(player, new InventoryCoalJetpack(Wearing.getWearingSteam(player)), true); + return new GuiCoalJetpack(player, new InventoryCoalJetpack(Wearing.getWearingJetpack(player)), true); } break; default: diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java index ac18c715..990df44d 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java @@ -76,7 +76,7 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) { ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.COPTER_GUI, GUIPacket.FROM_KEYBIND)); } - if (Wearing.isWearingSteam(player)) + if (Wearing.isWearingJetpack(player)) { ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.JETPACK_GUI, GUIPacket.FROM_KEYBIND)); } @@ -120,12 +120,12 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) ServerActions.toggleCopterPack(player, Wearing.getWearingCopter(player), WearableModePacket.COPTER_ON_OFF); } } - if (Wearing.isWearingSteam(player)) + if (Wearing.isWearingJetpack(player)) { if (player.isSneaking()) { ModNetwork.net.sendToServer(new WearableModePacket.Message(WearableModePacket.JETPACK_ON_OFF, "")); - ServerActions.toggleSteamJetpack(player, Wearing.getWearingSteam(player), WearableModePacket.JETPACK_ON_OFF); + ServerActions.toggleCoalJetpack(player, Wearing.getWearingJetpack(player), WearableModePacket.JETPACK_ON_OFF); } } } diff --git a/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java b/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java index ad4cb2db..0cb506d5 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java @@ -2,6 +2,7 @@ import com.darkona.adventurebackpack.util.BackpackUtils; import com.darkona.adventurebackpack.util.Wearing; + import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; @@ -14,38 +15,46 @@ * * @author Darkona */ -public class EquipUnequipBackWearablePacket implements IMessageHandler +public class EquipUnequipBackWearablePacket implements IMessageHandler { public static final byte EQUIP_WEARABLE = 0; public static final byte UNEQUIP_WEARABLE = 1; - @Override public Message onMessage(Message message, MessageContext ctx) { - if(ctx.side.isServer()) + if (ctx.side.isServer()) { EntityPlayer player = ctx.getServerHandler().playerEntity; - if(message.action == EQUIP_WEARABLE) + if (message.action == EQUIP_WEARABLE) { - if(message.force) + /*if (message.force && Wearing.isWearingWearable(player)) { BackpackUtils.unequipWearable(player); - } - if(Wearing.isHoldingWearable(player)) + } else */if (Wearing.isHoldingWearable(player) && !Wearing.isWearingWearable(player)) { - if(BackpackUtils.equipWearable(player.getCurrentEquippedItem(), player) == BackpackUtils.reasons.SUCCESFUL){ - player.inventory.setInventorySlotContents(player.inventory.currentItem,null); + if (BackpackUtils.equipWearable(player.getCurrentEquippedItem(), player) == BackpackUtils.reasons.SUCCESFUL) + { + player.inventory.setInventorySlotContents(player.inventory.currentItem, null); player.inventoryContainer.detectAndSendChanges(); } - }else + } else if (Wearing.isWearingWearable(player)) { - player.addChatComponentMessage(new ChatComponentTranslation("You already have a adventurebackpack on your back please take it off if you want to equip this one")); + if (Wearing.isWearingBackpack(player)) + { + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.equipped.backpack")); + } else if (Wearing.isWearingCopter(player)) + { + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.equipped.copterpack")); + } else if (Wearing.isWearingJetpack(player)) + { + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.equipped.jetpack")); + } } } - if(message.action == UNEQUIP_WEARABLE) + if (message.action == UNEQUIP_WEARABLE) { BackpackUtils.unequipWearable(player); } @@ -59,12 +68,16 @@ public static class Message implements IMessage private byte action; private boolean force; - public Message(){} + public Message() + { + } - public Message(byte action, boolean force){ + public Message(byte action, boolean force) + { this.action = action; this.force = force; } + @Override public void fromBytes(ByteBuf buf) { diff --git a/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java b/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java index 593e06a2..2a3ed7a4 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java @@ -67,7 +67,7 @@ public IMessage onMessage(GUImessage message, MessageContext ctx) { if(message.from == FROM_KEYBIND) { - if (Wearing.isWearingSteam(player)) + if (Wearing.isWearingJetpack(player)) { FMLNetworkHandler.openGui(player, AdventureBackpack.instance, GuiHandler.JETPACK_WEARING, world, playerX, playerY, playerZ); return null; @@ -75,7 +75,7 @@ public IMessage onMessage(GUImessage message, MessageContext ctx) } if(message.from == FROM_HOLDING) { - if (Wearing.isHoldingSteam(player)) + if (Wearing.isHoldingJetpack(player)) { FMLNetworkHandler.openGui(player, AdventureBackpack.instance, GuiHandler.JETPACK_HOLDING, world, playerX, playerY, playerZ); return null; diff --git a/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java b/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java index b6136844..a9c3dae0 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java @@ -31,9 +31,9 @@ public IMessage onMessage(ActionMessage message, MessageContext ctx) if(message.type == JETPACK_IN_USE || message.type == JETPACK_NOT_IN_USE) { - if(Wearing.isWearingSteam(ctx.getServerHandler().playerEntity)) + if(Wearing.isWearingJetpack(ctx.getServerHandler().playerEntity)) { - InventoryCoalJetpack inv = new InventoryCoalJetpack(Wearing.getWearingSteam(ctx.getServerHandler().playerEntity)); + InventoryCoalJetpack inv = new InventoryCoalJetpack(Wearing.getWearingJetpack(ctx.getServerHandler().playerEntity)); inv.setInUse(message.type == JETPACK_IN_USE); inv.markDirty(); } diff --git a/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java b/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java index fdad0b00..0798817e 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java @@ -36,7 +36,7 @@ public Message onMessage(Message message, MessageContext ctx) ServerActions.toggleCopterPack(player, Wearing.getWearingCopter(player), message.type); if(message.type == JETPACK_ON_OFF) - ServerActions.toggleSteamJetpack(player,Wearing.getWearingSteam(player),message.type); + ServerActions.toggleCoalJetpack(player,Wearing.getWearingJetpack(player),message.type); if(message.type == CYCLING_ON_OFF) ServerActions.toggleToolCycling(player,Wearing.getWearingBackpack(player),message.type); diff --git a/src/main/java/com/darkona/adventurebackpack/util/Wearing.java b/src/main/java/com/darkona/adventurebackpack/util/Wearing.java index 26868289..ba64ffa4 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Wearing.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Wearing.java @@ -40,24 +40,24 @@ public static ItemStack getWearingCopter(EntityPlayer player) return isWearingCopter(player) ? BackpackProperty.get(player).getWearable() : null; } - public static boolean isHoldingSteam(EntityPlayer player) + public static boolean isHoldingJetpack(EntityPlayer player) { return player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemCoalJetpack; } - public static ItemStack getHoldingSteam(EntityPlayer player) + public static ItemStack getHoldingJetpack(EntityPlayer player) { - return isHoldingSteam(player) ? player.inventory.getCurrentItem() : null; + return isHoldingJetpack(player) ? player.inventory.getCurrentItem() : null; } - public static boolean isWearingSteam(EntityPlayer player) + public static boolean isWearingJetpack(EntityPlayer player) { return BackpackProperty.get(player).getWearable() != null && BackpackProperty.get(player).getWearable().getItem() instanceof ItemCoalJetpack; } - public static ItemStack getWearingSteam(EntityPlayer player) + public static ItemStack getWearingJetpack(EntityPlayer player) { - return isWearingSteam(player) ? BackpackProperty.get(player).getWearable() : null; + return isWearingJetpack(player) ? BackpackProperty.get(player).getWearable() : null; } public static boolean isHoldingCopter(EntityPlayer player) diff --git a/src/main/resources/assets/adventurebackpack/lang/en_US.lang b/src/main/resources/assets/adventurebackpack/lang/en_US.lang index a31b9207..472a1335 100644 --- a/src/main/resources/assets/adventurebackpack/lang/en_US.lang +++ b/src/main/resources/assets/adventurebackpack/lang/en_US.lang @@ -64,7 +64,9 @@ fluid.milk=Milk fluid.mushrromstew=Mushroom Stew ## Messages -adventurebackpack:messages.already.equipped=You are already equipping a backpack. +adventurebackpack:messages.already.equipped.backpack=You are already equipping an Adventure Backpack. Take it off if you want to equip this one. +adventurebackpack:messages.already.equipped.copterpack=You are already equipping a Copter Pack. Take it off if you want to equip this one. +adventurebackpack:messages.already.equipped.jetpack=You are already equipping a Coal Jetpack. Take it off if you want to equip this one. adventurebackpack:messages.already.impossibru=You aren't wearing any backpacks. adventurebackpack:messages.copterpack.hover=CopterPack: Hover Mode. adventurebackpack:messages.copterpack.normal=CopterPack: Normal Mode. diff --git a/src/main/resources/assets/adventurebackpack/textures/gui/guiSteamJetpack.png b/src/main/resources/assets/adventurebackpack/textures/gui/guiCoalJetpack.png similarity index 100% rename from src/main/resources/assets/adventurebackpack/textures/gui/guiSteamJetpack.png rename to src/main/resources/assets/adventurebackpack/textures/gui/guiCoalJetpack.png From 157dff8e5d08350ce4144c32dc568594e3bc7d9b Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 12 Jan 2017 19:21:25 +0700 Subject: [PATCH 341/462] note --- .../network/EquipUnequipBackWearablePacket.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java b/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java index 0cb506d5..cc5a1f9f 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java @@ -30,6 +30,7 @@ public Message onMessage(Message message, MessageContext ctx) EntityPlayer player = ctx.getServerHandler().playerEntity; if (message.action == EQUIP_WEARABLE) { + //before reenable make sure to takes into account the delay in unequipWearable() /*if (message.force && Wearing.isWearingWearable(player)) { BackpackUtils.unequipWearable(player); From 314a166dc497687d1d0f2b8429f34699a9c40a52 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 12 Jan 2017 19:46:45 +0700 Subject: [PATCH 342/462] Version info --- .../adventurebackpack/AdventureBackpack.java | 14 +++----------- src/main/resources/mcmod.info | 2 +- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java index 4bd9bf7c..c9093e9c 100644 --- a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java @@ -36,11 +36,7 @@ * @author Javier Darkona */ @SuppressWarnings("unused") -@Mod(modid = ModInfo.MOD_ID, - name = ModInfo.MOD_NAME, - version = ModInfo.MOD_VERSION, - guiFactory = ModInfo.GUI_FACTORY_CLASS -) +@Mod(modid = ModInfo.MOD_ID, name = ModInfo.MOD_NAME, version = ModInfo.MOD_VERSION, guiFactory = ModInfo.GUI_FACTORY_CLASS) public class AdventureBackpack { @@ -52,7 +48,6 @@ public class AdventureBackpack //Static things public static CreativeTabAB creativeTab = new CreativeTabAB(); - //public boolean chineseNewYear; //public boolean hannukah; public String Holiday; @@ -83,12 +78,12 @@ public void preInit(FMLPreInitializationEvent event) ModEntities.init(); ModNetwork.init(); proxy.initNetwork(); - // EVENTS + + //EVENTS playerEventHandler = new PlayerEventHandler(); generalEventHandler = new GeneralEventHandler(); clientEventHandler = new ClientEventHandler(); - MinecraftForge.EVENT_BUS.register(generalEventHandler); MinecraftForge.EVENT_BUS.register(clientEventHandler); MinecraftForge.EVENT_BUS.register(playerEventHandler); @@ -120,8 +115,6 @@ public void postInit(FMLPostInitializationEvent event) ConfigHandler.IS_ENVIROMINE = Loader.isModLoaded("EnviroMine"); ConfigHandler.IS_BUILDCRAFT = Loader.isModLoaded("BuildCraft|Core"); - - if (ConfigHandler.IS_BUILDCRAFT) { LogHelper.info("Buildcraft is present. Acting accordingly"); @@ -134,7 +127,6 @@ public void postInit(FMLPostInitializationEvent event) ModRecipes.conditionalInit(); - /* LogHelper.info("DUMPING FLUID INFORMATION"); LogHelper.info("-------------------------------------------------------------------------"); diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index f46e01ab..4931cc08 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -5,7 +5,7 @@ "dependencies": ["Buildcraft|Core","Railcraft"], "useDependencyInformation" : true, "description": "Useful and pretty backpacks for Minecraft", - "version": "1.7.10-0.9f", + "version": "${version}", "mcversion": "1.7.10", "url": "http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/wip-mods/2252109-wip-adventure-backpack-mod-beta-0-7-3-updated-26", "updateUrl": "", From f2746b936d8eded8fdc88dd2f8b5211b90cb0660 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Fri, 13 Jan 2017 01:48:08 +0700 Subject: [PATCH 343/462] Added config for fuels consumption rate Fixed Copter consumption display Enable any container for Copter fuel slot. Cells bugged as hell, DO NOT RELEASE First look at Copter fuel consumption rework (int to float math and rates) --- .../client/gui/GuiAdvBackpack.java | 2 +- .../client/gui/GuiCopterPack.java | 4 +- .../config/ConfigHandler.java | 21 +++++++- .../inventory/ContainerCopter.java | 6 +-- .../inventory/InventoryCopterPack.java | 29 +++++------ .../item/ItemCopterPack.java | 50 +++++++++---------- .../reference/GeneralReference.java | 29 +++++------ 7 files changed, 80 insertions(+), 61 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index ab099ce2..712a6143 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -155,7 +155,7 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) /*if (!ConfigHandler.HOVERING_TEXT_TANKS) { GL11.glPushMatrix(); - // GL11.glTranslatef(8f,64f,0f); + //GL11.glTranslatef(8f,64f,0f); GL11.glScalef(0.6f, 0.6f, 0.6f); String name = (lft.getFluid() != null) ? lft.getFluid().getLocalizedName() : "None"; String amount = (lft.getFluid() != null ? lft.getFluid().amount : "Empty").toString(); diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java index 84b9e7d7..18b5e73c 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java @@ -92,10 +92,12 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) if (fuel.getFluid() != null) { - Float f = GeneralReference.liquidFuels.get(name); + Float f = GeneralReference.liquidFuels.get(name.toLowerCase()); String conLev = (f != null) ? f.toString() : "0"; if (conLev != null && !conLev.isEmpty()) + { fontRendererObj.drawString("Consumption: " + conLev, 1 + offsetX, 40 + offsetY, 0x373737, false); + } } GL11.glPopMatrix(); } diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index f2f29537..f6ac6725 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -62,6 +62,15 @@ public class ConfigHandler public static String[] nameUnlocalized; public static String[] nameDefault = {}; + public static float fuelRateBioFuel = 1.0f; + public static float fuelRateBioEthanol = 1.5f; + public static float fuelRateCoal = 2.0f; + public static float fuelRateCreosote = 7.0f; + public static float fuelRateFuel = 1.0f; + public static float fuelRateLava = 5.0f; + public static float fuelRateNitroFuel = 0.5f; + public static float fuelRateOil = 3.0f; + public static boolean consumeDragonEgg = false; public static boolean recipeAdventuresSet = true; public static boolean recipeClockCrossbow = true; @@ -124,6 +133,16 @@ private static void loadConfiguration() enableItemFilters = config.getBoolean("Enable Item Filters", "items", true, "Enable filters from Disallow category"); forbiddenDimensions = config.getStringList("Forbidden Dimensions", "items", nameDefault, "Disallow opening backpack inventory for specific dimension ID"); + // Items.Fuel + fuelRateBioFuel = config.getFloat("BioFuel", "items.fuel", 1.0f, 0.1f, 10.0f, "BioFuel consumption rate"); + fuelRateBioEthanol = config.getFloat("BioEthanol", "items.fuel", 1.5f, 0.1f, 10.0f, "BioEthanol consumption rate"); + fuelRateCoal = config.getFloat("Coal", "items.fuel", 2.0f, 0.1f, 10.0f, "Coal consumption rate"); + fuelRateCreosote = config.getFloat("Creosote", "items.fuel", 7.0f, 0.1f, 10.0f, "Creosote consumption rate"); + fuelRateFuel = config.getFloat("Fuel", "items.fuel", 1.0f, 0.1f, 10.0f, "Fuel consumption rate"); + fuelRateLava = config.getFloat("Lava", "items.fuel", 5.0f, 0.1f, 10.0f, "Lava consumption rate"); + fuelRateNitroFuel = config.getFloat("NitroFuel", "items.fuel", 0.5f, 0.1f, 10.0f, "NitroFuel consumption rate"); + fuelRateOil = config.getFloat("Oil", "items.fuel", 3.0f, 0.1f, 10.0f, "Oil consumption rate"); + // Items.Recipes consumeDragonEgg = config.getBoolean("Consume Dragon Egg", "items.recipes", false, "Consume Dragon Egg when Dragon backpack crafted?"); recipeAdventuresSet = config.getBoolean("Adventures Set", "items.recipes", true, "Enable/Disable recipe for Adventure's Hat, Suit and Pants"); @@ -163,7 +182,7 @@ public void onConfigChangeEvent(ConfigChangedEvent.OnConfigChangedEvent event) /*private static boolean isConfigVersionWrong(Configuration configuration) { - return !configuration.getLoadedConfigVersion().equals(configuration.getDefinedConfigVersion()); + return !configuration.getLoadedConfigVersion().equals(configuration.getDefinedConfigVersion()); }*/ } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java index 7fb8335b..4c58ac54 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java @@ -15,8 +15,7 @@ public class ContainerCopter extends Container implements IWearableContainer { public InventoryCopterPack inventory; - private final int - PLAYER_HOT_START = 0; + private final int PLAYER_HOT_START = 0; private final int PLAYER_HOT_END = PLAYER_HOT_START + 8; private final int PLAYER_INV_START = PLAYER_HOT_END + 1; private final int PLAYER_INV_END = PLAYER_INV_START + 26; @@ -104,7 +103,6 @@ public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) return super.slotClick(slot, button, flag, player); } - @Override public ItemStack transferStackInSlot(EntityPlayer player, int i) { @@ -124,7 +122,7 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) } if (i < 36) { - if (SlotFluid.isValidItem(stack) && SlotFluid.isValidTool(stack)) + if (SlotFluid.isValidItem(stack) /*&& SlotFluid.isValidTool(stack)*/) { int COPTER_INV_START = PLAYER_INV_END + 1; if (!mergeItemStack(stack, COPTER_INV_START, COPTER_INV_START + 1, false)) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java index cea48591..221528c7 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java @@ -3,6 +3,7 @@ import com.darkona.adventurebackpack.item.ItemCopterPack; import com.darkona.adventurebackpack.reference.GeneralReference; import com.darkona.adventurebackpack.util.FluidUtils; + import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -22,13 +23,11 @@ public class InventoryCopterPack implements IInventoryTanks public byte status = ItemCopterPack.OFF_MODE; private ItemStack[] inventory = new ItemStack[2]; - - public InventoryCopterPack(ItemStack copterPack) { status = ItemCopterPack.OFF_MODE; containerStack = copterPack; - if(!copterPack.hasTagCompound()) + if (!copterPack.hasTagCompound()) { copterPack.stackTagCompound = new NBTTagCompound(); saveToNBT(copterPack.stackTagCompound); @@ -42,15 +41,19 @@ public FluidTank getFuelTank() return fuelTank; } - public void consumeFuel(int quantity) + public void consumeFuel(float quantity) { - fuelTank.drain(quantity, true); + int q = (int) quantity; + if (q < 1) q = 1; + fuelTank.drain(q, true); dirtyTanks(); } - public boolean canConsumeFuel(int quantity) + public boolean canConsumeFuel(float quantity) { - return fuelTank.drain(quantity, false) != null && fuelTank.drain(quantity, false).amount > 0; + int q = (int) quantity; + if (q < 1) q = 1; + return fuelTank.drain(q, false) != null && fuelTank.drain(q, false).amount > 0; } @Override @@ -97,11 +100,10 @@ public void setInventorySlotContents(int slot, ItemStack stack) { stack.stackSize = getInventoryStackLimit(); } - if(FluidContainerRegistry.isFilledContainer(stack) && GeneralReference.isValidFuel(FluidContainerRegistry.getFluidForFilledItem(stack).getFluid())) + if (FluidContainerRegistry.isFilledContainer(stack) && GeneralReference.isValidFuel(FluidContainerRegistry.getFluidForFilledItem(stack).getFluid())) { InventoryActions.transferContainerTank(this, fuelTank, 0); - }else - if(FluidContainerRegistry.isEmptyContainer(stack) && fuelTank.getFluid()!=null && FluidUtils.isContainerForFluid(stack, fuelTank.getFluid().getFluid())) + } else if (FluidContainerRegistry.isEmptyContainer(stack) && fuelTank.getFluid() != null && FluidUtils.isContainerForFluid(stack, fuelTank.getFluid().getFluid())) { InventoryActions.transferContainerTank(this, fuelTank, 0); } @@ -161,7 +163,7 @@ public boolean isUseableByPlayer(EntityPlayer player) @Override public void openInventory() { - loadFromNBT(containerStack.stackTagCompound); + loadFromNBT(containerStack.stackTagCompound); } @Override @@ -186,7 +188,7 @@ public void onInventoryChanged() { @SuppressWarnings("unused") - ItemStack container = getStackInSlot(0); + ItemStack container = getStackInSlot(0); closeInventory(); } @@ -224,7 +226,6 @@ public ItemStack getParentItemStack() return this.containerStack; } - public int getTickCounter() { return tickCounter; @@ -265,7 +266,7 @@ public void saveToNBT(NBTTagCompound compound) @Override public FluidTank[] getTanksArray() { - FluidTank[] tanks = {fuelTank}; + FluidTank[] tanks = { fuelTank }; return tanks; } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java index 41909f0a..b51e136d 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java @@ -1,5 +1,7 @@ package com.darkona.adventurebackpack.item; +import java.util.List; + import com.darkona.adventurebackpack.client.models.ModelCopterPack; import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.inventory.InventoryCopterPack; @@ -10,6 +12,7 @@ import com.darkona.adventurebackpack.reference.GeneralReference; import com.darkona.adventurebackpack.util.Resources; import com.darkona.adventurebackpack.util.Wearing; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; @@ -25,8 +28,6 @@ import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; -import java.util.List; - /** * Created on 31/12/2014 * @@ -62,7 +63,6 @@ public void onUpdate(ItemStack stack, World world, Entity entity, int slot, bool { } - @SuppressWarnings(value = "unchecked") public void pushEntities(World world, EntityPlayer player, float speed) { @@ -70,10 +70,8 @@ public void pushEntities(World world, EntityPlayer player, float speed) double posY = player.posY; double posZ = player.posZ; List groundItems = world.getEntitiesWithinAABB( - EntityItem.class, - AxisAlignedBB.getBoundingBox(posX, posY, posZ, - posX + 1.0D, posY + 1.0D, - posZ + 1.0D).expand(4.0D, 4.0D, 4.0D)); + EntityItem.class, AxisAlignedBB.getBoundingBox( + posX, posY, posZ, posX + 1.0D, posY + 1.0D, posZ + 1.0D).expand(4.0D, 4.0D, 4.0D)); for (EntityItem groundItem : groundItems) { @@ -105,14 +103,14 @@ public void pushEntities(World world, EntityPlayer player, float speed) } } - + @Override @SideOnly(Side.CLIENT) public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack stack, int armorSlot) { return ModelCopterPack.instance.setWearable(stack); } - + @Override @SideOnly(Side.CLIENT) public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) { @@ -134,14 +132,15 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) InventoryCopterPack inv = new InventoryCopterPack(Wearing.getWearingCopter(player)); inv.openInventory(); boolean canElevate = true; - int fuelConsumption = 0; + float fuelConsumption = 0.0f; if (inv.getStatus() != OFF_MODE) { if (player.isInWater()) { inv.setStatus(OFF_MODE); inv.dirtyStatus(); - if (!world.isRemote){ + if (!world.isRemote) + { player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.copterpack.cantwater")); } return; @@ -195,8 +194,9 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) if (player.isSneaking()) { player.motionY = -0.3; - }else{ - fuelConsumption+=2; + } else + { + fuelConsumption *= 2; player.motionY = 0.0f; } } @@ -209,14 +209,13 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) } //Sound - float factor = 0.05f; if (!player.onGround) { //Airwave pushEntities(world, player, 0.2f); //movement boost - player.moveFlying(player.moveStrafing,player.moveForward,factor); + player.moveFlying(player.moveStrafing, player.moveForward, factor); } else { pushEntities(world, player, factor + 0.4f); @@ -227,7 +226,7 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) { if (Minecraft.getMinecraft().gameSettings.keyBindJump.getIsKeyPressed()) { - if (inv.canConsumeFuel(fuelConsumption + 2) && canElevate) + if (inv.canConsumeFuel(fuelConsumption * 2) && canElevate) { elevate(player, stack); } @@ -237,14 +236,14 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) //Elevation serverside if (!player.onGround && player.motionY > 0) { - fuelConsumption += 2; + fuelConsumption *= 2; } int ticks = inv.tickCounter - 1; if (inv.fuelTank.getFluid() != null) { - if(GeneralReference.isValidFuel(inv.getFuelTank().getFluid().getFluid())) + if (GeneralReference.isValidFuel(inv.getFuelTank().getFluid().getFluid())) { - fuelConsumption = (int)Math.floor(fuelConsumption * GeneralReference.liquidFuels.get(inv.getFuelTank().getFluid().getFluid().getName())); + fuelConsumption = (float) Math.floor(fuelConsumption * GeneralReference.liquidFuels.get(inv.getFuelTank().getFluid().getFluid().getName())); } } if (ticks <= 0) @@ -257,29 +256,29 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) inv.tickCounter = ticks; } } - // if(!world.isRemote)inv.closeInventory(); + //if(!world.isRemote)inv.closeInventory(); inv.closeInventory(); } @Override public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) { - onUnequipped(world,player,stack); - player.dropPlayerItemWithRandomChoice(stack.copy(),false); + onUnequipped(world, player, stack); + player.dropPlayerItemWithRandomChoice(stack.copy(), false); BackpackProperty.get(player).setWearable(null); } @Override public void onEquipped(World world, EntityPlayer player, ItemStack stack) { - if(!stack.hasTagCompound())stack.setTagCompound(new NBTTagCompound()); - stack.stackTagCompound.setByte("status",OFF_MODE); + if (!stack.hasTagCompound()) stack.setTagCompound(new NBTTagCompound()); + stack.stackTagCompound.setByte("status", OFF_MODE); } @Override public void onUnequipped(World world, EntityPlayer player, ItemStack stack) { - stack.stackTagCompound.setByte("status",OFF_MODE); + stack.stackTagCompound.setByte("status", OFF_MODE); } @Override @@ -296,5 +295,4 @@ public ResourceLocation getWearableTexture(ItemStack wearable) return Resources.modelTextures("copterPack"); } - } diff --git a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java index 3decdb6d..49309f51 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java @@ -1,9 +1,11 @@ package com.darkona.adventurebackpack.reference; -import net.minecraftforge.fluids.Fluid; - import java.util.HashMap; +import com.darkona.adventurebackpack.config.ConfigHandler; + +import net.minecraftforge.fluids.Fluid; + /** * Created on 16/01/2015 * @@ -13,26 +15,25 @@ public class GeneralReference { public static HashMap liquidFuels = new HashMap(); - public static void init() { - liquidFuels.put("lava", 5.0f); - liquidFuels.put("fuel", 1.0f); - liquidFuels.put("oil", 3.0f); - liquidFuels.put("bioethanol", 1.5f); - liquidFuels.put("biofuel", 1.0f); - liquidFuels.put("creosote", 7.0f); - liquidFuels.put("coal", 2.0f); - liquidFuels.put("nitrofuel", 0.5f); + liquidFuels.put("biofuel", ConfigHandler.fuelRateBioFuel); + liquidFuels.put("bioethanol", ConfigHandler.fuelRateBioEthanol); + liquidFuels.put("coal", ConfigHandler.fuelRateCoal); + liquidFuels.put("creosote", ConfigHandler.fuelRateCreosote); + liquidFuels.put("fuel", ConfigHandler.fuelRateFuel); + liquidFuels.put("lava", ConfigHandler.fuelRateLava); + liquidFuels.put("nitrofuel", ConfigHandler.fuelRateNitroFuel); + liquidFuels.put("oil", ConfigHandler.fuelRateOil); } public static boolean isValidFuel(Fluid fluid) { - if(fluid != null) + if (fluid != null) { - for(String fuel : liquidFuels.keySet()) + for (String fuel : liquidFuels.keySet()) { - if(fuel.equals(fluid.getName())) + if (fuel.equals(fluid.getName())) { return true; } From dad7fa628db9b9d75a99bc97f814ae2dacab3a46 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Fri, 13 Jan 2017 18:54:43 +0700 Subject: [PATCH 344/462] Revert Copter fuel consumption Cells requires too much effort, maybe later --- .../adventurebackpack/config/ConfigHandler.java | 16 ++++++++-------- .../inventory/ContainerCopter.java | 2 +- .../inventory/InventoryCopterPack.java | 12 ++++-------- .../adventurebackpack/item/ItemCopterPack.java | 12 ++++++------ 4 files changed, 19 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index f6ac6725..f5c413e1 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -134,14 +134,14 @@ private static void loadConfiguration() forbiddenDimensions = config.getStringList("Forbidden Dimensions", "items", nameDefault, "Disallow opening backpack inventory for specific dimension ID"); // Items.Fuel - fuelRateBioFuel = config.getFloat("BioFuel", "items.fuel", 1.0f, 0.1f, 10.0f, "BioFuel consumption rate"); - fuelRateBioEthanol = config.getFloat("BioEthanol", "items.fuel", 1.5f, 0.1f, 10.0f, "BioEthanol consumption rate"); - fuelRateCoal = config.getFloat("Coal", "items.fuel", 2.0f, 0.1f, 10.0f, "Coal consumption rate"); - fuelRateCreosote = config.getFloat("Creosote", "items.fuel", 7.0f, 0.1f, 10.0f, "Creosote consumption rate"); - fuelRateFuel = config.getFloat("Fuel", "items.fuel", 1.0f, 0.1f, 10.0f, "Fuel consumption rate"); - fuelRateLava = config.getFloat("Lava", "items.fuel", 5.0f, 0.1f, 10.0f, "Lava consumption rate"); - fuelRateNitroFuel = config.getFloat("NitroFuel", "items.fuel", 0.5f, 0.1f, 10.0f, "NitroFuel consumption rate"); - fuelRateOil = config.getFloat("Oil", "items.fuel", 3.0f, 0.1f, 10.0f, "Oil consumption rate"); + /*fuelRateBioFuel = config.getFloat("BioFuel", "items.fuel", 1.0f, 0.05f, 20.0f, "BioFuel consumption rate"); + fuelRateBioEthanol = config.getFloat("BioEthanol", "items.fuel", 1.5f, 0.05f, 20.0f, "BioEthanol consumption rate"); + fuelRateCoal = config.getFloat("Coal", "items.fuel", 2.0f, 0.05f, 20.0f, "Coal consumption rate"); + fuelRateCreosote = config.getFloat("Creosote", "items.fuel", 7.0f, 0.05f, 20.0f, "Creosote consumption rate"); + fuelRateFuel = config.getFloat("Fuel", "items.fuel", 1.0f, 0.05f, 20.0f, "Fuel consumption rate"); + fuelRateLava = config.getFloat("Lava", "items.fuel", 5.0f, 0.05f, 20.0f, "Lava consumption rate"); + fuelRateNitroFuel = config.getFloat("NitroFuel", "items.fuel", 0.5f, 0.05f, 20.0f, "NitroFuel consumption rate"); + fuelRateOil = config.getFloat("Oil", "items.fuel", 3.0f, 0.05f, 20.0f, "Oil consumption rate");*/ // Items.Recipes consumeDragonEgg = config.getBoolean("Consume Dragon Egg", "items.recipes", false, "Consume Dragon Egg when Dragon backpack crafted?"); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java index 4c58ac54..e77eb62b 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java @@ -122,7 +122,7 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) } if (i < 36) { - if (SlotFluid.isValidItem(stack) /*&& SlotFluid.isValidTool(stack)*/) + if (SlotFluid.isValidItem(stack) && SlotFluid.isValidTool(stack)) { int COPTER_INV_START = PLAYER_INV_END + 1; if (!mergeItemStack(stack, COPTER_INV_START, COPTER_INV_START + 1, false)) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java index 221528c7..d53a5158 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java @@ -41,19 +41,15 @@ public FluidTank getFuelTank() return fuelTank; } - public void consumeFuel(float quantity) + public void consumeFuel(int quantity) { - int q = (int) quantity; - if (q < 1) q = 1; - fuelTank.drain(q, true); + fuelTank.drain(quantity, true); dirtyTanks(); } - public boolean canConsumeFuel(float quantity) + public boolean canConsumeFuel(int quantity) { - int q = (int) quantity; - if (q < 1) q = 1; - return fuelTank.drain(q, false) != null && fuelTank.drain(q, false).amount > 0; + return fuelTank.drain(quantity, false) != null && fuelTank.drain(quantity, false).amount > 0; } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java index b51e136d..1ab45c7e 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java @@ -132,7 +132,7 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) InventoryCopterPack inv = new InventoryCopterPack(Wearing.getWearingCopter(player)); inv.openInventory(); boolean canElevate = true; - float fuelConsumption = 0.0f; + int fuelConsumption = 0; if (inv.getStatus() != OFF_MODE) { if (player.isInWater()) @@ -196,7 +196,7 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) player.motionY = -0.3; } else { - fuelConsumption *= 2; + fuelConsumption += 2; player.motionY = 0.0f; } } @@ -226,7 +226,7 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) { if (Minecraft.getMinecraft().gameSettings.keyBindJump.getIsKeyPressed()) { - if (inv.canConsumeFuel(fuelConsumption * 2) && canElevate) + if (inv.canConsumeFuel(fuelConsumption + 2) && canElevate) { elevate(player, stack); } @@ -236,14 +236,14 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) //Elevation serverside if (!player.onGround && player.motionY > 0) { - fuelConsumption *= 2; + fuelConsumption += 2; } int ticks = inv.tickCounter - 1; if (inv.fuelTank.getFluid() != null) { if (GeneralReference.isValidFuel(inv.getFuelTank().getFluid().getFluid())) { - fuelConsumption = (float) Math.floor(fuelConsumption * GeneralReference.liquidFuels.get(inv.getFuelTank().getFluid().getFluid().getName())); + fuelConsumption = (int) Math.floor(fuelConsumption * GeneralReference.liquidFuels.get(inv.getFuelTank().getFluid().getFluid().getName())); } } if (ticks <= 0) @@ -295,4 +295,4 @@ public ResourceLocation getWearableTexture(ItemStack wearable) return Resources.modelTextures("copterPack"); } -} +} \ No newline at end of file From 92f93241cd7bf3a6fb89eca24639e24b5fa56fe2 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sun, 15 Jan 2017 09:52:14 +0700 Subject: [PATCH 345/462] Gravestone compat --- .../handlers/PlayerEventHandler.java | 94 +++++++++++++------ .../item/ItemAdventureBackpack.java | 19 ++-- .../item/ItemCoalJetpack.java | 6 +- .../item/ItemCopterPack.java | 2 +- .../playerProperties/BackpackProperty.java | 3 - .../darkona/adventurebackpack/util/Utils.java | 8 -- 6 files changed, 78 insertions(+), 54 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 68c43f18..9c669a26 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -17,12 +17,12 @@ import com.darkona.adventurebackpack.util.Wearing; import cpw.mods.fml.common.eventhandler.Event; -import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.PlayerEvent; import cpw.mods.fml.common.gameevent.TickEvent; import net.minecraft.entity.EntityCreature; import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.monster.EntitySpider; import net.minecraft.entity.passive.EntityHorse; import net.minecraft.entity.player.EntityPlayer; @@ -34,15 +34,14 @@ import net.minecraft.util.ChunkCoordinates; import net.minecraftforge.event.entity.EntityEvent; import net.minecraftforge.event.entity.EntityJoinWorldEvent; -import net.minecraftforge.event.entity.living.LivingDeathEvent; import net.minecraftforge.event.entity.living.LivingEvent; import net.minecraftforge.event.entity.living.LivingFallEvent; import net.minecraftforge.event.entity.player.EntityInteractEvent; +import net.minecraftforge.event.entity.player.PlayerDropsEvent; import net.minecraftforge.event.entity.player.PlayerWakeUpEvent; /** - * Created on 11/10/2014 - * Handle ALL the events! + * Created on 11/10/2014 Handle ALL the events! * * @author Darkona * @see com.darkona.adventurebackpack.client.ClientActions @@ -50,7 +49,8 @@ public class PlayerEventHandler { @SuppressWarnings("unused") - private static int tickCounter = 0; + private static int tickCounter = 0; + @SubscribeEvent public void registerBackpackProperty(EntityEvent.EntityConstructing event) { @@ -64,12 +64,13 @@ public void registerBackpackProperty(EntityEvent.EntityConstructing event) } } + @SubscribeEvent public void joinPlayer(EntityJoinWorldEvent event) { if (!event.world.isRemote) { - if (Utils.notNullAndInstanceOf(event.entity, EntityPlayer.class)) + if (Utils.notNullAndInstanceOf(event.entity, EntityPlayer.class)) { EntityPlayer player = (EntityPlayer) event.entity; LogHelper.info("Joined EntityPlayer of name: " + event.entity.getCommandSenderName()); @@ -81,7 +82,7 @@ public void joinPlayer(EntityJoinWorldEvent event) { BackpackProperty.get(player).loadNBTData(playerData); BackpackProperty.syncToNear(player); - BackpackProperty.sync(player); + BackpackProperty.sync(player); LogHelper.info("Stored properties retrieved"); } } @@ -96,7 +97,7 @@ public NBTTagCompound playerLogsIn(PlayerEvent.PlayerLoggedInEvent event) BackpackProperty.sync(event.player); return new NBTTagCompound(); } - return null; + return null; } @SubscribeEvent @@ -116,8 +117,7 @@ public void playerTravelsAcrossDimensions(PlayerEvent.PlayerChangedDimensionEven @SubscribeEvent public void onPlayerJump(LivingEvent.LivingJumpEvent event) { - if (event.entity != null && - event.entityLiving instanceof EntityPlayer) + if (event.entity != null && event.entityLiving instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) event.entity; @@ -128,7 +128,6 @@ public void onPlayerJump(LivingEvent.LivingJumpEvent event) } } - boolean pistonBootsStepHeight = false; @SubscribeEvent @@ -136,19 +135,19 @@ public void pistonBootsUnequipped(LivingEvent.LivingUpdateEvent event) { if (event.entityLiving instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer)event.entityLiving; + EntityPlayer player = (EntityPlayer) event.entityLiving; if (Wearing.isWearingBoots(player)) - { + { if (!pistonBootsStepHeight) { pistonBootsStepHeight = true; } - } else if (pistonBootsStepHeight) - { - player.stepHeight = 0.5001F; - pistonBootsStepHeight=false; - } - } + } else if (pistonBootsStepHeight) + { + player.stepHeight = 0.5001F; + pistonBootsStepHeight = false; + } + } } /** @@ -190,7 +189,7 @@ public void onFall(LivingFallEvent event) { event.setCanceled(true); } - if(Wearing.isWearingTheRightBackpack((EntityPlayer)event.entityLiving,"IronGolem") && ConfigHandler.backpackAbilities) + if (Wearing.isWearingTheRightBackpack((EntityPlayer) event.entityLiving, "IronGolem") && ConfigHandler.backpackAbilities) { event.setCanceled(true); } @@ -198,8 +197,49 @@ public void onFall(LivingFallEvent event) } } + @SubscribeEvent + public void finallyYouDied(PlayerDropsEvent event) + { + EntityPlayer entityPlayer = event.entityPlayer; + + if (Wearing.isWearingWearable(entityPlayer) && !entityPlayer.getEntityWorld().getGameRules().getGameRuleBooleanValue("keepInventory")) + { + if (Wearing.isWearingBackpack(entityPlayer)) + { + if (ConfigHandler.backpackDeathPlace) + { + BackpackProperty props = BackpackProperty.get(entityPlayer); + ((IBackWearableItem) props.getWearable().getItem()).onPlayerDeath(entityPlayer.worldObj, entityPlayer, props.getWearable()); + if (props.isForcedCampFire()) + { + ChunkCoordinates lastCampFire = BackpackProperty.get(entityPlayer).getCampFire(); + if (lastCampFire != null) + { + entityPlayer.setSpawnChunk(lastCampFire, false, entityPlayer.dimension); + } + //Set the forced spawn coordinates on the campfire. False, because the player must respawn at spawn point if there's no campfire. + } + ServerProxy.storePlayerProps(entityPlayer); + } else + { + ItemStack pack = Wearing.getWearingBackpack(entityPlayer); + event.drops.add(new EntityItem(entityPlayer.worldObj, entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, pack)); + //TODO get rid of campfire + } + } else if (Wearing.isWearingCopter(entityPlayer)) + { + ItemStack pack = Wearing.getWearingCopter(entityPlayer); + event.drops.add(new EntityItem(entityPlayer.worldObj, entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, pack)); + } else if (Wearing.isWearingJetpack(entityPlayer)) + { + ItemStack pack = Wearing.getWearingJetpack(entityPlayer); + event.drops.add(new EntityItem(entityPlayer.worldObj, entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, pack)); + } + } + + } - @SubscribeEvent(priority = EventPriority.LOW) + /*@SubscribeEvent(priority = EventPriority.LOW) public void playerDies(LivingDeathEvent event) { if (Utils.notNullAndInstanceOf(event.entity, EntityPlayer.class)) @@ -233,11 +273,12 @@ public void playerDies(LivingDeathEvent event) } } event.setResult(Event.Result.ALLOW); - } + }*/ @SubscribeEvent - public void playerRespawn(PlayerEvent.PlayerRespawnEvent event) { - BackpackProperty.sync(event.player); + public void playerRespawn(PlayerEvent.PlayerRespawnEvent event) + { + BackpackProperty.sync(event.player); } @SubscribeEvent @@ -311,13 +352,12 @@ public void playerWokeUp(PlayerWakeUpEvent event) } } - @SubscribeEvent public void tickPlayer(TickEvent.PlayerTickEvent event) { if (event.player != null && !event.player.isDead && Wearing.isWearingWearable(event.player)) { - if(event.phase == TickEvent.Phase.START) + if (event.phase == TickEvent.Phase.START) { BackpackProperty.get(event.player).executeWearableUpdateProtocol(); } @@ -332,6 +372,4 @@ public void tickPlayer(TickEvent.PlayerTickEvent event) } } - } - diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 313d3bcc..c58bc459 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -295,7 +295,8 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) @Override public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) { - onUnequipped (world, player, stack); + onUnequipped(world, player, stack); + if (world.isRemote) return; if (Wearing.isWearingTheRightBackpack(player, "Creeper")) @@ -303,18 +304,15 @@ public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) player.worldObj.createExplosion(player, player.posX, player.posY, player.posZ, 4.0F, false); } - if(ConfigHandler.backpackDeathPlace) + if (ConfigHandler.backpackDeathPlace) { if (!tryPlace(world, player, stack)) { player.dropPlayerItemWithRandomChoice(stack, false); - BackpackProperty.get(player).setWearable(null); } - } else - { - player.dropPlayerItemWithRandomChoice(stack, false); - BackpackProperty.get(player).setWearable(null); } + + BackpackProperty.get(player).setWearable(null); } private boolean tryPlace(World world, EntityPlayer player, ItemStack backpack) @@ -326,14 +324,13 @@ private boolean tryPlace(World world, EntityPlayer player, ItemStack backpack) int Y = (int) player.posY; if (Y < 1) Y = 1; - int positions[] = {0,-1,1,-2,2,-3,3,-4,4,-5,5,-6,6}; + int positions[] = { 0, -1, 1, -2, 2, -3, 3, -4, 4, -5, 5, -6, 6 }; for (int shiftY : positions) { if (Y + shiftY >= 1) { - ChunkCoordinates spawn = - Utils.getNearestEmptyChunkCoordinatesSpiral(world, X, Z, X, Y + shiftY, Z, 6, true, 1, (byte) 0, false); + ChunkCoordinates spawn = Utils.getNearestEmptyChunkCoordinatesSpiral(world, X, Z, X, Y + shiftY, Z, 6, true, 1, (byte) 0, false); if (spawn != null) { return placeBackpack(backpack, player, world, spawn.posX, spawn.posY, spawn.posZ, ForgeDirection.UP.ordinal(), false); @@ -380,6 +377,4 @@ public ResourceLocation getWearableTexture(ItemStack wearable){ } return modelTexture; } - - } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index e88085f1..56866cb0 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -9,6 +9,7 @@ import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.proxy.ClientProxy; import com.darkona.adventurebackpack.util.Resources; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; @@ -253,7 +254,7 @@ public static void elevate(EntityPlayer player) public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) { onUnequipped(world, player, stack); - player.dropPlayerItemWithRandomChoice(stack.copy(), false); + //player.dropPlayerItemWithRandomChoice(stack.copy(), false); BackpackProperty.get(player).setWearable(null); } @@ -284,6 +285,7 @@ public ModelBiped getWearableModel(ItemStack wearable) return ClientProxy.modelCoalJetpack.setWearable(wearable); } + @Override @SideOnly(Side.CLIENT) public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) { @@ -294,7 +296,7 @@ public String getArmorTexture(ItemStack stack, Entity entity, int slot, String t } @Override - @SideOnly(Side.CLIENT) + @SideOnly(Side.CLIENT) public ResourceLocation getWearableTexture(ItemStack wearable) { return Resources.modelTextures("CoalJetpack"); diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java index 1ab45c7e..f9832a51 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java @@ -264,7 +264,7 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) { onUnequipped(world, player, stack); - player.dropPlayerItemWithRandomChoice(stack.copy(), false); + //player.dropPlayerItemWithRandomChoice(stack.copy(), false); BackpackProperty.get(player).setWearable(null); } diff --git a/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java b/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java index 3e46f4db..38dca3e0 100644 --- a/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java +++ b/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java @@ -5,9 +5,6 @@ import com.darkona.adventurebackpack.network.SyncPropertiesPacket; import com.darkona.adventurebackpack.util.Utils; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.AbstractClientPlayer; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index c91d3d86..1028120f 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -271,16 +271,8 @@ public static boolean inServer() private static ChunkCoordinates checkCoordsForBackpack(IBlockAccess world, int origX, int origZ, int X, int Y, int Z, boolean except) { - //LogHelper.info("Checking coordinates in X="+X+", Y="+Y+", Z="+Z); - /*if (except && world.isSideSolid(X, Y - 1, Z, ForgeDirection.UP,true) && world.isAirBlock(X, Y, Z) && !areCoordinatesTheSame(origX, Y, origZ, X, Y, Z)) - { - //LogHelper.info("Found spot with the exception of the death point"); - return new ChunkCoordinates(X, Y, Z); - }*/ - //if (!except && world.isSideSolid(X, Y - 1, Z, ForgeDirection.UP,true) && world.isAirBlock(X, Y, Z)) if (world.isAirBlock(X, Y, Z) || isReplaceable(world, X, Y, Z)) { - //LogHelper.info("Found spot without exceptions"); return new ChunkCoordinates(X, Y, Z); } return null; From e1054845ac6b93b9bb874a9a6b602601f73508b0 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sun, 15 Jan 2017 22:19:17 +0700 Subject: [PATCH 346/462] Fixed support gamerule "keepInventory" --- .../block/TileAdventureBackpack.java | 15 ++++++++- .../handlers/PlayerEventHandler.java | 32 ++++--------------- 2 files changed, 21 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 0f022d40..f6f44409 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -9,6 +9,7 @@ import com.darkona.adventurebackpack.inventory.SlotTool; import com.darkona.adventurebackpack.item.ItemAdventureBackpack; import com.darkona.adventurebackpack.util.BackpackUtils; +import com.darkona.adventurebackpack.util.Wearing; import net.minecraft.block.Block; import net.minecraft.entity.item.EntityItem; @@ -564,7 +565,19 @@ public boolean equip(World world, EntityPlayer player, int x, int y, int z) removeSleepingBag(world); if (BackpackUtils.equipWearable(stacky, player) != BackpackUtils.reasons.SUCCESFUL) { - player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.equipped.backpack")); + if (Wearing.isWearingWearable(player)) + { + if (Wearing.isWearingBackpack(player)) + { + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.equipped.backpack")); + } else if (Wearing.isWearingCopter(player)) + { + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.equipped.copterpack")); + } else if (Wearing.isWearingJetpack(player)) + { + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.equipped.jetpack")); + } + } if (!player.inventory.addItemStackToInventory(stacky)) { return drop(world, player, x, y, z); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 9c669a26..95e81e06 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -17,6 +17,7 @@ import com.darkona.adventurebackpack.util.Wearing; import cpw.mods.fml.common.eventhandler.Event; +import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.PlayerEvent; import cpw.mods.fml.common.gameevent.TickEvent; @@ -34,6 +35,7 @@ import net.minecraft.util.ChunkCoordinates; import net.minecraftforge.event.entity.EntityEvent; import net.minecraftforge.event.entity.EntityJoinWorldEvent; +import net.minecraftforge.event.entity.living.LivingDeathEvent; import net.minecraftforge.event.entity.living.LivingEvent; import net.minecraftforge.event.entity.living.LivingFallEvent; import net.minecraftforge.event.entity.player.EntityInteractEvent; @@ -202,7 +204,7 @@ public void finallyYouDied(PlayerDropsEvent event) { EntityPlayer entityPlayer = event.entityPlayer; - if (Wearing.isWearingWearable(entityPlayer) && !entityPlayer.getEntityWorld().getGameRules().getGameRuleBooleanValue("keepInventory")) + if (Wearing.isWearingWearable(entityPlayer)) { if (Wearing.isWearingBackpack(entityPlayer)) { @@ -236,44 +238,24 @@ public void finallyYouDied(PlayerDropsEvent event) event.drops.add(new EntityItem(entityPlayer.worldObj, entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, pack)); } } - } - /*@SubscribeEvent(priority = EventPriority.LOW) + @SubscribeEvent(priority = EventPriority.LOW) public void playerDies(LivingDeathEvent event) { if (Utils.notNullAndInstanceOf(event.entity, EntityPlayer.class)) { EntityPlayer player = (EntityPlayer) event.entity; - if (!player.worldObj.isRemote) + if (!player.worldObj.isRemote + && player.getEntityWorld().getGameRules().getGameRuleBooleanValue("keepInventory")) { //LogHelper.info("Player died"); BackpackProperty props = BackpackProperty.get(player); - - if (props.hasWearable()) - { - //We want to keep the wearables on the player if KeepInventory is active. - if (!player.getEntityWorld().getGameRules().getGameRuleBooleanValue("keepInventory")) - { - //So if it isn't, we drop it like it's hot, drop it like it's hot, drop it like it's hot. - ((IBackWearableItem) props.getWearable().getItem()).onPlayerDeath(player.worldObj, player, props.getWearable()); - } - } - - if (props.isForcedCampFire()) - { - ChunkCoordinates lastCampFire = BackpackProperty.get(player).getCampFire(); - if (lastCampFire != null) - { - player.setSpawnChunk(lastCampFire, false, player.dimension); - } - //Set the forced spawn coordinates on the campfire. False, because the player must respawn at spawn point if there's no campfire. - } ServerProxy.storePlayerProps(player); } } event.setResult(Event.Result.ALLOW); - }*/ + } @SubscribeEvent public void playerRespawn(PlayerEvent.PlayerRespawnEvent event) From 26d82e4bd24a67ee8425133bf3b3e8b672eb096b Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sun, 15 Jan 2017 23:23:00 +0700 Subject: [PATCH 347/462] Disallow Yeta Wrench in toolslots --- .../com/darkona/adventurebackpack/inventory/SlotTool.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java index 8ca138e5..0ac96e87 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java @@ -69,6 +69,10 @@ public static boolean isValidTool(ItemStack stack) //Charged baterries and such if (name.contains("gt.metaitem")) return false; + //Ender IO + //Yeta Wrench uses shift+Scroll for switch own modes + if (Item.itemRegistry.getNameForObject(item).equals("EnderIO:itemYetaWrench")) return false; + // Just for extra compatibility and/or security and/or less annoyance for (String toolName : VALID_TOOL_NAMES) { From 1310daf6e417ddeea758f47a477c0516fe205f57 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 16 Jan 2017 06:40:07 +0700 Subject: [PATCH 348/462] NV on_off sound --- .../common/ServerActions.java | 2 ++ .../handlers/PlayerEventHandler.java | 33 ++++++++++--------- .../assets/adventurebackpack/lang/en_US.lang | 6 ++-- 3 files changed, 22 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index 2e7fd8d6..afbf3cb1 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -444,6 +444,7 @@ public static void toggleNightVision(EntityPlayer player, ItemStack backpack, by inv.markDirty(); if (player.worldObj.isRemote) { + player.playSound("mob.bat.idle", 0.2F, 1); player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.nightvision.on")); } } else @@ -452,6 +453,7 @@ public static void toggleNightVision(EntityPlayer player, ItemStack backpack, by inv.markDirty(); if (player.worldObj.isRemote) { + player.playSound("mob.bat.death", 0.2F, 2); player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.nightvision.off")); } } diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 95e81e06..7ec0603e 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -202,40 +202,41 @@ public void onFall(LivingFallEvent event) @SubscribeEvent public void finallyYouDied(PlayerDropsEvent event) { - EntityPlayer entityPlayer = event.entityPlayer; + EntityPlayer player = event.entityPlayer; - if (Wearing.isWearingWearable(entityPlayer)) + if (Wearing.isWearingWearable(player)) { - if (Wearing.isWearingBackpack(entityPlayer)) + if (Wearing.isWearingBackpack(player)) { if (ConfigHandler.backpackDeathPlace) { - BackpackProperty props = BackpackProperty.get(entityPlayer); - ((IBackWearableItem) props.getWearable().getItem()).onPlayerDeath(entityPlayer.worldObj, entityPlayer, props.getWearable()); + BackpackProperty props = BackpackProperty.get(player); + ((IBackWearableItem) props.getWearable().getItem()).onPlayerDeath(player.worldObj, player, props.getWearable()); if (props.isForcedCampFire()) { - ChunkCoordinates lastCampFire = BackpackProperty.get(entityPlayer).getCampFire(); + ChunkCoordinates lastCampFire = BackpackProperty.get(player).getCampFire(); if (lastCampFire != null) { - entityPlayer.setSpawnChunk(lastCampFire, false, entityPlayer.dimension); + player.setSpawnChunk(lastCampFire, false, player.dimension); } //Set the forced spawn coordinates on the campfire. False, because the player must respawn at spawn point if there's no campfire. } - ServerProxy.storePlayerProps(entityPlayer); + ServerProxy.storePlayerProps(player); } else { - ItemStack pack = Wearing.getWearingBackpack(entityPlayer); - event.drops.add(new EntityItem(entityPlayer.worldObj, entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, pack)); + ItemStack pack = Wearing.getWearingBackpack(player); + event.drops.add(new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, pack)); //TODO get rid of campfire } - } else if (Wearing.isWearingCopter(entityPlayer)) + } else if (Wearing.isWearingCopter(player)) { - ItemStack pack = Wearing.getWearingCopter(entityPlayer); - event.drops.add(new EntityItem(entityPlayer.worldObj, entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, pack)); - } else if (Wearing.isWearingJetpack(entityPlayer)) + ItemStack pack = Wearing.getWearingCopter(player); + //TODO set it to OFF, disable sound + event.drops.add(new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, pack)); + } else if (Wearing.isWearingJetpack(player)) { - ItemStack pack = Wearing.getWearingJetpack(entityPlayer); - event.drops.add(new EntityItem(entityPlayer.worldObj, entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, pack)); + ItemStack pack = Wearing.getWearingJetpack(player); + event.drops.add(new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, pack)); } } } diff --git a/src/main/resources/assets/adventurebackpack/lang/en_US.lang b/src/main/resources/assets/adventurebackpack/lang/en_US.lang index 472a1335..29bf39d7 100644 --- a/src/main/resources/assets/adventurebackpack/lang/en_US.lang +++ b/src/main/resources/assets/adventurebackpack/lang/en_US.lang @@ -64,9 +64,9 @@ fluid.milk=Milk fluid.mushrromstew=Mushroom Stew ## Messages -adventurebackpack:messages.already.equipped.backpack=You are already equipping an Adventure Backpack. Take it off if you want to equip this one. -adventurebackpack:messages.already.equipped.copterpack=You are already equipping a Copter Pack. Take it off if you want to equip this one. -adventurebackpack:messages.already.equipped.jetpack=You are already equipping a Coal Jetpack. Take it off if you want to equip this one. +adventurebackpack:messages.already.equipped.backpack=You are already equipping an Adventure Backpack. +adventurebackpack:messages.already.equipped.copterpack=You are already equipping a Copter Pack. +adventurebackpack:messages.already.equipped.jetpack=You are already equipping a Coal Jetpack. adventurebackpack:messages.already.impossibru=You aren't wearing any backpacks. adventurebackpack:messages.copterpack.hover=CopterPack: Hover Mode. adventurebackpack:messages.copterpack.normal=CopterPack: Normal Mode. From 9199b3cf098450ba8f2312e081c7ddb96184ee4a Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 18 Jan 2017 09:58:12 +0700 Subject: [PATCH 349/462] Formatting --- .../block/BackpackMaterial.java | 1 - .../block/BlockAdventureBackpack.java | 28 +++-- .../block/BlockCampFire.java | 9 +- .../block/BlockSleepingBag.java | 14 ++- .../block/TileAdventureBackpack.java | 19 ++-- .../adventurebackpack/block/TileCampfire.java | 4 +- .../client/ClientActions.java | 2 +- .../adventurebackpack/client/Visuals.java | 12 +- .../client/audio/BoilingBoilerSound.java | 21 ++-- .../client/audio/CopterPackSound.java | 36 +++--- .../client/audio/JetpackSoundOn.java | 21 ++-- .../client/audio/LeakingBoilerSound.java | 21 ++-- .../common/BackpackAbilities.java | 103 ++++++++---------- .../common/BackpackRemovals.java | 2 +- .../common/IInventoryAdventureBackpack.java | 2 +- .../common/ServerActions.java | 23 ++-- .../handlers/ClientEventHandler.java | 7 +- .../handlers/GeneralEventHandler.java | 57 +++++----- .../handlers/GuiHandler.java | 19 ++-- .../handlers/KeybindHandler.java | 9 +- .../handlers/PlayerEventHandler.java | 6 +- .../adventurebackpack/init/ModEntities.java | 3 +- .../adventurebackpack/init/ModFluids.java | 2 + .../adventurebackpack/init/ModItems.java | 3 +- .../adventurebackpack/init/ModMaterials.java | 2 +- .../adventurebackpack/init/ModNetwork.java | 15 ++- .../adventurebackpack/init/ModWorldGen.java | 3 +- .../inventory/ContainerBackpack.java | 26 ++--- .../inventory/ContainerCopter.java | 2 +- .../inventory/ContainerJetpack.java | 19 ++-- .../inventory/InventoryCoalJetpack.java | 85 +++++++-------- .../inventory/SlotBackpack.java | 90 ++++++++------- .../inventory/SlotFluid.java | 42 ++++--- .../adventurebackpack/inventory/SlotFuel.java | 2 +- .../adventurebackpack/inventory/SlotTool.java | 14 +-- .../adventurebackpack/item/ArmorAB.java | 2 - .../adventurebackpack/item/ItemAB.java | 2 +- .../item/ItemAdventureBackpack.java | 13 +-- .../item/ItemAdventureHat.java | 1 - .../item/ItemCoalJetpack.java | 17 ++- .../adventurebackpack/item/ItemComponent.java | 32 +++--- .../adventurebackpack/item/ItemCrossbow.java | 30 ++--- .../adventurebackpack/item/ItemHose.java | 54 ++++----- .../item/ItemJuiceBottle.java | 4 +- .../adventurebackpack/item/ItemMachete.java | 12 +- .../adventurebackpack/item/ItemTelescope.java | 2 +- .../adventurebackpack/item/ToolAB.java | 6 +- .../adventurebackpack/util/Wearing.java | 39 ++++--- 48 files changed, 478 insertions(+), 460 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/BackpackMaterial.java b/src/main/java/com/darkona/adventurebackpack/block/BackpackMaterial.java index 3b5159e8..2252ae03 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BackpackMaterial.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BackpackMaterial.java @@ -11,7 +11,6 @@ public class BackpackMaterial extends Material { - public BackpackMaterial() { super(MapColor.brownColor); diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java index c92931c2..a9e31582 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java @@ -40,6 +40,7 @@ /** * Created on 12/10/2014. + * * @author Javier Darkona */ @SuppressWarnings("unused") @@ -70,7 +71,7 @@ public void randomDisplayTick(World world, int x, int y, int z, Random random) if (getAssociatedTileColorName(world, x, y, z).equals("Bookshelf")) { ChunkCoordinates enchTable = Utils.findBlock3D(world, x, y, z, Blocks.enchanting_table, 2, 2); - if(enchTable !=null) + if (enchTable != null) { if (!world.isAirBlock((enchTable.posX - x) / 2 + x, enchTable.posY, (enchTable.posZ - z) / 2 + z)) { @@ -78,7 +79,7 @@ public void randomDisplayTick(World world, int x, int y, int z, Random random) } for (int o = 0; o < 4; o++) { - world.spawnParticle("enchantmenttable",enchTable.posX + 0.5D,enchTable.posY + 2.0D,enchTable.posZ + 0.5D, + world.spawnParticle("enchantmenttable", enchTable.posX + 0.5D, enchTable.posY + 2.0D, enchTable.posZ + 0.5D, ((x - enchTable.posX) + random.nextFloat()) - 0.5D, ((y - enchTable.posY) - random.nextFloat() - 1.0F), ((z - enchTable.posZ) + random.nextFloat()) - 0.5D); @@ -113,9 +114,10 @@ public boolean isToolEffective(String type, int metadata) private String getAssociatedTileColorName(IBlockAccess world, int x, int y, int z) { - final TileEntity tile = world.getTileEntity(x, y, z); - return (tile instanceof TileAdventureBackpack) ? ((TileAdventureBackpack) tile).getColorName() : "error"; + final TileEntity tile = world.getTileEntity(x, y, z); + return (tile instanceof TileAdventureBackpack) ? ((TileAdventureBackpack) tile).getColorName() : "error"; } + @Override public boolean canRenderInPass(int pass) { @@ -213,24 +215,25 @@ public int onBlockPlaced(World world, int x, int y, int z, int side, float hitX, return super.onBlockPlaced(world, x, y, z, side, hitX, hitY, hitZ, meta); } - @Override public boolean isFlammable(IBlockAccess world, int x, int y, int z, ForgeDirection face) { return false; } + @Override public String getUnlocalizedName() { return "blockAdventureBackpack"; } - private void setUnlocalizedName(String string) { + private void setUnlocalizedName(String string) + { setUnlocalizedName("blockAdventureBackpack"); - } + } - @Override + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { @@ -380,7 +383,7 @@ public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, i @SideOnly(Side.CLIENT) public IIcon getIcon(int par1, int par2) { - return Blocks.wool.getIcon(par1,par2); + return Blocks.wool.getIcon(par1, par2); } @Override @@ -452,7 +455,6 @@ public void breakBlock(World world, int x, int y, int z, Block block, int meta) } } - } super.breakBlock(world, x, y, z, world.getBlock(x, y, z), meta); @@ -477,12 +479,14 @@ public boolean canDropFromExplosion(Explosion p_149659_1_) } @Override - public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion explosion) { + public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion explosion) + { world.func_147480_a(x, y, z, false); } @Override - public void onBlockExploded(World world, int x, int y, int z, Explosion explosion) { + public void onBlockExploded(World world, int x, int y, int z, Explosion explosion) + { //DO NOTHING } } diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java b/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java index 1c0eee39..f67b30cb 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java @@ -1,8 +1,11 @@ package com.darkona.adventurebackpack.block; +import java.util.Random; + import com.darkona.adventurebackpack.CreativeTabAB; import com.darkona.adventurebackpack.reference.ModInfo; import com.darkona.adventurebackpack.util.Utils; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockContainer; @@ -17,8 +20,6 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -import java.util.Random; - /** * Created on 05/01/2015 * @@ -42,7 +43,7 @@ private void func_149978_e() } @SuppressWarnings("unused") - private void blockBoundsForRender() + private void blockBoundsForRender() { this.func_149978_e(); } @@ -228,7 +229,7 @@ public ChunkCoordinates getBedSpawnPosition(IBlockAccess world, int x, int y, in if (spawn != null) { - return spawn; + return spawn; } } return null; diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java b/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java index 62c1ede3..d3158518 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java @@ -1,10 +1,14 @@ package com.darkona.adventurebackpack.block; +import java.util.Iterator; +import java.util.Random; + import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Resources; import com.darkona.adventurebackpack.util.Utils; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -26,9 +30,6 @@ import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.chunk.IChunkProvider; -import java.util.Iterator; -import java.util.Random; - /** * Created on 14/10/2014 * @@ -54,6 +55,7 @@ public BlockSleepingBag() } + @Override @SideOnly(Side.CLIENT) protected String getTextureName() { @@ -233,6 +235,7 @@ public static boolean isBedOccupied(int meta) return (meta & 4) != 0; } + @Override public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { int meta = world.getBlockMetadata(x, y, z); @@ -255,6 +258,7 @@ public void onNeighborBlockChange(World world, int x, int y, int z, Block block) } } + @Override public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { this.blockBoundsForRender(); @@ -265,6 +269,7 @@ private void blockBoundsForRender() this.func_149978_e(); } + @Override public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { return null; @@ -362,6 +367,7 @@ public boolean isBed(IBlockAccess world, int x, int y, int z, EntityLivingBase p return true; } + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { @@ -377,6 +383,7 @@ public IIcon getIcon(int side, int meta) } } + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { @@ -396,6 +403,7 @@ public void registerBlockIcons(IIconRegister iconRegister) }; } + @Override public int getRenderType() { return 14; diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index f6f44409..028ef75a 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -51,7 +51,6 @@ public class TileAdventureBackpack extends TileEntity implements IInventoryAdven private boolean cyclingStatus; private boolean disableNightVision; - public int getLuminosity() { return luminosity; @@ -204,7 +203,6 @@ public FluidTank getRightTank() //=====================================================SETTERS====================================================// - public void setColorName(String string) { this.colorName = string; @@ -265,7 +263,7 @@ public void writeToNBT(NBTTagCompound compound) @Override public void loadFromNBT(NBTTagCompound compound) { - if(compound.hasKey("backpackData")) + if (compound.hasKey("backpackData")) { NBTTagCompound backpackData = compound.getCompoundTag("backpackData"); NBTTagList items = backpackData.getTagList("ABPItems", net.minecraftforge.common.util.Constants.NBT.TAG_COMPOUND); @@ -315,13 +313,13 @@ public void saveToNBT(NBTTagCompound compound) backpackData.setBoolean("cyclingStatus", cyclingStatus); backpackData.setBoolean("disableNightVision", disableNightVision); - compound.setTag("backpackData",backpackData); + compound.setTag("backpackData", backpackData); } @Override public FluidTank[] getTanksArray() { - FluidTank[] tanks = {leftTank,rightTank}; + FluidTank[] tanks = { leftTank, rightTank }; return tanks; } @@ -514,21 +512,22 @@ public void updateTankSlots(FluidTank tank, int slotIn) public void saveTanks(NBTTagCompound compound) { NBTTagCompound backpackData; - if(compound.hasKey("backpackData")) + if (compound.hasKey("backpackData")) { backpackData = compound.getCompoundTag("backpackData"); - }else{ + } else + { backpackData = new NBTTagCompound(); } backpackData.setTag("rightTank", rightTank.writeToNBT(new NBTTagCompound())); backpackData.setTag("leftTank", leftTank.writeToNBT(new NBTTagCompound())); - compound.setTag("backpackData",backpackData); + compound.setTag("backpackData", backpackData); } @Override public void loadTanks(NBTTagCompound compound) { - if(compound.hasKey("backpackData")) + if (compound.hasKey("backpackData")) { NBTTagCompound backpackData = compound.getCompoundTag("backpackData"); leftTank.readFromNBT(backpackData.getCompoundTag("leftTank")); @@ -548,7 +547,6 @@ public ItemStack getParentItemStack() return null; } - private ItemStack transferToItemStack(ItemStack stack) { NBTTagCompound compound = new NBTTagCompound(); @@ -607,7 +605,6 @@ public boolean drop(World world, EntityPlayer player, int x, int y, int z) return world.spawnEntityInWorld(droppedItem); } - @Override public boolean updateTankSlots() { diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileCampfire.java b/src/main/java/com/darkona/adventurebackpack/block/TileCampfire.java index 8ac595b7..d1bd23e1 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileCampfire.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileCampfire.java @@ -15,7 +15,7 @@ public TileCampfire() } @SuppressWarnings("unused") - private int burnTicks; + private int burnTicks; @SuppressWarnings("unused") - private ItemStack[] foodCooking = new ItemStack[4]; + private ItemStack[] foodCooking = new ItemStack[4]; } diff --git a/src/main/java/com/darkona/adventurebackpack/client/ClientActions.java b/src/main/java/com/darkona/adventurebackpack/client/ClientActions.java index 16e83ffd..8fdf7b00 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/ClientActions.java +++ b/src/main/java/com/darkona/adventurebackpack/client/ClientActions.java @@ -72,7 +72,7 @@ public static void playSoundAtEntity(Entity entity, byte soundCode) case EntitySoundPacket.JETPACK_FIZZ: if (ConfigHandler.allowSoundJetpack) { - snd.playSound(new JetpackSoundOn(player)); + snd.playSound(new JetpackSoundOn(player)); } break; case EntitySoundPacket.BOILING_BUBBLES: diff --git a/src/main/java/com/darkona/adventurebackpack/client/Visuals.java b/src/main/java/com/darkona/adventurebackpack/client/Visuals.java index 92407568..53cafc72 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/Visuals.java +++ b/src/main/java/com/darkona/adventurebackpack/client/Visuals.java @@ -1,6 +1,7 @@ package com.darkona.adventurebackpack.client; import com.darkona.adventurebackpack.entity.fx.SteamFX; + import net.minecraft.client.Minecraft; import net.minecraft.client.particle.EntityFX; import net.minecraft.entity.player.EntityPlayer; @@ -67,14 +68,13 @@ public static void JetpackParticles(EntityPlayer player, World world) victoria.rotateAroundY(-player.renderYawOffset * 3.141593F / 180.0F); Vec3 leftPosition = victor.addVector(playerPosition.xCoord, playerPosition.yCoord, playerPosition.zCoord); Vec3 rightPosition = victoria.addVector(playerPosition.xCoord, playerPosition.yCoord, playerPosition.zCoord); - for(int i = 0; i< 4; i++) + for (int i = 0; i < 4; i++) { - spawnParticle("steam", leftPosition.xCoord, leftPosition.yCoord, leftPosition.zCoord, 0.04*world.rand.nextGaussian(), -0.8, 0.04 * world.rand.nextGaussian()); + spawnParticle("steam", leftPosition.xCoord, leftPosition.yCoord, leftPosition.zCoord, 0.04 * world.rand.nextGaussian(), -0.8, 0.04 * world.rand.nextGaussian()); spawnParticle("steam", rightPosition.xCoord, rightPosition.yCoord, rightPosition.zCoord, 0.04 * world.rand.nextGaussian(), -0.8, 0.04 * world.rand.nextGaussian()); } } - private static Minecraft mc = Minecraft.getMinecraft(); private static World theWorld = mc.theWorld; @@ -98,12 +98,10 @@ public static EntityFX spawnParticle(String particleName, double x, double y, do if (renderX * renderX + renderY * renderY + renderZ * renderZ > var22 * var22) { return null; - } - else if (particleSetting > 1) + } else if (particleSetting > 1) { return null; - } - else + } else { if (particleName.equals("steam")) { diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java index dd63dffc..2224e9c3 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java @@ -3,6 +3,7 @@ import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; import com.darkona.adventurebackpack.reference.ModInfo; import com.darkona.adventurebackpack.util.Wearing; + import net.minecraft.client.audio.MovingSound; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ResourceLocation; @@ -34,11 +35,12 @@ public EntityPlayer getThePlayer() return thePlayer; } - public void setThePlayer(EntityPlayer player){ + public void setThePlayer(EntityPlayer player) + { thePlayer = player; } - public void setDonePlaying() + public void setDonePlaying() { repeat = false; donePlaying = true; @@ -62,12 +64,12 @@ public void update() } InventoryCoalJetpack inv = new InventoryCoalJetpack(Wearing.getWearingJetpack(thePlayer)); - if(inv.isBoiling() && inv.getCoalTank().getFluidAmount() > 0) + if (inv.isBoiling() && inv.getCoalTank().getFluidAmount() > 0) { - xPosF = (float)thePlayer.posX; - yPosF = (float)thePlayer.posY; - zPosF = (float)thePlayer.posZ; - }else + xPosF = (float) thePlayer.posX; + yPosF = (float) thePlayer.posY; + zPosF = (float) thePlayer.posZ; + } else { setDonePlaying(); } @@ -92,7 +94,10 @@ public float getPitch() } @Override - public int getRepeatDelay(){ return this.repeatDelay; } + public int getRepeatDelay() + { + return this.repeatDelay; + } @Override public AttenuationType getAttenuationType() diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java index 6c1a4787..cf6eddbd 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java @@ -4,6 +4,7 @@ import com.darkona.adventurebackpack.reference.ModInfo; import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Wearing; + import net.minecraft.client.audio.MovingSound; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -23,7 +24,6 @@ public class CopterPackSound extends MovingSound protected float pitch; - public CopterPackSound(EntityPlayer player) { super(new ResourceLocation(ModInfo.MOD_ID, "helicopter")); @@ -37,16 +37,17 @@ public EntityPlayer getThePlayer() return thePlayer; } - public void setThePlayer(EntityPlayer player){ + public void setThePlayer(EntityPlayer player) + { thePlayer = player; } - public void setRepeat(boolean newRepeat){ + public void setRepeat(boolean newRepeat) + { LogHelper.info("Setting sound repeat"); repeat = newRepeat; } - public void setDonePlaying() { this.repeat = false; @@ -65,7 +66,7 @@ public void update() { ItemStack copter = Wearing.getWearingCopter(thePlayer); byte status = 0; - if(thePlayer == null || thePlayer.worldObj == null || copter ==null || !(copter.getItem() instanceof ItemCopterPack)) + if (thePlayer == null || thePlayer.worldObj == null || copter == null || !(copter.getItem() instanceof ItemCopterPack)) { setDonePlaying(); return; @@ -76,28 +77,30 @@ public void update() if (status == ItemCopterPack.OFF_MODE) { setDonePlaying(); - }else{ - if(status == ItemCopterPack.HOVER_MODE) + } else + { + if (status == ItemCopterPack.HOVER_MODE) { pitch = (thePlayer.motionY > 0) ? 1.2f : (thePlayer.motionY < -0.1) ? 0.8f : 1.0f; } - if(status == ItemCopterPack.NORMAL_MODE) + if (status == ItemCopterPack.NORMAL_MODE) { - if(thePlayer.onGround) + if (thePlayer.onGround) { pitch = 0.8f; - }else + } else { pitch = (thePlayer.motionY > 0) ? 1.2f : (thePlayer.isSneaking()) ? 0.8f : 1.0f; } } } - }else{ + } else + { setDonePlaying(); } - xPosF = (float)thePlayer.posX; - yPosF = (float)thePlayer.posY; - zPosF = (float)thePlayer.posZ; + xPosF = (float) thePlayer.posX; + yPosF = (float) thePlayer.posY; + zPosF = (float) thePlayer.posZ; } @Override @@ -119,7 +122,10 @@ public float getPitch() } @Override - public int getRepeatDelay(){ return this.repeatDelay; } + public int getRepeatDelay() + { + return this.repeatDelay; + } @Override public AttenuationType getAttenuationType() diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java b/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java index becbe1a0..412066fc 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java @@ -3,6 +3,7 @@ import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; import com.darkona.adventurebackpack.reference.ModInfo; import com.darkona.adventurebackpack.util.Wearing; + import net.minecraft.client.audio.MovingSound; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ResourceLocation; @@ -34,11 +35,12 @@ public EntityPlayer getThePlayer() return thePlayer; } - public void setThePlayer(EntityPlayer player){ + public void setThePlayer(EntityPlayer player) + { thePlayer = player; } - public void setDonePlaying() + public void setDonePlaying() { repeat = false; donePlaying = true; @@ -61,12 +63,12 @@ public void update() } InventoryCoalJetpack inv = new InventoryCoalJetpack(Wearing.getWearingJetpack(thePlayer)); - if(inv.isInUse()) + if (inv.isInUse()) { - xPosF = (float)thePlayer.posX; - yPosF = (float)thePlayer.posY; - zPosF = (float)thePlayer.posZ; - }else + xPosF = (float) thePlayer.posX; + yPosF = (float) thePlayer.posY; + zPosF = (float) thePlayer.posZ; + } else { setDonePlaying(); } @@ -91,7 +93,10 @@ public float getPitch() } @Override - public int getRepeatDelay(){ return this.repeatDelay; } + public int getRepeatDelay() + { + return this.repeatDelay; + } @Override public AttenuationType getAttenuationType() diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java index d7c18df7..3d5fdddd 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java @@ -3,6 +3,7 @@ import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; import com.darkona.adventurebackpack.reference.ModInfo; import com.darkona.adventurebackpack.util.Wearing; + import net.minecraft.client.audio.MovingSound; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ResourceLocation; @@ -34,11 +35,12 @@ public EntityPlayer getThePlayer() return thePlayer; } - public void setThePlayer(EntityPlayer player){ + public void setThePlayer(EntityPlayer player) + { thePlayer = player; } - public void setDonePlaying() + public void setDonePlaying() { repeat = false; donePlaying = true; @@ -61,12 +63,12 @@ public void update() } InventoryCoalJetpack inv = new InventoryCoalJetpack(Wearing.getWearingJetpack(thePlayer)); - if(inv.isLeaking()) + if (inv.isLeaking()) { - xPosF = (float)thePlayer.posX; - yPosF = (float)thePlayer.posY; - zPosF = (float)thePlayer.posZ; - }else + xPosF = (float) thePlayer.posX; + yPosF = (float) thePlayer.posY; + zPosF = (float) thePlayer.posZ; + } else { setDonePlaying(); } @@ -91,7 +93,10 @@ public float getPitch() } @Override - public int getRepeatDelay(){ return this.repeatDelay; } + public int getRepeatDelay() + { + return this.repeatDelay; + } @Override public AttenuationType getAttenuationType() diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java index b6685960..3034f5fc 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java @@ -45,7 +45,6 @@ public class BackpackAbilities public static BackpackRemovals backpackRemovals = new BackpackRemovals(); /** - * * @param colorName * @return */ @@ -84,13 +83,13 @@ public void executeAbility(EntityPlayer player, World world, Object backpack) { if (backpack instanceof ItemStack) { - String colorName = BackpackNames.getBackpackColorName((ItemStack)backpack); + String colorName = BackpackNames.getBackpackColorName((ItemStack) backpack); try { //This is black magic and shouldn't be attempted by the faint of heart. this.getClass() - .getMethod("item" + colorName, EntityPlayer.class, World.class, ItemStack.class). - invoke(backpackAbilities, player, world, backpack); + .getMethod("item" + colorName, EntityPlayer.class, World.class, ItemStack.class) + .invoke(backpackAbilities, player, world, backpack); } catch (Exception oops) { //NOBODY CARES @@ -102,17 +101,17 @@ public void executeAbility(EntityPlayer player, World world, Object backpack) String colorName = ((TileAdventureBackpack) backpack).getColorName(); try { - /* - This is witchery, witchery I say! - But seriously, if you want to know how this works just pay very close attention: - invoke will execute any method of a given class, okay? so this should be obvious. - Look at the names of the methods in this class and you'll figure it out. - You have to indicate exactly the classes that the method should use as parameters so - be very careful with "getMethod". - */ + /* + This is witchery, witchery I say! + But seriously, if you want to know how this works just pay very close attention: + invoke will execute any method of a given class, okay? so this should be obvious. + Look at the names of the methods in this class and you'll figure it out. + You have to indicate exactly the classes that the method should use as parameters so + be very careful with "getMethod". + */ this.getClass() - .getMethod("tile" + colorName, World.class, TileAdventureBackpack.class) - .invoke(backpackAbilities, world, backpack); + .getMethod("tile" + colorName, World.class, TileAdventureBackpack.class) + .invoke(backpackAbilities, world, backpack); } catch (Exception oops) { //Seriously, nobody cares if this can't work, this is just so the game won't explode. @@ -121,7 +120,7 @@ public void executeAbility(EntityPlayer player, World world, Object backpack) } - public void executeRemoval(EntityPlayer player, World world,ItemStack backpack ) + public void executeRemoval(EntityPlayer player, World world, ItemStack backpack) { String colorName = BackpackNames.getBackpackColorName(backpack); @@ -129,8 +128,8 @@ public void executeRemoval(EntityPlayer player, World world,ItemStack backpack ) { //This is black magic and shouldn't be attempted by the faint of heart. backpackRemovals.getClass() - .getMethod("item" + colorName, EntityPlayer.class, World.class, ItemStack.class). - invoke(backpackRemovals, player, world, backpack); + .getMethod("item" + colorName, EntityPlayer.class, World.class, ItemStack.class) + .invoke(backpackRemovals, player, world, backpack); } catch (Exception oops) { LogHelper.error("---Something bad happened when removing a backpack---"); @@ -143,7 +142,7 @@ public void executeRemoval(EntityPlayer player, World world,ItemStack backpack ) */ private static String[] validWearingBackpacks = { - "Bat", "Squid", "Pigman", "Cactus", "Cow", "Pig", "Dragon", "Slime", "Chicken", "Wolf", "Ocelot", "Creeper", "Rainbow", "Melon", "Sunflower","Mooshroom" + "Bat", "Squid", "Pigman", "Cactus", "Cow", "Pig", "Dragon", "Slime", "Chicken", "Wolf", "Ocelot", "Creeper", "Rainbow", "Melon", "Sunflower", "Mooshroom" }; private static String[] validRemovalBackpacks = @@ -158,10 +157,7 @@ public void executeRemoval(EntityPlayer player, World world,ItemStack backpack ) * @see com.darkona.adventurebackpack.block.BlockAdventureBackpack */ @SuppressWarnings("unused") - private static String[] validTileBackpacks = - { - "Cactus", "Melon" - }; + private static String[] validTileBackpacks = { "Cactus", "Melon" }; /** * Detects if a player is under the rain. For detecting when it is Under The Sea (maybe to sing a nice Disney tune) @@ -172,10 +168,8 @@ public void executeRemoval(EntityPlayer player, World world,ItemStack backpack ) */ private boolean isUnderRain(EntityPlayer player) { - return player.worldObj.canLightningStrikeAt(MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY), - MathHelper.floor_double(player.posZ)) - || player.worldObj.canLightningStrikeAt(MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY + player.height), - MathHelper.floor_double(player.posZ)); + return player.worldObj.canLightningStrikeAt(MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY), MathHelper.floor_double(player.posZ)) || player.worldObj + .canLightningStrikeAt(MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY + player.height), MathHelper.floor_double(player.posZ)); } /** @@ -192,7 +186,7 @@ public void itemSunflower(EntityPlayer player, World world, ItemStack backpack) { if (world.isDaytime() && /*!world.isRemote &&*/ - world.canBlockSeeTheSky(MathHelper.floor_double(player.posX),MathHelper.floor_double(player.posY+1),MathHelper.floor_double(player.posZ))) + world.canBlockSeeTheSky(MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY + 1), MathHelper.floor_double(player.posZ))) { player.getFoodStats().addStats(2, 0.2f); //LogHelper.info("OMNOMNOMNOM"); @@ -220,9 +214,9 @@ public void itemBat(EntityPlayer player, World world, ItemStack backpack) { nightVision = player.getActivePotionEffect(Potion.nightVision); } - if ((nightVision == null || nightVision.getDuration() < 220) && !Wearing.getBackpackInv(player, true).getDisableNightVision()) + if ((nightVision == null || nightVision.getDuration() < 222) && !Wearing.getBackpackInv(player, true).getDisableNightVision()) { - player.addPotionEffect(new PotionEffect(Potion.nightVision.id, 6000, -1)); + player.addPotionEffect(new PotionEffect(Potion.nightVision.id, 239, -1)); } else if (nightVision != null && Wearing.getBackpackInv(player, true).getDisableNightVision()) { backpackRemovals.itemBat(player, world, backpack); @@ -237,7 +231,7 @@ public void itemSquid(EntityPlayer player, World world, ItemStack backpack) itemBat(player, world, backpack); } else { - backpackRemovals.itemSquid(player,world, backpack); + backpackRemovals.itemSquid(player, world, backpack); } } @@ -248,9 +242,9 @@ public void itemPigman(EntityPlayer player, World world, ItemStack backpack) { potion = player.getActivePotionEffect(Potion.fireResistance); } - if (potion == null || potion.getDuration() < 220) + if (potion == null || potion.getDuration() < 222) { - player.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 6000, -1)); + player.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 239, -1)); } } @@ -264,25 +258,25 @@ public void itemPigman(EntityPlayer player, World world, ItemStack backpack) public void itemDragon(EntityPlayer player, World world, ItemStack backpack) { itemBat(player, world, backpack); - itemPigman(player,world,backpack); + itemPigman(player, world, backpack); PotionEffect potion = null; if (player.isPotionActive(Potion.regeneration.id)) { potion = player.getActivePotionEffect(Potion.regeneration); } - if (potion == null || (potion.getDuration() < 220 && potion.getAmplifier() <= 2) || potion.getDuration() < 40) + if (potion == null || (potion.getDuration() < 222 && potion.getAmplifier() <= 2) || potion.getDuration() < 20) { - player.addPotionEffect(new PotionEffect(Potion.regeneration.getId(), 6000, 2)); + player.addPotionEffect(new PotionEffect(Potion.regeneration.getId(), 239, 2)); } potion = null; if (player.isPotionActive(Potion.damageBoost.id)) { potion = player.getActivePotionEffect(Potion.damageBoost); } - if (potion == null || (potion.getDuration() < 220 && potion.getAmplifier() <= 2) || potion.getDuration() < 40) + if (potion == null || (potion.getDuration() < 222 && potion.getAmplifier() <= 2) || potion.getDuration() < 20) { - player.addPotionEffect(new PotionEffect(Potion.damageBoost.getId(), 6000, 2)); + player.addPotionEffect(new PotionEffect(Potion.damageBoost.getId(), 239, 2)); } } @@ -309,9 +303,9 @@ public void itemRainbow(EntityPlayer player, World world, ItemStack backpack) { moveSpeed = player.getActivePotionEffect(Potion.moveSpeed); } - if (moveSpeed == null || moveSpeed.getDuration() < 220 && moveSpeed.getAmplifier() <= 0) + if (moveSpeed == null || moveSpeed.getDuration() < 222 && moveSpeed.getAmplifier() <= 0) { - player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 6000, 0)); + player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 239, 0)); } inv.setLastTime(noteTime); inv.markDirty(); @@ -406,7 +400,7 @@ public void itemSlime(EntityPlayer player, World world, ItemStack backpack) if (player.onGround) { - if ((player.moveForward == 0 && player.moveStrafing == 0) && (Math.abs(player.moveForward) < 3 && Math.abs(player.moveStrafing)<3) ) + if ((player.moveForward == 0 && player.moveStrafing == 0) && (Math.abs(player.moveForward) < 3 && Math.abs(player.moveStrafing) < 3)) { player.addVelocity(player.motionX *= 0.828, 0, player.motionZ *= 0.828); } @@ -439,7 +433,7 @@ public void itemSlime(EntityPlayer player, World world, ItemStack backpack) public void itemChicken(EntityPlayer player, World world, ItemStack backpack) { InventoryBackpack inv = new InventoryBackpack(backpack); - int eggTime = inv.getLastTime() - 1 ; + int eggTime = inv.getLastTime() - 1; if (eggTime <= 0) { player.playSound("mob.chicken.plop", 1.0F, (world.rand.nextFloat() - world.rand.nextFloat()) * 0.3F + 1.0F); @@ -509,10 +503,8 @@ public void itemCreeper(EntityPlayer player, World world, ItemStack backpack) pssstTime = 20; if (player.isSneaking()) { - List entities = player.worldObj.getEntitiesWithinAABBExcludingEntity(player, - AxisAlignedBB.getBoundingBox(player.posX, player.posY, player.posZ, - player.posX + 1.0D, player.posY + 1.0D, - player.posZ + 1.0D).expand(5.0D, 1.0D, 5.0D)); + List entities = player.worldObj.getEntitiesWithinAABBExcludingEntity + (player, AxisAlignedBB.getBoundingBox(player.posX, player.posY, player.posZ, player.posX + 1.0D, player.posY + 1.0D, player.posZ + 1.0D).expand(5.0D, 1.0D, 5.0D)); if (entities.isEmpty()) { pssstTime -= 1; @@ -539,7 +531,7 @@ public void itemCreeper(EntityPlayer player, World world, ItemStack backpack) private FluidStack milkStack = new FluidStack(FluidRegistry.getFluid("milk"), 1); private FluidStack soupStack = new FluidStack(FluidRegistry.getFluid("mushroomstew"), 1); @SuppressWarnings("unused") - private FluidStack lavaStack = new FluidStack(FluidRegistry.LAVA, 1); + private FluidStack lavaStack = new FluidStack(FluidRegistry.LAVA, 1); /** * The Cow Backpack fills itself with milk when there is wheat in the backpack's inventory, but it will do so slowly @@ -686,16 +678,14 @@ public void itemWolf(EntityPlayer player, World world, ItemStack backpack) { //lastTime is in Ticks for this backpack InventoryBackpack inv = new InventoryBackpack(backpack); - int lastCheckTime = inv.getLastTime() - 1; + int lastCheckTime = inv.getLastTime() - 1; if (lastCheckTime <= 0) { lastCheckTime = 20; - List wolves = world.getEntitiesWithinAABB( - EntityWolf.class, - AxisAlignedBB.getBoundingBox(player.posX, player.posY, player.posZ, - player.posX + 1.0D, player.posY + 1.0D, - player.posZ + 1.0D).expand(16.0D, 4.0D, 16.0D)); + List wolves = world.getEntitiesWithinAABB + (EntityWolf.class, AxisAlignedBB.getBoundingBox + (player.posX, player.posY, player.posZ, player.posX + 1.0D, player.posY + 1.0D, player.posZ + 1.0D).expand(16.0D, 4.0D, 16.0D)); if (wolves.isEmpty()) return; for (EntityWolf wolf : wolves) @@ -748,11 +738,9 @@ public void itemOcelot(EntityPlayer player, World world, ItemStack backpack) if (lastCheckTime <= 0) { lastCheckTime = 20; - List creepers = player.worldObj.getEntitiesWithinAABB( - EntityCreeper.class, - AxisAlignedBB.getBoundingBox(player.posX, player.posY, player.posZ, - player.posX + 1.0D, player.posY + 1.0D, - player.posZ + 1.0D).expand(16.0D, 4.0D, 16.0D)); + List creepers = player.worldObj.getEntitiesWithinAABB + (EntityCreeper.class, AxisAlignedBB.getBoundingBox + (player.posX, player.posY, player.posZ, player.posX + 1.0D, player.posY + 1.0D, player.posZ + 1.0D).expand(16.0D, 4.0D, 16.0D)); for (EntityCreeper creeper : creepers) { @@ -808,7 +796,6 @@ public void tileCactus(World world, TileAdventureBackpack backpack) fillWithRain(world, backpack, new FluidStack(FluidRegistry.WATER, 2), 5); } - public void tileMelon(World world, TileAdventureBackpack backpack) { fillWithRain(world, backpack, new FluidStack(ModFluids.melonJuice, 2), 5); diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java index 06fc0662..7636ea56 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java @@ -80,7 +80,7 @@ public void itemPigman(EntityPlayer player, World world, ItemStack backpack) public void itemDragon(EntityPlayer player, World world, ItemStack backpack) { itemBat(player, world, backpack); - itemPigman(player,world,backpack); + itemPigman(player, world, backpack); PotionEffect potion = null; if (player.isPotionActive(Potion.damageBoost.id)) { diff --git a/src/main/java/com/darkona/adventurebackpack/common/IInventoryAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/common/IInventoryAdventureBackpack.java index 9d058966..e9d210dc 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/IInventoryAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/common/IInventoryAdventureBackpack.java @@ -2,6 +2,7 @@ import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.inventory.IInventoryTanks; + import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -45,7 +46,6 @@ public interface IInventoryAdventureBackpack extends IInventoryTanks void setLastTime(int time); - public void dirtyTime(); public void dirtyExtended(); diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index afbf3cb1..8bf6cb94 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -59,12 +59,15 @@ public static void cycleTool(EntityPlayer player, int direction, int slot) backpack.openInventory(); if (SlotTool.isValidTool(current)) { - if (direction < 0) { + if (direction < 0) + { player.inventory.mainInventory[slot] = backpack.getStackInSlot(Constants.upperTool); backpack.setInventorySlotContentsNoSave(Constants.upperTool, backpack.getStackInSlot(Constants.lowerTool)); backpack.setInventorySlotContentsNoSave(Constants.lowerTool, current); - } else { - if (direction > 0) { + } else + { + if (direction > 0) + { player.inventory.mainInventory[slot] = backpack.getStackInSlot(Constants.lowerTool); backpack.setInventorySlotContentsNoSave(Constants.lowerTool, backpack.getStackInSlot(Constants.upperTool)); backpack.setInventorySlotContentsNoSave(Constants.upperTool, current); @@ -323,7 +326,7 @@ public static int[] canDeploySleepingBag(World world, int coordX, int coordY, in break; } } - int result[] = {newMeta, coordX, coordY, coordZ}; + int result[] = { newMeta, coordX, coordY, coordZ }; return result; } @@ -338,10 +341,10 @@ public static void pistonBootsJump(EntityPlayer player) { //TODO add configuration for the playing of the sound effect. //TODO Maybe configurable jump height too, because why not. - if (ConfigHandler.allowSoundPiston) - { - player.playSound("tile.piston.out", 0.5F, player.getRNG().nextFloat() * 0.25F + 0.6F); - } + if (ConfigHandler.allowSoundPiston) + { + player.playSound("tile.piston.out", 0.5F, player.getRNG().nextFloat() * 0.25F + 0.6F); + } player.motionY += 0.30; player.jumpMovementFactor += 0.3; } @@ -372,7 +375,7 @@ public static void toggleCopterPack(EntityPlayer player, ItemStack copter, byte actionPerformed = true; if (!player.worldObj.isRemote) { - ModNetwork.sendToNearby(new EntitySoundPacket.Message(EntitySoundPacket.COPTER_SOUND,player), player); + ModNetwork.sendToNearby(new EntitySoundPacket.Message(EntitySoundPacket.COPTER_SOUND, player), player); } } else @@ -462,7 +465,7 @@ public static void toggleNightVision(EntityPlayer player, ItemStack backpack, by public static void toggleCoalJetpack(EntityPlayer player, ItemStack jetpack, byte on_off) { InventoryCoalJetpack inv = new InventoryCoalJetpack(jetpack); - if(inv.getStatus()) + if (inv.getStatus()) { inv.setStatus(false); inv.markDirty(); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java index 5942f19c..fb44a4a8 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java @@ -65,6 +65,7 @@ public void toolTips(ItemTooltipEvent event) } } } + /** * @param event */ @@ -90,8 +91,8 @@ public void mouseWheelDetect(MouseEvent event) ItemStack heldItem = player.inventory.getStackInSlot(slot); Item theItem = heldItem.getItem(); - if (ConfigHandler.enableToolsCycling && Wearing.getBackpackInv(player, true).getCyclingStatus() && SlotTool.isValidTool(heldItem) || - (BackpackNames.getBackpackColorName(backpack).equals("Skeleton") && theItem.equals(Items.bow))) + if ((ConfigHandler.enableToolsCycling && Wearing.getBackpackInv(player, true).getCyclingStatus() && SlotTool.isValidTool(heldItem)) + || ((BackpackNames.getBackpackColorName(backpack).equals("Skeleton") && theItem.equals(Items.bow)))) { ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(dWheel, slot, CycleToolPacket.CYCLE_TOOL_ACTION)); ServerActions.cycleTool(player, dWheel, slot); @@ -103,10 +104,10 @@ public void mouseWheelDetect(MouseEvent event) ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(dWheel, slot, CycleToolPacket.SWITCH_HOSE_ACTION)); ServerActions.switchHose(player, ServerActions.HOSE_SWITCH, dWheel, slot); event.setCanceled(true); + } } } } } } - } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java index 63fa52b0..55cfb5ae 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java @@ -1,5 +1,7 @@ package com.darkona.adventurebackpack.handlers; +import java.util.UUID; + import com.darkona.adventurebackpack.common.ServerActions; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.entity.ai.EntityAIHorseFollowOwner; @@ -10,6 +12,7 @@ import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; import com.darkona.adventurebackpack.util.Utils; import com.darkona.adventurebackpack.util.Wearing; + import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.EntityAITasks; @@ -27,8 +30,6 @@ import net.minecraftforge.event.entity.player.PlayerUseItemEvent; import net.minecraftforge.fluids.FluidRegistry; -import java.util.UUID; - /** * Created on 17/10/2014 * @@ -46,7 +47,7 @@ public void eatGoldenApple(PlayerUseItemEvent.Finish event) if (ConfigHandler.backpackAbilities) { if (event.item.getItem() instanceof ItemAppleGold && - //((ItemAppleGold) event.item.getItem()).getRarity(event.item) == EnumRarity.epic && + //((ItemAppleGold) event.item.getItem()).getRarity(event.item) == EnumRarity.epic && Wearing.isWearingTheRightBackpack(player, "Rainbow")) { @@ -56,22 +57,21 @@ public void eatGoldenApple(PlayerUseItemEvent.Finish event) inv.dirtyTime(); if (!player.worldObj.isRemote) { - String nyanString = - EnumChatFormatting.RED + "N" + - EnumChatFormatting.GOLD + "Y" + - EnumChatFormatting.YELLOW + "A" + - EnumChatFormatting.GREEN + "N" + - EnumChatFormatting.AQUA + "C" + - EnumChatFormatting.BLUE + "A" + - EnumChatFormatting.DARK_PURPLE + "T"; + String nyanString = EnumChatFormatting.RED + + "N" + EnumChatFormatting.GOLD + + "Y" + EnumChatFormatting.YELLOW + + "A" + EnumChatFormatting.GREEN + + "N" + EnumChatFormatting.AQUA + + "C" + EnumChatFormatting.BLUE + + "A" + EnumChatFormatting.DARK_PURPLE + + "T"; player.addChatComponentMessage(new ChatComponentText(nyanString)); ModNetwork.sendToNearby(new EntitySoundPacket.Message(EntitySoundPacket.NYAN_SOUND, player), player); } } } - if (event.item.getItem() instanceof ItemPotion - && (event.item.getItem()).getDamage(event.item) == 0) + if (event.item.getItem() instanceof ItemPotion && (event.item.getItem()).getDamage(event.item) == 0) { if (!player.worldObj.isRemote) { @@ -125,37 +125,37 @@ public void detectLightning(EntityStruckByLightningEvent event) @SubscribeEvent public void makeHorsesFollowOwner(EntityJoinWorldEvent event) { - if(!ConfigHandler.backpackAbilities)return; - if(event.entity instanceof EntityHorse) + if (!ConfigHandler.backpackAbilities) return; + if (event.entity instanceof EntityHorse) { - EntityHorse horse = ((EntityHorse)event.entity); - if(!horse.isDead && horse.isTame() && horse.hasCustomNameTag()) + EntityHorse horse = ((EntityHorse) event.entity); + if (!horse.isDead && horse.isTame() && horse.hasCustomNameTag()) { String ownerUUIDstring = horse.func_152119_ch(); if (ownerUUIDstring != null && !ownerUUIDstring.isEmpty()) { boolean set = true; - if(horse.worldObj.func_152378_a(UUID.fromString(ownerUUIDstring)) != null) + if (horse.worldObj.func_152378_a(UUID.fromString(ownerUUIDstring)) != null) { for (Object entry : horse.tasks.taskEntries) { if (((EntityAITasks.EntityAITaskEntry) entry).action instanceof EntityAIHorseFollowOwner) { - set = false; + set = false; } } } - if(set) + if (set) { - horse.tasks.addTask(4, new EntityAIHorseFollowOwner(horse, 1.5d, 2.0f, 20.0f)); - - if (horse.getAttributeMap().getAttributeInstance(SharedMonsterAttributes.followRange) != null) - { - horse.getAttributeMap().getAttributeInstance(SharedMonsterAttributes.followRange).setBaseValue(100.0D); - } + horse.tasks.addTask(4, new EntityAIHorseFollowOwner(horse, 1.5d, 2.0f, 20.0f)); + + if (horse.getAttributeMap().getAttributeInstance(SharedMonsterAttributes.followRange) != null) + { + horse.getAttributeMap().getAttributeInstance(SharedMonsterAttributes.followRange).setBaseValue(100.0D); + } } - } + } } } } @@ -164,10 +164,9 @@ public void makeHorsesFollowOwner(EntityJoinWorldEvent event) public void backpackUnequipped(WearableEvent.UnequipWearableEvent event) { - } - /* @SubscribeEvent + /* @SubscribeEvent public void listFluids(FluidRegistry.FluidRegisterEvent event) { LogHelper.info("Registered fluid " + event.fluidName + " with id " + event.fluidID); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java index 491581dd..3df8e1aa 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java @@ -2,10 +2,16 @@ import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.client.gui.GuiAdvBackpack; -import com.darkona.adventurebackpack.client.gui.GuiCopterPack; import com.darkona.adventurebackpack.client.gui.GuiCoalJetpack; -import com.darkona.adventurebackpack.inventory.*; +import com.darkona.adventurebackpack.client.gui.GuiCopterPack; +import com.darkona.adventurebackpack.inventory.ContainerBackpack; +import com.darkona.adventurebackpack.inventory.ContainerCopter; +import com.darkona.adventurebackpack.inventory.ContainerJetpack; +import com.darkona.adventurebackpack.inventory.InventoryBackpack; +import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; +import com.darkona.adventurebackpack.inventory.InventoryCopterPack; import com.darkona.adventurebackpack.util.Wearing; + import cpw.mods.fml.common.network.IGuiHandler; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; @@ -25,7 +31,6 @@ public class GuiHandler implements IGuiHandler public static final byte BACKPACK_WEARING = 1; public static final byte BACKPACK_TILE = 0; - public GuiHandler() { } @@ -56,7 +61,7 @@ public Object getServerGuiElement(int ID, EntityPlayer player, World world, int case COPTER_HOLDING: if (Wearing.isHoldingCopter(player)) { - return new ContainerCopter(player, new InventoryCopterPack(Wearing.getHoldingCopter(player)),false); + return new ContainerCopter(player, new InventoryCopterPack(Wearing.getHoldingCopter(player)), false); } break; case COPTER_WEARING: @@ -68,7 +73,7 @@ public Object getServerGuiElement(int ID, EntityPlayer player, World world, int case JETPACK_HOLDING: if (Wearing.isHoldingJetpack(player)) { - return new ContainerJetpack(player, new InventoryCoalJetpack(Wearing.getHoldingJetpack(player)),false); + return new ContainerJetpack(player, new InventoryCoalJetpack(Wearing.getHoldingJetpack(player)), false); } break; case JETPACK_WEARING: @@ -112,7 +117,7 @@ public Object getClientGuiElement(int ID, EntityPlayer player, World world, int case COPTER_HOLDING: if (Wearing.isHoldingCopter(player)) { - return new GuiCopterPack(player, new InventoryCopterPack(Wearing.getHoldingCopter(player)),false); + return new GuiCopterPack(player, new InventoryCopterPack(Wearing.getHoldingCopter(player)), false); } break; case COPTER_WEARING: @@ -124,7 +129,7 @@ public Object getClientGuiElement(int ID, EntityPlayer player, World world, int case JETPACK_HOLDING: if (Wearing.isHoldingJetpack(player)) { - return new GuiCoalJetpack(player, new InventoryCoalJetpack(Wearing.getHoldingJetpack(player)),false); + return new GuiCoalJetpack(player, new InventoryCoalJetpack(Wearing.getHoldingJetpack(player)), false); } break; case JETPACK_WEARING: diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java index 990df44d..a1ebcb7d 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java @@ -23,7 +23,6 @@ * Created by Darkona on 11/10/2014. */ - public class KeybindHandler { private static Key getPressedKeyBinding() @@ -44,7 +43,7 @@ private static Key getPressedKeyBinding() return Key.UNKNOWN; } - private static final String[] NIGHTVISION_BACKPACKS = {"Bat", "Squid", "Dragon"}; + private static final String[] NIGHTVISION_BACKPACKS = { "Bat", "Squid", "Dragon" }; @SubscribeEvent public void handleKeyInputEvent(InputEvent.KeyInputEvent event) @@ -130,12 +129,12 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) } } - if(keypressed == Key.JUMP ) + if (keypressed == Key.JUMP) { - if(player.ridingEntity != null && player.ridingEntity instanceof EntityFriendlySpider) + if (player.ridingEntity != null && player.ridingEntity instanceof EntityFriendlySpider) { ModNetwork.net.sendToServer(new PlayerActionPacket.ActionMessage(PlayerActionPacket.spiderJump)); - ((EntityFriendlySpider)player.ridingEntity).setJumping(true); + ((EntityFriendlySpider) player.ridingEntity).setJumping(true); } } } diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 7ec0603e..aaa5fcfb 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -76,7 +76,7 @@ public void joinPlayer(EntityJoinWorldEvent event) { EntityPlayer player = (EntityPlayer) event.entity; LogHelper.info("Joined EntityPlayer of name: " + event.entity.getCommandSenderName()); - BackpackProperty.syncToNear(player); + BackpackProperty.syncToNear(player); //TODO check side, zero etc. msg.handleJoin(player); texturemsg.handleJoin(player); NBTTagCompound playerData = ServerProxy.extractPlayerProps(player.getUniqueID()); @@ -84,7 +84,7 @@ public void joinPlayer(EntityJoinWorldEvent event) { BackpackProperty.get(player).loadNBTData(playerData); BackpackProperty.syncToNear(player); - BackpackProperty.sync(player); + BackpackProperty.sync(player); //TODO check side, zero etc. LogHelper.info("Stored properties retrieved"); } } @@ -259,7 +259,7 @@ public void playerDies(LivingDeathEvent event) } @SubscribeEvent - public void playerRespawn(PlayerEvent.PlayerRespawnEvent event) + public void playerRespawn(PlayerEvent.PlayerRespawnEvent event) //TODO server side, zero etc. { BackpackProperty.sync(event.player); } diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModEntities.java b/src/main/java/com/darkona/adventurebackpack/init/ModEntities.java index 7ea8c023..dbe42333 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModEntities.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModEntities.java @@ -3,6 +3,7 @@ import com.darkona.adventurebackpack.AdventureBackpack; import com.darkona.adventurebackpack.entity.EntityFriendlySpider; import com.darkona.adventurebackpack.entity.EntityInflatableBoat; + import cpw.mods.fml.common.registry.EntityRegistry; /** @@ -16,7 +17,7 @@ public class ModEntities public static void init() { //Color color1 = new Color(227,129,216); - // Color color2 = new Color(0, 0, 0); + //Color color2 = new Color(0, 0, 0); //int color_int1 = (color1.getRed() << 16) + (color1.getGreen() << 8) + color1.getBlue(); //int color_int2 = (color2.getRed() << 16) + (color2.getGreen() << 8) + color2.getBlue(); int counter = 0; diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModFluids.java b/src/main/java/com/darkona/adventurebackpack/init/ModFluids.java index b487faa1..45e4c5e1 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModFluids.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModFluids.java @@ -4,6 +4,7 @@ import com.darkona.adventurebackpack.fluids.FluidMilk; import com.darkona.adventurebackpack.fluids.FluidMushroomStew; import com.darkona.adventurebackpack.reference.GeneralReference; + import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidContainerRegistry; @@ -19,6 +20,7 @@ public class ModFluids public static FluidMilk milk; public static FluidMelonJuice melonJuice; public static FluidMushroomStew mushroomStew; + public static void init() { milk = new FluidMilk(); diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModItems.java b/src/main/java/com/darkona/adventurebackpack/init/ModItems.java index ca431d26..0d19137c 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModItems.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModItems.java @@ -3,8 +3,8 @@ import com.darkona.adventurebackpack.item.ArmorAB; import com.darkona.adventurebackpack.item.ItemAdventureBackpack; import com.darkona.adventurebackpack.item.ItemAdventureHat; -import com.darkona.adventurebackpack.item.ItemAdventureSuit; import com.darkona.adventurebackpack.item.ItemAdventurePants; +import com.darkona.adventurebackpack.item.ItemAdventureSuit; import com.darkona.adventurebackpack.item.ItemCoalJetpack; import com.darkona.adventurebackpack.item.ItemComponent; import com.darkona.adventurebackpack.item.ItemCopterPack; @@ -37,7 +37,6 @@ public class ModItems public static final ItemHose hose = new ItemHose(); public static final ItemJuiceBottle melonJuiceBottle = new ItemJuiceBottle(); - public static void init() { GameRegistry.registerItem(machete, "machete"); diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModMaterials.java b/src/main/java/com/darkona/adventurebackpack/init/ModMaterials.java index 0a9d94ec..fdce7c90 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModMaterials.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModMaterials.java @@ -14,5 +14,5 @@ public class ModMaterials public static Item.ToolMaterial ruggedIron = EnumHelper.addToolMaterial("RUGGED_IRON", 2, 350, 6.5F, 5.2F, 10); - public static ItemArmor.ArmorMaterial ruggedLeather = EnumHelper.addArmorMaterial("RUGGED_LEATHER", 15, new int[]{2, 5, 4, 2}, 12); + public static ItemArmor.ArmorMaterial ruggedLeather = EnumHelper.addArmorMaterial("RUGGED_LEATHER", 15, new int[] { 2, 5, 4, 2 }, 12); } diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java b/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java index ef602f8d..fa902b4f 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java @@ -1,10 +1,18 @@ package com.darkona.adventurebackpack.init; -import com.darkona.adventurebackpack.network.*; +import com.darkona.adventurebackpack.network.CowAbilityPacket; +import com.darkona.adventurebackpack.network.CycleToolPacket; +import com.darkona.adventurebackpack.network.EquipUnequipBackWearablePacket; +import com.darkona.adventurebackpack.network.GUIPacket; +import com.darkona.adventurebackpack.network.PlayerActionPacket; +import com.darkona.adventurebackpack.network.SleepingBagPacket; +import com.darkona.adventurebackpack.network.SyncPropertiesPacket; +import com.darkona.adventurebackpack.network.WearableModePacket; import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.reference.ModInfo; + import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper; @@ -39,6 +47,7 @@ public static void init() registerMessage(EquipUnequipBackWearablePacket.class, EquipUnequipBackWearablePacket.Message.class); } + public static void registerClientSide(Class handler, Class message) { net.registerMessage(handler, message, messages, Side.CLIENT); @@ -46,7 +55,7 @@ public static void registerClientSide(Class handler, Class message) } @SuppressWarnings({ "rawtypes", "unchecked" }) - private static void registerMessage(Class handler, Class message) + private static void registerMessage(Class handler, Class message) { net.registerMessage(handler, message, messages, Side.CLIENT); net.registerMessage(handler, message, messages, Side.SERVER); @@ -55,7 +64,7 @@ private static void registerMessage(Class handler, Class message) public static void sendToNearby(IMessage message, EntityPlayer player) { - if(player!=null && player.worldObj instanceof WorldServer) + if (player != null && player.worldObj instanceof WorldServer) { try { diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java b/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java index a49b67df..ea7e7201 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java @@ -57,7 +57,6 @@ public static void init() //Villager Trade - } public static class TradeHandler implements VillagerRegistry.IVillageTradeHandler @@ -79,7 +78,7 @@ public static class TradeHandler implements VillagerRegistry.IVillageTradeHandle * @param random */ @SuppressWarnings("unchecked") - @Override + @Override public void manipulateTradesForVillager(EntityVillager villager, MerchantRecipeList recipeList, Random random) { //0 Farmer, 1 Librarian, 2Priest, 3 Blacksmith, 4 Butcher diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 14fab192..d49089f0 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -17,8 +17,8 @@ /** * Created on 12/10/2014 - * @author Darkona * + * @author Darkona */ public class ContainerBackpack extends Container implements IWearableContainer { @@ -129,7 +129,6 @@ private void makeSlots(InventoryPlayer invPlayer) // bucket out right 21 addSlotToContainer(new SlotFluid(inventory, Constants.bucketOutRight, 226, 37)); - //Craft Matrix startX = 152; for (int y = 0; y < 3; y++) @@ -161,7 +160,7 @@ public void onCraftMatrixChanged(IInventory par1IInventory) public void onContainerClosed(EntityPlayer player) { super.onContainerClosed(player); - if(source == SOURCE_WEARING) + if (source == SOURCE_WEARING) { this.crafters.remove(player); } @@ -296,7 +295,7 @@ public Slot getSlotFromInventory(IInventory inv, int slot) @Override public ItemStack transferStackInSlot(EntityPlayer player, int i) { - if(source == SOURCE_WEARING)refresh(); + if (source == SOURCE_WEARING) refresh(); Slot slot = getSlot(i); ItemStack result = null; if (slot != null && slot.getHasStack()) @@ -321,25 +320,24 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) return null; } } - } else if (SlotFluid.isValidItem(stack) && SlotFluid.isValidTool(stack)) + } else if (SlotFluid.isContainer(stack) && SlotFluid.isValidContainer(stack)) { FluidTank leftTank = inventory.getLeftTank(); FluidTank rightTank = inventory.getRightTank(); int maxAmount = leftTank.getCapacity(); int leftAmount = leftTank.getFluidAmount(); int rightAmount = rightTank.getFluidAmount(); - String leftFluidName = SlotFluid.getFluidName(leftTank); - String rightFluidName = SlotFluid.getFluidName(rightTank); + String leftFluid = SlotFluid.getFluidName(leftTank); + String rightFluid = SlotFluid.getFluidName(rightTank); - boolean containerFilled = !SlotFluid.isEmpty(stack); int containerCapacity = SlotFluid.getCapacity(stack); - String containerFluidName = SlotFluid.getFluidName(stack); + String containerFluid = SlotFluid.getFluidName(stack); - if (containerFilled) + if (SlotFluid.isFilled(stack)) { if (leftAmount == 0) { - if ((rightAmount > 0) && (rightAmount + containerCapacity <= maxAmount) && (rightFluidName.equals(containerFluidName))) + if (rightAmount > 0 && (rightAmount + containerCapacity <= maxAmount) && rightFluid.equals(containerFluid)) { mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false); } @@ -348,11 +346,11 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false); } } - else if ((leftAmount + containerCapacity <= maxAmount) && (leftFluidName.equals(containerFluidName))) + else if ((leftAmount + containerCapacity <= maxAmount) && leftFluid.equals(containerFluid)) { mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false); } - else if ((rightAmount == 0) || (rightAmount + containerCapacity <= maxAmount) && (rightFluidName.equals(containerFluidName))) + else if (rightAmount == 0 || (rightAmount + containerCapacity <= maxAmount) && rightFluid.equals(containerFluid)) { mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false); } @@ -361,7 +359,7 @@ else if (SlotBackpack.isValidItem(stack)) mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false); } } - else if (!containerFilled) + else if (SlotFluid.isEmpty(stack)) { if (leftAmount == 0) { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java index e77eb62b..b825f8e1 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java @@ -122,7 +122,7 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) } if (i < 36) { - if (SlotFluid.isValidItem(stack) && SlotFluid.isValidTool(stack)) + if (SlotFluid.isContainer(stack) && SlotFluid.isValidContainer(stack)) { int COPTER_INV_START = PLAYER_INV_END + 1; if (!mergeItemStack(stack, COPTER_INV_START, COPTER_INV_START + 1, false)) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java index 883b4b18..cb878f5b 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java @@ -1,8 +1,6 @@ package com.darkona.adventurebackpack.inventory; -import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.Slot; @@ -17,8 +15,7 @@ public class ContainerJetpack extends Container implements IWearableContainer { InventoryCoalJetpack inventory; EntityPlayer player; - private final int - PLAYER_HOT_START = 0; + private final int PLAYER_HOT_START = 0; private final int PLAYER_HOT_END = PLAYER_HOT_START + 8; private final int PLAYER_INV_START = PLAYER_HOT_END + 1; private final int PLAYER_INV_END = PLAYER_INV_START + 26; @@ -66,9 +63,10 @@ private void makeSlots(InventoryPlayer invPlayer) // bucket out addSlotToContainer(new SlotFluid(inventory, InventoryCoalJetpack.BUCKET_OUT_SLOT, 30, 52)); // fuel - addSlotToContainer(new SlotFuel(inventory,InventoryCoalJetpack.FUEL_SLOT, 77, 64)); + addSlotToContainer(new SlotFuel(inventory, InventoryCoalJetpack.FUEL_SLOT, 77, 64)); } + @Override public boolean canInteractWith(EntityPlayer p_75145_1_) { @@ -78,15 +76,17 @@ public boolean canInteractWith(EntityPlayer p_75145_1_) @Override public void detectAndSendChanges() { - if(wearing) + if (wearing) { refresh(); super.detectAndSendChanges(); - }else{ + } else + { super.detectAndSendChanges(); } } + @Override public void onContainerClosed(EntityPlayer player) { super.onContainerClosed(player); @@ -128,15 +128,14 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) } if (i < 36) { - if (SlotFluid.isValidItem(stack) && SlotFluid.isValidTool(stack)) + if (SlotFluid.isContainer(stack) && SlotFluid.isValidContainer(stack)) { int JETPACK_INV_START = PLAYER_INV_END + 1; if (!mergeItemStack(stack, JETPACK_INV_START, JETPACK_INV_START + 1, false)) { } - } - else if (inventory.isFuel(stack) && !SlotFluid.isValidItem(stack)) + } else if (inventory.isFuel(stack) && !SlotFluid.isContainer(stack)) { int JETPACK_FUEL_START = PLAYER_INV_END + 3; if (inventory.isFuel(stack) && !mergeItemStack(stack, JETPACK_FUEL_START, JETPACK_FUEL_START + 1, false)) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index 9b7ce94e..5e586df0 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -1,6 +1,7 @@ package com.darkona.adventurebackpack.inventory; import com.darkona.adventurebackpack.util.FluidUtils; + import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -32,7 +33,6 @@ public class InventoryCoalJetpack implements IInventoryTanks private boolean inUse = false; public int currentItemBurnTime = 0; - public static final int MAX_TEMPERATURE = 200; public static final int BUCKET_IN_SLOT = 0; public static final int BUCKET_OUT_SLOT = 1; @@ -47,7 +47,7 @@ public InventoryCoalJetpack(final ItemStack jetpack) containerStack.stackTagCompound = new NBTTagCompound(); closeInventory(); } - openInventory(); + openInventory(); } public int getBurnTimeRemainingScaled(int scale) @@ -69,7 +69,7 @@ public boolean updateTankSlots() @Override public void loadFromNBT(NBTTagCompound compound) { - if(compound.hasKey("jetpackData")) + if (compound.hasKey("jetpackData")) { NBTTagCompound jetpackData = compound.getCompoundTag("jetpackData"); WaterTank.readFromNBT(jetpackData.getCompoundTag("WaterTank")); @@ -100,25 +100,25 @@ public void loadFromNBT(NBTTagCompound compound) public void saveToNBT(NBTTagCompound compound) { NBTTagCompound jetpackData; - if(compound.hasKey("jetpackData")) + if (compound.hasKey("jetpackData")) { jetpackData = compound.getCompoundTag("jetpackData"); - }else + } else { jetpackData = new NBTTagCompound(); } - jetpackData.setTag("WaterTank",WaterTank.writeToNBT(new NBTTagCompound())); - jetpackData.setTag("CoalTank",CoalTank.writeToNBT(new NBTTagCompound())); + jetpackData.setTag("WaterTank", WaterTank.writeToNBT(new NBTTagCompound())); + jetpackData.setTag("CoalTank", CoalTank.writeToNBT(new NBTTagCompound())); jetpackData.setInteger("temperature", temperature); jetpackData.setBoolean("status", status); jetpackData.setInteger("burnTicks", burnTicks); jetpackData.setInteger("coolTicks", coolTicks); - jetpackData.setLong("systemTime",systemTime); + jetpackData.setLong("systemTime", systemTime); jetpackData.setBoolean("inUse", inUse); - jetpackData.setBoolean("water",Water); - jetpackData.setBoolean("leaking",leaking); - jetpackData.setInteger("currentBurn",currentItemBurnTime); + jetpackData.setBoolean("water", Water); + jetpackData.setBoolean("leaking", leaking); + jetpackData.setInteger("currentBurn", currentItemBurnTime); NBTTagList items = new NBTTagList(); for (int i = 0; i < inventory.length; i++) { @@ -132,13 +132,13 @@ public void saveToNBT(NBTTagCompound compound) } } jetpackData.setTag("inventory", items); - compound.setTag("jetpackData",jetpackData); + compound.setTag("jetpackData", jetpackData); } @Override public FluidTank[] getTanksArray() { - FluidTank[] tanks = {WaterTank,CoalTank}; + FluidTank[] tanks = { WaterTank, CoalTank }; return tanks; } @@ -163,8 +163,8 @@ public void dirtyInventory() @Override public void dirtyTanks() { - containerStack.stackTagCompound.getCompoundTag("jetPackData").setTag("WaterTank",WaterTank.writeToNBT(new NBTTagCompound())); - containerStack.stackTagCompound.getCompoundTag("jetPackData").setTag("CoalTank",CoalTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag("jetPackData").setTag("WaterTank", WaterTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag("jetPackData").setTag("CoalTank", CoalTank.writeToNBT(new NBTTagCompound())); } public void dirtyBoiler() @@ -175,17 +175,17 @@ public void dirtyBoiler() jetpackData.setInteger("temperature", temperature); jetpackData.setInteger("burnTicks", burnTicks); jetpackData.setInteger("coolTicks", coolTicks); - jetpackData.setInteger("currentBurn",currentItemBurnTime); + jetpackData.setInteger("currentBurn", currentItemBurnTime); } public int consumeFuel() { int result = 0; - if(isFuel(inventory[FUEL_SLOT])) + if (isFuel(inventory[FUEL_SLOT])) { result = TileEntityFurnace.getItemBurnTime(inventory[FUEL_SLOT]); --inventory[FUEL_SLOT].stackSize; - if(inventory[FUEL_SLOT].stackSize == 0) + if (inventory[FUEL_SLOT].stackSize == 0) { inventory[FUEL_SLOT] = inventory[FUEL_SLOT].getItem().getContainerItem(inventory[FUEL_SLOT]); } @@ -199,8 +199,6 @@ public boolean isFuel(ItemStack stack) return TileEntityFurnace.isItemFuel(stack); } - - @Override public void setInventorySlotContentsNoSave(int slot, ItemStack stack) { @@ -250,11 +248,10 @@ public ItemStack decrStackSize(int slot, int quantity) { if (itemstack.stackSize <= quantity) { - if(slot == FUEL_SLOT) + if (slot == FUEL_SLOT) { setInventorySlotContents(slot, itemstack.getItem().getContainerItem(itemstack)); - } - else + } else { setInventorySlotContents(slot, null); } @@ -269,7 +266,7 @@ public ItemStack decrStackSize(int slot, int quantity) @Override public ItemStack getStackInSlotOnClosing(int i) { - return (i == 0 || i== 1) ? inventory[i] : null; + return (i == 0 || i == 1) ? inventory[i] : null; } @Override @@ -280,10 +277,10 @@ public void setInventorySlotContents(int slot, ItemStack stack) { stack.stackSize = getInventoryStackLimit(); } - if(slot < FUEL_SLOT)onInventoryChanged(); + if (slot < FUEL_SLOT) onInventoryChanged(); dirtyInventory(); -} + } public void onInventoryChanged() { @@ -292,11 +289,10 @@ public void onInventoryChanged() if (i == 0) { ItemStack container = getStackInSlot(i); - if(FluidContainerRegistry.isFilledContainer(container) && FluidUtils.isContainerForFluid(container, FluidRegistry.WATER)) + if (FluidContainerRegistry.isFilledContainer(container) && FluidUtils.isContainerForFluid(container, FluidRegistry.WATER)) { InventoryActions.transferContainerTank(this, WaterTank, i); - }else - if(FluidContainerRegistry.isEmptyContainer(container) && WaterTank.getFluid()!=null && FluidUtils.isContainerForFluid(container, FluidRegistry.WATER)) + } else if (FluidContainerRegistry.isEmptyContainer(container) && WaterTank.getFluid() != null && FluidUtils.isContainerForFluid(container, FluidRegistry.WATER)) { InventoryActions.transferContainerTank(this, WaterTank, i); } @@ -304,6 +300,7 @@ public void onInventoryChanged() } markDirty(); } + @Override public String getInventoryName() { @@ -349,8 +346,8 @@ public void closeInventory() @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { - if(slot == BUCKET_IN_SLOT)return SlotFluid.isValidItem(stack) && FluidUtils.isContainerForFluid(stack, FluidRegistry.WATER); - if(slot == FUEL_SLOT)return TileEntityFurnace.isItemFuel(stack); + if (slot == BUCKET_IN_SLOT) return SlotFluid.isContainer(stack) && FluidUtils.isContainerForFluid(stack, FluidRegistry.WATER); + if (slot == FUEL_SLOT) return TileEntityFurnace.isItemFuel(stack); return false; } @@ -451,19 +448,20 @@ public void setInventory(ItemStack[] inventory) public int getIncreasingFactor() { - if(temperature < 50)return 20; - if(temperature < 100)return 15; - if(temperature < 150)return 10; - return 5; + if (temperature < 50) return 20; + if (temperature < 100) return 15; + if (temperature < 150) return 10; + return 5; } public int getDecreasingFactor() { - if(temperature > 150)return 40; - if(temperature > 100)return 80; - if(temperature > 50)return 120; + if (temperature > 150) return 40; + if (temperature > 100) return 80; + if (temperature > 50) return 120; return 5; } + public int getCoolTicks() { return coolTicks; @@ -487,12 +485,13 @@ public ItemStack getContainerStack() public void calculateLostTime() { @SuppressWarnings("unused") - long elapsedTimesince = System.currentTimeMillis() - systemTime; + long elapsedTimesince = System.currentTimeMillis() - systemTime; } - public boolean isBoiling() { - // TODO Auto-generated method stub - return false; - } + public boolean isBoiling() + { + // TODO Auto-generated method stub + return false; + } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java index 1a7480b2..91b90c8c 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java @@ -13,26 +13,24 @@ public class SlotBackpack extends SlotAdventureBackpack { - private static final String[] FORBIDDEN_CLASSES = - { - // Adventure Backpack 2 - "com.darkona.adventurebackpack.item.ItemAdventureBackpack", - // Backpack Mod - "de.eydamos.backpack.item.ItemBackpack", - "de.eydamos.backpack.item.ItemWorkbenchBackpack", - // Blue Power Canvas Bags - "com.bluepowermod.item.ItemCanvasBag", - // Extra Utilities Golden Bag of Holding - "com.rwtema.extrautils.item.ItemGoldenBag", - // Forestry Backpacks +addons - "forestry.storage.items.ItemBackpack", - "forestry.storage.items.ItemBackpackNaturalist", - // Jabba Dolly - "mcp.mobius.betterbarrels.common.items.dolly.ItemBarrelMover", - "mcp.mobius.betterbarrels.common.items.dolly.ItemDiamondMover", - // Project Red Exploration Backpacks - "mrtjp.projectred.exploration.ItemBackpack", - }; + private static final String[] FORBIDDEN_CLASSES = { + // Adventure Backpack 2 + "com.darkona.adventurebackpack.item.ItemAdventureBackpack", + // Backpack Mod + "de.eydamos.backpack.item.ItemBackpack", + "de.eydamos.backpack.item.ItemWorkbenchBackpack", + // Blue Power Canvas Bags + "com.bluepowermod.item.ItemCanvasBag", + // Extra Utilities Golden Bag of Holding + "com.rwtema.extrautils.item.ItemGoldenBag", + // Forestry Backpacks +addons + "forestry.storage.items.ItemBackpack", + "forestry.storage.items.ItemBackpackNaturalist", + // Jabba Dolly + "mcp.mobius.betterbarrels.common.items.dolly.ItemBarrelMover", + "mcp.mobius.betterbarrels.common.items.dolly.ItemDiamondMover", + // Project Red Exploration Backpacks + "mrtjp.projectred.exploration.ItemBackpack", }; public SlotBackpack(IInventoryAdventureBackpack inventory, int id, int x, int y) { @@ -41,34 +39,34 @@ public SlotBackpack(IInventoryAdventureBackpack inventory, int id, int x, int y) public static boolean isValidItem(ItemStack stack) { - if (stack == null) return false; - Item itemCurrent = stack.getItem(); + if (stack == null) return false; + Item itemCurrent = stack.getItem(); - for (String classDisallowed : FORBIDDEN_CLASSES) - { - if (itemCurrent.getClass().getName().equals(classDisallowed)) return false; - } + for (String classDisallowed : FORBIDDEN_CLASSES) + { + if (itemCurrent.getClass().getName().equals(classDisallowed)) return false; + } - if (ConfigHandler.enableItemFilters) - { - for (String itemDisallowed : ConfigHandler.nameLocalized) - { - if (stack.getDisplayName().equalsIgnoreCase(itemDisallowed)) return false; - } - for (String itemDisallowed : ConfigHandler.nameInternalID) - { - if (Item.itemRegistry.getNameForObject(itemCurrent).equals(itemDisallowed)) return false; - } - for (String itemDisallowed : ConfigHandler.nameInternalIDs) - { - if (Item.itemRegistry.getNameForObject(itemCurrent).contains(itemDisallowed)) return false; - } - for (String itemDisallowed : ConfigHandler.nameUnlocalized) - { - if (itemCurrent.getUnlocalizedName().equalsIgnoreCase(itemDisallowed)) return false; - } - } - return true; + if (ConfigHandler.enableItemFilters) + { + for (String itemDisallowed : ConfigHandler.nameLocalized) + { + if (stack.getDisplayName().equalsIgnoreCase(itemDisallowed)) return false; + } + for (String itemDisallowed : ConfigHandler.nameInternalID) + { + if (Item.itemRegistry.getNameForObject(itemCurrent).equals(itemDisallowed)) return false; + } + for (String itemDisallowed : ConfigHandler.nameInternalIDs) + { + if (Item.itemRegistry.getNameForObject(itemCurrent).contains(itemDisallowed)) return false; + } + for (String itemDisallowed : ConfigHandler.nameUnlocalized) + { + if (itemCurrent.getUnlocalizedName().equalsIgnoreCase(itemDisallowed)) return false; + } + } + return true; } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java index f0f1b675..b85a2cc7 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java @@ -1,4 +1,5 @@ package com.darkona.adventurebackpack.inventory; + import com.darkona.adventurebackpack.util.Utils; import net.minecraft.inventory.IInventory; @@ -14,30 +15,25 @@ */ public class SlotFluid extends SlotAdventureBackpack { - private static final String[] VALID_TOOL_NAMES = - { - "bucket", - }; + private static final String[] VALID_CONTAINER_NAMES = { "bucket" }; - private static final String[] VALID_TOOL_IDS = - { - "minecraft:milk_bucket", - //"Railcraft:fluid.creosote.bottle", - }; - - private static final String[] INVALID_TOOL_NAMES = - { - "cell", - }; + private static final String[] VALID_CONTAINER_IDS = { "minecraft:milk_bucket" }; + private static final String[] INVALID_CONTAINER_NAMES = { "cell" }; - public SlotFluid(IInventory inventory, int id, int x, int y) { + public SlotFluid(IInventory inventory, int id, int x, int y) + { super(inventory, id, x, y); } public static boolean isEmpty(ItemStack stack) { - return ((stack != null) && FluidContainerRegistry.isEmptyContainer(stack)); + return (stack != null && FluidContainerRegistry.isEmptyContainer(stack)); + } + + public static boolean isFilled(ItemStack stack) + { + return (stack != null && FluidContainerRegistry.isFilledContainer(stack)); } public static String getFluidName(ItemStack stack) @@ -52,7 +48,7 @@ public static String getFluidName(FluidTank stack) { return stack.getFluid().getUnlocalizedName(); } - return ""; + return ""; } public static int getCapacity(ItemStack stack) @@ -60,7 +56,7 @@ public static int getCapacity(ItemStack stack) return FluidContainerRegistry.getContainerCapacity(stack); } - public static boolean isValidItem(ItemStack stack) + public static boolean isContainer(ItemStack stack) { return (stack != null && FluidContainerRegistry.isContainer(stack)); } @@ -68,10 +64,10 @@ public static boolean isValidItem(ItemStack stack) @Override public boolean isItemValid(ItemStack stack) { - return (stack != null && FluidContainerRegistry.isContainer(stack) && isValidTool(stack)); + return (stack != null && FluidContainerRegistry.isContainer(stack) && isValidContainer(stack)); } - public static boolean isValidTool(ItemStack stack) + public static boolean isValidContainer(ItemStack stack) { if (stack != null && stack.getMaxStackSize() <= 16) @@ -79,16 +75,16 @@ public static boolean isValidTool(ItemStack stack) Item itemCurrent = stack.getItem(); String nameCurrent = itemCurrent.getUnlocalizedName().toLowerCase(); - for (String toolName : VALID_TOOL_NAMES) + for (String toolName : VALID_CONTAINER_NAMES) { if (nameCurrent.contains(toolName)) return true; } - for (String toolID : VALID_TOOL_IDS) + for (String toolID : VALID_CONTAINER_IDS) { if (Item.itemRegistry.getNameForObject(itemCurrent).equals(toolID)) return true; } - for (String toolName : INVALID_TOOL_NAMES) + for (String toolName : INVALID_CONTAINER_NAMES) { if (nameCurrent.contains(toolName)) return false; } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java index 6f064325..cad65d13 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java @@ -19,6 +19,6 @@ public SlotFuel(IInventory inventory, int id, int x, int y) @Override public boolean isItemValid(ItemStack stack) { - return (stack != null) && TileEntityFurnace.isItemFuel(stack) && !SlotFluid.isValidItem(stack); //fuel slot accept only solid fuel + return (stack != null) && TileEntityFurnace.isItemFuel(stack) && !SlotFluid.isContainer(stack); //fuel slot accept only solid fuel } } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java index 0ac96e87..ea3a2493 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java @@ -27,18 +27,12 @@ public SlotTool(IInventory inventory, int id, int x, int y) @Override public boolean isItemValid(ItemStack stack) { - return isValidTool(stack); + return isValidTool(stack); } - private static final String[] VALID_TOOL_NAMES = - { - "wrench", "hammer", "axe", "shovel", "grafter", "scoop", "crowbar", "mattock", "drill", //"hatchet", "excavator", "chisel" - }; + private static final String[] VALID_TOOL_NAMES = { "wrench", "hammer", "axe", "shovel", "grafter", "scoop", "crowbar", "mattock", "drill", }; - private static final String[] INVALID_TOOL_NAMES = - { - "bucket", "sword", "dagger", "sabre", "rapier", "shield", "cutlass", "bow", "whip", "disassembler", "robit" - }; + private static final String[] INVALID_TOOL_NAMES = { "bucket", "sword", "dagger", "sabre", "rapier", "shield", "cutlass", "bow", "whip", "disassembler", "robit" }; public static boolean isValidTool(ItemStack stack) { @@ -64,7 +58,7 @@ public static boolean isValidTool(ItemStack stack) { //0 = sword, 170 = turbines if (stack.getItemDamage() == 0 || stack.getItemDamage() > 169) return false; - return true; + return true; } //Charged baterries and such if (name.contains("gt.metaitem")) return false; diff --git a/src/main/java/com/darkona/adventurebackpack/item/ArmorAB.java b/src/main/java/com/darkona/adventurebackpack/item/ArmorAB.java index 0c564b7b..f138408e 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ArmorAB.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ArmorAB.java @@ -29,13 +29,11 @@ public ArmorAB(int renderIndex, int type) setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); } - protected String getUnwrappedUnlocalizedName(String unlocalizedName) { return unlocalizedName.substring(unlocalizedName.indexOf(".") + 1); } - @Override public String getUnlocalizedName(ItemStack stack) { diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAB.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAB.java index 3bcf1a16..7060d0a5 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAB.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAB.java @@ -2,6 +2,7 @@ import com.darkona.adventurebackpack.CreativeTabAB; import com.darkona.adventurebackpack.reference.ModInfo; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; @@ -44,7 +45,6 @@ public void registerIcons(IIconRegister iconRegister) itemIcon = iconRegister.registerIcon(this.getUnlocalizedName().substring(this.getUnlocalizedName().indexOf(".") + 1)); } - protected String getUnwrappedUnlocalizedName(String unlocalizedName) { return unlocalizedName.substring(unlocalizedName.indexOf(".") + 1); diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index c58bc459..64ec425f 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -47,7 +47,6 @@ public class ItemAdventureBackpack extends ItemAB implements IBackWearableItem { - public ItemAdventureBackpack() { super(); @@ -56,7 +55,6 @@ public ItemAdventureBackpack() setMaxStackSize(1); } - public static Item getItemFromBlock(Block block) { return block instanceof BlockAdventureBackpack ? ModItems.adventureBackpack : null; @@ -212,7 +210,6 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla return stack; } - @Override public boolean isDamageable() { @@ -248,7 +245,7 @@ public String getArmorTexture(ItemStack stack, Entity entity, int slot, String t } @Override - @SuppressWarnings({"rawtypes", "unchecked"}) + @SuppressWarnings({ "rawtypes", "unchecked" }) @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4) { @@ -262,8 +259,7 @@ public void addInformation(ItemStack stack, EntityPlayer player, List list, bool } } - - @SuppressWarnings({"unchecked", "rawtypes"}) + @SuppressWarnings({ "unchecked", "rawtypes" }) @Override @SideOnly(Side.CLIENT) public void getSubItems(Item item, CreativeTabs par2CreativeTabs, List subItems) @@ -349,7 +345,7 @@ public void onEquipped(World world, EntityPlayer player, ItemStack stack) @Override public void onUnequipped(World world, EntityPlayer player, ItemStack stack) { - if(BackpackAbilities.hasRemoval(BackpackNames.getBackpackColorName(stack))) + if (BackpackAbilities.hasRemoval(BackpackNames.getBackpackColorName(stack))) { BackpackAbilities.backpackAbilities.executeRemoval(player, world, stack); } @@ -364,7 +360,8 @@ public ModelBiped getWearableModel(ItemStack wearable) @Override @SideOnly(Side.CLIENT) - public ResourceLocation getWearableTexture(ItemStack wearable){ + public ResourceLocation getWearableTexture(ItemStack wearable) + { ResourceLocation modelTexture; diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java index 659eb7b2..0ccbc199 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java @@ -36,4 +36,3 @@ public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) } } - diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index 56866cb0..2ebc9a50 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -120,7 +120,7 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) inv.openInventory(); boolean mustFizzz = !inv.isInUse(); int CoalConsumed = 13; - boolean canUse = inv.getCoalTank().drain(CoalConsumed,false) != null; + boolean canUse = inv.getCoalTank().drain(CoalConsumed, false) != null; if (inv.getStatus()) { @@ -131,9 +131,9 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) inv.dirtyBoiler(); //Suction - if(player.isInWater()) + if (player.isInWater()) { - inv.getWaterTank().fill(new FluidStack(FluidRegistry.WATER,2),true); + inv.getWaterTank().fill(new FluidStack(FluidRegistry.WATER, 2), true); } //Elevation @@ -164,16 +164,15 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) inv.setInUse(false); } player.moveFlying(player.moveStrafing, player.moveForward, 0.02f); - if(player.fallDistance > 1) + if (player.fallDistance > 1) { player.fallDistance -= 1; } - if(player.motionY >= 0) + if (player.motionY >= 0) { player.fallDistance = 0; } - if(!world.isRemote) - ModNetwork.sendToNearby(new EntityParticlePacket.Message(EntityParticlePacket.JETPACK_PARTICLE, player), player); + if (!world.isRemote) ModNetwork.sendToNearby(new EntityParticlePacket.Message(EntityParticlePacket.JETPACK_PARTICLE, player), player); } inv.closeInventory(); @@ -189,7 +188,7 @@ private void runWater(InventoryCoalJetpack inv, World world, EntityPlayer player if (temperature >= 100 && inv.getWaterTank().getFluidAmount() > 0) { - if(!Water)Water = true; + if (!Water) Water = true; if (!world.isRemote && mustBlublub) { @@ -263,7 +262,7 @@ public void onEquipped(World world, EntityPlayer player, ItemStack stack) { InventoryCoalJetpack inv = new InventoryCoalJetpack(stack); inv.calculateLostTime(); - if(inv.getTemperature() == 0)inv.setTemperature(getBiomeMinTemp(player, world)); + if (inv.getTemperature() == 0) inv.setTemperature(getBiomeMinTemp(player, world)); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java b/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java index d989ad84..b9e4a726 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java @@ -1,6 +1,10 @@ package com.darkona.adventurebackpack.item; +import java.util.HashMap; +import java.util.List; + import com.darkona.adventurebackpack.entity.EntityInflatableBoat; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; @@ -10,16 +14,17 @@ import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.*; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; import net.minecraft.world.World; -import java.util.HashMap; -import java.util.List; - /** * Created on 11/10/2014 - * @author Darkona * + * @author Darkona */ public class ItemComponent extends ItemAB { @@ -34,7 +39,6 @@ public class ItemComponent extends ItemAB "inflatableBoat", "inflatableBoatMotorized", "hydroBlades", - }; @@ -51,12 +55,12 @@ public ItemComponent() public void registerIcons(IIconRegister iconRegister) { - for(String name : names){ + for (String name : names) + { IIcon temporalIcon = iconRegister.registerIcon(super.getUnlocalizedName(name).substring(this.getUnlocalizedName().indexOf(".") + 1)); componentIcons.put(name, temporalIcon); } - itemIcon = iconRegister.registerIcon(super.getUnlocalizedName("sleepingBag").substring(this.getUnlocalizedName().indexOf(".") + 1)); } @@ -66,19 +70,18 @@ public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemS return super.getIcon(stack, renderPass, player, usingItem, useRemaining); } - @Override @SideOnly(Side.CLIENT) public IIcon getIconFromDamage(int damage) { - return componentIcons.get(names[damage-1]); + return componentIcons.get(names[damage - 1]); } @Override public String getUnlocalizedName(ItemStack stack) { - return super.getUnlocalizedName(names[getDamage(stack)-1]); + return super.getUnlocalizedName(names[getDamage(stack) - 1]); } @@ -149,7 +152,6 @@ public boolean onItemUse(ItemStack itemStack, EntityPlayer player, World world, }*/ } - private ItemStack placeBoat(ItemStack stack, World world, EntityPlayer player, boolean motorized) { float f = 1.0F; @@ -235,8 +237,6 @@ private ItemStack placeBoat(ItemStack stack, World world, EntityPlayer player, b } } - - /** * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer * @@ -247,8 +247,8 @@ private ItemStack placeBoat(ItemStack stack, World world, EntityPlayer player, b @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - if(stack.getItemDamage() == 7)return placeBoat(stack,world,player,false); - if(stack.getItemDamage() == 8)return placeBoat(stack,world,player,true); + if (stack.getItemDamage() == 7) return placeBoat(stack, world, player, false); + if (stack.getItemDamage() == 8) return placeBoat(stack, world, player, true); return stack; } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCrossbow.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCrossbow.java index fcb50a10..f7f79a6d 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCrossbow.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCrossbow.java @@ -27,7 +27,6 @@ public ItemCrossbow() setMaxStackSize(1); } - /** * Returns true if players can use this item to affect the world (e.g. placing blocks, placing ender eyes in portal) * when not in creative @@ -96,19 +95,20 @@ public void onUsingTick(ItemStack stack, EntityPlayer player, int count) @Override public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean current) { - if(!stack.hasTagCompound()){ + if (!stack.hasTagCompound()) + { stack.stackTagCompound = new NBTTagCompound(); - stack.stackTagCompound.setByte("Shot",(byte)0); - stack.stackTagCompound.setInteger("Reloading",0); + stack.stackTagCompound.setByte("Shot", (byte) 0); + stack.stackTagCompound.setInteger("Reloading", 0); } - if(current) + if (current) { byte shot = stack.stackTagCompound.getByte("Shot"); int reloading = stack.stackTagCompound.getInteger("Reloading"); - if(shot > 0)stack.stackTagCompound.setByte("Shot", (byte)(shot-1)); - if(reloading > 0)stack.stackTagCompound.setInteger("Reloading",reloading-1); - if(entity instanceof EntityPlayer) + if (shot > 0) stack.stackTagCompound.setByte("Shot", (byte) (shot - 1)); + if (reloading > 0) stack.stackTagCompound.setInteger("Reloading", reloading - 1); + if (entity instanceof EntityPlayer) { //((EntityPlayer)entity).setItemInUse(stack,2); } @@ -118,12 +118,13 @@ public void onUpdate(ItemStack stack, World world, Entity entity, int slot, bool @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - if(!stack.hasTagCompound())stack.setTagCompound(new NBTTagCompound()); - if(!stack.stackTagCompound.hasKey("Reloading"))stack.stackTagCompound.setInteger("Reloading",0); + if (!stack.hasTagCompound()) stack.setTagCompound(new NBTTagCompound()); + if (!stack.stackTagCompound.hasKey("Reloading")) stack.stackTagCompound.setInteger("Reloading", 0); int reloading = stack.stackTagCompound.getInteger("Reloading"); - if(reloading <= 0){ - shootArrow(stack,player.worldObj,player, 1000); - stack.stackTagCompound.setByte("Shot",(byte)4); + if (reloading <= 0) + { + shootArrow(stack, player.worldObj, player, 1000); + stack.stackTagCompound.setByte("Shot", (byte) 4); int reloadTime = 20; stack.stackTagCompound.setInteger("Reloading", reloadTime); @@ -131,7 +132,6 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla return stack; } - @Override public int getMaxItemUseDuration(ItemStack stack) { @@ -151,7 +151,7 @@ public void shootArrow(ItemStack stack, World world, EntityPlayer player, int co if (flag || player.inventory.hasItem(Items.arrow)) { - float f = j / 20.0F; + float f = j / 20.0F; f = (f * f + f * 2.0F) / 3.0F; if (f < 0.1D) diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java b/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java index 1ea437d6..a7c51ade 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java @@ -9,6 +9,7 @@ import com.darkona.adventurebackpack.util.Resources; import com.darkona.adventurebackpack.util.Utils; import com.darkona.adventurebackpack.util.Wearing; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -28,7 +29,11 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.fluids.*; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; +import net.minecraftforge.fluids.IFluidHandler; /** * Created by Darkona on 12/10/2014. @@ -54,23 +59,22 @@ public ItemHose() setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); } - // ================================================ GETTERS =====================================================// @Override @SideOnly(Side.CLIENT) public IIcon getIcon(ItemStack stack, int pass) { - switch(getHoseMode(stack)) - { - case HOSE_SUCK_MODE: - return suckIcon; - case HOSE_SPILL_MODE: - return spillIcon; - case HOSE_DRINK_MODE: - return drinkIcon; - default: - return itemIcon; - } + switch (getHoseMode(stack)) + { + case HOSE_SUCK_MODE: + return suckIcon; + case HOSE_SPILL_MODE: + return spillIcon; + case HOSE_DRINK_MODE: + return drinkIcon; + default: + return itemIcon; + } } @Override @@ -156,7 +160,6 @@ public void onUpdate(ItemStack stack, World world, Entity entity, int inv_slot, EntityPlayer player = (EntityPlayer) entity; if (world.isRemote && player.getItemInUse() != null && player.getItemInUse().getItem().equals(this)) return; - NBTTagCompound nbt = stack.hasTagCompound() ? stack.getTagCompound() : new NBTTagCompound(); ItemStack backpack = Wearing.getWearingBackpack(player); if (backpack != null) @@ -187,7 +190,7 @@ public void onUpdate(ItemStack stack, World world, Entity entity, int inv_slot, @Override public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) { - if(!Wearing.isWearingBackpack(player))return true; + if (!Wearing.isWearingBackpack(player)) return true; InventoryBackpack inv = new InventoryBackpack(Wearing.getWearingBackpack(player)); inv.openInventory(); @@ -244,7 +247,7 @@ public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity en @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - if(!Wearing.isWearingBackpack(player))return stack; + if (!Wearing.isWearingBackpack(player)) return stack; InventoryBackpack inv = new InventoryBackpack(Wearing.getWearingBackpack(player)); inv.openInventory(); MovingObjectPosition mop = getMovingObjectPositionFromPlayer(world, player, true); @@ -257,10 +260,10 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla if (mop != null && mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) { - /* if (!world.canMineBlock(player, mop.blockX, mop.blockY, mop.blockZ)) - { - return stack; - }*/ + /* if (!world.canMineBlock(player, mop.blockX, mop.blockY, mop.blockZ)) + { + return stack; + }*/ if (!player.canPlayerEdit(mop.blockX, mop.blockY, mop.blockZ, mop.sideHit, null)) { @@ -329,19 +332,18 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla { return stack; } - /* IN HELL DIMENSION No, I won't let you put water in the nether. You freak*/ + /* IN HELL DIMENSION No, I won't let you put water in the nether. You freak*/ if (world.provider.isHellWorld && fluid.getFluid() == FluidRegistry.WATER) { tank.drain(Constants.bucket, true); - world.playSoundEffect(x + 0.5F, y + 0.5F, z + 0.5F, "random.fizz", 0.5F, - 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F); + world.playSoundEffect(x + 0.5F, y + 0.5F, z + 0.5F, "random.fizz", 0.5F, 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F); for (int l = 0; l < 12; ++l) { world.spawnParticle("largesmoke", x + Math.random(), y + Math.random(), z + Math.random(), 0.0D, 0.0D, 0.0D); } } else { - /* NOT IN HELL DIMENSION. */ + /* NOT IN HELL DIMENSION. */ FluidStack drainedFluid = tank.drain(Constants.bucket, false); if (drainedFluid != null && drainedFluid.amount >= Constants.bucket) { @@ -405,7 +407,7 @@ public boolean onEntitySwing(EntityLivingBase entityLiving, ItemStack stack) @Override public ItemStack onEaten(ItemStack hose, World world, EntityPlayer player) { - if(!Wearing.isWearingBackpack(player))return hose; + if (!Wearing.isWearingBackpack(player)) return hose; int mode = -1; int tank = -1; if (hose.stackTagCompound != null) @@ -440,7 +442,7 @@ public boolean onDroppedByPlayer(ItemStack item, EntityPlayer player) @Override public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity) { - if(!Wearing.isWearingBackpack(player))return false; + if (!Wearing.isWearingBackpack(player)) return false; InventoryBackpack inventory = new InventoryBackpack(Wearing.getWearingBackpack(player)); inventory.openInventory(); if (entity instanceof EntityCow && !(entity instanceof EntityMooshroom)) diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemJuiceBottle.java b/src/main/java/com/darkona/adventurebackpack/item/ItemJuiceBottle.java index a8bf3d90..764f7c04 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemJuiceBottle.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemJuiceBottle.java @@ -4,6 +4,7 @@ import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; import com.darkona.adventurebackpack.init.ModFluids; import com.darkona.adventurebackpack.util.Resources; + import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; @@ -28,7 +29,6 @@ public ItemJuiceBottle() setMaxStackSize(1); } - @Override public ItemStack onEaten(ItemStack stack, World world, EntityPlayer player) { @@ -49,14 +49,12 @@ public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int return false; } - @Override public EnumAction getItemUseAction(ItemStack p_77661_1_) { return EnumAction.drink; } - @Override public int getMaxItemUseDuration(ItemStack p_77626_1_) { diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemMachete.java b/src/main/java/com/darkona/adventurebackpack/item/ItemMachete.java index f4fe484b..03c20a52 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemMachete.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemMachete.java @@ -1,8 +1,11 @@ package com.darkona.adventurebackpack.item; +import java.util.Set; + import com.darkona.adventurebackpack.CreativeTabAB; import com.darkona.adventurebackpack.init.ModMaterials; import com.google.common.collect.Sets; + import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.EntityLivingBase; @@ -16,8 +19,6 @@ import net.minecraftforge.common.IShearable; import net.minecraftforge.oredict.OreDictionary; -import java.util.Set; - /** * Created on 10/10/2014 * @@ -49,8 +50,9 @@ public class ItemMachete extends ToolAB Blocks.waterlily, Blocks.wheat, Blocks.wool); + @SuppressWarnings("unused") - private float field_150934_a; + private float field_150934_a; public ItemMachete() { @@ -110,8 +112,8 @@ public boolean onBlockStartBreak(ItemStack itemstack, int x, int y, int z, Entit } int id = player.worldObj.getBlockId(x, y, z); for(ItemStack stacky : OreDictionary.getOres("treeLeaves")){ - if (stacky.itemID == id) return false; - } + if (stacky.itemID == id) return false; + } if (Block.blocksList[id] instanceof IShearable ) { diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemTelescope.java b/src/main/java/com/darkona/adventurebackpack/item/ItemTelescope.java index 7a29f6a1..c2d8f42c 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemTelescope.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemTelescope.java @@ -7,6 +7,6 @@ */ public class ItemTelescope extends ItemAB { - //Make Telescope item doto list + //Make Telescope item doto list } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ToolAB.java b/src/main/java/com/darkona/adventurebackpack/item/ToolAB.java index 1dd5d240..4287c2fd 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ToolAB.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ToolAB.java @@ -1,6 +1,9 @@ package com.darkona.adventurebackpack.item; +import java.util.Set; + import com.darkona.adventurebackpack.reference.ModInfo; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; @@ -9,8 +12,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.ItemTool; -import java.util.Set; - /** * Created by Darkona on 11/10/2014. */ @@ -48,7 +49,6 @@ public void registerIcons(IIconRegister iconRegister) itemIcon = iconRegister.registerIcon(this.getUnlocalizedName().substring(this.getUnlocalizedName().indexOf(".") + 1)); } - protected String getUnwrappedUnlocalizedName(String unlocalizedName) { return unlocalizedName.substring(unlocalizedName.indexOf(".") + 1); diff --git a/src/main/java/com/darkona/adventurebackpack/util/Wearing.java b/src/main/java/com/darkona/adventurebackpack/util/Wearing.java index ba64ffa4..6df093f7 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Wearing.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Wearing.java @@ -2,32 +2,40 @@ import com.darkona.adventurebackpack.inventory.IInventoryTanks; import com.darkona.adventurebackpack.inventory.InventoryBackpack; -import com.darkona.adventurebackpack.inventory.InventoryCopterPack; import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; -import com.darkona.adventurebackpack.item.*; +import com.darkona.adventurebackpack.inventory.InventoryCopterPack; +import com.darkona.adventurebackpack.item.IBackWearableItem; +import com.darkona.adventurebackpack.item.ItemAdventureBackpack; +import com.darkona.adventurebackpack.item.ItemAdventureHat; +import com.darkona.adventurebackpack.item.ItemCoalJetpack; +import com.darkona.adventurebackpack.item.ItemCopterPack; +import com.darkona.adventurebackpack.item.ItemPistonBoots; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.reference.BackpackNames; + import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; /** * Created on 11/10/2014 - * @author Darkona * + * @author Darkona */ public class Wearing { - public static boolean isWearingWearable(EntityPlayer player){ + public static boolean isWearingWearable(EntityPlayer player) + { return BackpackProperty.get(player).getWearable() != null && BackpackProperty.get(player).getWearable().getItem() instanceof IBackWearableItem; } public static ItemStack getWearingWearable(EntityPlayer player) { - return isWearingWearable(player) ? BackpackProperty.get(player).getWearable() : null; + return isWearingWearable(player) ? BackpackProperty.get(player).getWearable() : null; } - public static boolean isHoldingWearable(EntityPlayer player){ - return player.inventory.getCurrentItem()!= null && player.inventory.getCurrentItem().getItem() instanceof IBackWearableItem; + public static boolean isHoldingWearable(EntityPlayer player) + { + return player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof IBackWearableItem; } public static boolean isWearingCopter(EntityPlayer player) @@ -37,7 +45,7 @@ public static boolean isWearingCopter(EntityPlayer player) public static ItemStack getWearingCopter(EntityPlayer player) { - return isWearingCopter(player) ? BackpackProperty.get(player).getWearable() : null; + return isWearingCopter(player) ? BackpackProperty.get(player).getWearable() : null; } public static boolean isHoldingJetpack(EntityPlayer player) @@ -47,7 +55,7 @@ public static boolean isHoldingJetpack(EntityPlayer player) public static ItemStack getHoldingJetpack(EntityPlayer player) { - return isHoldingJetpack(player) ? player.inventory.getCurrentItem() : null; + return isHoldingJetpack(player) ? player.inventory.getCurrentItem() : null; } public static boolean isWearingJetpack(EntityPlayer player) @@ -67,10 +75,9 @@ public static boolean isHoldingCopter(EntityPlayer player) public static ItemStack getHoldingCopter(EntityPlayer player) { - return isHoldingCopter(player) ? player.inventory.getCurrentItem() : null; + return isHoldingCopter(player) ? player.inventory.getCurrentItem() : null; } - public static boolean isWearingBoots(EntityPlayer player) { return player.inventory.armorInventory[0] != null && player.inventory.armorInventory[0].getItem() instanceof ItemPistonBoots; @@ -119,7 +126,7 @@ public static ItemStack getWearingBoots(EntityPlayer player) /** * Will return a backpack inventory from a backpack in the slot if true, or in the hand if false. * - * @param player the player + * @param player the player * @param wearing boolean flag * @return */ @@ -130,11 +137,11 @@ public static InventoryBackpack getBackpackInv(EntityPlayer player, boolean wear public static boolean isWearingTheRightBackpack(EntityPlayer player, String... backpacks) { - if(Wearing.isWearingBackpack(player)) + if (Wearing.isWearingBackpack(player)) { - for(String name : backpacks) + for (String name : backpacks) { - if(BackpackNames.getBackpackColorName(Wearing.getWearingBackpack(player)).equals(name)) + if (BackpackNames.getBackpackColorName(Wearing.getWearingBackpack(player)).equals(name)) { return true; } @@ -146,7 +153,7 @@ public static boolean isWearingTheRightBackpack(EntityPlayer player, String... b public static IInventoryTanks getWearableInv(EntityPlayer player) { ItemStack wearable = Wearing.getWearingWearable(player); - if(wearable.getItem() instanceof ItemAdventureBackpack)return new InventoryBackpack(wearable); + if (wearable.getItem() instanceof ItemAdventureBackpack) return new InventoryBackpack(wearable); if (wearable.getItem() instanceof ItemCoalJetpack) return new InventoryCoalJetpack(wearable); if (wearable.getItem() instanceof ItemCopterPack) return new InventoryCopterPack(wearable); return null; From daac32ae3333880cb50224acae63f24ddbfc1462 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 18 Jan 2017 10:04:11 +0700 Subject: [PATCH 350/462] Fix crash with playerapi in special conditions --- .../darkona/adventurebackpack/item/ItemAdventureBackpack.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 64ec425f..2a5fab2c 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -291,7 +291,7 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) @Override public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) { - onUnequipped(world, player, stack); + //onUnequipped(world, player, stack); if (world.isRemote) return; From e65cd9ff5bc94ebabcaa32d3e5f2ca2d66f92b66 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 18 Jan 2017 11:54:52 +0700 Subject: [PATCH 351/462] Fixed removal copter sound on player death --- .../darkona/adventurebackpack/client/audio/CopterPackSound.java | 2 +- .../darkona/adventurebackpack/handlers/PlayerEventHandler.java | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java index cf6eddbd..b2f5af08 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java @@ -66,7 +66,7 @@ public void update() { ItemStack copter = Wearing.getWearingCopter(thePlayer); byte status = 0; - if (thePlayer == null || thePlayer.worldObj == null || copter == null || !(copter.getItem() instanceof ItemCopterPack)) + if (thePlayer == null || thePlayer.isDead || thePlayer.worldObj == null || copter == null || !(copter.getItem() instanceof ItemCopterPack)) { setDonePlaying(); return; diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index aaa5fcfb..2b39cc3a 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -231,7 +231,6 @@ public void finallyYouDied(PlayerDropsEvent event) } else if (Wearing.isWearingCopter(player)) { ItemStack pack = Wearing.getWearingCopter(player); - //TODO set it to OFF, disable sound event.drops.add(new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, pack)); } else if (Wearing.isWearingJetpack(player)) { From 954de412f25ebaab4953381bf1edb96c1bfca5e2 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 18 Jan 2017 12:03:54 +0700 Subject: [PATCH 352/462] Player events clean up --- .../handlers/PlayerEventHandler.java | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 2b39cc3a..32826132 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -76,30 +76,26 @@ public void joinPlayer(EntityJoinWorldEvent event) { EntityPlayer player = (EntityPlayer) event.entity; LogHelper.info("Joined EntityPlayer of name: " + event.entity.getCommandSenderName()); - BackpackProperty.syncToNear(player); //TODO check side, zero etc. - msg.handleJoin(player); - texturemsg.handleJoin(player); NBTTagCompound playerData = ServerProxy.extractPlayerProps(player.getUniqueID()); if (playerData != null) { BackpackProperty.get(player).loadNBTData(playerData); - BackpackProperty.syncToNear(player); - BackpackProperty.sync(player); //TODO check side, zero etc. + BackpackProperty.sync(player); LogHelper.info("Stored properties retrieved"); } + msg.handleJoin(player); + texturemsg.handleJoin(player); } } } @SubscribeEvent - public NBTTagCompound playerLogsIn(PlayerEvent.PlayerLoggedInEvent event) + public void playerLogsIn(PlayerEvent.PlayerLoggedInEvent event) { if (event.player instanceof EntityPlayerMP) { BackpackProperty.sync(event.player); - return new NBTTagCompound(); } - return null; } @SubscribeEvent @@ -200,7 +196,7 @@ public void onFall(LivingFallEvent event) } @SubscribeEvent - public void finallyYouDied(PlayerDropsEvent event) + public void playerDeathDrop(PlayerDropsEvent event) { EntityPlayer player = event.entityPlayer; @@ -257,11 +253,11 @@ public void playerDies(LivingDeathEvent event) event.setResult(Event.Result.ALLOW); } - @SubscribeEvent - public void playerRespawn(PlayerEvent.PlayerRespawnEvent event) //TODO server side, zero etc. + /*@SubscribeEvent + public void playerRespawn(PlayerEvent.PlayerRespawnEvent event) { BackpackProperty.sync(event.player); - } + }*/ @SubscribeEvent public void playerCraftsBackpack(PlayerEvent.ItemCraftedEvent event) From 020f3781f9531cf40e12c66c2fb6c8a2e6275444 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 19 Jan 2017 02:32:33 +0700 Subject: [PATCH 353/462] Tool Cycling enabled by default --- .../block/TileAdventureBackpack.java | 12 ++++---- .../common/BackpackAbilities.java | 4 +-- .../common/ServerActions.java | 21 +++++++------- .../handlers/ClientEventHandler.java | 2 +- .../inventory/InventoryBackpack.java | 28 +++++++++---------- 5 files changed, 33 insertions(+), 34 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 028ef75a..99f5de43 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -48,8 +48,8 @@ public class TileAdventureBackpack extends TileEntity implements IInventoryAdven private int lastTime; private int luminosity; private NBTTagCompound extendedProperties; - private boolean cyclingStatus; - private boolean disableNightVision; + private boolean disableCycling; + private boolean disableNVision; public int getLuminosity() { @@ -282,8 +282,8 @@ public void loadFromNBT(NBTTagCompound compound) lastTime = backpackData.getInteger("lastTime"); special = backpackData.getBoolean("special"); extendedProperties = backpackData.getCompoundTag("extended"); - cyclingStatus = backpackData.getBoolean("cyclingStatus"); - disableNightVision = backpackData.getBoolean("disableNightVision"); + disableCycling = backpackData.getBoolean("disableCycling"); + disableNVision = backpackData.getBoolean("disableNVision"); } } @@ -310,8 +310,8 @@ public void saveToNBT(NBTTagCompound compound) backpackData.setTag("extended", extendedProperties); backpackData.setTag("rightTank", rightTank.writeToNBT(new NBTTagCompound())); backpackData.setTag("leftTank", leftTank.writeToNBT(new NBTTagCompound())); - backpackData.setBoolean("cyclingStatus", cyclingStatus); - backpackData.setBoolean("disableNightVision", disableNightVision); + backpackData.setBoolean("disableCycling", disableCycling); + backpackData.setBoolean("disableNVision", disableNVision); compound.setTag("backpackData", backpackData); } diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java index 3034f5fc..93be941a 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java @@ -214,10 +214,10 @@ public void itemBat(EntityPlayer player, World world, ItemStack backpack) { nightVision = player.getActivePotionEffect(Potion.nightVision); } - if ((nightVision == null || nightVision.getDuration() < 222) && !Wearing.getBackpackInv(player, true).getDisableNightVision()) + if ((nightVision == null || nightVision.getDuration() < 222) && !Wearing.getBackpackInv(player, true).getDisableNVision()) { player.addPotionEffect(new PotionEffect(Potion.nightVision.id, 239, -1)); - } else if (nightVision != null && Wearing.getBackpackInv(player, true).getDisableNightVision()) + } else if (nightVision != null && Wearing.getBackpackInv(player, true).getDisableNVision()) { backpackRemovals.itemBat(player, world, backpack); } diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index 8bf6cb94..ccc96fb7 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -54,7 +54,6 @@ public static void cycleTool(EntityPlayer player, int direction, int slot) try { InventoryBackpack backpack = Wearing.getBackpackInv(player, true); - boolean enableBackpackCycling = backpack.getCyclingStatus(); ItemStack current = player.getCurrentEquippedItem(); backpack.openInventory(); if (SlotTool.isValidTool(current)) @@ -418,21 +417,21 @@ public static void toggleToolCycling(EntityPlayer player, ItemStack backpack, by InventoryBackpack inv = new InventoryBackpack(backpack); if (ConfigHandler.enableToolsCycling) { - if (inv.getCyclingStatus()) + if (inv.getDisableCycling()) { - inv.setCyclingStatus(false); + inv.setDisableCycling(false); inv.markDirty(); if (player.worldObj.isRemote) { - player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.cycling.off")); + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.cycling.on")); } } else { - inv.setCyclingStatus(true); + inv.setDisableCycling(true); inv.markDirty(); if (player.worldObj.isRemote) { - player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.cycling.on")); + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.cycling.off")); } } } @@ -441,22 +440,22 @@ public static void toggleToolCycling(EntityPlayer player, ItemStack backpack, by public static void toggleNightVision(EntityPlayer player, ItemStack backpack, byte on_off) { InventoryBackpack inv = new InventoryBackpack(backpack); - if (inv.getDisableNightVision()) + if (inv.getDisableNVision()) { - inv.setDisableNightVision(false); + inv.setDisableNVision(false); inv.markDirty(); if (player.worldObj.isRemote) { - player.playSound("mob.bat.idle", 0.2F, 1); + player.playSound("mob.bat.idle", 0.2F, 1.0F); player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.nightvision.on")); } } else { - inv.setDisableNightVision(true); + inv.setDisableNVision(true); inv.markDirty(); if (player.worldObj.isRemote) { - player.playSound("mob.bat.death", 0.2F, 2); + player.playSound("mob.bat.death", 0.2F, 2.0F); player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.nightvision.off")); } } diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java index fb44a4a8..4b8d6aa1 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java @@ -91,7 +91,7 @@ public void mouseWheelDetect(MouseEvent event) ItemStack heldItem = player.inventory.getStackInSlot(slot); Item theItem = heldItem.getItem(); - if ((ConfigHandler.enableToolsCycling && Wearing.getBackpackInv(player, true).getCyclingStatus() && SlotTool.isValidTool(heldItem)) + if ((ConfigHandler.enableToolsCycling && !Wearing.getBackpackInv(player, true).getDisableCycling() && SlotTool.isValidTool(heldItem)) || ((BackpackNames.getBackpackColorName(backpack).equals("Skeleton") && theItem.equals(Items.bow)))) { ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(dWheel, slot, CycleToolPacket.CYCLE_TOOL_ACTION)); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index c3cf93dc..e939ecce 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -41,8 +41,8 @@ public void setContainerStack(ItemStack containerStack) public static final boolean OFF = false; public static final boolean ON = true; - private boolean disableNightVision = OFF; - private boolean cyclingStatus = ON; + private boolean disableNVision = OFF; + private boolean disableCycling = OFF; private ItemStack containerStack; private String colorName = "Standard"; @@ -246,8 +246,8 @@ public void loadFromNBT(NBTTagCompound compound) lastTime = backpackData.getInteger("lastTime"); special = backpackData.getBoolean("special"); extendedProperties = backpackData.getCompoundTag("extendedProperties"); - cyclingStatus = backpackData.getBoolean("cyclingStatus"); - disableNightVision = backpackData.getBoolean("disableNightVision"); + disableCycling = backpackData.getBoolean("disableCycling"); + disableNVision = backpackData.getBoolean("disableNVision"); } } @@ -277,8 +277,8 @@ public void saveToNBT(NBTTagCompound compound) backpackData.setTag("extendedProperties", extendedProperties); backpackData.setTag("rightTank", rightTank.writeToNBT(new NBTTagCompound())); backpackData.setTag("leftTank", leftTank.writeToNBT(new NBTTagCompound())); - backpackData.setBoolean("cyclingStatus", cyclingStatus); - backpackData.setBoolean("disableNightVision", disableNightVision); + backpackData.setBoolean("disableCycling", disableCycling); + backpackData.setBoolean("disableNVision", disableNVision); compound.setTag("backpackData",backpackData); //} @@ -421,24 +421,24 @@ public boolean hasBlock(Block block) return InventoryActions.hasBlockItem(this, block); } - public boolean getCyclingStatus() + public boolean getDisableCycling() { - return cyclingStatus; + return disableCycling; } - public void setCyclingStatus(boolean status) + public void setDisableCycling(boolean b) { - this.cyclingStatus = status; + this.disableCycling = b; } - public boolean getDisableNightVision() + public boolean getDisableNVision() { - return disableNightVision; + return disableNVision; } - public void setDisableNightVision(boolean vision) + public void setDisableNVision(boolean b) { - this.disableNightVision = vision; + this.disableNVision = b; } } \ No newline at end of file From f39e269c2e147b1dbd669338137bc8e8aa36b8a1 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 19 Jan 2017 05:05:23 +0700 Subject: [PATCH 354/462] More formatting --- .../fluids/effects/FuelEffect.java | 4 +- .../fluids/effects/MelonJuiceEffect.java | 56 ++++++++------- .../fluids/effects/MushroomStewEffect.java | 6 +- .../messages/EntityParticlePacket.java | 8 +-- .../network/messages/EntitySoundPacket.java | 2 +- .../playerProperties/BackpackProperty.java | 38 +++++----- .../adventurebackpack/proxy/ClientProxy.java | 69 +++++++++++-------- .../adventurebackpack/proxy/CommonProxy.java | 57 +++++++++------ .../adventurebackpack/proxy/IProxy.java | 8 +-- .../adventurebackpack/proxy/ServerProxy.java | 64 +++++++++-------- .../reference/BackpackNames.java | 9 +-- .../reference/GeneralReference.java | 2 +- .../adventurebackpack/util/BackpackUtils.java | 40 ++++++----- .../adventurebackpack/util/FluidUtils.java | 15 ++-- .../adventurebackpack/util/LogHelper.java | 6 +- .../adventurebackpack/util/Resources.java | 2 +- .../darkona/adventurebackpack/util/Utils.java | 53 ++++++-------- 17 files changed, 228 insertions(+), 211 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/effects/FuelEffect.java b/src/main/java/com/darkona/adventurebackpack/fluids/effects/FuelEffect.java index bef8dab5..75fbdf53 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/effects/FuelEffect.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/effects/FuelEffect.java @@ -1,7 +1,8 @@ package com.darkona.adventurebackpack.fluids.effects; -import adventurebackpack.api.FluidEffect; import com.darkona.adventurebackpack.util.Utils; + +import adventurebackpack.api.FluidEffect; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.potion.Potion; @@ -15,7 +16,6 @@ * @author Darkona */ - public class FuelEffect extends FluidEffect { diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/effects/MelonJuiceEffect.java b/src/main/java/com/darkona/adventurebackpack/fluids/effects/MelonJuiceEffect.java index 344eab23..fb24a646 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/effects/MelonJuiceEffect.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/effects/MelonJuiceEffect.java @@ -1,41 +1,45 @@ package com.darkona.adventurebackpack.fluids.effects; -import adventurebackpack.api.FluidEffect; -import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; import com.darkona.adventurebackpack.init.ModFluids; +import com.darkona.adventurebackpack.util.Utils; + +import adventurebackpack.api.FluidEffect; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.world.World; -import com.darkona.adventurebackpack.util.Utils; /** * Created by Darkona on 12/10/2014. */ -public class MelonJuiceEffect extends FluidEffect { +public class MelonJuiceEffect extends FluidEffect +{ - public MelonJuiceEffect() { - super(ModFluids.melonJuice, 30); - } + public MelonJuiceEffect() + { + super(ModFluids.melonJuice, 30); + } - /** - * This method determines what will happen to the player when drinking the - * corresponding fluid. For example set potion effects, set player on fire, - * heal, fill hunger, etc. You can use the world parameter to make - * conditions based on where the player is. - * - * @param world - * The World. - * @param player - * The Player. - */ - @Override - public void affectDrinker(World world, Entity entity) { - if (entity instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer) entity; - player.addPotionEffect(new PotionEffect(Potion.digSpeed.getId(), timeInTicks, 0)); - player.addPotionEffect(new PotionEffect(Potion.regeneration.id, Utils.secondsToTicks(timeInSeconds), 0)); - } - } + /** + * This method determines what will happen to the player when drinking the + * corresponding fluid. For example set potion effects, set player on fire, + * heal, fill hunger, etc. You can use the world parameter to make + * conditions based on where the player is. + * + * @param world + * The World. + * @param player + * The Player. + */ + @Override + public void affectDrinker(World world, Entity entity) + { + if (entity instanceof EntityPlayer) + { + EntityPlayer player = (EntityPlayer) entity; + player.addPotionEffect(new PotionEffect(Potion.digSpeed.getId(), timeInTicks, 0)); + player.addPotionEffect(new PotionEffect(Potion.regeneration.id, Utils.secondsToTicks(timeInSeconds), 0)); + } + } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/effects/MushroomStewEffect.java b/src/main/java/com/darkona/adventurebackpack/fluids/effects/MushroomStewEffect.java index 037d7ddf..aa4a03d3 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/effects/MushroomStewEffect.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/effects/MushroomStewEffect.java @@ -1,7 +1,6 @@ package com.darkona.adventurebackpack.fluids.effects; import adventurebackpack.api.FluidEffect; -import com.darkona.adventurebackpack.init.ModFluids; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; @@ -19,12 +18,13 @@ public MushroomStewEffect() { super(FluidRegistry.getFluid("mushroomstew")); } + @Override public void affectDrinker(World world, Entity entity) { - if(entity instanceof EntityPlayer) + if (entity instanceof EntityPlayer) { - ((EntityPlayer)entity).getFoodStats().addStats(6,0.6F); + ((EntityPlayer) entity).getFoodStats().addStats(6, 0.6F); } } } diff --git a/src/main/java/com/darkona/adventurebackpack/network/messages/EntityParticlePacket.java b/src/main/java/com/darkona/adventurebackpack/network/messages/EntityParticlePacket.java index 213df08c..72f588f4 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/messages/EntityParticlePacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/messages/EntityParticlePacket.java @@ -2,6 +2,7 @@ import com.darkona.adventurebackpack.client.ClientActions; import com.darkona.adventurebackpack.init.ModNetwork; + import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; @@ -21,8 +22,6 @@ public class EntityParticlePacket implements IMessageHandler fluid : - * getRegisteredFluids().entrySet()) { int ID = - * (fluid.getValue().getBlockID() == BlockID) ? fluid.getValue().getID() - * : -1; if (ID > 0) return ID; } - */ + * getRegisteredFluids().entrySet()) { int ID = + * (fluid.getValue().getBlockID() == BlockID) ? fluid.getValue().getID() + * : -1; if (ID > 0) return ID; } + */ int fluidID = -1; for (Fluid fluid : FluidRegistry.getRegisteredFluids().values()) { @@ -221,19 +220,12 @@ public static int getOppositeCardinalFromMeta(int meta) public static MovingObjectPosition getMovingObjectPositionFromPlayersHat(World world, EntityPlayer player, boolean flag, double reach) { float f = 1.0F; - float playerPitch = player.prevRotationPitch - + (player.rotationPitch - player.prevRotationPitch) * f; - float playerYaw = player.prevRotationYaw - + (player.rotationYaw - player.prevRotationYaw) * f; - double playerPosX = player.prevPosX + (player.posX - player.prevPosX) - * f; - double playerPosY = (player.prevPosY + (player.posY - player.prevPosY) - * f + 1.6200000000000001D) - - player.yOffset; - double playerPosZ = player.prevPosZ + (player.posZ - player.prevPosZ) - * f; - Vec3 vecPlayer = Vec3.createVectorHelper(playerPosX, playerPosY, - playerPosZ); + float playerPitch = player.prevRotationPitch + (player.rotationPitch - player.prevRotationPitch) * f; + float playerYaw = player.prevRotationYaw + (player.rotationYaw - player.prevRotationYaw) * f; + double playerPosX = player.prevPosX + (player.posX - player.prevPosX) * f; + double playerPosY = (player.prevPosY + (player.posY - player.prevPosY) * f + 1.6200000000000001D) - player.yOffset; + double playerPosZ = player.prevPosZ + (player.posZ - player.prevPosZ) * f; + Vec3 vecPlayer = Vec3.createVectorHelper(playerPosX, playerPosY, playerPosZ); float cosYaw = (float) Math.cos(-playerYaw * 0.01745329F - 3.141593F); float sinYaw = (float) Math.sin(-playerYaw * 0.01745329F - 3.141593F); float cosPitch = (float) -Math.cos(-playerPitch * 0.01745329F); @@ -241,10 +233,8 @@ public static MovingObjectPosition getMovingObjectPositionFromPlayersHat(World w float pointX = sinYaw * cosPitch; float pointY = sinPitch; float pointZ = cosYaw * cosPitch; - Vec3 vecPoint = vecPlayer.addVector(pointX * reach, pointY * reach, - pointZ * reach); - return world.func_147447_a/*rayTraceBlocks_do_do*/( - vecPlayer, vecPoint, flag, !flag, flag); + Vec3 vecPoint = vecPlayer.addVector(pointX * reach, pointY * reach, pointZ * reach); + return world.func_147447_a/*rayTraceBlocks_do_do*/(vecPlayer, vecPoint, flag, !flag, flag); } public static String printCoordinates(int x, int y, int z) @@ -252,7 +242,6 @@ public static String printCoordinates(int x, int y, int z) return "X= " + x + ", Y= " + y + ", Z= " + z; } - public static int secondsToTicks(int seconds) { return seconds * 20; @@ -286,13 +275,13 @@ public static boolean isReplaceable(IBlockAccess world, int x, int y, int z) private static ChunkCoordinates checkCoordsForPlayer(IBlockAccess world, int origX, int origZ, int X, int Y, int Z, boolean except) { - LogHelper.info("Checking coordinates in X="+X+", Y="+Y+", Z="+Z); - if (except && world.isSideSolid(X, Y - 1, Z, ForgeDirection.UP,true) && world.isAirBlock(X, Y, Z) && world.isAirBlock(X,Y+1,Z) && !areCoordinatesTheSame2D(origX, origZ, X, Z)) + LogHelper.info("Checking coordinates in X=" + X + ", Y=" + Y + ", Z=" + Z); + if (except && world.isSideSolid(X, Y - 1, Z, ForgeDirection.UP, true) && world.isAirBlock(X, Y, Z) && world.isAirBlock(X, Y + 1, Z) && !areCoordinatesTheSame2D(origX, origZ, X, Z)) { LogHelper.info("Found spot with the exception of the origin point"); return new ChunkCoordinates(X, Y, Z); } - if (!except && world.isSideSolid(X, Y - 1, Z, ForgeDirection.UP,true) && world.isAirBlock(X, Y, Z)&& world.isAirBlock(X,Y+1,Z)) + if (!except && world.isSideSolid(X, Y - 1, Z, ForgeDirection.UP, true) && world.isAirBlock(X, Y, Z) && world.isAirBlock(X, Y + 1, Z)) { LogHelper.info("Found spot without exceptions"); return new ChunkCoordinates(X, Y, Z); @@ -391,8 +380,8 @@ public static ChunkCoordinates getNearestEmptyChunkCoordinatesSpiral(IBlockAcces } } - /* Old code. Still works, though. - for (int i = x - radius; i <= x + radius; i++) + /* Old code. Still works, though. + for (int i = x - radius; i <= x + radius; i++) { for (int j = y - (radius / 2); j <= y + (radius / 2); j++) { @@ -430,7 +419,7 @@ private static boolean areCoordinatesTheSame(int X1, int Y1, int Z1, int X2, int private static boolean areCoordinatesTheSame2D(int X1, int Z1, int X2, int Z2) { - return (X1 == X2 && Z1 == Z2); + return (X1 == X2 && Z1 == Z2); } /** From 817973581220f95fc00ade86793bfbec5d742a23 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 19 Jan 2017 05:12:34 +0700 Subject: [PATCH 355/462] Nerfed Dragon backpack --- .../adventurebackpack/common/BackpackAbilities.java | 8 ++++---- .../adventurebackpack/common/BackpackRemovals.java | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java index 93be941a..d6ed0976 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java @@ -265,18 +265,18 @@ public void itemDragon(EntityPlayer player, World world, ItemStack backpack) { potion = player.getActivePotionEffect(Potion.regeneration); } - if (potion == null || (potion.getDuration() < 222 && potion.getAmplifier() <= 2) || potion.getDuration() < 20) + if (potion == null || potion.getDuration() < 222) { - player.addPotionEffect(new PotionEffect(Potion.regeneration.getId(), 239, 2)); + player.addPotionEffect(new PotionEffect(Potion.regeneration.getId(), 239, 0)); } potion = null; if (player.isPotionActive(Potion.damageBoost.id)) { potion = player.getActivePotionEffect(Potion.damageBoost); } - if (potion == null || (potion.getDuration() < 222 && potion.getAmplifier() <= 2) || potion.getDuration() < 20) + if (potion == null || (potion.getDuration() < 222 && potion.getAmplifier() <= 1) || potion.getDuration() < 20) { - player.addPotionEffect(new PotionEffect(Potion.damageBoost.getId(), 239, 2)); + player.addPotionEffect(new PotionEffect(Potion.damageBoost.getId(), 239, 1)); } } diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java index 7636ea56..d0c3b4b7 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java @@ -85,7 +85,7 @@ public void itemDragon(EntityPlayer player, World world, ItemStack backpack) if (player.isPotionActive(Potion.damageBoost.id)) { potion = player.getActivePotionEffect(Potion.damageBoost); - if (potion != null && potion.getAmplifier() == 2) + if (potion != null && potion.getAmplifier() == 1) { if (player.worldObj.isRemote) { @@ -101,7 +101,7 @@ public void itemDragon(EntityPlayer player, World world, ItemStack backpack) { potion = player.getActivePotionEffect(Potion.regeneration); - if (potion != null && potion.getAmplifier() == 2) + if (potion != null && potion.getAmplifier() == 0) { if (player.worldObj.isRemote) { From 1e0820d65367c063fcb0fe525aa1b790020ddbd5 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 19 Jan 2017 16:16:43 +0700 Subject: [PATCH 356/462] Added configs for tuning wearables --- .../common/BackpackAbilities.java | 81 +++++++++++++------ .../common/BackpackRemovals.java | 7 +- .../common/ServerActions.java | 4 +- .../config/ConfigHandler.java | 29 +++++-- .../item/ItemPistonBoots.java | 11 +-- 5 files changed, 93 insertions(+), 39 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java index d6ed0976..8f00ed39 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java @@ -4,6 +4,7 @@ import java.util.List; import com.darkona.adventurebackpack.block.TileAdventureBackpack; +import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.entity.ai.EntityAIAvoidPlayerWithBackpack; import com.darkona.adventurebackpack.init.ModFluids; import com.darkona.adventurebackpack.init.ModNetwork; @@ -209,15 +210,18 @@ public void itemBat(EntityPlayer player, World world, ItemStack backpack) { //Shameless rip-off from Machinemuse. Thanks Claire, I don't have to reinvent the wheel thanks to you. //I will use a different potion id to avoid conflicting with her modular suits + PotionEffect nightVision = null; + if (player.isPotionActive(Potion.nightVision.id)) { nightVision = player.getActivePotionEffect(Potion.nightVision); } if ((nightVision == null || nightVision.getDuration() < 222) && !Wearing.getBackpackInv(player, true).getDisableNVision()) { - player.addPotionEffect(new PotionEffect(Potion.nightVision.id, 239, -1)); - } else if (nightVision != null && Wearing.getBackpackInv(player, true).getDisableNVision()) + player.addPotionEffect(new PotionEffect(Potion.nightVision.id, 239, -1, true)); + } + else if (nightVision != null && Wearing.getBackpackInv(player, true).getDisableNVision()) { backpackRemovals.itemBat(player, world, backpack); } @@ -227,9 +231,10 @@ public void itemSquid(EntityPlayer player, World world, ItemStack backpack) { if (player.isInWater()) { - player.addPotionEffect(new PotionEffect(Potion.waterBreathing.getId(), 1, -1)); + player.addPotionEffect(new PotionEffect(Potion.waterBreathing.getId(), 19, -1, true)); itemBat(player, world, backpack); - } else + } + else if (player.isPotionActive(Potion.waterBreathing.id) && player.getActivePotionEffect(Potion.waterBreathing).getAmplifier() == -1) { backpackRemovals.itemSquid(player, world, backpack); } @@ -238,13 +243,14 @@ public void itemSquid(EntityPlayer player, World world, ItemStack backpack) public void itemPigman(EntityPlayer player, World world, ItemStack backpack) { PotionEffect potion = null; + if (player.isPotionActive(Potion.fireResistance.id)) { potion = player.getActivePotionEffect(Potion.fireResistance); } if (potion == null || potion.getDuration() < 222) { - player.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 239, -1)); + player.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 239, -1, true)); } } @@ -261,22 +267,42 @@ public void itemDragon(EntityPlayer player, World world, ItemStack backpack) itemPigman(player, world, backpack); PotionEffect potion = null; - if (player.isPotionActive(Potion.regeneration.id)) - { - potion = player.getActivePotionEffect(Potion.regeneration); - } - if (potion == null || potion.getDuration() < 222) - { - player.addPotionEffect(new PotionEffect(Potion.regeneration.getId(), 239, 0)); - } - potion = null; - if (player.isPotionActive(Potion.damageBoost.id)) + + if (ConfigHandler.dragonBackpackRegen != 0) { - potion = player.getActivePotionEffect(Potion.damageBoost); + if (player.isPotionActive(Potion.regeneration.id)) + { + potion = player.getActivePotionEffect(Potion.regeneration); + } + if (player.getHealth() < player.getMaxHealth()) + { + if (potion == null || potion.getDuration() < 20) + { + player.addPotionEffect(new PotionEffect(Potion.regeneration.getId(), 900, ConfigHandler.dragonBackpackRegen - 1, true)); + } + } + else if (potion != null && potion.getAmplifier() == ConfigHandler.dragonBackpackRegen - 1) + { + if (player.worldObj.isRemote) + { + player.removePotionEffectClient(Potion.regeneration.id); + } else + { + player.removePotionEffect(Potion.regeneration.id); + } + } } - if (potion == null || (potion.getDuration() < 222 && potion.getAmplifier() <= 1) || potion.getDuration() < 20) + + if (ConfigHandler.dragonBackpackDamage != 0) { - player.addPotionEffect(new PotionEffect(Potion.damageBoost.getId(), 239, 1)); + if (player.isPotionActive(Potion.damageBoost.id)) + { + potion = player.getActivePotionEffect(Potion.damageBoost); + } + if (potion == null || potion.getDuration() < 222) + { + player.addPotionEffect(new PotionEffect(Potion.damageBoost.getId(), 239, ConfigHandler.dragonBackpackDamage - 1, true)); + } } } @@ -284,11 +310,18 @@ public void itemRainbow(EntityPlayer player, World world, ItemStack backpack) { InventoryBackpack inv = new InventoryBackpack(backpack); int noteTime = inv.getLastTime() - 1; + if (noteTime >= 0 && noteTime < Utils.secondsToTicks(147)) { //player.setSprinting(true); - player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 60, 3)); - player.addPotionEffect(new PotionEffect(Potion.jump.getId(), 60, 1)); + if (ConfigHandler.rainbowBackpackSSpeed != 0) + { + player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 60, ConfigHandler.rainbowBackpackSSpeed - 1, true)); + } + if (ConfigHandler.rainbowBackpackSJump != 0) + { + player.addPotionEffect(new PotionEffect(Potion.jump.getId(), 60, ConfigHandler.rainbowBackpackSJump - 1, true)); + } if (noteTime % 2 == 0) { //Visuals.NyanParticles(player, world); @@ -298,14 +331,16 @@ public void itemRainbow(EntityPlayer player, World world, ItemStack backpack) } } } + PotionEffect moveSpeed = null; + if (player.isPotionActive(Potion.moveSpeed.id)) { moveSpeed = player.getActivePotionEffect(Potion.moveSpeed); } - if (moveSpeed == null || moveSpeed.getDuration() < 222 && moveSpeed.getAmplifier() <= 0) + if (ConfigHandler.rainbowBackpackSpeed != 0 && (moveSpeed == null || moveSpeed.getDuration() < 222)) { - player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 239, 0)); + player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 239, ConfigHandler.rainbowBackpackSpeed - 1, true)); } inv.setLastTime(noteTime); inv.markDirty(); @@ -395,7 +430,7 @@ public void itemSlime(EntityPlayer player, World world, ItemStack backpack) // 4 is New Moon, 5 is Waxing Crescent, 6 is First Quarter and 7 is Waxing Gibbous if (world.getMoonPhase() == 0 && !world.isDaytime()) { - player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 100, 0)); + player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 100, 0, true)); } if (player.onGround) { diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java index d0c3b4b7..43cfb5c7 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java @@ -1,5 +1,6 @@ package com.darkona.adventurebackpack.common; +import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.inventory.InventoryBackpack; import com.darkona.adventurebackpack.util.Wearing; @@ -85,7 +86,7 @@ public void itemDragon(EntityPlayer player, World world, ItemStack backpack) if (player.isPotionActive(Potion.damageBoost.id)) { potion = player.getActivePotionEffect(Potion.damageBoost); - if (potion != null && potion.getAmplifier() == 1) + if (potion != null && potion.getAmplifier() == ConfigHandler.dragonBackpackDamage - 1) { if (player.worldObj.isRemote) { @@ -101,7 +102,7 @@ public void itemDragon(EntityPlayer player, World world, ItemStack backpack) { potion = player.getActivePotionEffect(Potion.regeneration); - if (potion != null && potion.getAmplifier() == 0) + if (potion != null && potion.getAmplifier() == ConfigHandler.dragonBackpackRegen - 1) { if (player.worldObj.isRemote) { @@ -124,7 +125,7 @@ public void itemRainbow(EntityPlayer player, World world, ItemStack backpack) if (player.isPotionActive(Potion.moveSpeed.id)) { potion = player.getActivePotionEffect(Potion.moveSpeed); - if (potion != null && potion.getAmplifier() == 0) + if (potion != null && potion.getAmplifier() == ConfigHandler.rainbowBackpackSpeed - 1) { if (player.worldObj.isRemote) { diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index ccc96fb7..6944e3ee 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -338,13 +338,11 @@ public static int[] canDeploySleepingBag(World world, int coordX, int coordY, in */ public static void pistonBootsJump(EntityPlayer player) { - //TODO add configuration for the playing of the sound effect. - //TODO Maybe configurable jump height too, because why not. if (ConfigHandler.allowSoundPiston) { player.playSound("tile.piston.out", 0.5F, player.getRNG().nextFloat() * 0.25F + 0.6F); } - player.motionY += 0.30; + player.motionY += ConfigHandler.pistonBootsJumpHeight / 10.0F; player.jumpMovementFactor += 0.3; } diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index f5c413e1..f0dacdef 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -80,6 +80,15 @@ public class ConfigHandler public static boolean recipeSaddle = true; public static boolean recipeMachete = true; + public static boolean pistonBootsAutoStep = true; + public static int pistonBootsJumpHeight = 3; + public static int pistonBootsSprintBoost = 1; + public static int dragonBackpackRegen = 1; + public static int dragonBackpackDamage = 2; + public static int rainbowBackpackSpeed = 1; + public static int rainbowBackpackSSpeed = 3; + public static int rainbowBackpackSJump = 1; + public static boolean allowBatGen = true; public static boolean allowBonusGen = false; public static boolean allowGolemGen = true; @@ -133,6 +142,12 @@ private static void loadConfiguration() enableItemFilters = config.getBoolean("Enable Item Filters", "items", true, "Enable filters from Disallow category"); forbiddenDimensions = config.getStringList("Forbidden Dimensions", "items", nameDefault, "Disallow opening backpack inventory for specific dimension ID"); + // Items.Disallowed + nameLocalized = config.getStringList("By Displayed Name", "items.disallowed", nameDefault, "Disallow items by displayed (localized) name. Not case sensitive. Worst option, use only when there is no choice. Example: Dirt"); + nameInternalID = config.getStringList("By Internal ID", "items.disallowed", nameDefault, "Disallow items by internal ID. Case sensitive. Example: minecraft:dirt"); + nameInternalIDs = config.getStringList("By Internal IDs", "items.disallowed", nameDefault, "Disallow items by internal ID. Case sensitive. Will be disallowed all items containing that word in their IDs. Use with caution. Example: minecraft:di"); + nameUnlocalized = config.getStringList("By Internal Name", "items.disallowed", nameDefault, "Disallow items by internal (unlocalized) name. Not case sensitive. Example: tile.dirt"); + // Items.Fuel /*fuelRateBioFuel = config.getFloat("BioFuel", "items.fuel", 1.0f, 0.05f, 20.0f, "BioFuel consumption rate"); fuelRateBioEthanol = config.getFloat("BioEthanol", "items.fuel", 1.5f, 0.05f, 20.0f, "BioEthanol consumption rate"); @@ -153,11 +168,15 @@ private static void loadConfiguration() recipeSaddle = config.getBoolean("Saddle", "items.recipes", true, "Add recipe for saddle?"); recipeMachete = config.getBoolean("Machete", "items.recipes", true, "Enable/Disable Machete recipe"); - // Items.Disallowed - nameLocalized = config.getStringList("By Displayed Name", "items.disallowed", nameDefault, "Disallow items by displayed (localized) name. Not case sensitive. Worst option, use only when there is no choice. Example: Dirt"); - nameInternalID = config.getStringList("By Internal ID", "items.disallowed", nameDefault, "Disallow items by internal ID. Case sensitive. Example: minecraft:dirt"); - nameInternalIDs = config.getStringList("By Internal IDs", "items.disallowed", nameDefault, "Disallow items by internal ID. Case sensitive. Will be disallowed all items containing that word in their IDs. Use with caution. Example: minecraft:di"); - nameUnlocalized = config.getStringList("By Internal Name", "items.disallowed", nameDefault, "Disallow items by internal (unlocalized) name. Not case sensitive. Example: tile.dirt"); + // Items.Settings + pistonBootsAutoStep = config.getBoolean("Piston Boots Auto Step", "items.settings", true, "Allow Piston Boots auto step blocks"); + pistonBootsJumpHeight = config.getInt("Piston Boots Jump Height", "items.settings", 3, 1, 8, "Piston Boots jump height in blocks"); + pistonBootsSprintBoost = config.getInt("Piston Boots Sprint", "items.settings", 1, 0, 4, "Piston Boots sprint boost. 0 - disable"); + dragonBackpackRegen = config.getInt("Dragon Regeneration", "items.settings", 1, 0, 4, "Dragon Backpack regeneration level. 0 - disable"); + dragonBackpackDamage = config.getInt("Dragon Damage Boost", "items.settings", 2, 0, 4, "Dragon Backpack damage boost. 0 - disable"); + rainbowBackpackSpeed = config.getInt("Rainbow Speed", "items.settings", 1, 0, 4, "Rainbow Backpack speed boost. 0 - disable"); + rainbowBackpackSSpeed = config.getInt("Rainbow Special Speed", "items.settings", 3, 0, 4, "Rainbow Backpack special speed. 0 - disable"); + rainbowBackpackSJump = config.getInt("Rainbow Special Jump", "items.settings", 1, 0, 4, "Rainbow Backpack special jump. 0 - disable"); // WorldGen allowBatGen = config.getBoolean("Bat Backpacks", "worldgen", true, "Allow generation of Bat Backpacks in dungeon and mineshaft loot. It cannot be obtained by crafting"); diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java b/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java index 2aad0d1a..ec1b0308 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java @@ -1,5 +1,7 @@ package com.darkona.adventurebackpack.item; +import com.darkona.adventurebackpack.config.ConfigHandler; + import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -23,11 +25,10 @@ public ItemPistonBoots() @Override public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) { - player.stepHeight = 1.001F; - if (player.isSprinting()) - { - player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 1)); - } + if (ConfigHandler.pistonBootsAutoStep) + player.stepHeight = 1.001F; + if (ConfigHandler.pistonBootsSprintBoost !=0 && player.isSprinting()) + player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 1, ConfigHandler.pistonBootsSprintBoost - 1)); } @Override From f864052ea0be735cfd60456d35d66281666dcf44 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Fri, 20 Jan 2017 11:50:02 +0700 Subject: [PATCH 357/462] Deleted double checks --- .../handlers/PlayerEventHandler.java | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 32826132..39e83a26 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -27,7 +27,6 @@ import net.minecraft.entity.monster.EntitySpider; import net.minecraft.entity.passive.EntityHorse; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; import net.minecraft.item.ItemNameTag; import net.minecraft.item.ItemStack; @@ -92,19 +91,13 @@ public void joinPlayer(EntityJoinWorldEvent event) @SubscribeEvent public void playerLogsIn(PlayerEvent.PlayerLoggedInEvent event) { - if (event.player instanceof EntityPlayerMP) - { - BackpackProperty.sync(event.player); - } + BackpackProperty.sync(event.player); } @SubscribeEvent public void playerTravelsAcrossDimensions(PlayerEvent.PlayerChangedDimensionEvent event) { - if (event.player instanceof EntityPlayerMP) - { - BackpackProperty.sync(event.player); - } + BackpackProperty.sync(event.player); } /** @@ -126,7 +119,7 @@ public void onPlayerJump(LivingEvent.LivingJumpEvent event) } } - boolean pistonBootsStepHeight = false; + private boolean pistonBootsStepHeight = false; @SubscribeEvent public void pistonBootsUnequipped(LivingEvent.LivingUpdateEvent event) @@ -253,11 +246,11 @@ public void playerDies(LivingDeathEvent event) event.setResult(Event.Result.ALLOW); } - /*@SubscribeEvent + @SubscribeEvent public void playerRespawn(PlayerEvent.PlayerRespawnEvent event) { BackpackProperty.sync(event.player); - }*/ + } @SubscribeEvent public void playerCraftsBackpack(PlayerEvent.ItemCraftedEvent event) From 51deb9c7aec9170808f4601814361fd173c37661 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Fri, 20 Jan 2017 12:46:20 +0700 Subject: [PATCH 358/462] Fixed motorized boat render Added recipes for boats --- .../client/models/ModelInflatableBoat.java | 20 +- .../config/ConfigHandler.java | 4 + .../entity/EntityInflatableBoat.java | 41 ++-- .../adventurebackpack/init/ModRecipes.java | 214 ++++++++---------- 4 files changed, 136 insertions(+), 143 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelInflatableBoat.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelInflatableBoat.java index bb91d0f8..8ede103b 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelInflatableBoat.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelInflatableBoat.java @@ -1,11 +1,13 @@ package com.darkona.adventurebackpack.client.models; +import org.lwjgl.opengl.GL11; + import com.darkona.adventurebackpack.entity.EntityInflatableBoat; import com.darkona.adventurebackpack.util.Utils; + import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; -import org.lwjgl.opengl.GL11; /** * InflatableBoat - Darkona @@ -124,20 +126,20 @@ public ModelInflatableBoat() @Override public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - if(Utils.notNullAndInstanceOf(entity,EntityInflatableBoat.class)) + if (Utils.notNullAndInstanceOf(entity, EntityInflatableBoat.class)) { - EntityInflatableBoat theBoat = (EntityInflatableBoat)entity; - - if(theBoat.isMotorized() && theBoat.isInflated()) + EntityInflatableBoat theBoat = (EntityInflatableBoat) entity; + + if (theBoat.isMotorized() && theBoat.isInflated()) { Axis.isHidden = EngineBody.isHidden = false; - }else + } else { Axis.isHidden = EngineBody.isHidden = true; } GL11.glPushMatrix(); - GL11.glScalef(theBoat.inflation,theBoat.inflation,theBoat.inflation); + GL11.glScalef(theBoat.inflation, theBoat.inflation, theBoat.inflation); this.boatSides5.render(f5); this.boatSides3.render(f5); @@ -147,9 +149,9 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f this.Axis.render(f5); this.EngineBody.render(f5); - GL11.glPopMatrix(); - }else{ + } else + { this.boatSides5.render(f5); this.boatSides3.render(f5); this.boatSides2.render(f5); diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index f0dacdef..6275975a 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -73,6 +73,8 @@ public class ConfigHandler public static boolean consumeDragonEgg = false; public static boolean recipeAdventuresSet = true; + public static boolean recipeInflatableBoat = true; + public static boolean recipeInflatableBoatM = false; public static boolean recipeClockCrossbow = true; public static boolean recipeCoalJetpack = true; public static boolean recipeCopterPack = true; @@ -161,6 +163,8 @@ private static void loadConfiguration() // Items.Recipes consumeDragonEgg = config.getBoolean("Consume Dragon Egg", "items.recipes", false, "Consume Dragon Egg when Dragon backpack crafted?"); recipeAdventuresSet = config.getBoolean("Adventures Set", "items.recipes", true, "Enable/Disable recipe for Adventure's Hat, Suit and Pants"); + recipeInflatableBoat = config.getBoolean("Inflatable Boat", "items.recipes", true, "Enable/Disable recipe for Inflatable Boat"); + recipeInflatableBoatM = config.getBoolean("Inflatable Boat Motorized", "items.recipes", false, "Enable/Disable recipe for Inflatable Boat (motorized). For aesthetic only, not fully implemented (yet?)"); recipeClockCrossbow = config.getBoolean("Clockwork Crossbow", "items.recipes", true, "Enable/Disable Clockwork Crossbow recipe"); recipeCopterPack = config.getBoolean("Copter Pack", "items.recipes", true, "Enable/Disable CopterPack recipe"); recipeCoalJetpack = config.getBoolean("Coal Jetpack", "items.recipes", true, "Enable/Disable CoalJetpack recipe"); diff --git a/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java b/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java index 85648fc7..36e54090 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java @@ -1,7 +1,10 @@ package com.darkona.adventurebackpack.entity; +import java.util.List; + import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.inventory.IInventoryTanks; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -21,8 +24,6 @@ import net.minecraft.world.World; import net.minecraftforge.fluids.FluidTank; -import java.util.List; - /** * Created on 05/01/2015 * @@ -31,7 +32,7 @@ public class EntityInflatableBoat extends EntityBoat implements IInventoryTanks { @SuppressWarnings("unused") - private FluidTank fuelTank; + private FluidTank fuelTank; private boolean isBoatEmpty; private double speedMultiplier; private int boatPosRotationIncrements; @@ -49,13 +50,13 @@ public class EntityInflatableBoat extends EntityBoat implements IInventoryTanks private boolean inflated = false; public float inflation = 0.25f; + private static boolean motorized; + public boolean isMotorized() { return motorized; } - private boolean motorized; - public EntityInflatableBoat(World world) { super(world); @@ -79,7 +80,7 @@ public boolean isInflated() @Override public void onUpdate() { - if(!inflated) + if (!inflated) { inflation += 0.025; if (inflation >= 1.0f) @@ -87,7 +88,8 @@ public void onUpdate() inflation = 1; inflated = true; } - }else{ + } else + { inflation = 1; } @@ -269,7 +271,7 @@ public void onUpdate() this.moveEntity(this.motionX, this.motionY, this.motionZ); - /* if (this.isCollidedHorizontally && d10 > 0.2D) + /* if (this.isCollidedHorizontally && d10 > 0.2D) { if (!this.worldObj.isRemote && !this.isDead) { @@ -321,7 +323,7 @@ public void onUpdate() if (!this.worldObj.isRemote) { @SuppressWarnings("rawtypes") - List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.expand(0.20000000298023224D, 0.0D, 0.20000000298023224D)); + List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.expand(0.20000000298023224D, 0.0D, 0.20000000298023224D)); if (list != null && !list.isEmpty()) { @@ -367,7 +369,7 @@ public boolean attackEntityFrom(DamageSource damageSource, float damage) if (!flag) { - this.entityDropItem(new ItemStack(ModItems.component, 1, motorized ? 8:7), 0.0f); + this.entityDropItem(new ItemStack(ModItems.component, 1, motorized ? 8 : 7), 0.0f); } this.setDead(); @@ -389,12 +391,11 @@ public EntityItem func_145778_a(Item item, int quantity, float someFloat) @Override public boolean interactFirst(EntityPlayer p_130002_1_) { - if(inflation < 1.0f) return false; + if (inflation < 1.0f) return false; if (this.riddenByEntity != null && this.riddenByEntity instanceof EntityPlayer && this.riddenByEntity != p_130002_1_) { return true; - } - else + } else { if (!this.worldObj.isRemote) { @@ -430,19 +431,21 @@ public void readFromNBT(NBTTagCompound compound) } @Override - protected void writeEntityToNBT(NBTTagCompound compound) { - compound.setFloat("Inflation",inflation); - compound.setBoolean("Motorized",motorized); - compound.setBoolean("Inflated",inflated); + protected void writeEntityToNBT(NBTTagCompound compound) + { + compound.setFloat("Inflation", inflation); + compound.setBoolean("Motorized", motorized); + compound.setBoolean("Inflated", inflated); } @Override - protected void readEntityFromNBT(NBTTagCompound compound) { + protected void readEntityFromNBT(NBTTagCompound compound) + { if (compound.hasKey("Inflation")) { inflation = compound.getFloat("Inflation"); } - if(compound.hasKey("Motorized")) + if (compound.hasKey("Motorized")) { motorized = compound.getBoolean("Motorized"); } diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java index 4fa8cd5c..aad87f92 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java @@ -20,55 +20,52 @@ */ public class ModRecipes { - private static ItemStack bc(int damage) + private static ItemStack bc(int damage) { return BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), damage); } public static void init() { - if(ConfigHandler.recipeSaddle) + if (ConfigHandler.recipeSaddle) { GameRegistry.addRecipe(new ItemStack(Items.saddle), "LLL", "L L", "I I", 'L', Items.leather, - 'I', Items.iron_ingot - ); + 'I', Items.iron_ingot); } //Copter Pack - if(ConfigHandler.recipeCopterPack) + if (ConfigHandler.recipeCopterPack) { GameRegistry.addRecipe(new ItemStack(ModItems.copterPack), - "WBW", - "TEI", - "CDI", - 'W', Blocks.planks, - 'B', new ItemStack(ModItems.component, 1, 6), - 'T', new ItemStack(ModItems.component, 1, 2), - 'E', new ItemStack(ModItems.component, 1, 5), - 'C', new ItemStack(Items.dye, 1, 2), - 'D', Items.diamond, - 'I', Items.iron_ingot - ); + "WBW", + "TEI", + "CDI", + 'W', Blocks.planks, + 'B', new ItemStack(ModItems.component, 1, 6), + 'T', new ItemStack(ModItems.component, 1, 2), + 'E', new ItemStack(ModItems.component, 1, 5), + 'C', new ItemStack(Items.dye, 1, 2), + 'D', Items.diamond, + 'I', Items.iron_ingot); } //CoalJetpack - if(ConfigHandler.recipeCoalJetpack) + if (ConfigHandler.recipeCoalJetpack) { - GameRegistry.addRecipe(new ItemStack(ModItems.CoalJetpack), - "SWT", - "GIG", - "FWS", - 'W', Blocks.planks, - 'G', Items.gold_ingot, - 'I', Items.iron_ingot, - 'S', Blocks.stone, - 'F', Blocks.furnace, - 'T', new ItemStack(ModItems.component, 1, 2) - ); + GameRegistry.addRecipe(new ItemStack(ModItems.CoalJetpack), + "SWT", + "GIG", + "FWS", + 'W', Blocks.planks, + 'G', Items.gold_ingot, + 'I', Items.iron_ingot, + 'S', Blocks.stone, + 'F', Blocks.furnace, + 'T', new ItemStack(ModItems.component, 1, 2)); } //change to make it not support BuildCraft there are people out there who dont like that mod @@ -79,25 +76,14 @@ public static void init() "ccc", 'S', "stickWood", 'x', Items.coal, - 'c', "cobblestone" - )); - - //Inflatable Boat - GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 7), - " ", - "w w", - "sws", - 'w', Blocks.wool, - 's', Blocks.sand - ); + 'c', "cobblestone")); //Sleeping Bag GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 1), " X", "CCC", 'X', Blocks.wool, - 'C', Blocks.carpet - ); + 'C', Blocks.carpet); //Backpack Tank GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 2), @@ -105,18 +91,30 @@ public static void init() "GGG", "GIG", 'G', Blocks.glass, - 'I', Items.iron_ingot - ); + 'I', Items.iron_ingot); + + //Inflatable Boat + if (ConfigHandler.recipeInflatableBoat) + { + GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 7), + " ", + "w w", + "sws", + 'w', Blocks.wool, + 's', Blocks.sand); + } //Inflatable Boat (Motorized) - GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 8), - " B ", - " E ", - " H ", - 'B', new ItemStack(ModItems.component, 1, 7), - 'H', new ItemStack(ModItems.component, 1, 9), - 'E', new ItemStack(ModItems.component, 1, 5) - ); + if (ConfigHandler.recipeInflatableBoatM && ConfigHandler.recipeInflatableBoat) + { + GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 8), + " B ", + " E ", + " H ", + 'B', new ItemStack(ModItems.component, 1, 7), + 'H', new ItemStack(ModItems.component, 1, 9), + 'E', new ItemStack(ModItems.component, 1, 5)); + } //Hose Nozzle GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 3), @@ -125,105 +123,94 @@ public static void init() " ", 'G', Items.gold_ingot, 'I', Items.iron_ingot, - 'L', Blocks.lever - ); + 'L', Blocks.lever); if (ConfigHandler.recipeMachete) { //Machete Handle GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 4), - "YIY", - "BSB", - "RbR", - 'Y', new ItemStack(Items.dye, 1, 11), - 'B', new ItemStack(Items.dye, 1, 4), - 'R', new ItemStack(Items.dye, 1, 1), - 'b', new ItemStack(Items.dye, 1, 0), - 'I', Items.iron_ingot, - 'S', Items.stick - ); + "YIY", + "BSB", + "RbR", + 'Y', new ItemStack(Items.dye, 1, 11), + 'B', new ItemStack(Items.dye, 1, 4), + 'R', new ItemStack(Items.dye, 1, 1), + 'b', new ItemStack(Items.dye, 1, 0), + 'I', Items.iron_ingot, + 'S', Items.stick); //Machete GameRegistry.addRecipe(new ItemStack(ModItems.machete), - " I ", - " I ", - " H ", - 'I', Items.iron_ingot, - 'H', new ItemStack(ModItems.component, 1, 4) - ); + " I ", + " I ", + " H ", + 'I', Items.iron_ingot, + 'H', new ItemStack(ModItems.component, 1, 4)); } //Clockwork Crossbow if (ConfigHandler.recipeClockCrossbow) { GameRegistry.addRecipe(new ItemStack(ModItems.cwxbow), - " ", - "BA ", - "SW ", - 'B', Items.bow, - 'A', Items.arrow, - 'S', Items.stick, - 'W', Blocks.planks - ); + " ", + "BA ", + "SW ", + 'B', Items.bow, + 'A', Items.arrow, + 'S', Items.stick, + 'W', Blocks.planks); } if (ConfigHandler.recipeAdventuresSet) { //Adventure Hat GameRegistry.addRecipe(new ItemStack(ModItems.adventureHat), - " ", - "nC ", - "LLL", - 'n', Items.gold_nugget, - 'C', Items.leather_helmet, - 'L', Items.leather - ); + " ", + "nC ", + "LLL", + 'n', Items.gold_nugget, + 'C', Items.leather_helmet, + 'L', Items.leather); //Adventure Suit GameRegistry.addRecipe(new ItemStack(ModItems.adventureSuit), - "LWL", - "LVL", - " ", - 'V', Items.leather_chestplate, - 'W', Blocks.wool, - 'L', Items.leather - ); + "LWL", + "LVL", + " ", + 'V', Items.leather_chestplate, + 'W', Blocks.wool, + 'L', Items.leather); //Adventure Pants GameRegistry.addRecipe(new ItemStack(ModItems.adventurePants), - "LVL", - "LWL", - " ", - 'V', Items.leather_leggings, - 'W', Blocks.wool, - 'L', Items.leather - ); + "LVL", + "LWL", + " ", + 'V', Items.leather_leggings, + 'W', Blocks.wool, + 'L', Items.leather); } //Piston Boots if (ConfigHandler.recipePitonBoots) { GameRegistry.addRecipe(new ItemStack(ModItems.pistonBoots), - " B ", - "PSP", - 'B', Items.leather_boots, - 'P', Blocks.piston, - 'S', Items.slime_ball - ); + " B ", + "PSP", + 'B', Items.leather_boots, + 'P', Blocks.piston, + 'S', Items.slime_ball); } //Melon Juice Bottle - GameRegistry.addShapelessRecipe(new ItemStack(ModItems.melonJuiceBottle), - Items.melon, Items.potionitem - ); + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.melonJuiceBottle), Items.melon, Items.potionitem); //Hose GameRegistry.addRecipe(new ItemStack(ModItems.hose), "NGG", " G", 'N', new ItemStack(ModItems.component, 1, 3), - 'G', new ItemStack(Items.dye, 1, 2) - ); + 'G', new ItemStack(Items.dye, 1, 2)); BackpackRecipesList br = new BackpackRecipesList(); int counter = 0; @@ -285,8 +272,7 @@ public static void conditionalInit() 'P', Blocks.piston, 'F', Blocks.furnace, 'C', Items.cauldron, - 'O', Blocks.obsidian - ); + 'O', Blocks.obsidian); //Copter Blades GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 6), @@ -294,8 +280,7 @@ public static void conditionalInit() " F ", " F ", 'I', Items.iron_ingot, - 'F', Blocks.fence - ); + 'F', Blocks.fence); //Hydro Blades GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 9), @@ -303,8 +288,7 @@ public static void conditionalInit() " F ", "III", 'I', Items.iron_ingot, - 'F', Blocks.fence - ); + 'F', Blocks.fence); } } } \ No newline at end of file From 6d5ed1f21c62b08c85c5bbb61c6f0abaec93631d Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sat, 21 Jan 2017 01:07:08 +0700 Subject: [PATCH 359/462] Boat. Again. --- .../entity/EntityInflatableBoat.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java b/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java index 36e54090..c8be9dbb 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java @@ -5,8 +5,10 @@ import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.inventory.IInventoryTanks; +import cpw.mods.fml.common.registry.IEntityAdditionalSpawnData; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.Entity; @@ -29,7 +31,7 @@ * * @author Darkona */ -public class EntityInflatableBoat extends EntityBoat implements IInventoryTanks +public class EntityInflatableBoat extends EntityBoat implements IInventoryTanks, IEntityAdditionalSpawnData { @SuppressWarnings("unused") private FluidTank fuelTank; @@ -50,7 +52,7 @@ public class EntityInflatableBoat extends EntityBoat implements IInventoryTanks private boolean inflated = false; public float inflation = 0.25f; - private static boolean motorized; + private boolean motorized; public boolean isMotorized() { @@ -636,4 +638,16 @@ public boolean isItemValidForSlot(int p_94041_1_, ItemStack p_94041_2_) { return false; } + + @Override + public void writeSpawnData(ByteBuf data) + { + data.writeBoolean(this.motorized); + } + + @Override + public void readSpawnData(ByteBuf data) + { + this.motorized = data.readBoolean(); + } } From b1933a1ad585666c10db98e9bdb34fa5d0b2e802 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sat, 21 Jan 2017 18:17:30 +0700 Subject: [PATCH 360/462] To be sure --- .../handlers/PlayerEventHandler.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 39e83a26..3fd5ed7f 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -27,6 +27,7 @@ import net.minecraft.entity.monster.EntitySpider; import net.minecraft.entity.passive.EntityHorse; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; import net.minecraft.item.ItemNameTag; import net.minecraft.item.ItemStack; @@ -91,13 +92,19 @@ public void joinPlayer(EntityJoinWorldEvent event) @SubscribeEvent public void playerLogsIn(PlayerEvent.PlayerLoggedInEvent event) { - BackpackProperty.sync(event.player); + if (event.player instanceof EntityPlayerMP) + { + BackpackProperty.sync(event.player); + } } @SubscribeEvent public void playerTravelsAcrossDimensions(PlayerEvent.PlayerChangedDimensionEvent event) { - BackpackProperty.sync(event.player); + if (event.player instanceof EntityPlayerMP) + { + BackpackProperty.sync(event.player); + } } /** @@ -249,7 +256,10 @@ public void playerDies(LivingDeathEvent event) @SubscribeEvent public void playerRespawn(PlayerEvent.PlayerRespawnEvent event) { - BackpackProperty.sync(event.player); + if (event.player instanceof EntityPlayerMP) + { + BackpackProperty.sync(event.player); + } } @SubscribeEvent From 915ec6d72073f2b5c72b14cf5d5f9c63e5badbba Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 31 Jan 2017 03:14:53 +0700 Subject: [PATCH 361/462] SoulBound compat --- .../block/TileAdventureBackpack.java | 4 +++ .../handlers/PlayerEventHandler.java | 10 ++++--- .../adventurebackpack/init/ModRecipes.java | 18 ++++++------ .../item/ItemAdventureBackpack.java | 3 ++ .../item/ItemCoalJetpack.java | 4 +-- .../item/ItemCopterPack.java | 4 +-- .../darkona/adventurebackpack/util/Utils.java | 29 +++++++++++++++++++ 7 files changed, 55 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 99f5de43..6877d10d 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -48,6 +48,7 @@ public class TileAdventureBackpack extends TileEntity implements IInventoryAdven private int lastTime; private int luminosity; private NBTTagCompound extendedProperties; + private NBTTagList ench; private boolean disableCycling; private boolean disableNVision; @@ -263,6 +264,8 @@ public void writeToNBT(NBTTagCompound compound) @Override public void loadFromNBT(NBTTagCompound compound) { + if (compound.hasKey("ench")) + ench = compound.getTagList("ench", net.minecraftforge.common.util.Constants.NBT.TAG_COMPOUND); if (compound.hasKey("backpackData")) { NBTTagCompound backpackData = compound.getCompoundTag("backpackData"); @@ -290,6 +293,7 @@ public void loadFromNBT(NBTTagCompound compound) @Override public void saveToNBT(NBTTagCompound compound) { + if (ench != null) compound.setTag("ench", ench); NBTTagCompound backpackData = new NBTTagCompound(); NBTTagList items = new NBTTagList(); for (int i = 0; i < inventory.length; i++) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 3fd5ed7f..b4817661 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -221,17 +221,20 @@ public void playerDeathDrop(PlayerDropsEvent event) } else { ItemStack pack = Wearing.getWearingBackpack(player); - event.drops.add(new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, pack)); + if (Utils.isSoulBounded(pack)) ServerProxy.storePlayerProps(player); + else event.drops.add(new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, pack)); //TODO get rid of campfire } } else if (Wearing.isWearingCopter(player)) { ItemStack pack = Wearing.getWearingCopter(player); - event.drops.add(new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, pack)); + if (Utils.isSoulBounded(pack)) ServerProxy.storePlayerProps(player); + else event.drops.add(new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, pack)); } else if (Wearing.isWearingJetpack(player)) { ItemStack pack = Wearing.getWearingJetpack(player); - event.drops.add(new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, pack)); + if (Utils.isSoulBounded(pack)) ServerProxy.storePlayerProps(player); + else event.drops.add(new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, pack)); } } } @@ -246,7 +249,6 @@ public void playerDies(LivingDeathEvent event) && player.getEntityWorld().getGameRules().getGameRuleBooleanValue("keepInventory")) { //LogHelper.info("Player died"); - BackpackProperty props = BackpackProperty.get(player); ServerProxy.storePlayerProps(player); } } diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java index aad87f92..f2250646 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java @@ -129,15 +129,15 @@ public static void init() { //Machete Handle GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 4), - "YIY", - "BSB", - "RbR", - 'Y', new ItemStack(Items.dye, 1, 11), - 'B', new ItemStack(Items.dye, 1, 4), - 'R', new ItemStack(Items.dye, 1, 1), - 'b', new ItemStack(Items.dye, 1, 0), - 'I', Items.iron_ingot, - 'S', Items.stick); + "YIY", + "BSB", + "RbR", + 'Y', new ItemStack(Items.dye, 1, 11), + 'B', new ItemStack(Items.dye, 1, 4), + 'R', new ItemStack(Items.dye, 1, 1), + 'b', new ItemStack(Items.dye, 1, 0), + 'I', Items.iron_ingot, + 'S', Items.stick); //Machete GameRegistry.addRecipe(new ItemStack(ModItems.machete), diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 2a5fab2c..74824199 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -300,6 +300,9 @@ public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) player.worldObj.createExplosion(player, player.posX, player.posY, player.posZ, 4.0F, false); } + if (Utils.isSoulBounded(stack)) + return; + if (ConfigHandler.backpackDeathPlace) { if (!tryPlace(world, player, stack)) diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index 2ebc9a50..63e0141d 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -9,6 +9,7 @@ import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.proxy.ClientProxy; import com.darkona.adventurebackpack.util.Resources; +import com.darkona.adventurebackpack.util.Utils; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -253,8 +254,7 @@ public static void elevate(EntityPlayer player) public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) { onUnequipped(world, player, stack); - //player.dropPlayerItemWithRandomChoice(stack.copy(), false); - BackpackProperty.get(player).setWearable(null); + if (!Utils.isSoulBounded(stack)) BackpackProperty.get(player).setWearable(null); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java index f9832a51..a79357ad 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java @@ -11,6 +11,7 @@ import com.darkona.adventurebackpack.proxy.ClientProxy; import com.darkona.adventurebackpack.reference.GeneralReference; import com.darkona.adventurebackpack.util.Resources; +import com.darkona.adventurebackpack.util.Utils; import com.darkona.adventurebackpack.util.Wearing; import cpw.mods.fml.relauncher.Side; @@ -264,8 +265,7 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) { onUnequipped(world, player, stack); - //player.dropPlayerItemWithRandomChoice(stack.copy(), false); - BackpackProperty.get(player).setWearable(null); + if (!Utils.isSoulBounded(stack)) BackpackProperty.get(player).setWearable(null); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index 709cbf37..5f46a2c3 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -5,8 +5,10 @@ import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; import net.minecraft.block.Block; +import net.minecraft.enchantment.Enchantment; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagList; import net.minecraft.util.ChunkCoordinates; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; @@ -443,4 +445,31 @@ public static String getFirstWord(String text) return text; // Text is the first word itself. } } + + private static int soulBoundID() + { + int soulBoundID = -1; + for (Enchantment ench : Enchantment.enchantmentsList) + { + if (ench != null && ench.getName().equals("enchantment.enderio.soulBound")) + soulBoundID = ench.effectId; + } + return soulBoundID; + } + + public static boolean isSoulBounded(ItemStack stack) + { + boolean soulBounded = false; + int soulBoundID = soulBoundID(); + NBTTagList stackEnch = stack.getEnchantmentTagList(); + if (stackEnch != null && soulBoundID >= 0) + { + for (int i = 0; i < stackEnch.tagCount(); ++i) + { + int id = stackEnch.getCompoundTagAt(i).getInteger("id"); + if (id == soulBoundID) soulBounded = true; + } + } + return soulBounded; + } } From 8bbc8cdc86a123923be2ed85ffea5cff1a101418 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 31 Jan 2017 15:25:18 +0700 Subject: [PATCH 362/462] Only SoulBoud book is allowed for enchant wearable packs on anvil --- .../item/ItemAdventureBackpack.java | 6 ++++ .../item/ItemCoalJetpack.java | 12 +++++++ .../item/ItemCopterPack.java | 12 +++++++ .../darkona/adventurebackpack/util/Utils.java | 31 +++++++++++++++---- 4 files changed, 55 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 74824199..ef1a6833 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -69,6 +69,12 @@ public int getItemEnchantability() return 0; } + @Override + public boolean isBookEnchantable(ItemStack stack, ItemStack book) + { + return (Utils.isSoulBook(book)); + } + /** * Return whether this item is repairable in an anvil. * diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index 63e0141d..e879a91d 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -44,6 +44,18 @@ public ItemCoalJetpack() setMaxStackSize(1); } + @Override + public int getItemEnchantability() + { + return 0; + } + + @Override + public boolean isBookEnchantable(ItemStack stack, ItemStack book) + { + return (Utils.isSoulBook(book)); + } + @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java index a79357ad..0c022304 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java @@ -49,6 +49,18 @@ public ItemCopterPack() public static byte NORMAL_MODE = 1; public static byte HOVER_MODE = 2; + @Override + public int getItemEnchantability() + { + return 0; + } + + @Override + public boolean isBookEnchantable(ItemStack stack, ItemStack book) + { + return (Utils.isSoulBook(book)); + } + @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index 5f46a2c3..32532070 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -8,6 +8,7 @@ import net.minecraft.enchantment.Enchantment; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.util.ChunkCoordinates; import net.minecraft.util.MovingObjectPosition; @@ -448,18 +449,16 @@ public static String getFirstWord(String text) private static int soulBoundID() { - int soulBoundID = -1; for (Enchantment ench : Enchantment.enchantmentsList) { if (ench != null && ench.getName().equals("enchantment.enderio.soulBound")) - soulBoundID = ench.effectId; + return ench.effectId; } - return soulBoundID; + return -1; } public static boolean isSoulBounded(ItemStack stack) { - boolean soulBounded = false; int soulBoundID = soulBoundID(); NBTTagList stackEnch = stack.getEnchantmentTagList(); if (stackEnch != null && soulBoundID >= 0) @@ -467,9 +466,29 @@ public static boolean isSoulBounded(ItemStack stack) for (int i = 0; i < stackEnch.tagCount(); ++i) { int id = stackEnch.getCompoundTagAt(i).getInteger("id"); - if (id == soulBoundID) soulBounded = true; + if (id == soulBoundID) return true; } } - return soulBounded; + return false; } + + public static boolean isSoulBook(ItemStack book) + { + int soulBoundID = soulBoundID(); + if (soulBoundID >= 0 && book.hasTagCompound()) + { + NBTTagCompound bookData = book.stackTagCompound; + if (bookData.hasKey("StoredEnchantments")) + { + NBTTagList bookEnch = bookData.getTagList("StoredEnchantments", net.minecraftforge.common.util.Constants.NBT.TAG_COMPOUND); + if (!bookEnch.getCompoundTagAt(1).getBoolean("id")) + { + int id = bookEnch.getCompoundTagAt(0).getInteger("id"); + if (id == soulBoundID) return true; + } + } + } + return false; + } + } From dd651244dc3c64a660dd8e3d344c5522546af3ad Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 16 Feb 2017 07:13:11 +0700 Subject: [PATCH 363/462] Config for SoulBound --- .../adventurebackpack/AdventureBackpack.java | 17 ++++--- .../config/ConfigHandler.java | 13 ++--- .../darkona/adventurebackpack/util/Utils.java | 49 ++++++++++++++----- 3 files changed, 54 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java index c9093e9c..4baad48e 100644 --- a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java @@ -109,22 +109,27 @@ public void init(FMLInitializationEvent event) public void postInit(FMLPostInitializationEvent event) { - ConfigHandler.IS_TINKERS = Loader.isModLoaded("TConstruct"); - ConfigHandler.IS_THAUM = Loader.isModLoaded("Thaumcraft"); - ConfigHandler.IS_TWILIGHT = Loader.isModLoaded("TwilightForest"); - ConfigHandler.IS_ENVIROMINE = Loader.isModLoaded("EnviroMine"); ConfigHandler.IS_BUILDCRAFT = Loader.isModLoaded("BuildCraft|Core"); + ConfigHandler.IS_ENDERIO = Loader.isModLoaded("EnderIO"); + //ConfigHandler.IS_TINKERS = Loader.isModLoaded("TConstruct"); + //ConfigHandler.IS_THAUM = Loader.isModLoaded("Thaumcraft"); + //ConfigHandler.IS_TWILIGHT = Loader.isModLoaded("TwilightForest"); if (ConfigHandler.IS_BUILDCRAFT) { LogHelper.info("Buildcraft is present. Acting accordingly"); } - if (ConfigHandler.IS_TWILIGHT) + if (ConfigHandler.IS_ENDERIO) { - LogHelper.info("Twilight Forest is present. Acting accordingly"); + LogHelper.info("EnderIO is present. Acting accordingly"); } + /*if (ConfigHandler.IS_TWILIGHT) + { + LogHelper.info("Twilight Forest is present. Acting accordingly"); + }*/ + ModRecipes.conditionalInit(); /* diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 6275975a..65bdc8e1 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -20,13 +20,13 @@ public class ConfigHandler public static Configuration config; public static boolean IS_BUILDCRAFT = false; - public static boolean IS_BAUBLES = false; - public static boolean IS_TINKERS = false; - public static boolean IS_THAUM = false; - public static boolean IS_TWILIGHT = false; - public static boolean IS_ENVIROMINE = false; - public static boolean IS_RAILCRAFT = false; + public static boolean IS_ENDERIO = false; + //public static boolean IS_RAILCRAFT = false; + //public static boolean IS_THAUM = false; + //public static boolean IS_TINKERS = false; + //public static boolean IS_TWILIGHT = false; + public static boolean allowSoulBound = true; public static boolean backpackDeathPlace = true; public static boolean backpackAbilities = true; public static boolean enableToolsCycling = true; @@ -109,6 +109,7 @@ public static void init(File configFile) private static void loadConfiguration() { // Gameplay + allowSoulBound = config.getBoolean("Allow SoulBound", "gameplay", true, "Allow SoulBound enchant on wearable packs"); backpackAbilities = config.getBoolean("Backpack Abilities", "gameplay", true, "Allow the backpacks to execute their special abilities, or be only cosmetic (Doesn't affect lightning transformation) Must be " + "disabled in both Client and Server to work properly"); backpackDeathPlace = config.getBoolean("Backpack Death Place", "gameplay", true,"Place backpacks as a block when you die?"); diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index 32532070..3eef0db5 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -2,6 +2,8 @@ import java.util.Calendar; +import com.darkona.adventurebackpack.config.ConfigHandler; + import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; import net.minecraft.block.Block; @@ -447,26 +449,47 @@ public static String getFirstWord(String text) } } - private static int soulBoundID() + // -6 - not initialized + // -3 - disabled by config + // -2 - EnderIO not found + // -1 - enchantment not found + private static int soulBoundID = -6; + + public static int getSoulBoundID() + { + if (soulBoundID == -6) setSoulBoundID(); // initialize + return soulBoundID; + } + + private static void setSoulBoundID() { - for (Enchantment ench : Enchantment.enchantmentsList) + if (ConfigHandler.allowSoulBound) { - if (ench != null && ench.getName().equals("enchantment.enderio.soulBound")) - return ench.effectId; - } - return -1; + if (ConfigHandler.IS_ENDERIO) + { + for (Enchantment ench : Enchantment.enchantmentsList) + { + if (ench != null && ench.getName().equals("enchantment.enderio.soulBound")) + { + soulBoundID = ench.effectId; + return; + } + } + soulBoundID = -1; + } else soulBoundID = -2; + } else soulBoundID = -3; } public static boolean isSoulBounded(ItemStack stack) { - int soulBoundID = soulBoundID(); + int soulBound = getSoulBoundID(); NBTTagList stackEnch = stack.getEnchantmentTagList(); - if (stackEnch != null && soulBoundID >= 0) + if (soulBound >= 0 && stackEnch != null) { - for (int i = 0; i < stackEnch.tagCount(); ++i) + for (int i = 0; i < stackEnch.tagCount(); i++) { int id = stackEnch.getCompoundTagAt(i).getInteger("id"); - if (id == soulBoundID) return true; + if (id == soulBound) return true; } } return false; @@ -474,8 +497,8 @@ public static boolean isSoulBounded(ItemStack stack) public static boolean isSoulBook(ItemStack book) { - int soulBoundID = soulBoundID(); - if (soulBoundID >= 0 && book.hasTagCompound()) + int soulBound = getSoulBoundID(); + if (soulBound >= 0 && book.hasTagCompound()) { NBTTagCompound bookData = book.stackTagCompound; if (bookData.hasKey("StoredEnchantments")) @@ -484,7 +507,7 @@ public static boolean isSoulBook(ItemStack book) if (!bookEnch.getCompoundTagAt(1).getBoolean("id")) { int id = bookEnch.getCompoundTagAt(0).getInteger("id"); - if (id == soulBoundID) return true; + if (id == soulBound) return true; } } } From b9439332ba9b1df0e29fbdfb4b772978f499dcdc Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 16 Feb 2017 07:22:45 +0700 Subject: [PATCH 364/462] ToolSlots accept Extra Utilities wands --- .../java/com/darkona/adventurebackpack/inventory/SlotTool.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java index ea3a2493..1d69be69 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java @@ -67,6 +67,9 @@ public static boolean isValidTool(ItemStack stack) //Yeta Wrench uses shift+Scroll for switch own modes if (Item.itemRegistry.getNameForObject(item).equals("EnderIO:itemYetaWrench")) return false; + //Extra Utilities + if (item.getClass().getName().equals("com.rwtema.extrautils.item.ItemBuildersWand")) return true; + // Just for extra compatibility and/or security and/or less annoyance for (String toolName : VALID_TOOL_NAMES) { From c49f93b40d3f29f5f5ce66a5647d69816aa7323e Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sun, 19 Mar 2017 05:25:39 +0700 Subject: [PATCH 365/462] Fix multi-graves dupe --- .../handlers/PlayerEventHandler.java | 30 +++++++++++++++---- .../item/ItemAdventureBackpack.java | 12 ++++---- .../item/ItemCoalJetpack.java | 4 +-- .../item/ItemCopterPack.java | 4 +-- 4 files changed, 33 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index b4817661..aa67d13c 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -221,20 +221,38 @@ public void playerDeathDrop(PlayerDropsEvent event) } else { ItemStack pack = Wearing.getWearingBackpack(player); - if (Utils.isSoulBounded(pack)) ServerProxy.storePlayerProps(player); - else event.drops.add(new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, pack)); + if (Utils.isSoulBounded(pack)) + { + ServerProxy.storePlayerProps(player); + } else + { + event.drops.add(new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, pack)); + BackpackProperty.get(player).setWearable(null); + } //TODO get rid of campfire } } else if (Wearing.isWearingCopter(player)) { ItemStack pack = Wearing.getWearingCopter(player); - if (Utils.isSoulBounded(pack)) ServerProxy.storePlayerProps(player); - else event.drops.add(new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, pack)); + if (Utils.isSoulBounded(pack)) + { + ServerProxy.storePlayerProps(player); + } else + { + event.drops.add(new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, pack)); + BackpackProperty.get(player).setWearable(null); + } } else if (Wearing.isWearingJetpack(player)) { ItemStack pack = Wearing.getWearingJetpack(player); - if (Utils.isSoulBounded(pack)) ServerProxy.storePlayerProps(player); - else event.drops.add(new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, pack)); + if (Utils.isSoulBounded(pack)) + { + ServerProxy.storePlayerProps(player); + } else + { + event.drops.add(new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, pack)); + BackpackProperty.get(player).setWearable(null); + } } } } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index ef1a6833..ba1df10b 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -299,22 +299,20 @@ public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) { //onUnequipped(world, player, stack); - if (world.isRemote) return; + if (world.isRemote) + return; if (Wearing.isWearingTheRightBackpack(player, "Creeper")) { player.worldObj.createExplosion(player, player.posX, player.posY, player.posZ, 4.0F, false); } - if (Utils.isSoulBounded(stack)) + if (Utils.isSoulBounded(stack) || !ConfigHandler.backpackDeathPlace) return; - if (ConfigHandler.backpackDeathPlace) + if (!tryPlace(world, player, stack)) { - if (!tryPlace(world, player, stack)) - { - player.dropPlayerItemWithRandomChoice(stack, false); - } + player.dropPlayerItemWithRandomChoice(stack, false); } BackpackProperty.get(player).setWearable(null); diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index e879a91d..4bdb49c6 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -6,7 +6,6 @@ import com.darkona.adventurebackpack.network.PlayerActionPacket; import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; -import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.proxy.ClientProxy; import com.darkona.adventurebackpack.util.Resources; import com.darkona.adventurebackpack.util.Utils; @@ -266,7 +265,8 @@ public static void elevate(EntityPlayer player) public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) { onUnequipped(world, player, stack); - if (!Utils.isSoulBounded(stack)) BackpackProperty.get(player).setWearable(null); + /*if (!Utils.isSoulBounded(stack)) + BackpackProperty.get(player).setWearable(null);*/ } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java index 0c022304..cba2be0e 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java @@ -7,7 +7,6 @@ import com.darkona.adventurebackpack.inventory.InventoryCopterPack; import com.darkona.adventurebackpack.network.GUIPacket; import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; -import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.proxy.ClientProxy; import com.darkona.adventurebackpack.reference.GeneralReference; import com.darkona.adventurebackpack.util.Resources; @@ -277,7 +276,8 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) { onUnequipped(world, player, stack); - if (!Utils.isSoulBounded(stack)) BackpackProperty.get(player).setWearable(null); + /*if (!Utils.isSoulBounded(stack)) + BackpackProperty.get(player).setWearable(null);*/ } @Override From 81b387273e2600b7514b7ca8b677540a029b816c Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sun, 19 Mar 2017 17:12:04 +0700 Subject: [PATCH 366/462] Monstrous event refactored --- .../handlers/PlayerEventHandler.java | 69 +++++++------------ .../item/ItemAdventureBackpack.java | 13 +--- .../item/ItemCoalJetpack.java | 2 - .../item/ItemCopterPack.java | 2 - 4 files changed, 24 insertions(+), 62 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index aa67d13c..f995b56e 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -9,6 +9,7 @@ import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.item.IBackWearableItem; +import com.darkona.adventurebackpack.item.ItemAdventureBackpack; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.proxy.ServerProxy; import com.darkona.adventurebackpack.reference.BackpackNames; @@ -202,57 +203,33 @@ public void playerDeathDrop(PlayerDropsEvent event) if (Wearing.isWearingWearable(player)) { - if (Wearing.isWearingBackpack(player)) + ItemStack pack = Wearing.getWearingWearable(player); + BackpackProperty props = BackpackProperty.get(player); + + if (props.isForcedCampFire()) //TODO check campfire behavior, dim respected, special dim cases, 0/0/0 spawn sometimes etc. { - if (ConfigHandler.backpackDeathPlace) - { - BackpackProperty props = BackpackProperty.get(player); - ((IBackWearableItem) props.getWearable().getItem()).onPlayerDeath(player.worldObj, player, props.getWearable()); - if (props.isForcedCampFire()) - { - ChunkCoordinates lastCampFire = BackpackProperty.get(player).getCampFire(); - if (lastCampFire != null) - { - player.setSpawnChunk(lastCampFire, false, player.dimension); - } - //Set the forced spawn coordinates on the campfire. False, because the player must respawn at spawn point if there's no campfire. - } - ServerProxy.storePlayerProps(player); - } else + ChunkCoordinates lastCampFire = props.getCampFire(); + if (lastCampFire != null) { - ItemStack pack = Wearing.getWearingBackpack(player); - if (Utils.isSoulBounded(pack)) - { - ServerProxy.storePlayerProps(player); - } else - { - event.drops.add(new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, pack)); - BackpackProperty.get(player).setWearable(null); - } - //TODO get rid of campfire + player.setSpawnChunk(lastCampFire, false, player.dimension); } - } else if (Wearing.isWearingCopter(player)) + //Set the forced spawn coordinates on the campfire. False, because the player must respawn at spawn point if there's no campfire. + } + + if (Wearing.isWearingTheRightBackpack(player, "Creeper")) { - ItemStack pack = Wearing.getWearingCopter(player); - if (Utils.isSoulBounded(pack)) - { - ServerProxy.storePlayerProps(player); - } else - { - event.drops.add(new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, pack)); - BackpackProperty.get(player).setWearable(null); - } - } else if (Wearing.isWearingJetpack(player)) + player.worldObj.createExplosion(player, player.posX, player.posY, player.posZ, 4.0F, false); + } + + if (Utils.isSoulBounded(pack) + || (ConfigHandler.backpackDeathPlace && pack.getItem() instanceof ItemAdventureBackpack)) { - ItemStack pack = Wearing.getWearingJetpack(player); - if (Utils.isSoulBounded(pack)) - { - ServerProxy.storePlayerProps(player); - } else - { - event.drops.add(new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, pack)); - BackpackProperty.get(player).setWearable(null); - } + ((IBackWearableItem) props.getWearable().getItem()).onPlayerDeath(player.worldObj, player, props.getWearable()); + ServerProxy.storePlayerProps(player); + } else + { + event.drops.add(new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, pack)); + props.setWearable(null); } } } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index ba1df10b..c7a3f6f0 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -19,7 +19,6 @@ import com.darkona.adventurebackpack.util.BackpackUtils; import com.darkona.adventurebackpack.util.Resources; import com.darkona.adventurebackpack.util.Utils; -import com.darkona.adventurebackpack.util.Wearing; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -297,17 +296,7 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) @Override public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) { - //onUnequipped(world, player, stack); - - if (world.isRemote) - return; - - if (Wearing.isWearingTheRightBackpack(player, "Creeper")) - { - player.worldObj.createExplosion(player, player.posX, player.posY, player.posZ, 4.0F, false); - } - - if (Utils.isSoulBounded(stack) || !ConfigHandler.backpackDeathPlace) + if (world.isRemote || !ConfigHandler.backpackDeathPlace || Utils.isSoulBounded(stack)) return; if (!tryPlace(world, player, stack)) diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index 4bdb49c6..aa134f34 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -265,8 +265,6 @@ public static void elevate(EntityPlayer player) public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) { onUnequipped(world, player, stack); - /*if (!Utils.isSoulBounded(stack)) - BackpackProperty.get(player).setWearable(null);*/ } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java index cba2be0e..4124ee70 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java @@ -276,8 +276,6 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) { onUnequipped(world, player, stack); - /*if (!Utils.isSoulBounded(stack)) - BackpackProperty.get(player).setWearable(null);*/ } @Override From 86d66a14ade15571935addbcf267fe77a2076e66 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sun, 19 Mar 2017 21:38:53 +0700 Subject: [PATCH 367/462] Config for ability to spawn at campfire Fixed loading Campfire dimension info --- .../config/ConfigHandler.java | 8 ++-- .../handlers/PlayerEventHandler.java | 37 ++++++++++++------- .../item/ItemAdventureBackpack.java | 5 ++- .../playerProperties/BackpackProperty.java | 2 +- 4 files changed, 31 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 65bdc8e1..3503dd19 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -21,16 +21,13 @@ public class ConfigHandler public static boolean IS_BUILDCRAFT = false; public static boolean IS_ENDERIO = false; - //public static boolean IS_RAILCRAFT = false; - //public static boolean IS_THAUM = false; - //public static boolean IS_TINKERS = false; - //public static boolean IS_TWILIGHT = false; public static boolean allowSoulBound = true; public static boolean backpackDeathPlace = true; public static boolean backpackAbilities = true; - public static boolean enableToolsCycling = true; public static boolean enableHoseDrink = true; + public static boolean enableSpawnAtCampfire = false; + public static boolean enableToolsCycling = true; public static boolean fixLead = true; public static boolean enableToolsRender = true; @@ -115,6 +112,7 @@ private static void loadConfiguration() backpackDeathPlace = config.getBoolean("Backpack Death Place", "gameplay", true,"Place backpacks as a block when you die?"); fixLead = config.getBoolean("Fix Vanilla Lead", "gameplay", true, "Fix the vanilla Lead? (Checks mobs falling on a leash to not die of fall damage if they're not falling so fast)"); enableHoseDrink = config.getBoolean("Enable Hose Drink", "gameplay", true, "Enable/Disable hose drink mode"); + enableSpawnAtCampfire = config.getBoolean("Enable Spawn at Campfire", "gameplay", false, "Enable/Disable ability to spawn at campfire"); enableToolsCycling = config.getBoolean("Enable Tools Cycling", "gameplay", true, "Enable/Disable tool cycling"); // Graphics diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index f995b56e..17b79d16 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -206,16 +206,6 @@ public void playerDeathDrop(PlayerDropsEvent event) ItemStack pack = Wearing.getWearingWearable(player); BackpackProperty props = BackpackProperty.get(player); - if (props.isForcedCampFire()) //TODO check campfire behavior, dim respected, special dim cases, 0/0/0 spawn sometimes etc. - { - ChunkCoordinates lastCampFire = props.getCampFire(); - if (lastCampFire != null) - { - player.setSpawnChunk(lastCampFire, false, player.dimension); - } - //Set the forced spawn coordinates on the campfire. False, because the player must respawn at spawn point if there's no campfire. - } - if (Wearing.isWearingTheRightBackpack(player, "Creeper")) { player.worldObj.createExplosion(player, player.posX, player.posY, player.posZ, 4.0F, false); @@ -240,11 +230,30 @@ public void playerDies(LivingDeathEvent event) if (Utils.notNullAndInstanceOf(event.entity, EntityPlayer.class)) { EntityPlayer player = (EntityPlayer) event.entity; - if (!player.worldObj.isRemote - && player.getEntityWorld().getGameRules().getGameRuleBooleanValue("keepInventory")) + + if (!player.worldObj.isRemote) { - //LogHelper.info("Player died"); - ServerProxy.storePlayerProps(player); + BackpackProperty props = BackpackProperty.get(player); + + if (ConfigHandler.enableSpawnAtCampfire && props.isForcedCampFire()) + //TODO check campfire behavior, dim respected, special dim cases, 0/0/0 spawn sometimes, override bed spawn? etc. + { + ChunkCoordinates lastCampFire = props.getCampFire(); + + if (lastCampFire != null) + { + //TODO check negative coords shift, min Date: Mon, 20 Mar 2017 00:16:20 +0700 Subject: [PATCH 368/462] ToolCycling respect forbidden dims config --- .../adventurebackpack/AdventureBackpack.java | 8 -------- .../block/BlockAdventureBackpack.java | 5 +++-- .../common/ServerActions.java | 7 +++++++ .../handlers/ClientEventHandler.java | 2 +- .../handlers/PlayerEventHandler.java | 20 ++++++++++--------- .../adventurebackpack/inventory/SlotTool.java | 5 +---- .../adventurebackpack/network/GUIPacket.java | 5 +++-- 7 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java index 4baad48e..e3413263 100644 --- a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java @@ -111,9 +111,6 @@ public void postInit(FMLPostInitializationEvent event) ConfigHandler.IS_BUILDCRAFT = Loader.isModLoaded("BuildCraft|Core"); ConfigHandler.IS_ENDERIO = Loader.isModLoaded("EnderIO"); - //ConfigHandler.IS_TINKERS = Loader.isModLoaded("TConstruct"); - //ConfigHandler.IS_THAUM = Loader.isModLoaded("Thaumcraft"); - //ConfigHandler.IS_TWILIGHT = Loader.isModLoaded("TwilightForest"); if (ConfigHandler.IS_BUILDCRAFT) { @@ -125,11 +122,6 @@ public void postInit(FMLPostInitializationEvent event) LogHelper.info("EnderIO is present. Acting accordingly"); } - /*if (ConfigHandler.IS_TWILIGHT) - { - LogHelper.info("Twilight Forest is present. Acting accordingly"); - }*/ - ModRecipes.conditionalInit(); /* diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java index a9e31582..8c918489 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java @@ -276,10 +276,11 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p { if (!world.isRemote) { - Integer currentDimID = (player.worldObj.provider.dimensionId); + Integer currentDimID = player.worldObj.provider.dimensionId; for (String id : ConfigHandler.forbiddenDimensions) { - if (id.equals(currentDimID.toString())) return false; + if (id.equals(currentDimID.toString())) + return false; } FMLNetworkHandler.openGui(player, AdventureBackpack.instance, GuiHandler.BACKPACK_TILE, world, x, y, z); diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index 6944e3ee..b0eb1e5e 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -51,6 +51,13 @@ public class ServerActions //Using @Sir-Will dupe fixed public static void cycleTool(EntityPlayer player, int direction, int slot) { + Integer currentDimID = player.worldObj.provider.dimensionId; + for (String id : ConfigHandler.forbiddenDimensions) + { + if (id.equals(currentDimID.toString())) + return; + } + try { InventoryBackpack backpack = Wearing.getBackpackInv(player, true); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java index 4b8d6aa1..1b3fae1e 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java @@ -92,7 +92,7 @@ public void mouseWheelDetect(MouseEvent event) Item theItem = heldItem.getItem(); if ((ConfigHandler.enableToolsCycling && !Wearing.getBackpackInv(player, true).getDisableCycling() && SlotTool.isValidTool(heldItem)) - || ((BackpackNames.getBackpackColorName(backpack).equals("Skeleton") && theItem.equals(Items.bow)))) + || (BackpackNames.getBackpackColorName(backpack).equals("Skeleton") && theItem.equals(Items.bow))) { ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(dWheel, slot, CycleToolPacket.CYCLE_TOOL_ACTION)); ServerActions.cycleTool(player, dWheel, slot); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 17b79d16..c8f19fbc 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -206,11 +206,6 @@ public void playerDeathDrop(PlayerDropsEvent event) ItemStack pack = Wearing.getWearingWearable(player); BackpackProperty props = BackpackProperty.get(player); - if (Wearing.isWearingTheRightBackpack(player, "Creeper")) - { - player.worldObj.createExplosion(player, player.posX, player.posY, player.posZ, 4.0F, false); - } - if (Utils.isSoulBounded(pack) || (ConfigHandler.backpackDeathPlace && pack.getItem() instanceof ItemAdventureBackpack)) { @@ -248,11 +243,18 @@ public void playerDies(LivingDeathEvent event) //Set the forced spawn coordinates on the campfire. False, because the player must respawn at spawn point if there's no campfire. } - if (Wearing.isWearingWearable(player) - && player.getEntityWorld().getGameRules().getGameRuleBooleanValue("keepInventory")) + if (Wearing.isWearingWearable(player)) { - ((IBackWearableItem) props.getWearable().getItem()).onPlayerDeath(player.worldObj, player, props.getWearable()); - ServerProxy.storePlayerProps(player); + if (Wearing.isWearingTheRightBackpack(player, "Creeper")) + { + player.worldObj.createExplosion(player, player.posX, player.posY, player.posZ, 4.0F, false); + } + + if (player.getEntityWorld().getGameRules().getGameRuleBooleanValue("keepInventory")) + { + ((IBackWearableItem) props.getWearable().getItem()).onPlayerDeath(player.worldObj, player, props.getWearable()); + ServerProxy.storePlayerProps(player); + } } } } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java index 1d69be69..5332fa87 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java @@ -73,15 +73,11 @@ public static boolean isValidTool(ItemStack stack) // Just for extra compatibility and/or security and/or less annoyance for (String toolName : VALID_TOOL_NAMES) { - @SuppressWarnings("unused") - String a = toolName; if (name.contains(toolName)) return true; } for (String toolName : INVALID_TOOL_NAMES) { - @SuppressWarnings("unused") - String a = toolName; if (name.contains(toolName)) return false; } @@ -119,6 +115,7 @@ public static boolean isValidTool(ItemStack stack) // oops.printStackTrace(); } //Thaumcraft + //TODO add Thaumcraft wands try { //Thermal Expansion diff --git a/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java b/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java index 2a3ed7a4..40f67580 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java @@ -84,10 +84,11 @@ public IMessage onMessage(GUImessage message, MessageContext ctx) } if (message.type == BACKPACK_GUI) { - Integer currentDimID = (player.worldObj.provider.dimensionId); + Integer currentDimID = player.worldObj.provider.dimensionId; for (String id : ConfigHandler.forbiddenDimensions) { - if (id.equals(currentDimID.toString())) return null; + if (id.equals(currentDimID.toString())) + return null; } if (message.from == FROM_KEYBIND) From b0eb6d9dd5d536dc622c5a4306299104ee11253f Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 20 Mar 2017 08:26:26 +0700 Subject: [PATCH 369/462] ToolSlots accept Thaumcraft and BetterBuilders wands --- .../config/ConfigHandler.java | 4 +- .../handlers/PlayerEventHandler.java | 51 +++++++++---------- .../adventurebackpack/inventory/SlotTool.java | 25 ++++++--- 3 files changed, 44 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 3503dd19..fea61a3f 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -25,8 +25,8 @@ public class ConfigHandler public static boolean allowSoulBound = true; public static boolean backpackDeathPlace = true; public static boolean backpackAbilities = true; + public static boolean enableCampfireSpawn = false; public static boolean enableHoseDrink = true; - public static boolean enableSpawnAtCampfire = false; public static boolean enableToolsCycling = true; public static boolean fixLead = true; @@ -111,8 +111,8 @@ private static void loadConfiguration() "disabled in both Client and Server to work properly"); backpackDeathPlace = config.getBoolean("Backpack Death Place", "gameplay", true,"Place backpacks as a block when you die?"); fixLead = config.getBoolean("Fix Vanilla Lead", "gameplay", true, "Fix the vanilla Lead? (Checks mobs falling on a leash to not die of fall damage if they're not falling so fast)"); + enableCampfireSpawn = config.getBoolean("Enable Campfire Spawn", "gameplay", false, "Enable/Disable ability to spawn at campfire"); enableHoseDrink = config.getBoolean("Enable Hose Drink", "gameplay", true, "Enable/Disable hose drink mode"); - enableSpawnAtCampfire = config.getBoolean("Enable Spawn at Campfire", "gameplay", false, "Enable/Disable ability to spawn at campfire"); enableToolsCycling = config.getBoolean("Enable Tools Cycling", "gameplay", true, "Enable/Disable tool cycling"); // Graphics diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index c8f19fbc..d4f38ad5 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -196,29 +196,6 @@ public void onFall(LivingFallEvent event) } } - @SubscribeEvent - public void playerDeathDrop(PlayerDropsEvent event) - { - EntityPlayer player = event.entityPlayer; - - if (Wearing.isWearingWearable(player)) - { - ItemStack pack = Wearing.getWearingWearable(player); - BackpackProperty props = BackpackProperty.get(player); - - if (Utils.isSoulBounded(pack) - || (ConfigHandler.backpackDeathPlace && pack.getItem() instanceof ItemAdventureBackpack)) - { - ((IBackWearableItem) props.getWearable().getItem()).onPlayerDeath(player.worldObj, player, props.getWearable()); - ServerProxy.storePlayerProps(player); - } else - { - event.drops.add(new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, pack)); - props.setWearable(null); - } - } - } - @SubscribeEvent(priority = EventPriority.LOW) public void playerDies(LivingDeathEvent event) { @@ -230,14 +207,11 @@ public void playerDies(LivingDeathEvent event) { BackpackProperty props = BackpackProperty.get(player); - if (ConfigHandler.enableSpawnAtCampfire && props.isForcedCampFire()) - //TODO check campfire behavior, dim respected, special dim cases, 0/0/0 spawn sometimes, override bed spawn? etc. + if (ConfigHandler.enableCampfireSpawn && props.isForcedCampFire()) { ChunkCoordinates lastCampFire = props.getCampFire(); - if (lastCampFire != null) { - //TODO check negative coords shift, min Date: Mon, 20 Mar 2017 08:27:35 +0700 Subject: [PATCH 370/462] Possible fix for drop-open dupe --- .../adventurebackpack/item/ItemAdventureBackpack.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 9e965b13..3d85f136 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -12,6 +12,7 @@ import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.inventory.ContainerBackpack; import com.darkona.adventurebackpack.network.GUIPacket; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.proxy.ClientProxy; @@ -28,6 +29,7 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -224,7 +226,11 @@ public boolean isDamageable() @Override public boolean onDroppedByPlayer(ItemStack stack, EntityPlayer player) { - return true; + if (stack != null && player instanceof EntityPlayerMP && player.openContainer instanceof ContainerBackpack) + { + player.closeScreen(); + } + return super.onDroppedByPlayer(stack, player); } @SideOnly(Side.CLIENT) From 0f78c5944e0f41fda33e79f8c6e697492af17bb7 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 20 Mar 2017 23:38:57 +0700 Subject: [PATCH 371/462] Fixed loading Campfire forced info --- .../adventurebackpack/playerProperties/BackpackProperty.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java b/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java index 3fad1db3..205d4ddb 100644 --- a/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java +++ b/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java @@ -99,7 +99,7 @@ public void saveNBTData(NBTTagCompound compound) compound.setInteger("campFireX", campFire.posX); compound.setInteger("campFireY", campFire.posY); compound.setInteger("campFireZ", campFire.posZ); - compound.setInteger("campFireDim", dimension); + compound.setInteger("campFireDim", dimension); //TODO use it for check dim } compound.setBoolean("forceCampFire", forceCampFire); @@ -120,7 +120,7 @@ public void loadNBTData(NBTTagCompound compound) setWearable(compound.hasKey("wearable") ? ItemStack.loadItemStackFromNBT(compound.getCompoundTag("wearable")) : null); setCampFire(new ChunkCoordinates(compound.getInteger("campFireX"), compound.getInteger("campFireY"), compound.getInteger("campFireZ"))); dimension = compound.getInteger("campFireDim"); - forceCampFire = compound.getBoolean("forceCampfire"); + forceCampFire = compound.getBoolean("forceCampFire"); } } From 7b152f8ead1b8207bc1a446bdd622420da6ecad0 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 20 Mar 2017 23:39:54 +0700 Subject: [PATCH 372/462] Copy-pasted drop-dude for Jet- and Copter- Packs --- .../adventurebackpack/item/ItemCoalJetpack.java | 11 +++++++++++ .../adventurebackpack/item/ItemCopterPack.java | 12 ++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index aa134f34..d8a17136 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -1,6 +1,7 @@ package com.darkona.adventurebackpack.item; import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.inventory.ContainerJetpack; import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; import com.darkona.adventurebackpack.network.GUIPacket; import com.darkona.adventurebackpack.network.PlayerActionPacket; @@ -287,6 +288,16 @@ public void onUnequipped(World world, EntityPlayer player, ItemStack stack) inv.markDirty(); } + @Override + public boolean onDroppedByPlayer(ItemStack stack, EntityPlayer player) + { + if (stack != null && player instanceof EntityPlayerMP && player.openContainer instanceof ContainerJetpack) + { + player.closeScreen(); + } + return super.onDroppedByPlayer(stack, player); + } + @Override @SideOnly(Side.CLIENT) public ModelBiped getWearableModel(ItemStack wearable) diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java index 4124ee70..6dc5687f 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java @@ -4,6 +4,7 @@ import com.darkona.adventurebackpack.client.models.ModelCopterPack; import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.inventory.ContainerCopter; import com.darkona.adventurebackpack.inventory.InventoryCopterPack; import com.darkona.adventurebackpack.network.GUIPacket; import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; @@ -21,6 +22,7 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; @@ -115,6 +117,16 @@ public void pushEntities(World world, EntityPlayer player, float speed) } } + @Override + public boolean onDroppedByPlayer(ItemStack stack, EntityPlayer player) + { + if (stack != null && player instanceof EntityPlayerMP && player.openContainer instanceof ContainerCopter) + { + player.closeScreen(); + } + return super.onDroppedByPlayer(stack, player); + } + @Override @SideOnly(Side.CLIENT) public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack stack, int armorSlot) From 34b97fda013f2eb22086a81417e18c2aaebd5a05 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 21 Mar 2017 03:36:57 +0700 Subject: [PATCH 373/462] Fixed losing backpack if BlockPlaceEvent is cancelled --- .../darkona/adventurebackpack/item/ItemAdventureBackpack.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 3d85f136..260239e5 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -130,8 +130,8 @@ public void onCreated(ItemStack stack, World par2World, EntityPlayer par3EntityP public boolean placeBackpack(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, boolean from) { + if (stack.stackSize == 0 || !player.canPlayerEdit(x, y, z, side, stack)) return false; if (!stack.hasTagCompound()) stack.setTagCompound(new NBTTagCompound()); - if (!player.canPlayerEdit(x, y, z, side, stack)) return false; if (!stack.stackTagCompound.hasKey("colorName") || stack.stackTagCompound.getString("colorName").isEmpty()) { stack.stackTagCompound.setString("colorName", "Standard"); @@ -183,7 +183,7 @@ public boolean placeBackpack(ItemStack stack, EntityPlayer player, World world, ((TileAdventureBackpack) world.getTileEntity(x, y, z)).loadFromNBT(stack.stackTagCompound); if (from) { - player.inventory.decrStackSize(player.inventory.currentItem, 1); + stack.stackSize--; } else { BackpackProperty.get(player).setWearable(null); From 1c6caad2236d53ee7179494d795a089751b9de1b Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 21 Mar 2017 03:55:41 +0700 Subject: [PATCH 374/462] mcmod.info authors, URL --- src/main/resources/mcmod.info | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 4931cc08..cb099df1 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -7,10 +7,12 @@ "description": "Useful and pretty backpacks for Minecraft", "version": "${version}", "mcversion": "1.7.10", - "url": "http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/wip-mods/2252109-wip-adventure-backpack-mod-beta-0-7-3-updated-26", + "url": "https://github.com/runescapejon/AdventureBackpack2/releases", "updateUrl": "", "authorList": [ - "Darkona" + "Darkona", + "runescapejon", + "Ugachaga" ], "credits": "", "logoFile": "", From e4e0acba88f60dd06cacf795e01194bf6c634007 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Fri, 24 Mar 2017 21:26:19 +0700 Subject: [PATCH 375/462] Gbeta1 --- .idea/gradle.xml | 23 - .idea/modules.xml | 8 - build.bat | 3 - build.gradle | 89 +- build.sh | 3 - gradle.properties | 10 + gradle/wrapper/gradle-wrapper.jar | Bin 51017 -> 54212 bytes gradle/wrapper/gradle-wrapper.properties | 3 +- gradlew | 74 +- gradlew.bat | 14 +- ...eChickenLib-1.7.10-1.1.3.140-universal.jar | Bin 0 -> 314810 bytes src/main/java/baubles/api/BaubleType.java | 8 - src/main/java/baubles/api/BaublesApi.java | 41 - src/main/java/baubles/api/IBauble.java | 45 - .../java/codechicken/lib/colour/Colour.java | 180 --- .../codechicken/lib/colour/ColourARGB.java | 34 - .../codechicken/lib/colour/ColourRGBA.java | 59 - .../lib/colour/CustomGradient.java | 38 - .../codechicken/lib/config/ConfigFile.java | 141 -- .../codechicken/lib/config/ConfigTag.java | 308 ----- .../lib/config/ConfigTagParent.java | 264 ---- .../lib/config/DefaultingConfigFile.java | 24 - .../lib/config/SimpleProperties.java | 158 --- .../java/codechicken/lib/lighting/LC.java | 102 -- .../codechicken/lib/lighting/LightMatrix.java | 188 --- .../codechicken/lib/lighting/LightModel.java | 129 -- .../lib/lighting/PlanarLightMatrix.java | 61 - .../lib/lighting/PlanarLightModel.java | 44 - .../lib/lighting/SimpleBrightnessModel.java | 60 - .../java/codechicken/lib/math/MathHelper.java | 186 --- .../codechicken/lib/render/BlockRenderer.java | 213 --- .../java/codechicken/lib/render/CCModel.java | 1195 ----------------- .../lib/render/CCModelLibrary.java | 89 -- .../lib/render/CCRenderPipeline.java | 173 --- .../codechicken/lib/render/CCRenderState.java | 520 ------- .../lib/render/ColourMultiplier.java | 46 - .../lib/render/EntityDigIconFX.java | 138 -- .../codechicken/lib/render/FontUtils.java | 74 - .../codechicken/lib/render/IFaceRenderer.java | 6 - .../lib/render/ManagedTextureFX.java | 31 - .../lib/render/PlaceholderTexture.java | 25 - .../codechicken/lib/render/QBImporter.java | 927 ------------- .../codechicken/lib/render/RenderUtils.java | 375 ------ .../codechicken/lib/render/ShaderProgram.java | 149 -- .../lib/render/SpriteSheetManager.java | 147 -- .../lib/render/TextureDataHolder.java | 38 - .../codechicken/lib/render/TextureFX.java | 69 - .../lib/render/TextureSpecial.java | 219 --- .../codechicken/lib/render/TextureUtils.java | 192 --- .../java/codechicken/lib/render/Vertex5.java | 93 -- .../lib/render/uv/IconTransformation.java | 27 - .../render/uv/MultiIconTransformation.java | 28 - .../java/codechicken/lib/render/uv/UV.java | 95 -- .../codechicken/lib/render/uv/UVRotation.java | 60 - .../codechicken/lib/render/uv/UVScale.java | 42 - .../lib/render/uv/UVTransformation.java | 42 - .../lib/render/uv/UVTransformationList.java | 133 -- .../lib/render/uv/UVTranslation.java | 63 - .../java/codechicken/lib/util/Copyable.java | 6 - .../java/codechicken/lib/util/LangProxy.java | 23 - .../java/codechicken/lib/vec/AxisCycle.java | 45 - .../java/codechicken/lib/vec/BlockCoord.java | 256 ---- .../java/codechicken/lib/vec/Cuboid6.java | 231 ---- .../java/codechicken/lib/vec/CuboidCoord.java | 268 ---- .../codechicken/lib/vec/ITransformation.java | 54 - .../IrreversibleTransformationException.java | 19 - src/main/java/codechicken/lib/vec/Line3.java | 51 - .../java/codechicken/lib/vec/Matrix4.java | 353 ----- src/main/java/codechicken/lib/vec/Quat.java | 157 --- .../java/codechicken/lib/vec/Rectangle4i.java | 116 -- .../lib/vec/RedundantTransformation.java | 58 - .../java/codechicken/lib/vec/Rotation.java | 358 ----- src/main/java/codechicken/lib/vec/Scale.java | 83 -- src/main/java/codechicken/lib/vec/SwapYZ.java | 27 - .../codechicken/lib/vec/Transformation.java | 63 - .../lib/vec/TransformationList.java | 202 --- .../java/codechicken/lib/vec/Translation.java | 84 -- .../lib/vec/VariableTransformation.java | 33 - .../java/codechicken/lib/vec/Vector3.java | 545 -------- .../adventurebackpack/AdventureBackpack.java | 35 +- .../adventurebackpack/CreativeTabAB.java | 6 +- .../block/BlockAdventureBackpack.java | 25 +- .../block/BlockCampFire.java | 13 +- .../block/BlockSleepingBag.java | 27 +- .../block/TileAdventureBackpack.java | 28 +- .../adventurebackpack/block/TileCampfire.java | 2 - .../client/ClientActions.java | 14 +- .../adventurebackpack/client/Visuals.java | 4 +- .../client/audio/BoilingBoilerSound.java | 10 +- .../client/audio/CopterPackSound.java | 10 +- .../client/audio/JetpackSoundOn.java | 8 +- .../client/audio/LeakingBoilerSound.java | 8 +- .../client/audio/NyanMovingSound.java | 5 +- .../client/gui/GuiAdvBackpack.java | 14 +- .../client/gui/GuiCoalJetpack.java | 14 +- .../client/gui/GuiCopterPack.java | 8 +- .../client/gui/GuiFactory.java | 6 +- .../client/gui/GuiOverlay.java | 71 +- .../adventurebackpack/client/gui/GuiTank.java | 26 +- .../client/gui/GuiWithTanks.java | 5 +- .../client/gui/IBackpackGui.java | 8 +- .../client/gui/ModGuiConfig.java | 33 +- .../client/models/ModelBackpackArmor.java | 34 +- .../client/models/ModelBackpackBlock.java | 26 +- .../client/models/ModelClockworkCrossbow.java | 27 +- .../client/models/ModelCoalJetpack.java | 6 +- .../client/models/ModelCopterPack.java | 28 +- .../client/models/ModelFullArmor.java | 10 +- .../client/models/ModelInflatableBoat.java | 6 +- .../client/models/ModelWearable.java | 15 +- .../client/render/CopygirlRenderUtils.java} | 41 +- .../client/render/RenderRideableSpider.java | 24 +- .../RendererAdventureBackpackBlock.java | 17 +- .../client/render/RendererCampFire.java | 10 +- .../client/render/RendererHose.java | 11 +- .../client/render/RendererInflatableBoat.java | 14 +- .../render/RendererItemAdventureBackpack.java | 34 +- .../render/RendererItemAdventureHat.java | 6 +- .../render/RendererItemClockworkCrossbow.java | 8 +- .../client/render/RendererStack.java | 10 +- .../render/RendererWearableEquipped.java | 15 +- .../common/BackpackAbilities.java | 67 +- .../common/BackpackRemovals.java | 8 +- .../adventurebackpack/common/Constants.java | 16 +- .../common/IInventoryAdventureBackpack.java | 36 +- .../common/ServerActions.java | 28 +- .../config/ConfigHandler.java | 17 +- .../config/GeneralConfig.java | 13 - .../adventurebackpack/config/Keybindings.java | 8 +- .../config/ManualConfigHandler.java | 35 - .../develop/ChatHandler.java | 12 - .../develop/DeveloperJoining.java | 14 - .../adventurebackpack/develop/msg.java | 30 - .../develop/texturejoining.java | 14 - .../adventurebackpack/develop/texturemsg.java | 30 - .../entity/EntityFriendlySpider.java | 176 +-- .../entity/EntityInflatableBoat.java | 16 +- .../ai/EntityAIAvoidPlayerWithBackpack.java | 18 +- .../entity/ai/EntityAIHorseFollowOwner.java | 156 +-- .../adventurebackpack/entity/fx/SteamFX.java | 4 +- .../fluids/FluidEffectRegistry.java | 15 +- .../fluids/FluidMelonJuice.java | 3 +- .../adventurebackpack/fluids/FluidMilk.java | 4 +- .../fluids/FluidMushroomStew.java | 3 +- .../fluids/effects/FuelEffect.java | 8 +- .../fluids/effects/LavaEffect.java | 3 +- .../fluids/effects/MelonJuiceEffect.java | 14 +- .../fluids/effects/MilkEffect.java | 3 +- .../fluids/effects/MushroomStewEffect.java | 4 +- .../fluids/effects/OilEffect.java | 3 +- .../handlers/ClientEventHandler.java | 58 +- .../handlers/GeneralEventHandler.java | 26 +- .../handlers/GuiHandler.java | 8 +- .../handlers/KeybindHandler.java | 14 +- .../handlers/PlayerEventHandler.java | 60 +- .../handlers/RenderHandler.java | 7 +- .../handlers/TooltipsHandler.java | 142 ++ .../init/ConditionalFluidEffect.java | 2 +- .../adventurebackpack/init/ModBlocks.java | 7 +- .../adventurebackpack/init/ModEntities.java | 4 +- .../adventurebackpack/init/ModFluids.java | 10 +- .../adventurebackpack/init/ModItems.java | 24 +- .../adventurebackpack/init/ModMaterials.java | 4 +- .../adventurebackpack/init/ModNetwork.java | 19 +- .../adventurebackpack/init/ModRecipes.java | 14 +- .../adventurebackpack/init/ModWorldGen.java | 10 +- .../init/recipes/AbstractBackpackRecipe.java | 16 +- .../recipes/AbstractBackpackRecipeTwo.java | 3 +- .../init/recipes/BackpackRecipes.java | 13 +- .../init/recipes/BackpackRecipesList.java | 9 +- .../inventory/ContainerBackpack.java | 28 +- .../inventory/ContainerCopter.java | 1 + .../inventory/ContainerJetpack.java | 1 + .../inventory/IAsynchronousInventory.java | 4 +- .../inventory/IInventoryTanks.java | 12 +- .../inventory/IWearableContainer.java | 2 +- .../inventory/InventoryActions.java | 21 +- .../inventory/InventoryBackpack.java | 40 +- .../inventory/InventoryCoalJetpack.java | 67 +- .../inventory/InventoryCopterPack.java | 15 +- .../inventory/SlotAdventureBackpack.java | 1 - .../inventory/SlotBackpack.java | 8 +- .../inventory/SlotFluid.java | 10 +- .../adventurebackpack/inventory/SlotTool.java | 13 +- .../adventurebackpack/item/ArmorAB.java | 15 +- .../item/IBackWearableItem.java | 16 +- .../adventurebackpack/item/ItemAB.java | 10 +- .../item/ItemAdventureBackpack.java | 50 +- .../item/ItemAdventureHat.java | 8 +- .../item/ItemCoalJetpack.java | 51 +- .../adventurebackpack/item/ItemComponent.java | 10 +- .../item/ItemCopterPack.java | 32 +- .../adventurebackpack/item/ItemHose.java | 24 +- .../item/ItemJuiceBottle.java | 10 +- .../adventurebackpack/item/ItemMachete.java | 22 +- .../item/ItemPistonBoots.java | 6 +- .../adventurebackpack/item/ToolAB.java | 10 +- .../network/CowAbilityPacket.java | 16 +- .../network/CycleToolPacket.java | 8 +- .../EquipUnequipBackWearablePacket.java | 14 +- .../adventurebackpack/network/GUIPacket.java | 25 +- .../network/PlayerActionPacket.java | 21 +- .../network/SleepingBagPacket.java | 6 +- .../network/SyncPropertiesPacket.java | 20 +- .../network/WearableModePacket.java | 23 +- .../messages/EntityParticlePacket.java | 11 +- .../network/messages/EntitySoundPacket.java | 13 +- .../playerProperties/BackpackProperty.java | 14 +- .../adventurebackpack/proxy/ClientProxy.java | 75 +- .../adventurebackpack/proxy/CommonProxy.java | 13 +- .../adventurebackpack/proxy/IProxy.java | 16 +- .../adventurebackpack/proxy/ServerProxy.java | 36 +- .../reference/BackpackNames.java | 6 +- .../reference/GeneralReference.java | 4 +- .../adventurebackpack/reference/ModInfo.java | 2 +- .../adventurebackpack/reference/Names.java | 5 +- .../adventurebackpack/util/BackpackUtils.java | 9 +- .../adventurebackpack/util/EnchUtils.java | 89 ++ .../adventurebackpack/util/FluidUtils.java | 2 +- .../adventurebackpack/util/LogHelper.java | 6 +- .../adventurebackpack/util/Resources.java | 6 +- .../darkona/adventurebackpack/util/Utils.java | 83 +- .../adventurebackpack/util/Wearing.java | 6 +- .../jadarstudios/developercapes/DevCapes.java | 159 --- .../developercapes/HDImageBuffer.java | 41 - .../developercapes/RenderEventHandler.java | 39 - .../developercapes/cape/AbstractCape.java | 42 - .../developercapes/cape/CapeConfig.java | 27 - .../cape/CapeConfigManager.java | 176 --- .../developercapes/cape/CapeManager.java | 81 -- .../developercapes/cape/ICape.java | 29 - .../developercapes/cape/StaticCape.java | 60 - .../developercapes/user/Group.java | 61 - .../developercapes/user/GroupManager.java | 93 -- .../developercapes/user/User.java | 28 - .../developercapes/user/UserManager.java | 82 -- .../betterstorage/utils/ReflectionUtils.java | 199 --- .../assets/adventurebackpack/lang/en_US.lang | 4 +- src/main/resources/mcmod.info | 5 +- 239 files changed, 1561 insertions(+), 13049 deletions(-) delete mode 100644 .idea/gradle.xml delete mode 100644 .idea/modules.xml delete mode 100644 build.bat delete mode 100644 build.sh create mode 100644 gradle.properties create mode 100644 libs/CodeChickenLib-1.7.10-1.1.3.140-universal.jar delete mode 100644 src/main/java/baubles/api/BaubleType.java delete mode 100644 src/main/java/baubles/api/BaublesApi.java delete mode 100644 src/main/java/baubles/api/IBauble.java delete mode 100644 src/main/java/codechicken/lib/colour/Colour.java delete mode 100644 src/main/java/codechicken/lib/colour/ColourARGB.java delete mode 100644 src/main/java/codechicken/lib/colour/ColourRGBA.java delete mode 100644 src/main/java/codechicken/lib/colour/CustomGradient.java delete mode 100644 src/main/java/codechicken/lib/config/ConfigFile.java delete mode 100644 src/main/java/codechicken/lib/config/ConfigTag.java delete mode 100644 src/main/java/codechicken/lib/config/ConfigTagParent.java delete mode 100644 src/main/java/codechicken/lib/config/DefaultingConfigFile.java delete mode 100644 src/main/java/codechicken/lib/config/SimpleProperties.java delete mode 100644 src/main/java/codechicken/lib/lighting/LC.java delete mode 100644 src/main/java/codechicken/lib/lighting/LightMatrix.java delete mode 100644 src/main/java/codechicken/lib/lighting/LightModel.java delete mode 100644 src/main/java/codechicken/lib/lighting/PlanarLightMatrix.java delete mode 100644 src/main/java/codechicken/lib/lighting/PlanarLightModel.java delete mode 100644 src/main/java/codechicken/lib/lighting/SimpleBrightnessModel.java delete mode 100644 src/main/java/codechicken/lib/math/MathHelper.java delete mode 100644 src/main/java/codechicken/lib/render/BlockRenderer.java delete mode 100644 src/main/java/codechicken/lib/render/CCModel.java delete mode 100644 src/main/java/codechicken/lib/render/CCModelLibrary.java delete mode 100644 src/main/java/codechicken/lib/render/CCRenderPipeline.java delete mode 100644 src/main/java/codechicken/lib/render/CCRenderState.java delete mode 100644 src/main/java/codechicken/lib/render/ColourMultiplier.java delete mode 100644 src/main/java/codechicken/lib/render/EntityDigIconFX.java delete mode 100644 src/main/java/codechicken/lib/render/FontUtils.java delete mode 100644 src/main/java/codechicken/lib/render/IFaceRenderer.java delete mode 100644 src/main/java/codechicken/lib/render/ManagedTextureFX.java delete mode 100644 src/main/java/codechicken/lib/render/PlaceholderTexture.java delete mode 100644 src/main/java/codechicken/lib/render/QBImporter.java delete mode 100644 src/main/java/codechicken/lib/render/RenderUtils.java delete mode 100644 src/main/java/codechicken/lib/render/ShaderProgram.java delete mode 100644 src/main/java/codechicken/lib/render/SpriteSheetManager.java delete mode 100644 src/main/java/codechicken/lib/render/TextureDataHolder.java delete mode 100644 src/main/java/codechicken/lib/render/TextureFX.java delete mode 100644 src/main/java/codechicken/lib/render/TextureSpecial.java delete mode 100644 src/main/java/codechicken/lib/render/TextureUtils.java delete mode 100644 src/main/java/codechicken/lib/render/Vertex5.java delete mode 100644 src/main/java/codechicken/lib/render/uv/IconTransformation.java delete mode 100644 src/main/java/codechicken/lib/render/uv/MultiIconTransformation.java delete mode 100644 src/main/java/codechicken/lib/render/uv/UV.java delete mode 100644 src/main/java/codechicken/lib/render/uv/UVRotation.java delete mode 100644 src/main/java/codechicken/lib/render/uv/UVScale.java delete mode 100644 src/main/java/codechicken/lib/render/uv/UVTransformation.java delete mode 100644 src/main/java/codechicken/lib/render/uv/UVTransformationList.java delete mode 100644 src/main/java/codechicken/lib/render/uv/UVTranslation.java delete mode 100644 src/main/java/codechicken/lib/util/Copyable.java delete mode 100644 src/main/java/codechicken/lib/util/LangProxy.java delete mode 100644 src/main/java/codechicken/lib/vec/AxisCycle.java delete mode 100644 src/main/java/codechicken/lib/vec/BlockCoord.java delete mode 100644 src/main/java/codechicken/lib/vec/Cuboid6.java delete mode 100644 src/main/java/codechicken/lib/vec/CuboidCoord.java delete mode 100644 src/main/java/codechicken/lib/vec/ITransformation.java delete mode 100644 src/main/java/codechicken/lib/vec/IrreversibleTransformationException.java delete mode 100644 src/main/java/codechicken/lib/vec/Line3.java delete mode 100644 src/main/java/codechicken/lib/vec/Matrix4.java delete mode 100644 src/main/java/codechicken/lib/vec/Quat.java delete mode 100644 src/main/java/codechicken/lib/vec/Rectangle4i.java delete mode 100644 src/main/java/codechicken/lib/vec/RedundantTransformation.java delete mode 100644 src/main/java/codechicken/lib/vec/Rotation.java delete mode 100644 src/main/java/codechicken/lib/vec/Scale.java delete mode 100644 src/main/java/codechicken/lib/vec/SwapYZ.java delete mode 100644 src/main/java/codechicken/lib/vec/Transformation.java delete mode 100644 src/main/java/codechicken/lib/vec/TransformationList.java delete mode 100644 src/main/java/codechicken/lib/vec/Translation.java delete mode 100644 src/main/java/codechicken/lib/vec/VariableTransformation.java delete mode 100644 src/main/java/codechicken/lib/vec/Vector3.java rename src/main/java/{copy/betterstorage/utils/RenderUtils.java => com/darkona/adventurebackpack/client/render/CopygirlRenderUtils.java} (76%) delete mode 100644 src/main/java/com/darkona/adventurebackpack/config/GeneralConfig.java delete mode 100644 src/main/java/com/darkona/adventurebackpack/config/ManualConfigHandler.java delete mode 100644 src/main/java/com/darkona/adventurebackpack/develop/ChatHandler.java delete mode 100644 src/main/java/com/darkona/adventurebackpack/develop/DeveloperJoining.java delete mode 100644 src/main/java/com/darkona/adventurebackpack/develop/msg.java delete mode 100644 src/main/java/com/darkona/adventurebackpack/develop/texturejoining.java delete mode 100644 src/main/java/com/darkona/adventurebackpack/develop/texturemsg.java create mode 100644 src/main/java/com/darkona/adventurebackpack/handlers/TooltipsHandler.java create mode 100644 src/main/java/com/darkona/adventurebackpack/util/EnchUtils.java delete mode 100644 src/main/java/com/jadarstudios/developercapes/DevCapes.java delete mode 100644 src/main/java/com/jadarstudios/developercapes/HDImageBuffer.java delete mode 100644 src/main/java/com/jadarstudios/developercapes/RenderEventHandler.java delete mode 100644 src/main/java/com/jadarstudios/developercapes/cape/AbstractCape.java delete mode 100644 src/main/java/com/jadarstudios/developercapes/cape/CapeConfig.java delete mode 100644 src/main/java/com/jadarstudios/developercapes/cape/CapeConfigManager.java delete mode 100644 src/main/java/com/jadarstudios/developercapes/cape/CapeManager.java delete mode 100644 src/main/java/com/jadarstudios/developercapes/cape/ICape.java delete mode 100644 src/main/java/com/jadarstudios/developercapes/cape/StaticCape.java delete mode 100644 src/main/java/com/jadarstudios/developercapes/user/Group.java delete mode 100644 src/main/java/com/jadarstudios/developercapes/user/GroupManager.java delete mode 100644 src/main/java/com/jadarstudios/developercapes/user/User.java delete mode 100644 src/main/java/com/jadarstudios/developercapes/user/UserManager.java delete mode 100644 src/main/java/copy/betterstorage/utils/ReflectionUtils.java diff --git a/.idea/gradle.xml b/.idea/gradle.xml deleted file mode 100644 index 97d8de6f..00000000 --- a/.idea/gradle.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 2dde0c65..00000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/build.bat b/build.bat deleted file mode 100644 index 2f3b5f4d..00000000 --- a/build.bat +++ /dev/null @@ -1,3 +0,0 @@ -@echo off -call gradlew build -pause \ No newline at end of file diff --git a/build.gradle b/build.gradle index 7aa5f268..54034ae8 100644 --- a/build.gradle +++ b/build.gradle @@ -1,51 +1,32 @@ -println """ -******************************************* - You are building AdventureBackpack2 Mod! - - Output files will be in [project]/build/libs -******************************************* -""" buildscript { repositories { mavenCentral() - maven { - name = "forge" - url = "http://files.minecraftforge.net/maven" - } - maven { - name = "sonatype" - url = "https://oss.sonatype.org/content/repositories/snapshots/" - } - } - dependencies { - classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT' - + maven { url = "http://files.minecraftforge.net/maven" } + maven { url = "https://oss.sonatype.org/content/repositories/snapshots/" } } + dependencies { classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT' } } apply plugin: 'forge' -version = "1.7.10-0.9fbeta9" group = "com.darkona.adventurebackpack" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "adventurebackpack" +version = "${minecraft_version}-${mod_version}beta${buildnumber}" + minecraft { - version = "1.7.10-10.13.4.1614-1.7.10" + version = "${minecraft_version}-${forge_version}" runDir = "eclipse" -} - -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.18:dev' + replace "@VERSION@", project.version +} +dependencies +{ + compile "codechicken:CodeChickenLib:${minecraft_version}-${ccl_version}:dev" + //compile "codechicken:CodeChickenCore:${minecraft_version}-${ccc_version}:dev" - //compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env + //compile "com.azanor.baubles:Baubles:${baubles_version}:deobf" // for more info... // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html @@ -53,24 +34,36 @@ dependencies { } -processResources - { - // this will ensure that this task is redone when the versions change. - inputs.property "version", project.version - inputs.property "mcversion", project.minecraft.version +processResources { + // 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' + exclude '\\arg' + // 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' - exclude '\\arg' - // replace version and mcversion - expand 'version': project.version, 'mcversion': project.minecraft.version - } +task sourceJar(type: Jar) { + from sourceSets.main.allSource + classifier = 'sources' +} - // copy everything else, thats not the mcmod.info - from(sourceSets.main.resources.srcDirs) { - exclude 'mcmod.info' - } +if (JavaVersion.current().isJava8Compatible()) { + allprojects { + tasks.withType(Javadoc) { + options.addStringOption('Xdoclint:none', '-quiet') } + } +} idea { module { inheritOutputDirs = true } } diff --git a/build.sh b/build.sh deleted file mode 100644 index 249c540b..00000000 --- a/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -./gradlew clean build -read -p "Press any key to continue..." \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 00000000..2c2d658d --- /dev/null +++ b/gradle.properties @@ -0,0 +1,10 @@ +buildnumber=1 +mod_version=0.9g + +minecraft_version=1.7.10 +forge_version=10.13.4.1614-1.7.10 +forgeDep_version=10.13.4.1448 + +ccc_version=1.0.7.47 +ccl_version=1.1.3.138 +baubles_version=1.0.1.10 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index b7612167031001b7b84baf2a959e8ea8ad03c011..7fbf96deb2d5abc13a25235be3d1bf7edde8397f 100644 GIT binary patch delta 33442 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%0Aymn4;(ze+a#lH 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 eY9LVuDVDr6G-%cQN@v9k)` \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" @@ -30,6 +48,7 @@ die ( ) { cygwin=false msys=false darwin=false +nonstop=false case "`uname`" in CYGWIN* ) cygwin=true @@ -40,31 +59,11 @@ case "`uname`" in MINGW* ) msys=true ;; + NONSTOP* ) + nonstop=true + ;; esac -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` -fi - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- -APP_HOME="`pwd -P`" -cd "$SAVED" >&- - CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -90,7 +89,7 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then @@ -114,6 +113,7 @@ fi if $cygwin ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` @@ -154,11 +154,19 @@ if $cygwin ; then esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") +# Escape application args +save ( ) { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 8a0b282a..f9553162 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -8,14 +8,14 @@ @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome @@ -46,10 +46,9 @@ echo location of your Java installation. goto fail :init -@rem Get command-line arguments, handling Windowz variants +@rem Get command-line arguments, handling Windows variants if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args :win9xME_args @rem Slurp the command line arguments. @@ -60,11 +59,6 @@ set _SKIP=2 if "x%~1" == "x" goto execute set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ :execute @rem Setup the command line diff --git a/libs/CodeChickenLib-1.7.10-1.1.3.140-universal.jar b/libs/CodeChickenLib-1.7.10-1.1.3.140-universal.jar new file mode 100644 index 0000000000000000000000000000000000000000..9aa3d80afdf5757a5fa14529ce418542164257a5 GIT binary patch literal 314810 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

1D>EYu!FO-UxJ-$@YvGmYuCC#o>^jF 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%0Altyd#2B&$ltFgwCEu7+(qO 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®pYyY{LdX0>uipxSwlycP!?K+t%K8 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%0Af=Jys@5qsy2WLe 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 z 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 literal 0 HcmV?d00001 diff --git a/src/main/java/baubles/api/BaubleType.java b/src/main/java/baubles/api/BaubleType.java deleted file mode 100644 index 539b5159..00000000 --- a/src/main/java/baubles/api/BaubleType.java +++ /dev/null @@ -1,8 +0,0 @@ -package baubles.api; - -public enum BaubleType -{ - RING, - AMULET, - BELT -} diff --git a/src/main/java/baubles/api/BaublesApi.java b/src/main/java/baubles/api/BaublesApi.java deleted file mode 100644 index 229cfdf4..00000000 --- a/src/main/java/baubles/api/BaublesApi.java +++ /dev/null @@ -1,41 +0,0 @@ -package baubles.api; - -import cpw.mods.fml.common.FMLLog; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; - -import java.lang.reflect.Method; - - -/** - * @author Azanor - */ -public class BaublesApi -{ - - static Method getBaubles; - - /** - * Retrieves the baubles inventory for the supplied player - */ - @SuppressWarnings("unchecked") - public static IInventory getBaubles(EntityPlayer player) - { - IInventory ot = null; - try - { - if (getBaubles == null) - { - @SuppressWarnings("rawtypes") - Class fake = Class.forName("baubles.common.lib.PlayerHandler"); - getBaubles = fake.getMethod("getPlayerBaubles", EntityPlayer.class); - } - ot = (IInventory) getBaubles.invoke(null, player); - } catch (Exception ex) - { - FMLLog.warning("[Baubles API] Could not invoke baubles.common.lib.PlayerHandler method getPlayerBaubles"); - } - return ot; - } - -} diff --git a/src/main/java/baubles/api/IBauble.java b/src/main/java/baubles/api/IBauble.java deleted file mode 100644 index 47a42ddd..00000000 --- a/src/main/java/baubles/api/IBauble.java +++ /dev/null @@ -1,45 +0,0 @@ -package baubles.api; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemStack; - -/** - * @author Azanor - *

- * This interface should be extended by items that can be worn in bauble slots - */ - -public interface IBauble -{ - - /** - * This method return the type of bauble this is. - * Type is used to determine the slots it can go into. - */ - public BaubleType getBaubleType(ItemStack itemstack); - - /** - * This method is called once per tick if the bauble is being worn by a player - */ - public void onWornTick(ItemStack itemstack, EntityLivingBase player); - - /** - * This method is called when the bauble is equipped by a player - */ - public void onEquipped(ItemStack itemstack, EntityLivingBase player); - - /** - * This method is called when the bauble is unequipped by a player - */ - public void onUnequipped(ItemStack itemstack, EntityLivingBase player); - - /** - * can this bauble be placed in a bauble slot - */ - public boolean canEquip(ItemStack itemstack, EntityLivingBase player); - - /** - * Can this bauble be removed from a bauble slot - */ - public boolean canUnequip(ItemStack itemstack, EntityLivingBase player); -} diff --git a/src/main/java/codechicken/lib/colour/Colour.java b/src/main/java/codechicken/lib/colour/Colour.java deleted file mode 100644 index 4d39dd13..00000000 --- a/src/main/java/codechicken/lib/colour/Colour.java +++ /dev/null @@ -1,180 +0,0 @@ -package codechicken.lib.colour; - -import codechicken.lib.config.ConfigTag.IConfigType; -import codechicken.lib.math.MathHelper; -import codechicken.lib.util.Copyable; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import org.lwjgl.opengl.GL11; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public abstract class Colour implements Copyable -{ - public static IConfigType configRGB = new IConfigType() - { - private final Pattern patternRGB = Pattern.compile("(\\d+),(\\d+),(\\d+)"); - - @Override - public String configValue(Colour entry) - { - String s = Long.toString(((long) entry.rgb()) << 32 >>> 32, 16); - while (s.length() < 6) - s = "0" + s; - return "0x" + s.toUpperCase(); - } - - @Override - public Colour valueOf(String text) throws Exception - { - Matcher matcherRGB = patternRGB.matcher(text.replaceAll("\\s", "")); - if (matcherRGB.matches()) - { - return new ColourRGBA( - Integer.parseInt(matcherRGB.group(1)), - Integer.parseInt(matcherRGB.group(2)), - Integer.parseInt(matcherRGB.group(3)), - 0xFF); - } - - int hex = (int) Long.parseLong(text.replace("0x", ""), 16); - return new ColourRGBA(hex << 8 | 0xFF); - } - }; - - public byte r; - public byte g; - public byte b; - public byte a; - - public Colour(int r, int g, int b, int a) - { - this.r = (byte) r; - this.g = (byte) g; - this.b = (byte) b; - this.a = (byte) a; - } - - public Colour(Colour colour) - { - r = colour.r; - g = colour.g; - b = colour.b; - a = colour.a; - } - - @SideOnly(Side.CLIENT) - public void glColour() - { - GL11.glColor4ub(r, g, b, a); - } - - @SideOnly(Side.CLIENT) - public void glColour(int a) - { - GL11.glColor4ub(r, g, b, (byte) a); - } - - public abstract int pack(); - - @Override - public String toString() - { - return getClass().getSimpleName() + "[0x" + Integer.toHexString(pack()).toUpperCase() + "]"; - } - - public Colour add(Colour colour2) - { - a += colour2.a; - r += colour2.r; - g += colour2.g; - b += colour2.b; - return this; - } - - public Colour sub(Colour colour2) - { - int ia = (a & 0xFF) - (colour2.a & 0xFF); - int ir = (r & 0xFF) - (colour2.r & 0xFF); - int ig = (g & 0xFF) - (colour2.g & 0xFF); - int ib = (b & 0xFF) - (colour2.b & 0xFF); - a = (byte) (ia < 0 ? 0 : ia); - r = (byte) (ir < 0 ? 0 : ir); - g = (byte) (ig < 0 ? 0 : ig); - b = (byte) (ib < 0 ? 0 : ib); - return this; - } - - public Colour invert() - { - a = (byte) (0xFF - (a & 0xFF)); - r = (byte) (0xFF - (r & 0xFF)); - g = (byte) (0xFF - (g & 0xFF)); - b = (byte) (0xFF - (b & 0xFF)); - return this; - } - - public Colour multiply(Colour colour2) - { - a = (byte) ((a & 0xFF) * ((colour2.a & 0xFF) / 255D)); - r = (byte) ((r & 0xFF) * ((colour2.r & 0xFF) / 255D)); - g = (byte) ((g & 0xFF) * ((colour2.g & 0xFF) / 255D)); - b = (byte) ((b & 0xFF) * ((colour2.b & 0xFF) / 255D)); - return this; - } - - public Colour scale(double d) - { - a = (byte) ((a & 0xFF) * d); - r = (byte) ((r & 0xFF) * d); - g = (byte) ((g & 0xFF) * d); - b = (byte) ((b & 0xFF) * d); - return this; - } - - public Colour interpolate(Colour colour2, double d) - { - return this.add(colour2.copy().sub(this).scale(d)); - } - - public Colour multiplyC(double d) - { - r = (byte) MathHelper.clip((r & 0xFF) * d, 0, 255); - g = (byte) MathHelper.clip((g & 0xFF) * d, 0, 255); - b = (byte) MathHelper.clip((b & 0xFF) * d, 0, 255); - - return this; - } - - public abstract Colour copy(); - - public int rgb() - { - return (r & 0xFF) << 16 | (g & 0xFF) << 8 | (b & 0xFF); - } - - public int argb() - { - return (a & 0xFF) << 24 | (r & 0xFF) << 16 | (g & 0xFF) << 8 | (b & 0xFF); - } - - public int rgba() - { - return (r & 0xFF) << 24 | (g & 0xFF) << 16 | (b & 0xFF) << 8 | (a & 0xFF); - } - - public Colour set(Colour colour) - { - r = colour.r; - g = colour.g; - b = colour.b; - a = colour.a; - return this; - } - - public boolean equals(Colour colour) - { - return colour != null && rgba() == colour.rgba(); - } -} diff --git a/src/main/java/codechicken/lib/colour/ColourARGB.java b/src/main/java/codechicken/lib/colour/ColourARGB.java deleted file mode 100644 index 007c51f4..00000000 --- a/src/main/java/codechicken/lib/colour/ColourARGB.java +++ /dev/null @@ -1,34 +0,0 @@ -package codechicken.lib.colour; - -public class ColourARGB extends Colour -{ - public ColourARGB(int colour) - { - super((colour >> 16) & 0xFF, (colour >> 8) & 0xFF, colour & 0xFF, (colour >> 24) & 0xFF); - } - - public ColourARGB(int a, int r, int g, int b) - { - super(r, g, b, a); - } - - public ColourARGB(ColourARGB colour) - { - super(colour); - } - - public static int pack(Colour colour) - { - return (colour.a & 0xFF) << 24 | (colour.r & 0xFF) << 16 | (colour.g & 0xFF) << 8 | (colour.b & 0xFF); - } - - public ColourARGB copy() - { - return new ColourARGB(this); - } - - public int pack() - { - return pack(this); - } -} diff --git a/src/main/java/codechicken/lib/colour/ColourRGBA.java b/src/main/java/codechicken/lib/colour/ColourRGBA.java deleted file mode 100644 index 42763261..00000000 --- a/src/main/java/codechicken/lib/colour/ColourRGBA.java +++ /dev/null @@ -1,59 +0,0 @@ -package codechicken.lib.colour; - -public class ColourRGBA extends Colour -{ - public ColourRGBA(int colour) - { - super((colour >> 24) & 0xFF, (colour >> 16) & 0xFF, (colour >> 8) & 0xFF, colour & 0xFF); - } - - public ColourRGBA(double r, double g, double b, double a) - { - super((int) (255 * r), (int) (255 * g), (int) (255 * b), (int) (255 * a)); - } - - public ColourRGBA(int r, int g, int b, int a) - { - super(r, g, b, a); - } - - public ColourRGBA(ColourRGBA colour) - { - super(colour); - } - - public static int pack(Colour colour) - { - return (colour.r & 0xFF) << 24 | (colour.g & 0xFF) << 16 | (colour.b & 0xFF) << 8 | (colour.a & 0xFF); - } - - public static int multiply(int c1, int c2) - { - if (c1 == -1) return c2; - if (c2 == -1) return c1; - int r = (((c1 >>> 24) * (c2 >>> 24)) & 0xFF00) << 16; - int g = (((c1 >> 16 & 0xFF) * (c2 >> 16 & 0xFF)) & 0xFF00) << 8; - int b = ((c1 >> 8 & 0xFF) * (c2 >> 8 & 0xFF)) & 0xFF00; - int a = ((c1 & 0xFF) * (c2 & 0xFF)) >> 8; - return r | g | b | a; - } - - public static int multiplyC(int c, float f) - { - int r = (int) ((c >>> 24) * f); - int g = (int) ((c >> 16 & 0xFF) * f); - int b = (int) ((c >> 8 & 0xFF) * f); - return r << 24 | g << 16 | b << 8 | c & 0xFF; - } - - public int pack() - { - return pack(this); - } - - @Override - public Colour copy() - { - return new ColourRGBA(this); - } -} diff --git a/src/main/java/codechicken/lib/colour/CustomGradient.java b/src/main/java/codechicken/lib/colour/CustomGradient.java deleted file mode 100644 index 21496f88..00000000 --- a/src/main/java/codechicken/lib/colour/CustomGradient.java +++ /dev/null @@ -1,38 +0,0 @@ -package codechicken.lib.colour; - -import codechicken.lib.math.MathHelper; -import codechicken.lib.render.TextureUtils; -import net.minecraft.util.ResourceLocation; - -import java.awt.image.BufferedImage; - -public class CustomGradient -{ - public int[] gradient; - - public CustomGradient(ResourceLocation textureFile) - { - BufferedImage img = TextureUtils.loadBufferedImage(textureFile); - if (img == null) - { - throw new RuntimeException("File not found: " + textureFile.toString()); - } - - int[] data = new int[img.getWidth()]; - img.getRGB(0, 0, img.getWidth(), 1, data, 0, img.getWidth()); - gradient = new int[img.getWidth()]; - for (int i = 0; i < data.length; i++) - gradient[i] = (data[i] << 8) | (((data[i]) >> 24) & 0xFF); - } - - public ColourRGBA getColour(double position) - { - return new ColourRGBA(getColourI(position)); - } - - public int getColourI(double position) - { - int off = (int) MathHelper.clip(gradient.length * position, 0, gradient.length - 1); - return gradient[off]; - } -} diff --git a/src/main/java/codechicken/lib/config/ConfigFile.java b/src/main/java/codechicken/lib/config/ConfigFile.java deleted file mode 100644 index 2f33b668..00000000 --- a/src/main/java/codechicken/lib/config/ConfigFile.java +++ /dev/null @@ -1,141 +0,0 @@ -package codechicken.lib.config; - -import java.io.*; - -public class ConfigFile extends ConfigTagParent -{ - public static final byte[] crlf = new byte[]{0xD, 0xA}; - - public File file; - private boolean loading; - - public ConfigFile(File file) - { - newlinemode = 2; - load(file); - } - - protected ConfigFile() - { - } - - public static String readLine(BufferedReader reader) throws IOException - { - String line = reader.readLine(); - return line == null ? null : line.replace("\t", ""); - } - - public static void writeLine(PrintWriter writer, String line, int tabs) - { - for (int i = 0; i < tabs; i++) - writer.print('\t'); - - writer.println(line); - } - - protected void load(File file) - { - try - { - if (!file.getParentFile().exists()) - { - file.getParentFile().mkdirs(); - } - if (!file.exists()) - { - file.createNewFile(); - } - } catch (IOException e) - { - throw new RuntimeException(e); - } - this.file = file; - loadConfig(); - } - - protected void loadConfig() - { - loading = true; - BufferedReader reader; - try - { - reader = new BufferedReader(new FileReader(file)); - - while (true) - { - reader.mark(2000); - String line = reader.readLine(); - if (line != null && line.startsWith("#")) - { - if (comment == null || comment.equals("")) - { - comment = line.substring(1); - } else - { - comment = comment + "\n" + line.substring(1); - } - } else - { - reader.reset(); - break; - } - } - loadChildren(reader); - reader.close(); - - } catch (IOException e) - { - throw new RuntimeException(e); - } - - loading = false; - } - - @Override - public ConfigFile setComment(String header) - { - super.setComment(header); - return this; - } - - @Override - public ConfigFile setSortMode(int mode) - { - super.setSortMode(mode); - return this; - } - - @Override - public String getNameQualifier() - { - return ""; - } - - public void saveConfig() - { - if (loading) - { - return; - } - - PrintWriter writer; - try - { - writer = new PrintWriter(file); - } catch (FileNotFoundException e) - { - throw new RuntimeException(e); - } - - writeComment(writer, 0); - ConfigFile.writeLine(writer, "", 0); - saveTagTree(writer, 0, ""); - writer.flush(); - writer.close(); - } - - public boolean isLoading() - { - return loading; - } -} diff --git a/src/main/java/codechicken/lib/config/ConfigTag.java b/src/main/java/codechicken/lib/config/ConfigTag.java deleted file mode 100644 index 6e13f5b6..00000000 --- a/src/main/java/codechicken/lib/config/ConfigTag.java +++ /dev/null @@ -1,308 +0,0 @@ -package codechicken.lib.config; - -import java.io.PrintWriter; - -public class ConfigTag extends ConfigTagParent -{ - public ConfigTagParent parent; - public String name; - public String qualifiedname; - public String value; - public boolean brace; - public boolean newline; - public int position = Integer.MAX_VALUE; - private int IDBase; - - public ConfigTag(ConfigTagParent parent, String name) - { - this.parent = parent; - this.name = name; - qualifiedname = parent.getNameQualifier() + name; - newline = parent.newlinemode == 2; - parent.addChild(this); - } - - @Override - public String getNameQualifier() - { - return qualifiedname + "."; - } - - @Override - public void saveConfig() - { - parent.saveConfig(); - } - - /** - * Called when the tag is loaded from a config file as opposed to constructed by a mod - * - * @return this - */ - public ConfigTag onLoaded() - { - return this; - } - - public void setDefaultValue(String defaultValue) - { - if (value == null) - { - value = defaultValue; - saveConfig(); - } - } - - public void set(IConfigType type, T entry) - { - setValue(type.configValue(entry)); - } - - public String getValue() - { - return value; - } - - public void setValue(String value) - { - this.value = value; - saveConfig(); - } - - public String getValue(String defaultValue) - { - setDefaultValue(defaultValue); - return value; - } - - public int getIntValue() - { - return Integer.parseInt(getValue()); - } - - public void setIntValue(int i) - { - setValue(Integer.toString(i)); - } - - public int getIntValue(int defaultValue) - { - try - { - if (value != null) - { - return getIntValue(); - } - } catch (NumberFormatException ignored) - { - } - - setIntValue(defaultValue); - return defaultValue; - } - - public boolean getBooleanValue() - { - String value = getValue(); - if (value != null && (value.equalsIgnoreCase("true") || value.equalsIgnoreCase("yes"))) - { - return true; - } else if (value != null && (value.equalsIgnoreCase("false") || value.equalsIgnoreCase("no"))) - { - return false; - } - - throw new NumberFormatException(qualifiedname + ".value=" + value); - } - - public void setBooleanValue(boolean b) - { - setValue(Boolean.toString(b)); - } - - public boolean getBooleanValue(boolean defaultValue) - { - try - { - if (value != null) - { - return getBooleanValue(); - } - } catch (NumberFormatException ignored) - { - } - - setBooleanValue(defaultValue); - return defaultValue; - } - - public int getHexValue() - { - return (int) Long.parseLong(getValue().replace("0x", ""), 16); - } - - public void setHexValue(int i) - { - setValue("0x" + Long.toString(((long) i) << 32 >>> 32, 16)); - } - - public int getHexValue(int defaultValue) - { - try - { - if (value != null) - { - return getHexValue(); - } - } catch (NumberFormatException ignored) - { - } - - setHexValue(defaultValue); - return defaultValue; - } - - public T get(IConfigType type) - { - try - { - return type.valueOf(getValue()); - } catch (Exception e) - { - throw new RuntimeException(e); - } - } - - public T get(IConfigType type, T defaultValue) - { - try - { - if (value != null) - { - return get(type); - } - } catch (Exception ignored) - { - } - - set(type, defaultValue); - return defaultValue; - } - - public void save(PrintWriter writer, int tabs, String bracequalifier, boolean first) - { - String vname; - if (qualifiedname.contains(".") && bracequalifier.length() > 0) - { - vname = qualifiedname.substring(bracequalifier.length() + 1); - } else - { - vname = qualifiedname; - } - - if (newline && !first) - { - ConfigFile.writeLine(writer, "", tabs); - } - - writeComment(writer, tabs); - if (value != null) - { - ConfigFile.writeLine(writer, vname + "=" + value, tabs); - } - - if (!hasChildTags()) - { - return; - } - - if (brace) - { - if (value == null) - { - ConfigFile.writeLine(writer, vname, tabs); - } - ConfigFile.writeLine(writer, "{", tabs); - saveTagTree(writer, tabs + 1, qualifiedname); - ConfigFile.writeLine(writer, "}", tabs); - } else - { - saveTagTree(writer, tabs, bracequalifier); - } - } - - @Override - public ConfigTag setComment(String comment) - { - super.setComment(comment); - return this; - } - - @Override - public ConfigTag setSortMode(int mode) - { - super.setSortMode(mode); - return this; - } - - public ConfigTag setNewLine(boolean b) - { - newline = b; - saveConfig(); - return this; - } - - public ConfigTag useBraces() - { - brace = true; - if (parent.newlinemode == 1) - { - newline = true; - } - - saveConfig(); - return this; - } - - public ConfigTag setPosition(int pos) - { - position = pos; - saveConfig(); - return this; - } - - public boolean containsTag(String tagname) - { - return getTag(tagname, false) != null; - } - - public int getId(String name, int defaultValue) - { - return getTag(name).getIntValue(defaultValue); - } - - public int getId(String name) - { - int ret = getId(name, IDBase); - IDBase = ret + 1; - return ret; - } - - public int getAcheivementId(String name, int defaultValue) - { - return getTag(name).getIntValue(defaultValue); - } - - public ConfigTag setBaseID(int i) - { - IDBase = i; - return this; - } - - public interface IConfigType - { - public String configValue(T entry); - - public T valueOf(String text) throws Exception; - } -} diff --git a/src/main/java/codechicken/lib/config/ConfigTagParent.java b/src/main/java/codechicken/lib/config/ConfigTagParent.java deleted file mode 100644 index 2e1bbfcc..00000000 --- a/src/main/java/codechicken/lib/config/ConfigTagParent.java +++ /dev/null @@ -1,264 +0,0 @@ -package codechicken.lib.config; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.*; -import java.util.Map.Entry; - -public abstract class ConfigTagParent -{ - public String comment; - /** - * 0 = name, 1 = value - */ - public int sortMode = 0; - /** - * The mode for determining when child tags should leave a blank line between them and the one above - * 0 = never, 1 = when braced, 2 = always - */ - public int newlinemode = 1; - private TreeMap childtags = new TreeMap(); - - public abstract void saveConfig(); - - public abstract String getNameQualifier(); - - public ConfigTagParent setComment(String comment) - { - this.comment = comment; - saveConfig(); - return this; - } - - public ConfigTagParent setSortMode(int mode) - { - sortMode = mode; - saveConfig(); - return this; - } - - public ConfigTagParent setNewLineMode(int mode) - { - newlinemode = mode; - for (Entry entry : childtags.entrySet()) - { - ConfigTag tag = entry.getValue(); - if (newlinemode == 0) - { - tag.newline = false; - } else if (newlinemode == 1) - { - tag.newline = tag.brace; - } else if (newlinemode == 2) - { - tag.newline = true; - } - } - saveConfig(); - return this; - } - - public Map childTagMap() - { - return childtags; - } - - public boolean hasChildTags() - { - return !childtags.isEmpty(); - } - - public boolean containsTag(String tagname) - { - return getTag(tagname, false) != null; - } - - public ConfigTag getNewTag(String tagname) - { - return new ConfigTag(this, tagname); - } - - public ConfigTag getTag(String tagname, boolean create) - { - int dotpos = tagname.indexOf("."); - String basetagname = dotpos == -1 ? tagname : tagname.substring(0, dotpos); - ConfigTag basetag = childtags.get(basetagname); - if (basetag == null) - { - if (!create) - { - return null; - } - - basetag = getNewTag(basetagname); - saveConfig(); - } - if (dotpos == -1) - { - return basetag; - } - - return basetag.getTag(tagname.substring(dotpos + 1), create); - } - - public ConfigTag getTag(String tagname) - { - return getTag(tagname, true); - } - - public boolean removeTag(String tagname) - { - ConfigTag tag = getTag(tagname, false); - if (tag == null) - { - return false; - } - - int dotpos = tagname.lastIndexOf("."); - String lastpart = dotpos == -1 ? tagname : tagname.substring(dotpos + 1, tagname.length()); - if (tag.parent != null) - { - boolean ret = tag.parent.childtags.remove(lastpart) != null; - if (ret) - { - saveConfig(); - } - return ret; - } - - return false; - } - - public void addChild(ConfigTag tag) - { - childtags.put(tag.name, tag); - } - - @SuppressWarnings("unchecked") - public ArrayList getSortedTagList() - { - ArrayList taglist = new ArrayList(childtags.size()); - for (Entry tag : childtags.entrySet()) - taglist.add((T) tag.getValue()); - - Collections.sort(taglist, new TagOrderComparator(sortMode)); - return taglist; - } - - public void loadChildren(BufferedReader reader) - { - String comment = ""; - String bracequalifier = ""; - try - { - while (true) - { - String line = ConfigFile.readLine(reader); - if (line == null) - { - break; - } - if (line.startsWith("#")) - { - if (comment.equals("")) - { - comment = line.substring(1); - } else - { - comment = comment + "\n" + line.substring(1); - } - } else if (line.contains("=")) - { - String qualifiedname = line.substring(0, line.indexOf("=")); - getTag(qualifiedname) - .onLoaded() - .setComment(comment) - .setValue(line.substring(line.indexOf("=") + 1)); - comment = ""; - bracequalifier = qualifiedname; - } else if (line.equals("{")) - { - getTag(bracequalifier).setComment(comment).useBraces().loadChildren(reader); - comment = ""; - bracequalifier = ""; - } else if (line.equals("}")) - { - break; - } else - { - bracequalifier = line; - } - } - } catch (IOException e) - { - throw new RuntimeException(e); - } - } - - public void saveTagTree(PrintWriter writer, int tabs, String bracequalifier) - { - boolean first = true; - for (ConfigTag tag : getSortedTagList()) - { - tag.save(writer, tabs, bracequalifier, first); - first = false; - } - } - - public void writeComment(PrintWriter writer, int tabs) - { - if (comment != null && !comment.equals("")) - { - String[] comments = comment.split("\n"); - for (int i = 0; i < comments.length; i++) - ConfigFile.writeLine(writer, "#" + comments[i], tabs); - } - } - - public static class TagOrderComparator implements Comparator - { - int sortMode; - - public TagOrderComparator(int sortMode) - { - this.sortMode = sortMode; - } - - public int compare(ConfigTag o1, ConfigTag o2) - { - if (o1.position != o2.position) - { - return compareInt(o1.position, o2.position); - } - if (o1.brace != o2.brace) - { - return o1.brace ? 1 : -1;//braced one goes after - } - switch (sortMode) - { - case 1: - if (o1.value.equals(o2.value)) - { - return 0; - } - if (o1.value == null) - { - return 1; - } - if (o2.value == null) - { - return -1; - } - return o1.value.compareTo(o2.value); - default: - return o1.name.compareTo(o2.name); - } - } - - private int compareInt(int a, int b) - { - return a == b ? 0 : a < b ? -1 : 1; - } - } -} diff --git a/src/main/java/codechicken/lib/config/DefaultingConfigFile.java b/src/main/java/codechicken/lib/config/DefaultingConfigFile.java deleted file mode 100644 index 075794b2..00000000 --- a/src/main/java/codechicken/lib/config/DefaultingConfigFile.java +++ /dev/null @@ -1,24 +0,0 @@ -package codechicken.lib.config; - -import java.io.File; - -public class DefaultingConfigFile extends ConfigFile -{ - public DefaultingConfigFile(File file) - { - super(); - if (file.exists()) - { - load(file); - } - } - - @Override - public void saveConfig() - { - if (file != null) - { - super.saveConfig(); - } - } -} diff --git a/src/main/java/codechicken/lib/config/SimpleProperties.java b/src/main/java/codechicken/lib/config/SimpleProperties.java deleted file mode 100644 index 5e273be4..00000000 --- a/src/main/java/codechicken/lib/config/SimpleProperties.java +++ /dev/null @@ -1,158 +0,0 @@ -package codechicken.lib.config; - -import java.io.*; -import java.nio.charset.Charset; -import java.util.HashMap; -import java.util.Map.Entry; - -public class SimpleProperties -{ - public HashMap propertyMap = new HashMap(); - public File propertyFile; - public boolean saveOnChange = false; - public String encoding; - - private boolean loading = false; - - public SimpleProperties(File file, boolean saveOnChange, String encoding) - { - propertyFile = file; - this.saveOnChange = saveOnChange; - this.encoding = encoding; - } - - public SimpleProperties(File file, boolean saveOnChange) - { - this(file, saveOnChange, Charset.defaultCharset().name()); - } - - public SimpleProperties(File file) - { - this(file, true); - } - - public void load() - { - clear(); - loading = true; - - try - { - BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(propertyFile), encoding)); - while (true) - { - String read = reader.readLine(); - if (read == null) - { - break; - } - - int equalIndex = read.indexOf('='); - if (equalIndex == -1) - { - continue; - } - - setProperty(read.substring(0, equalIndex), read.substring(equalIndex + 1)); - } - reader.close(); - } catch (Exception e) - { - throw new RuntimeException(e); - } - loading = false; - } - - public void save() - { - try - { - PrintStream writer = new PrintStream(propertyFile); - - for (Entry entry : propertyMap.entrySet()) - { - writer.println(entry.getKey() + "=" + entry.getValue()); - } - - writer.close(); - } catch (Exception e) - { - throw new RuntimeException(e); - } - } - - public void clear() - { - propertyMap.clear(); - } - - public boolean hasProperty(String key) - { - return propertyMap.containsKey(key); - } - - public void removeProperty(String key) - { - if (propertyMap.remove(key) != null && saveOnChange && !loading) - { - save(); - } - } - - public void setProperty(String key, int value) - { - setProperty(key, Integer.toString(value)); - } - - public void setProperty(String key, boolean value) - { - setProperty(key, Boolean.toString(value)); - } - - public void setProperty(String key, String value) - { - propertyMap.put(key, value); - if (saveOnChange && !loading) - { - save(); - } - } - - public int getProperty(String property, int defaultvalue) - { - try - { - return Integer.parseInt(getProperty(property, Integer.toString(defaultvalue))); - } catch (NumberFormatException nfe) - { - return defaultvalue; - } - } - - public boolean getProperty(String property, boolean defaultvalue) - { - try - { - return Boolean.parseBoolean(getProperty(property, Boolean.toString(defaultvalue))); - } catch (NumberFormatException nfe) - { - return defaultvalue; - } - } - - public String getProperty(String property, String defaultvalue) - { - String value = propertyMap.get(property); - if (value == null) - { - setProperty(property, defaultvalue); - return defaultvalue; - } - return value; - } - - public String getProperty(String property) - { - return propertyMap.get(property); - } -} diff --git a/src/main/java/codechicken/lib/lighting/LC.java b/src/main/java/codechicken/lib/lighting/LC.java deleted file mode 100644 index 4d054fd1..00000000 --- a/src/main/java/codechicken/lib/lighting/LC.java +++ /dev/null @@ -1,102 +0,0 @@ -package codechicken.lib.lighting; - -import codechicken.lib.render.CCModel; -import codechicken.lib.util.Copyable; -import codechicken.lib.vec.Rotation; -import codechicken.lib.vec.Vector3; - -public class LC implements Copyable -{ - public int side; - public float fa; - public float fb; - public float fc; - public float fd; - - public LC() - { - this(0, 0, 0, 0, 0); - } - - public LC(int s, float a, float b, float c, float d) - { - side = s; - fa = a; - fb = b; - fc = c; - fd = d; - } - - public LC set(int s, float a, float b, float c, float d) - { - side = s; - fa = a; - fb = b; - fc = c; - fd = d; - return this; - } - - public LC set(LC lc) - { - return set(lc.side, lc.fa, lc.fb, lc.fc, lc.fd); - } - - public LC compute(Vector3 vec, Vector3 normal) - { - int side = CCModel.findSide(normal); - if (side < 0) - { - return set(12, 1, 0, 0, 0); - } - return compute(vec, side); - } - - public LC compute(Vector3 vec, int side) - { - boolean offset = false; - switch (side) - { - case 0: - offset = vec.y <= 0; - break; - case 1: - offset = vec.y >= 1; - break; - case 2: - offset = vec.z <= 0; - break; - case 3: - offset = vec.z >= 1; - break; - case 4: - offset = vec.x <= 0; - break; - case 5: - offset = vec.x >= 1; - break; - } - if (!offset) - { - side += 6; - } - return computeO(vec, side); - } - - public LC computeO(Vector3 vec, int side) - { - Vector3 v1 = Rotation.axes[((side & 0xE) + 3) % 6]; - Vector3 v2 = Rotation.axes[((side & 0xE) + 5) % 6]; - float d1 = (float) vec.scalarProject(v1); - float d2 = 1 - d1; - float d3 = (float) vec.scalarProject(v2); - float d4 = 1 - d3; - return set(side, d2 * d4, d2 * d3, d1 * d4, d1 * d3); - } - - @Override - public LC copy() - { - return new LC(side, fa, fb, fc, fd); - } -} \ No newline at end of file diff --git a/src/main/java/codechicken/lib/lighting/LightMatrix.java b/src/main/java/codechicken/lib/lighting/LightMatrix.java deleted file mode 100644 index fff9dcc5..00000000 --- a/src/main/java/codechicken/lib/lighting/LightMatrix.java +++ /dev/null @@ -1,188 +0,0 @@ -package codechicken.lib.lighting; - -import codechicken.lib.colour.ColourRGBA; -import codechicken.lib.render.CCRenderState; -import codechicken.lib.vec.BlockCoord; -import net.minecraft.block.Block; -import net.minecraft.client.Minecraft; -import net.minecraft.world.IBlockAccess; - -/** - * Note that when using the class as a vertex transformer, the vertices are assumed to be within the BB (x, y, z) -> (x+1, y+1, z+1) - */ -public class LightMatrix implements CCRenderState.IVertexOperation -{ - public static final int operationIndex = CCRenderState.registerOperation(); - /** - * The 9 positions in the sample array for each side, sides >= 6 are centered on sample 13 (the block itself) - */ - public static final int[][] ssamplem = new int[][]{ - {0, 1, 2, 3, 4, 5, 6, 7, 8}, - {18, 19, 20, 21, 22, 23, 24, 25, 26}, - {0, 9, 18, 1, 10, 19, 2, 11, 20}, - {6, 15, 24, 7, 16, 25, 8, 17, 26}, - {0, 3, 6, 9, 12, 15, 18, 21, 24}, - {2, 5, 8, 11, 14, 17, 20, 23, 26}, - {9, 10, 11, 12, 13, 14, 15, 16, 17}, - {9, 10, 11, 12, 13, 14, 15, 16, 17}, - {3, 12, 21, 4, 13, 22, 5, 14, 23}, - {3, 12, 21, 4, 13, 22, 5, 14, 23}, - {1, 4, 7, 10, 13, 16, 19, 22, 25}, - {1, 4, 7, 10, 13, 16, 19, 22, 25}, - {13, 13, 13, 13, 13, 13, 13, 13, 13}}; - public static final int[][] qsamplem = new int[][]{//the positions in the side sample array for each corner - {0, 1, 3, 4}, - {5, 1, 2, 4}, - {6, 7, 3, 4}, - {5, 7, 8, 4}}; - public static final float[] sideao = new float[]{ - 0.5F, 1F, 0.8F, 0.8F, 0.6F, 0.6F, - 0.5F, 1F, 0.8F, 0.8F, 0.6F, 0.6F, - 1F}; - public int computed = 0; - public float[][] ao = new float[13][4]; - public int[][] brightness = new int[13][4]; - public IBlockAccess access; - public BlockCoord pos = new BlockCoord(); - private int sampled = 0; - private float[] aSamples = new float[27]; - private int[] bSamples = new int[27]; - - /*static - { - int[][] os = new int[][]{ - {0,-1,0}, - {0, 1,0}, - {0,0,-1}, - {0,0, 1}, - {-1,0,0}, - { 1,0,0}}; - - for(int s = 0; s < 12; s++) - { - int[] d0 = s < 6 ? new int[]{os[s][0]+1, os[s][1]+1, os[s][2]+1} : new int[]{1, 1, 1}; - int[] d1 = os[((s&0xE)+3)%6]; - int[] d2 = os[((s&0xE)+5)%6]; - for(int a = -1; a <= 1; a++) - for(int b = -1; b <= 1; b++) - ssamplem[s][(a+1)*3+b+1] = (d0[1]+d1[1]*a+d2[1]*b)*9+(d0[2]+d1[2]*a+d2[2]*b)*3+(d0[0]+d1[0]*a+d2[0]*b); - } - System.out.println(Arrays.deepToString(ssamplem)); - }*/ - - public static float interpAO(float a, float b, float c, float d) - { - return (a + b + c + d) / 4F; - } - - public static int interpBrightness(int a, int b, int c, int d) - { - if (a == 0) - { - a = d; - } - if (b == 0) - { - b = d; - } - if (c == 0) - { - c = d; - } - return (a + b + c + d) >> 2 & 0xFF00FF; - } - - public void locate(IBlockAccess a, int x, int y, int z) - { - access = a; - pos.set(x, y, z); - computed = 0; - sampled = 0; - } - - public void sample(int i) - { - if ((sampled & 1 << i) == 0) - { - int x = pos.x + (i % 3) - 1; - int y = pos.y + (i / 9) - 1; - int z = pos.z + (i / 3 % 3) - 1; - Block b = access.getBlock(x, y, z); - bSamples[i] = access.getLightBrightnessForSkyBlocks(x, y, z, b.getLightValue(access, x, y, z)); - aSamples[i] = b.getAmbientOcclusionLightValue(); - sampled |= 1 << i; - } - } - - public int[] brightness(int side) - { - sideSample(side); - return brightness[side]; - } - - public float[] ao(int side) - { - sideSample(side); - return ao[side]; - } - - public void sideSample(int side) - { - if ((computed & 1 << side) == 0) - { - int[] ssample = ssamplem[side]; - for (int q = 0; q < 4; q++) - { - int[] qsample = qsamplem[q]; - if (Minecraft.isAmbientOcclusionEnabled()) - { - interp(side, q, ssample[qsample[0]], ssample[qsample[1]], ssample[qsample[2]], ssample[qsample[3]]); - } else - { - interp(side, q, ssample[4], ssample[4], ssample[4], ssample[4]); - } - } - computed |= 1 << side; - } - } - - private void interp(int s, int q, int a, int b, int c, int d) - { - sample(a); - sample(b); - sample(c); - sample(d); - ao[s][q] = interpAO(aSamples[a], aSamples[b], aSamples[c], aSamples[d]) * sideao[s]; - brightness[s][q] = interpBrightness(bSamples[a], bSamples[b], bSamples[c], bSamples[d]); - } - - @Override - public boolean load() - { - if (!CCRenderState.computeLighting) - { - return false; - } - - CCRenderState.pipeline.addDependency(CCRenderState.colourAttrib); - CCRenderState.pipeline.addDependency(CCRenderState.lightCoordAttrib); - return true; - } - - @Override - public void operate() - { - LC lc = CCRenderState.lc; - float[] a = ao(lc.side); - float f = (a[0] * lc.fa + a[1] * lc.fb + a[2] * lc.fc + a[3] * lc.fd); - int[] b = brightness(lc.side); - CCRenderState.setColour(ColourRGBA.multiplyC(CCRenderState.colour, f)); - CCRenderState.setBrightness((int) (b[0] * lc.fa + b[1] * lc.fb + b[2] * lc.fc + b[3] * lc.fd) & 0xFF00FF); - } - - @Override - public int operationID() - { - return operationIndex; - } -} \ No newline at end of file diff --git a/src/main/java/codechicken/lib/lighting/LightModel.java b/src/main/java/codechicken/lib/lighting/LightModel.java deleted file mode 100644 index d21bb5cc..00000000 --- a/src/main/java/codechicken/lib/lighting/LightModel.java +++ /dev/null @@ -1,129 +0,0 @@ -package codechicken.lib.lighting; - -import codechicken.lib.render.CCRenderState; -import codechicken.lib.vec.Rotation; -import codechicken.lib.vec.Vector3; - -public class LightModel implements CCRenderState.IVertexOperation -{ - public static final int operationIndex = CCRenderState.registerOperation(); - public static LightModel standardLightModel; - - static - { - standardLightModel = new LightModel() - .setAmbient(new Vector3(0.4, 0.4, 0.4)) - .addLight(new Light(new Vector3(0.2, 1, -0.7)) - .setDiffuse(new Vector3(0.6, 0.6, 0.6))) - .addLight(new Light(new Vector3(-0.2, 1, 0.7)) - .setDiffuse(new Vector3(0.6, 0.6, 0.6))); - } - - private Vector3 ambient = new Vector3(); - private Light[] lights = new Light[8]; - private int lightCount; - - public LightModel addLight(Light light) - { - lights[lightCount++] = light; - return this; - } - - public LightModel setAmbient(Vector3 vec) - { - ambient.set(vec); - return this; - } - - /** - * @param colour The pre-lighting vertex colour. RGBA format - * @param normal The normal at the vertex - * @return The lighting applied colour - */ - public int apply(int colour, Vector3 normal) - { - Vector3 n_colour = ambient.copy(); - for (int l = 0; l < lightCount; l++) - { - Light light = lights[l]; - double n_l = light.position.dotProduct(normal); - double f = n_l > 0 ? 1 : 0; - n_colour.x += light.ambient.x + f * light.diffuse.x * n_l; - n_colour.y += light.ambient.y + f * light.diffuse.y * n_l; - n_colour.z += light.ambient.z + f * light.diffuse.z * n_l; - } - - if (n_colour.x > 1) - { - n_colour.x = 1; - } - if (n_colour.y > 1) - { - n_colour.y = 1; - } - if (n_colour.z > 1) - { - n_colour.z = 1; - } - - n_colour.multiply((colour >>> 24) / 255D, (colour >> 16 & 0xFF) / 255D, (colour >> 8 & 0xFF) / 255D); - return (int) (n_colour.x * 255) << 24 | (int) (n_colour.y * 255) << 16 | (int) (n_colour.z * 255) << 8 | colour & 0xFF; - } - - @Override - public boolean load() - { - if (!CCRenderState.computeLighting) - { - return false; - } - - CCRenderState.pipeline.addDependency(CCRenderState.normalAttrib); - CCRenderState.pipeline.addDependency(CCRenderState.colourAttrib); - return true; - } - - @Override - public void operate() - { - CCRenderState.setColour(apply(CCRenderState.colour, CCRenderState.normal)); - } - - @Override - public int operationID() - { - return operationIndex; - } - - public PlanarLightModel reducePlanar() - { - int[] colours = new int[6]; - for (int i = 0; i < 6; i++) - colours[i] = apply(-1, Rotation.axes[i]); - return new PlanarLightModel(colours); - } - - public static class Light - { - public Vector3 ambient = new Vector3(); - public Vector3 diffuse = new Vector3(); - public Vector3 position; - - public Light(Vector3 pos) - { - position = pos.copy().normalize(); - } - - public Light setDiffuse(Vector3 vec) - { - diffuse.set(vec); - return this; - } - - public Light setAmbient(Vector3 vec) - { - ambient.set(vec); - return this; - } - } -} diff --git a/src/main/java/codechicken/lib/lighting/PlanarLightMatrix.java b/src/main/java/codechicken/lib/lighting/PlanarLightMatrix.java deleted file mode 100644 index 37713417..00000000 --- a/src/main/java/codechicken/lib/lighting/PlanarLightMatrix.java +++ /dev/null @@ -1,61 +0,0 @@ -package codechicken.lib.lighting; - -import codechicken.lib.render.CCRenderState; -import codechicken.lib.vec.BlockCoord; -import net.minecraft.block.Block; -import net.minecraft.world.IBlockAccess; - -public class PlanarLightMatrix extends PlanarLightModel -{ - public static final int operationIndex = CCRenderState.registerOperation(); - public static PlanarLightMatrix instance = new PlanarLightMatrix(); - - public IBlockAccess access; - public BlockCoord pos = new BlockCoord(); - public int[] brightness = new int[6]; - private int sampled = 0; - - public PlanarLightMatrix() - { - super(PlanarLightModel.standardLightModel.colours); - } - - public PlanarLightMatrix locate(IBlockAccess a, int x, int y, int z) - { - access = a; - pos.set(x, y, z); - sampled = 0; - return this; - } - - public int brightness(int side) - { - if ((sampled & 1 << side) == 0) - { - Block b = access.getBlock(pos.x, pos.y, pos.z); - brightness[side] = access.getLightBrightnessForSkyBlocks(pos.x, pos.y, pos.z, b.getLightValue(access, pos.x, pos.y, pos.z)); - sampled |= 1 << side; - } - return brightness[side]; - } - - @Override - public boolean load() - { - CCRenderState.pipeline.addDependency(CCRenderState.sideAttrib); - return true; - } - - @Override - public void operate() - { - super.operate(); - CCRenderState.setBrightness(brightness(CCRenderState.side)); - } - - @Override - public int operationID() - { - return operationIndex; - } -} diff --git a/src/main/java/codechicken/lib/lighting/PlanarLightModel.java b/src/main/java/codechicken/lib/lighting/PlanarLightModel.java deleted file mode 100644 index b88bf8b3..00000000 --- a/src/main/java/codechicken/lib/lighting/PlanarLightModel.java +++ /dev/null @@ -1,44 +0,0 @@ -package codechicken.lib.lighting; - -import codechicken.lib.colour.ColourRGBA; -import codechicken.lib.render.CCRenderState; - -/** - * Faster precomputed version of LightModel that only works for axis planar sides - */ -public class PlanarLightModel implements CCRenderState.IVertexOperation -{ - public static PlanarLightModel standardLightModel = LightModel.standardLightModel.reducePlanar(); - - public int[] colours; - - public PlanarLightModel(int[] colours) - { - this.colours = colours; - } - - @Override - public boolean load() - { - if (!CCRenderState.computeLighting) - { - return false; - } - - CCRenderState.pipeline.addDependency(CCRenderState.sideAttrib); - CCRenderState.pipeline.addDependency(CCRenderState.colourAttrib); - return true; - } - - @Override - public void operate() - { - CCRenderState.setColour(ColourRGBA.multiply(CCRenderState.colour, colours[CCRenderState.side])); - } - - @Override - public int operationID() - { - return LightModel.operationIndex; - } -} diff --git a/src/main/java/codechicken/lib/lighting/SimpleBrightnessModel.java b/src/main/java/codechicken/lib/lighting/SimpleBrightnessModel.java deleted file mode 100644 index 41e23789..00000000 --- a/src/main/java/codechicken/lib/lighting/SimpleBrightnessModel.java +++ /dev/null @@ -1,60 +0,0 @@ -package codechicken.lib.lighting; - -import codechicken.lib.render.CCRenderState; -import codechicken.lib.vec.BlockCoord; -import net.minecraft.block.Block; -import net.minecraft.world.IBlockAccess; - -/** - * Faster precomputed version of LightModel that only works for axis planar sides - */ -public class SimpleBrightnessModel implements CCRenderState.IVertexOperation -{ - public static final int operationIndex = CCRenderState.registerOperation(); - public static SimpleBrightnessModel instance = new SimpleBrightnessModel(); - - public IBlockAccess access; - public BlockCoord pos = new BlockCoord(); - - private int sampled = 0; - private int[] samples = new int[6]; - private BlockCoord c = new BlockCoord(); - - public void locate(IBlockAccess a, int x, int y, int z) - { - access = a; - pos.set(x, y, z); - sampled = 0; - } - - public int sample(int side) - { - if ((sampled & 1 << side) == 0) - { - c.set(pos).offset(side); - Block block = access.getBlock(c.x, c.y, c.z); - samples[side] = access.getLightBrightnessForSkyBlocks(c.x, c.y, c.z, block.getLightValue(access, c.x, c.y, c.z)); - sampled |= 1 << side; - } - return samples[side]; - } - - @Override - public boolean load() - { - CCRenderState.pipeline.addDependency(CCRenderState.sideAttrib); - return true; - } - - @Override - public void operate() - { - CCRenderState.setBrightness(sample(CCRenderState.side)); - } - - @Override - public int operationID() - { - return operationIndex; - } -} diff --git a/src/main/java/codechicken/lib/math/MathHelper.java b/src/main/java/codechicken/lib/math/MathHelper.java deleted file mode 100644 index 1be291d7..00000000 --- a/src/main/java/codechicken/lib/math/MathHelper.java +++ /dev/null @@ -1,186 +0,0 @@ -package codechicken.lib.math; - -public class MathHelper -{ - public static final double phi = 1.618033988749894; - public static final double pi = Math.PI; - public static final double todeg = 57.29577951308232; - public static final double torad = 0.017453292519943; - public static final double sqrt2 = 1.414213562373095; - - public static double[] SIN_TABLE = new double[65536]; - - static - { - for (int i = 0; i < 65536; ++i) - SIN_TABLE[i] = Math.sin(i / 65536D * 2 * Math.PI); - - SIN_TABLE[0] = 0; - SIN_TABLE[16384] = 1; - SIN_TABLE[32768] = 0; - SIN_TABLE[49152] = 1; - } - - public static double sin(double d) - { - return SIN_TABLE[(int) ((float) d * 10430.378F) & 65535]; - } - - public static double cos(double d) - { - return SIN_TABLE[(int) ((float) d * 10430.378F + 16384.0F) & 65535]; - } - - /** - * @param a The value - * @param b The value to approach - * @param max The maximum step - * @return the closed value to b no less than max from a - */ - public static float approachLinear(float a, float b, float max) - { - return (a > b) ? - (a - b < max ? b : a - max) : - (b - a < max ? b : a + max); - } - - /** - * @param a The value - * @param b The value to approach - * @param max The maximum step - * @return the closed value to b no less than max from a - */ - public static double approachLinear(double a, double b, double max) - { - return (a > b) ? - (a - b < max ? b : a - max) : - (b - a < max ? b : a + max); - } - - /** - * @param a The first value - * @param b The second value - * @param d The interpolation factor, between 0 and 1 - * @return a+(b-a)*d - */ - public static float interpolate(float a, float b, float d) - { - return a + (b - a) * d; - } - - /** - * @param a The first value - * @param b The second value - * @param d The interpolation factor, between 0 and 1 - * @return a+(b-a)*d - */ - public static double interpolate(double a, double b, double d) - { - return a + (b - a) * d; - } - - /** - * @param a The value - * @param b The value to approach - * @param ratio The ratio to reduce the difference by - * @return a+(b-a)*ratio - */ - public static double approachExp(double a, double b, double ratio) - { - return a + (b - a) * ratio; - } - - /** - * @param a The value - * @param b The value to approach - * @param ratio The ratio to reduce the difference by - * @param cap The maximum amount to advance by - * @return a+(b-a)*ratio - */ - public static double approachExp(double a, double b, double ratio, double cap) - { - double d = (b - a) * ratio; - if (Math.abs(d) > cap) - { - d = Math.signum(d) * cap; - } - return a + d; - } - - /** - * @param a The value - * @param b The value to approach - * @param ratio The ratio to reduce the difference by - * @param c The value to retreat from - * @param kick The difference when a == c - * @return - */ - public static double retreatExp(double a, double b, double c, double ratio, double kick) - { - double d = (Math.abs(c - a) + kick) * ratio; - if (d > Math.abs(b - a)) - { - return b; - } - return a + Math.signum(b - a) * d; - } - - /** - * @param value The value - * @param min The min value - * @param max The max value - * @return The clipped value between min and max - */ - public static double clip(double value, double min, double max) - { - if (value > max) - { - value = max; - } - if (value < min) - { - value = min; - } - return value; - } - - /** - * @return a <= x <= b - */ - public static boolean between(double a, double x, double b) - { - return a <= x && x <= b; - } - - public static int approachExpI(int a, int b, double ratio) - { - int r = (int) Math.round(approachExp(a, b, ratio)); - return r == a ? b : r; - } - - public static int retreatExpI(int a, int b, int c, double ratio, int kick) - { - int r = (int) Math.round(retreatExp(a, b, c, ratio, kick)); - return r == a ? b : r; - } - - public static int floor_double(double d) - { - return net.minecraft.util.MathHelper.floor_double(d); - } - - public static int roundAway(double d) - { - return (int) (d < 0 ? Math.floor(d) : Math.ceil(d)); - } - - public static int compare(int a, int b) - { - return a == b ? 0 : a < b ? -1 : 1; - } - - public static int compare(double a, double b) - { - return a == b ? 0 : a < b ? -1 : 1; - } -} diff --git a/src/main/java/codechicken/lib/render/BlockRenderer.java b/src/main/java/codechicken/lib/render/BlockRenderer.java deleted file mode 100644 index 7012b3b2..00000000 --- a/src/main/java/codechicken/lib/render/BlockRenderer.java +++ /dev/null @@ -1,213 +0,0 @@ -package codechicken.lib.render; - -import codechicken.lib.lighting.LC; -import codechicken.lib.render.CCRenderState.VertexAttribute; -import codechicken.lib.vec.Cuboid6; - -public class BlockRenderer -{ - public static FullBlock fullBlock = new FullBlock(); - private static BlockFace face = new BlockFace(); - - public static void renderFullBlock(int sideMask) - { - CCRenderState.setModel(fullBlock); - renderFaces(sideMask); - } - - /** - * Renders faces of a block-like model based on a sideMask. Eg for side 2, verts 8-11 will be rendered - * - * @param sideMask A mask of faces not to render - */ - public static void renderFaces(int sideMask) - { - if (sideMask == 0x3F) return; - for (int s = 0; s < 6; s++) - if ((sideMask & 1 << s) == 0) - { - CCRenderState.setVertexRange(s * 4, (s + 1) * 4); - CCRenderState.render(); - } - } - - /** - * Renders faces of a cuboid with texture coordinates mapped to match a standard minecraft block - * - * @param bounds The bounding cuboid to render - * @param sideMask A mask of faces not to render - */ - public static void renderCuboid(Cuboid6 bounds, int sideMask) - { - if (sideMask == 0x3F) return; - - CCRenderState.setModel(face); - for (int s = 0; s < 6; s++) - if ((sideMask & 1 << s) == 0) - { - face.loadCuboidFace(bounds, s); - CCRenderState.render(); - } - } - - public static class BlockFace implements CCRenderState.IVertexSource - { - public Vertex5[] verts = new Vertex5[]{new Vertex5(), new Vertex5(), new Vertex5(), new Vertex5()}; - public LC[] lightCoords = new LC[]{new LC(), new LC(), new LC(), new LC()}; - public boolean lcComputed = false; - public int side; - - @Override - public Vertex5[] getVertices() - { - return verts; - } - - @SuppressWarnings("unchecked") - @Override - public T getAttributes(CCRenderState.VertexAttribute attr) - { - return attr == CCRenderState.lightCoordAttrib && lcComputed ? (T) lightCoords : null; - } - - @Override - public boolean hasAttribute(CCRenderState.VertexAttribute attr) - { - return attr == CCRenderState.sideAttrib || attr == CCRenderState.lightCoordAttrib && lcComputed; - } - - @Override - public void prepareVertex() - { - CCRenderState.side = side; - } - - public BlockFace computeLightCoords() - { - if (!lcComputed) - { - for (int i = 0; i < 4; i++) - lightCoords[i].compute(verts[i].vec, side); - lcComputed = true; - } - return this; - } - - public BlockFace loadCuboidFace(Cuboid6 c, int side) - { - double x1 = c.min.x; - double x2 = c.max.x; - double y1 = c.min.y; - double y2 = c.max.y; - double z1 = c.min.z; - double z2 = c.max.z; - double u1; - double u2; - double v1; - double v2; - this.side = side; - lcComputed = false; - - switch (side) - { - case 0: - u1 = x1; - v1 = z1; - u2 = x2; - v2 = z2; - verts[0].set(x1, y1, z2, u1, v2, 0); - verts[1].set(x1, y1, z1, u1, v1, 0); - verts[2].set(x2, y1, z1, u2, v1, 0); - verts[3].set(x2, y1, z2, u2, v2, 0); - break; - case 1: - u1 = x1; - v1 = z1; - u2 = x2; - v2 = z2; - verts[0].set(x2, y2, z2, u2, v2, 1); - verts[1].set(x2, y2, z1, u2, v1, 1); - verts[2].set(x1, y2, z1, u1, v1, 1); - verts[3].set(x1, y2, z2, u1, v2, 1); - break; - case 2: - u1 = 1 - x1; - v1 = 1 - y2; - u2 = 1 - x2; - v2 = 1 - y1; - verts[0].set(x1, y1, z1, u1, v2, 2); - verts[1].set(x1, y2, z1, u1, v1, 2); - verts[2].set(x2, y2, z1, u2, v1, 2); - verts[3].set(x2, y1, z1, u2, v2, 2); - break; - case 3: - u1 = x1; - v1 = 1 - y2; - u2 = x2; - v2 = 1 - y1; - verts[0].set(x2, y1, z2, u2, v2, 3); - verts[1].set(x2, y2, z2, u2, v1, 3); - verts[2].set(x1, y2, z2, u1, v1, 3); - verts[3].set(x1, y1, z2, u1, v2, 3); - break; - case 4: - u1 = z1; - v1 = 1 - y2; - u2 = z2; - v2 = 1 - y1; - verts[0].set(x1, y1, z2, u2, v2, 4); - verts[1].set(x1, y2, z2, u2, v1, 4); - verts[2].set(x1, y2, z1, u1, v1, 4); - verts[3].set(x1, y1, z1, u1, v2, 4); - break; - case 5: - u1 = 1 - z1; - v1 = 1 - y2; - u2 = 1 - z2; - v2 = 1 - y1; - verts[0].set(x2, y1, z1, u1, v2, 5); - verts[1].set(x2, y2, z1, u1, v1, 5); - verts[2].set(x2, y2, z2, u2, v1, 5); - verts[3].set(x2, y1, z2, u2, v2, 5); - } - return this; - } - } - - public static class FullBlock implements CCRenderState.IVertexSource - { - public Vertex5[] verts = CCModel.quadModel(24).generateBlock(0, Cuboid6.full).verts; - public LC[] lightCoords = new LC[24]; - - public FullBlock() - { - for (int i = 0; i < 24; i++) - lightCoords[i] = new LC().compute(verts[i].vec, i / 4); - } - - @Override - public Vertex5[] getVertices() - { - return verts; - } - - @SuppressWarnings("unchecked") - @Override - public T getAttributes(VertexAttribute attr) - { - return attr == CCRenderState.lightCoordAttrib ? (T) lightCoords : null; - } - - @Override - public boolean hasAttribute(VertexAttribute attr) - { - return attr == CCRenderState.sideAttrib || attr == CCRenderState.lightCoordAttrib; - } - - @Override - public void prepareVertex() - { - CCRenderState.side = CCRenderState.vertexIndex >> 2; - } - } -} diff --git a/src/main/java/codechicken/lib/render/CCModel.java b/src/main/java/codechicken/lib/render/CCModel.java deleted file mode 100644 index cc7970a4..00000000 --- a/src/main/java/codechicken/lib/render/CCModel.java +++ /dev/null @@ -1,1195 +0,0 @@ -package codechicken.lib.render; - - -import codechicken.lib.lighting.LC; -import codechicken.lib.lighting.LightModel; -import codechicken.lib.render.uv.UV; -import codechicken.lib.render.uv.UVTransformation; -import codechicken.lib.render.uv.UVTranslation; -import codechicken.lib.util.Copyable; -import codechicken.lib.vec.*; -import net.minecraft.client.Minecraft; -import net.minecraft.util.ResourceLocation; - -import java.io.*; -import java.util.*; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import static codechicken.lib.vec.Rotation.sideRotations; - -public class CCModel implements CCRenderState.IVertexSource, Copyable -{ - private static class PositionNormalEntry - { - public Vector3 pos; - public LinkedList normals = new LinkedList(); - - public PositionNormalEntry(Vector3 position) - { - pos = position; - } - - public boolean positionEqual(Vector3 v) - { - return pos.x == v.x && pos.y == v.y && pos.z == v.z; - } - - public PositionNormalEntry addNormal(Vector3 normal) - { - normals.add(normal); - return this; - } - } - - public final int vertexMode; - public final int vp; - public Vertex5[] verts; - public ArrayList attributes = new ArrayList(); - - protected CCModel(int vertexMode) - { - if (vertexMode != 7 && vertexMode != 4) - { - throw new IllegalArgumentException("Models must be GL_QUADS or GL_TRIANGLES"); - } - - this.vertexMode = vertexMode; - vp = vertexMode == 7 ? 4 : 3; - } - - public Vector3[] normals() - { - return getAttributes(CCRenderState.normalAttrib); - } - - @Override - public Vertex5[] getVertices() - { - return verts; - } - - @SuppressWarnings("unchecked") - @Override - public T getAttributes(CCRenderState.VertexAttribute attr) - { - if (attr.attributeIndex < attributes.size()) - { - return (T) attributes.get(attr.attributeIndex); - } - - return null; - } - - @Override - public boolean hasAttribute(CCRenderState.VertexAttribute attrib) - { - return attrib.attributeIndex < attributes.size() && attributes.get(attrib.attributeIndex) != null; - } - - @Override - public void prepareVertex() - { - } - - public T getOrAllocate(CCRenderState.VertexAttribute attrib) - { - T array = getAttributes(attrib); - if (array == null) - { - while (attributes.size() <= attrib.attributeIndex) - attributes.add(null); - attributes.set(attrib.attributeIndex, array = attrib.newArray(verts.length)); - } - return array; - } - - /** - * Each pixel corresponds to one unit of position when generating the model - * - * @param i Vertex index to start generating at - * @param x1 The minX bound of the box - * @param y1 The minY bound of the box - * @param z1 The minZ bound of the box - * @param w The width of the box - * @param h The height of the box - * @param d The depth of the box - * @param tx The distance of the top left corner of the texture map from the left in pixels - * @param ty The distance of the top left corner of the texture map from the top in pixels - * @param tw The width of the texture in pixels - * @param th The height of the texture in pixels - * @param f The scale of the model, pixels per block, normally 16 - * @return The generated model - */ - public CCModel generateBox(int i, double x1, double y1, double z1, double w, double h, double d, double tx, double ty, double tw, double th, double f) - { - double u1, v1, u2, v2; - double x2 = x1 + w; - double y2 = y1 + h; - double z2 = z1 + d; - x1 /= f; - x2 /= f; - y1 /= f; - y2 /= f; - z1 /= f; - z2 /= f; - - //bottom face - u1 = (tx + d + w) / tw; - v1 = (ty + d) / th; - u2 = (tx + d * 2 + w) / tw; - v2 = ty / th; - verts[i++] = new Vertex5(x1, y1, z2, u1, v2); - verts[i++] = new Vertex5(x1, y1, z1, u1, v1); - verts[i++] = new Vertex5(x2, y1, z1, u2, v1); - verts[i++] = new Vertex5(x2, y1, z2, u2, v2); - - //top face - u1 = (tx + d) / tw; - v1 = (ty + d) / th; - u2 = (tx + d + w) / tw; - v2 = ty / th; - verts[i++] = new Vertex5(x2, y2, z2, u2, v2); - verts[i++] = new Vertex5(x2, y2, z1, u2, v1); - verts[i++] = new Vertex5(x1, y2, z1, u1, v1); - verts[i++] = new Vertex5(x1, y2, z2, u1, v2); - - //front face - u1 = (tx + d + w) / tw; - v1 = (ty + d) / th; - u2 = (tx + d) / tw; - v2 = (ty + d + h) / th; - verts[i++] = new Vertex5(x1, y2, z1, u2, v1); - verts[i++] = new Vertex5(x2, y2, z1, u1, v1); - verts[i++] = new Vertex5(x2, y1, z1, u1, v2); - verts[i++] = new Vertex5(x1, y1, z1, u2, v2); - - //back face - u1 = (tx + d * 2 + w * 2) / tw; - v1 = (ty + d) / th; - u2 = (tx + d * 2 + w) / tw; - v2 = (ty + d + h) / th; - verts[i++] = new Vertex5(x1, y2, z2, u1, v1); - verts[i++] = new Vertex5(x1, y1, z2, u1, v2); - verts[i++] = new Vertex5(x2, y1, z2, u2, v2); - verts[i++] = new Vertex5(x2, y2, z2, u2, v1); - - //left face - u1 = (tx + d) / tw; - v1 = (ty + d) / th; - u2 = (tx) / tw; - v2 = (ty + d + h) / th; - verts[i++] = new Vertex5(x1, y2, z2, u2, v1); - verts[i++] = new Vertex5(x1, y2, z1, u1, v1); - verts[i++] = new Vertex5(x1, y1, z1, u1, v2); - verts[i++] = new Vertex5(x1, y1, z2, u2, v2); - - //right face - u1 = (tx + d * 2 + w) / tw; - v1 = (ty + d) / th; - u2 = (tx + d + w) / tw; - v2 = (ty + d + h) / th; - verts[i++] = new Vertex5(x2, y1, z2, u1, v2); - verts[i++] = new Vertex5(x2, y1, z1, u2, v2); - verts[i++] = new Vertex5(x2, y2, z1, u2, v1); - verts[i++] = new Vertex5(x2, y2, z2, u1, v1); - - return this; - } - - /** - * Generates a box, uv mapped to be the same as a minecraft block with the same bounds - * - * @param i The vertex index to start generating at - * @param bounds The bounds of the block, 0 to 1 - * @return The generated model. When rendering an icon will need to be supplied for the UV transformation. - */ - public CCModel generateBlock(int i, Cuboid6 bounds) - { - return generateBlock(i, bounds, 0); - } - - public CCModel generateBlock(int i, Cuboid6 bounds, int mask) - { - return generateBlock(i, bounds.min.x, bounds.min.y, bounds.min.z, bounds.max.x, bounds.max.y, bounds.max.z, mask); - } - - public CCModel generateBlock(int i, double x1, double y1, double z1, double x2, double y2, double z2) - { - return generateBlock(i, x1, y1, z1, x2, y2, z2, 0); - } - - /** - * Generates a box, uv mapped to be the same as a minecraft block with the same bounds - * - * @param i The vertex index to start generating at - * @param x1 minX - * @param y1 minY - * @param z1 minZ - * @param x2 maxX - * @param y2 maxY - * @param z2 maxZ - * @param mask A bitmask of sides NOT to generate. I high bit at index s means side s will not be generated - * @return The generated model. When rendering an icon will need to be supplied for the UV transformation. - */ - public CCModel generateBlock(int i, double x1, double y1, double z1, double x2, double y2, double z2, int mask) - { - double u1, v1, u2, v2; - - if ((mask & 1) == 0) - {//bottom face - u1 = x1; - v1 = z1; - u2 = x2; - v2 = z2; - verts[i++] = new Vertex5(x1, y1, z2, u1, v2, 0); - verts[i++] = new Vertex5(x1, y1, z1, u1, v1, 0); - verts[i++] = new Vertex5(x2, y1, z1, u2, v1, 0); - verts[i++] = new Vertex5(x2, y1, z2, u2, v2, 0); - } - - if ((mask & 2) == 0) - {//top face - u1 = x1; - v1 = z1; - u2 = x2; - v2 = z2; - verts[i++] = new Vertex5(x2, y2, z2, u2, v2, 1); - verts[i++] = new Vertex5(x2, y2, z1, u2, v1, 1); - verts[i++] = new Vertex5(x1, y2, z1, u1, v1, 1); - verts[i++] = new Vertex5(x1, y2, z2, u1, v2, 1); - } - - if ((mask & 4) == 0) - {//east face - u1 = 1 - x1; - v1 = 1 - y2; - u2 = 1 - x2; - v2 = 1 - y1; - verts[i++] = new Vertex5(x1, y1, z1, u1, v2, 2); - verts[i++] = new Vertex5(x1, y2, z1, u1, v1, 2); - verts[i++] = new Vertex5(x2, y2, z1, u2, v1, 2); - verts[i++] = new Vertex5(x2, y1, z1, u2, v2, 2); - } - - if ((mask & 8) == 0) - {//west face - u1 = x1; - v1 = 1 - y2; - u2 = x2; - v2 = 1 - y1; - verts[i++] = new Vertex5(x2, y1, z2, u2, v2, 3); - verts[i++] = new Vertex5(x2, y2, z2, u2, v1, 3); - verts[i++] = new Vertex5(x1, y2, z2, u1, v1, 3); - verts[i++] = new Vertex5(x1, y1, z2, u1, v2, 3); - } - - if ((mask & 0x10) == 0) - {//north face - u1 = z1; - v1 = 1 - y2; - u2 = z2; - v2 = 1 - y1; - verts[i++] = new Vertex5(x1, y1, z2, u2, v2, 4); - verts[i++] = new Vertex5(x1, y2, z2, u2, v1, 4); - verts[i++] = new Vertex5(x1, y2, z1, u1, v1, 4); - verts[i++] = new Vertex5(x1, y1, z1, u1, v2, 4); - } - - if ((mask & 0x20) == 0) - {//south face - u1 = 1 - z1; - v1 = 1 - y2; - u2 = 1 - z2; - v2 = 1 - y1; - verts[i++] = new Vertex5(x2, y1, z1, u1, v2, 5); - verts[i++] = new Vertex5(x2, y2, z1, u1, v1, 5); - verts[i++] = new Vertex5(x2, y2, z2, u2, v1, 5); - verts[i++] = new Vertex5(x2, y1, z2, u2, v2, 5); - } - - return this; - } - - public CCModel computeNormals() - { - return computeNormals(0, verts.length); - } - - /** - * Computes the normals of all faces in the model. - * Uses the cross product of the vectors along 2 sides of the face - * - * @param start The first vertex to generate normals for - * @param length The number of vertices to generate normals for. Note this must be a multiple of 3 for triangles or 4 for quads - * @return The model - */ - public CCModel computeNormals(int start, int length) - { - if (length % vp != 0 || start % vp != 0) - { - throw new IllegalArgumentException("Cannot generate normals across polygons"); - } - - Vector3[] normals = getOrAllocate(CCRenderState.normalAttrib); - for (int k = 0; k < length; k += vp) - { - int i = k + start; - Vector3 diff1 = verts[i + 1].vec.copy().subtract(verts[i].vec); - Vector3 diff2 = verts[i + vp - 1].vec.copy().subtract(verts[i].vec); - normals[i] = diff1.crossProduct(diff2).normalize(); - for (int d = 1; d < vp; d++) - normals[i + d] = normals[i].copy(); - } - - return this; - } - - /** - * Computes lighting using the normals add a light model - * If the model is rotated, the lighting will no longer be valid - * - * @return The model - */ - public CCModel computeLighting(LightModel light) - { - Vector3[] normals = normals(); - int[] colours = getAttributes(CCRenderState.lightingAttrib); - if (colours == null) - { - colours = getOrAllocate(CCRenderState.lightingAttrib); - Arrays.fill(colours, -1); - } - for (int k = 0; k < verts.length; k++) - colours[k] = light.apply(colours[k], normals[k]); - return this; - } - - public CCModel setColour(int c) - { - int[] colours = getOrAllocate(CCRenderState.colourAttrib); - Arrays.fill(colours, c); - return this; - } - - /** - * Computes the minecraft lighting coordinates for use with a LightMatrix - * - * @return The model - */ - public CCModel computeLightCoords() - { - LC[] lcs = getOrAllocate(CCRenderState.lightCoordAttrib); - Vector3[] normals = normals(); - for (int i = 0; i < verts.length; i++) - lcs[i] = new LC().compute(verts[i].vec, normals[i]); - return this; - } - - /** - * Averages all normals at the same position to produce a smooth lighting effect. - * - * @return The model - */ - public CCModel smoothNormals() - { - ArrayList map = new ArrayList(); - Vector3[] normals = normals(); - nextvert: - for (int k = 0; k < verts.length; k++) - { - Vector3 vec = verts[k].vec; - for (PositionNormalEntry e : map) - if (e.positionEqual(vec)) - { - e.addNormal(normals[k]); - continue nextvert; - } - - map.add(new PositionNormalEntry(vec).addNormal(normals[k])); - } - - for (PositionNormalEntry e : map) - { - if (e.normals.size() <= 1) - { - continue; - } - - Vector3 new_n = new Vector3(); - for (Vector3 n : e.normals) - new_n.add(n); - - new_n.normalize(); - for (Vector3 n : e.normals) - n.set(new_n); - } - - return this; - } - - public CCModel apply(Transformation t) - { - for (int k = 0; k < verts.length; k++) - verts[k].apply(t); - - Vector3[] normals = normals(); - if (normals != null) - { - for (int k = 0; k < normals.length; k++) - t.applyN(normals[k]); - } - - return this; - } - - public CCModel apply(UVTransformation uvt) - { - for (int k = 0; k < verts.length; k++) - verts[k].apply(uvt); - - return this; - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - public CCModel expand(int extraVerts) - { - int newLen = verts.length + extraVerts; - verts = Arrays.copyOf(verts, newLen); - for (int i = 0; i < attributes.size(); i++) - if (attributes.get(i) != null) - { - attributes.set(i, CCRenderState.copyOf((CCRenderState.VertexAttribute) CCRenderState.getAttribute(i), attributes.get(i), newLen)); - } - - return this; - } - - public void render(double x, double y, double z, double u, double v) - { - render(new Vector3(x, y, z).translation(), new UVTranslation(u, v)); - } - - public void render(double x, double y, double z, UVTransformation u) - { - render(new Vector3(x, y, z).translation(), u); - } - - public void render(Transformation t, double u, double v) - { - render(t, new UVTranslation(u, v)); - } - - public void render(CCRenderState.IVertexOperation... ops) - { - render(0, verts.length, ops); - } - - /** - * Renders vertices start through start+length-1 of the model - * - * @param start The first vertex index to render - * @param end The vertex index to render until - * @param ops Operations to apply - */ - public void render(int start, int end, CCRenderState.IVertexOperation... ops) - { - CCRenderState.setPipeline(this, start, end, ops); - CCRenderState.render(); - } - - public static CCModel quadModel(int numVerts) - { - return newModel(7, numVerts); - } - - public static CCModel triModel(int numVerts) - { - return newModel(4, numVerts); - } - - public static CCModel newModel(int vertexMode, int numVerts) - { - CCModel model = newModel(vertexMode); - model.verts = new Vertex5[numVerts]; - return model; - } - - public static CCModel newModel(int vertexMode) - { - return new CCModel(vertexMode); - } - - public static double[] parseDoubles(String s, String token) - { - String[] as = s.split(token); - double[] values = new double[as.length]; - for (int i = 0; i < as.length; i++) - values[i] = Double.parseDouble(as[i]); - return values; - } - - public static void illegalAssert(boolean b, String err) - { - if (!b) throw new IllegalArgumentException(err); - } - - public static void assertMatch(Matcher m, String s) - { - m.reset(s); - illegalAssert(m.matches(), "Malformed line: " + s); - } - - private static final Pattern vertPattern = Pattern.compile("v(?: ([\\d\\.+-]+))+"); - private static final Pattern uvwPattern = Pattern.compile("vt(?: ([\\d\\.+-]+))+"); - private static final Pattern normalPattern = Pattern.compile("vn(?: ([\\d\\.+-]+))+"); - private static final Pattern polyPattern = Pattern.compile("f(?: ((?:\\d*)(?:/\\d*)?(?:/\\d*)?))+"); - public static final Matcher vertMatcher = vertPattern.matcher(""); - public static final Matcher uvwMatcher = uvwPattern.matcher(""); - public static final Matcher normalMatcher = normalPattern.matcher(""); - public static final Matcher polyMatcher = polyPattern.matcher(""); - - /** - * Parses vertices, texture coords, normals and polygons from a WaveFront Obj file - * - * @param input An input stream to a obj file - * @param vertexMode The vertex mode to create the model for (GL_TRIANGLES or GL_QUADS) - * @param coordSystem The cooridnate system transformation to apply - * @return A map of group names to models - * @throws IOException - */ - public static Map parseObjModels(InputStream input, int vertexMode, Transformation coordSystem) throws IOException - { - if (coordSystem == null) - { - coordSystem = new RedundantTransformation(); - } - int vp = vertexMode == 7 ? 4 : 3; - - HashMap modelMap = new HashMap(); - ArrayList verts = new ArrayList(); - ArrayList uvs = new ArrayList(); - ArrayList normals = new ArrayList(); - ArrayList polys = new ArrayList(); - String modelName = "unnamed"; - - BufferedReader reader = new BufferedReader(new InputStreamReader(input)); - - String line; - while ((line = reader.readLine()) != null) - { - line = line.replaceAll("\\s+", " ").trim(); - if (line.startsWith("#") || line.length() == 0) - { - continue; - } - - if (line.startsWith("v ")) - { - assertMatch(vertMatcher, line); - double[] values = parseDoubles(line.substring(2), " "); - illegalAssert(values.length >= 3, "Vertices must have x, y and z components"); - Vector3 vert = new Vector3(values[0], values[1], values[2]); - coordSystem.apply(vert); - verts.add(vert); - continue; - } - if (line.startsWith("vt ")) - { - assertMatch(uvwMatcher, line); - double[] values = parseDoubles(line.substring(3), " "); - illegalAssert(values.length >= 2, "Tex Coords must have u, and v components"); - uvs.add(new Vector3(values[0], 1 - values[1], 0)); - continue; - } - if (line.startsWith("vn ")) - { - assertMatch(normalMatcher, line); - double[] values = parseDoubles(line.substring(3), " "); - illegalAssert(values.length >= 3, "Normals must have x, y and z components"); - Vector3 norm = new Vector3(values[0], values[1], values[2]).normalize(); - coordSystem.applyN(norm); - normals.add(norm); - continue; - } - if (line.startsWith("f ")) - { - assertMatch(polyMatcher, line); - String[] av = line.substring(2).split(" "); - illegalAssert(av.length >= 3, "Polygons must have at least 3 vertices"); - int[][] polyVerts = new int[av.length][3]; - for (int i = 0; i < av.length; i++) - { - String[] as = av[i].split("/"); - for (int p = 0; p < as.length; p++) - if (as[p].length() > 0) - { - polyVerts[i][p] = Integer.parseInt(as[p]); - } - } - if (vp == 3) - { - triangulate(polys, polyVerts); - } else - { - quadulate(polys, polyVerts); - } - } - if (line.startsWith("g ")) - { - if (!polys.isEmpty()) - { - modelMap.put(modelName, createModel(verts, uvs, normals, vertexMode, polys)); - polys.clear(); - } - modelName = line.substring(2); - } - } - - if (!polys.isEmpty()) - { - modelMap.put(modelName, createModel(verts, uvs, normals, vertexMode, polys)); - } - - return modelMap; - } - - public static void triangulate(List polys, int[][] polyVerts) - { - for (int i = 2; i < polyVerts.length; i++) - { - polys.add(polyVerts[0]); - polys.add(polyVerts[i]); - polys.add(polyVerts[i - 1]); - } - } - - public static void quadulate(List polys, int[][] polyVerts) - { - if (polyVerts.length == 4) - { - polys.add(polyVerts[0]); - polys.add(polyVerts[3]); - polys.add(polyVerts[2]); - polys.add(polyVerts[1]); - } else - { - for (int i = 2; i < polyVerts.length; i++) - { - polys.add(polyVerts[0]); - polys.add(polyVerts[i]); - polys.add(polyVerts[i - 1]); - polys.add(polyVerts[i - 1]); - } - } - } - - /** - * Parses vertices, texture coords, normals and polygons from a WaveFront Obj file - * - * @param res The resource for the obj file - * @return A map of group names to models - */ - public static Map parseObjModels(ResourceLocation res) - { - return parseObjModels(res, 4, null); - } - - /** - * Parses vertices, texture coords, normals and polygons from a WaveFront Obj file - * - * @param res The resource for the obj file - * @param coordSystem The cooridnate system transformation to apply - * @return A map of group names to models - */ - public static Map parseObjModels(ResourceLocation res, Transformation coordSystem) - { - try - { - return parseObjModels( - Minecraft.getMinecraft().getResourceManager().getResource(res).getInputStream(), - 4, coordSystem); - } catch (IOException e) - { - throw new RuntimeException("failed to load model: " + res, e); - } - } - - /** - * Parses vertices, texture coords, normals and polygons from a WaveFront Obj file - * - * @param res The resource for the obj file - * @param vertexMode The vertex mode to create the model for (GL_TRIANGLES or GL_QUADS) - * @param coordSystem The cooridnate system transformation to apply - * @return A map of group names to models - */ - public static Map parseObjModels(ResourceLocation res, int vertexMode, Transformation coordSystem) - { - try - { - return parseObjModels( - Minecraft.getMinecraft().getResourceManager().getResource(res).getInputStream(), - vertexMode, coordSystem); - } catch (Exception e) - { - throw new RuntimeException("failed to load model: " + res, e); - } - } - - public static CCModel createModel(List verts, List uvs, List normals, int vertexMode, List polys) - { - int vp = vertexMode == 7 ? 4 : 3; - if (polys.size() < vp || polys.size() % vp != 0) - { - throw new IllegalArgumentException("Invalid number of vertices for model: " + polys.size()); - } - - boolean hasNormals = polys.get(0)[2] > 0; - CCModel model = CCModel.newModel(vertexMode, polys.size()); - if (hasNormals) - { - model.getOrAllocate(CCRenderState.normalAttrib); - } - - for (int i = 0; i < polys.size(); i++) - { - int[] ai = polys.get(i); - Vector3 vert = verts.get(ai[0] - 1).copy(); - Vector3 uv = ai[1] <= 0 ? new Vector3() : uvs.get(ai[1] - 1).copy(); - if (ai[2] > 0 != hasNormals) - { - throw new IllegalArgumentException("Normals are an all or nothing deal here."); - } - - model.verts[i] = new Vertex5(vert, uv.x, uv.y); - if (hasNormals) - { - model.normals()[i] = normals.get(ai[2] - 1).copy(); - } - } - - return model; - } - - private static int addIndex(List list, T elem) - { - int i = list.indexOf(elem) + 1; - if (i == 0) - { - list.add(elem); - i = list.size(); - } - return i; - } - - private static String clean(double d) - { - return d == (int) d ? Integer.toString((int) d) : Double.toString(d); - } - - public static void exportObj(Map models, PrintWriter p) - { - List verts = new ArrayList(); - List uvs = new ArrayList(); - List normals = new ArrayList(); - List polys = new ArrayList(); - for (Map.Entry e : models.entrySet()) - { - p.println("g " + e.getKey()); - CCModel m = e.getValue(); - - int vStart = verts.size(); - int uStart = uvs.size(); - int nStart = normals.size(); - boolean hasNormals = m.normals() != null; - polys.clear(); - - for (int i = 0; i < m.verts.length; i++) - { - int[] ia = new int[hasNormals ? 3 : 2]; - ia[0] = addIndex(verts, m.verts[i].vec); - ia[1] = addIndex(uvs, m.verts[i].uv); - if (hasNormals) - { - ia[2] = addIndex(normals, m.normals()[i]); - } - polys.add(ia); - } - - if (vStart < verts.size()) - { - p.println(); - for (int i = vStart; i < verts.size(); i++) - { - Vector3 v = verts.get(i); - p.format("v %s %s %s\n", clean(v.x), clean(v.y), clean(v.z)); - } - } - if (uStart < uvs.size()) - { - p.println(); - for (int i = uStart; i < uvs.size(); i++) - { - UV uv = uvs.get(i); - p.format("vt %s %s\n", clean(uv.u), clean(uv.v)); - } - } - if (nStart < normals.size()) - { - p.println(); - for (int i = nStart; i < normals.size(); i++) - { - Vector3 n = normals.get(i); - p.format("vn %s %s %s\n", clean(n.x), clean(n.y), clean(n.z)); - } - } - - p.println(); - for (int i = 0; i < polys.size(); i++) - { - if (i % m.vp == 0) - { - p.format("f"); - } - int[] ia = polys.get(i); - if (hasNormals) - { - p.format(" %d/%d/%d", ia[0], ia[1], ia[2]); - } else - { - p.format(" %d/%d", ia[0], ia[1]); - } - if (i % m.vp == m.vp - 1) - { - p.println(); - } - } - } - } - - /** - * Brings the UV coordinates of each face closer to the center UV by d. - * Useful for fixing texture seams - */ - public CCModel shrinkUVs(double d) - { - for (int k = 0; k < verts.length; k += vp) - { - UV uv = new UV(); - for (int i = 0; i < vp; i++) - { - uv.add(verts[k + i].uv); - } - uv.multiply(1D / vp); - for (int i = 0; i < vp; i++) - { - Vertex5 vert = verts[k + i]; - vert.uv.u += vert.uv.u < uv.u ? d : -d; - vert.uv.v += vert.uv.v < uv.v ? d : -d; - } - } - return this; - } - - /** - * @param side1 The side of this model - * @param side2 The side of the new model - * @param point The point to rotate around - * @return A copy of this model rotated to the appropriate side - */ - public CCModel sidedCopy(int side1, int side2, Vector3 point) - { - return copy().apply(new TransformationList(sideRotations[side1].inverse(), sideRotations[side2]).at(point)); - } - - /** - * Copies length vertices and normals - */ - public static void copy(CCModel src, int srcpos, CCModel dst, int destpos, int length) - { - for (int k = 0; k < length; k++) - dst.verts[destpos + k] = src.verts[srcpos + k].copy(); - - for (int i = 0; i < src.attributes.size(); i++) - if (src.attributes.get(i) != null) - { - CCRenderState.arrayCopy(src.attributes.get(i), srcpos, dst.getOrAllocate(CCRenderState.getAttribute(i)), destpos, length); - } - } - - /** - * Generate models rotated to the other 5 sides of the block - * - * @param models An array of 6 models - * @param side The side of this model - * @param point The rotation point - */ - public static void generateSidedModels(CCModel[] models, int side, Vector3 point) - { - for (int s = 0; s < 6; s++) - { - if (s == side) - { - continue; - } - - models[s] = models[side].sidedCopy(side, s, point); - } - } - - /** - * Generate models rotated to the other 3 horizontal of the block - * - * @param models An array of 4 models - * @param side The side of this model - * @param point The rotation point - */ - public static void generateSidedModelsH(CCModel[] models, int side, Vector3 point) - { - for (int s = 2; s < 6; s++) - { - if (s == side) - { - continue; - } - - models[s] = models[side].sidedCopy(side, s, point); - } - } - - public CCModel backfacedCopy() - { - return generateBackface(this, 0, copy(), 0, verts.length); - } - - /** - * Generates copies of faces with clockwise vertices - * - * @return The model - */ - public static CCModel generateBackface(CCModel src, int srcpos, CCModel dst, int destpos, int length) - { - int vp = src.vp; - if (srcpos % vp != 0 || destpos % vp != 0 || length % vp != 0) - { - throw new IllegalArgumentException("Vertices do not align with polygons"); - } - - int[][] o = new int[][]{{0, 0}, {1, vp - 1}, {2, vp - 2}, {3, vp - 3}}; - for (int i = 0; i < length; i++) - { - int b = (i / vp) * vp; - int d = i % vp; - int di = destpos + b + o[d][1]; - int si = srcpos + b + o[d][0]; - dst.verts[di] = src.verts[si].copy(); - for (int a = 0; a < src.attributes.size(); a++) - if (src.attributes.get(a) != null) - { - CCRenderState.arrayCopy(src.attributes.get(a), si, dst.getOrAllocate(CCRenderState.getAttribute(a)), di, 1); - } - - if (dst.normals() != null && dst.normals()[di] != null) - { - dst.normals()[di].negate(); - } - } - return dst; - } - - /** - * Generates sided copies of vertices into this model. - * Assumes that your model has been generated at vertex side*(numVerts/6) - */ - public CCModel generateSidedParts(int side, Vector3 point) - { - if (verts.length % (6 * vp) != 0) - { - throw new IllegalArgumentException("Invalid number of vertices for sided part generation"); - } - int length = verts.length / 6; - - for (int s = 0; s < 6; s++) - { - if (s == side) - { - continue; - } - - generateSidedPart(side, s, point, length * side, length * s, length); - } - - return this; - } - - /** - * Generates sided copies of vertices into this model. - * Assumes that your model has been generated at vertex side*(numVerts/4) - */ - public CCModel generateSidedPartsH(int side, Vector3 point) - { - if (verts.length % (4 * vp) != 0) - { - throw new IllegalArgumentException("Invalid number of vertices for sided part generation"); - } - int length = verts.length / 4; - - for (int s = 2; s < 6; s++) - { - if (s == side) - { - continue; - } - - generateSidedPart(side, s, point, length * (side - 2), length * (s - 2), length); - } - - return this; - } - - /** - * Generates a sided copy of verts into this model - */ - public CCModel generateSidedPart(int side1, int side2, Vector3 point, int srcpos, int destpos, int length) - { - return apply(new TransformationList(sideRotations[side1].inverse(), sideRotations[side2]).at(point), srcpos, destpos, length); - } - - /** - * Generates a rotated copy of verts into this model - */ - public CCModel apply(Transformation t, int srcpos, int destpos, int length) - { - for (int k = 0; k < length; k++) - { - verts[destpos + k] = verts[srcpos + k].copy(); - verts[destpos + k].vec.apply(t); - } - - Vector3[] normals = normals(); - if (normals != null) - { - for (int k = 0; k < length; k++) - { - normals[destpos + k] = normals[srcpos + k].copy(); - t.applyN(normals[destpos + k]); - } - } - - return this; - } - - public static CCModel combine(Collection models) - { - if (models.isEmpty()) - { - return null; - } - - int numVerts = 0; - int vertexMode = -1; - for (CCModel model : models) - { - if (vertexMode == -1) - { - vertexMode = model.vertexMode; - } - if (vertexMode != model.vertexMode) - { - throw new IllegalArgumentException("Cannot combine models with different vertex modes"); - } - - numVerts += model.verts.length; - } - - CCModel c_model = newModel(vertexMode, numVerts); - int i = 0; - for (CCModel model : models) - { - copy(model, 0, c_model, i, model.verts.length); - i += model.verts.length; - } - - return c_model; - } - - public CCModel twoFacedCopy() - { - CCModel model = newModel(vertexMode, verts.length * 2); - copy(this, 0, model, 0, verts.length); - return generateBackface(model, 0, model, verts.length, verts.length); - } - - public CCModel copy() - { - CCModel model = newModel(vertexMode, verts.length); - copy(this, 0, model, 0, verts.length); - return model; - } - - /** - * @return The average of all vertices, for bones. - */ - public Vector3 collapse() - { - Vector3 v = new Vector3(); - for (Vertex5 vert : verts) - v.add(vert.vec); - v.multiply(1 / (double) verts.length); - return v; - } - - public CCModel zOffset(Cuboid6 offsets) - { - for (int k = 0; k < verts.length; k++) - { - Vertex5 vert = verts[k]; - Vector3 normal = normals()[k]; - switch (findSide(normal)) - { - case 0: - vert.vec.y += offsets.min.y; - break; - case 1: - vert.vec.y += offsets.max.y; - break; - case 2: - vert.vec.z += offsets.min.z; - break; - case 3: - vert.vec.z += offsets.max.z; - break; - case 4: - vert.vec.x += offsets.min.x; - break; - case 5: - vert.vec.x += offsets.max.x; - break; - } - } - return this; - } - - public static int findSide(Vector3 normal) - { - if (normal.y <= -0.99) return 0; - if (normal.y >= 0.99) return 1; - if (normal.z <= -0.99) return 2; - if (normal.z >= 0.99) return 3; - if (normal.x <= -0.99) return 4; - if (normal.x >= 0.99) return 5; - return -1; - } - - /** - * @return A Cuboid6 containing all the verts in this model - */ - public Cuboid6 bounds() - { - Vector3 vec1 = verts[0].vec; - Cuboid6 c = new Cuboid6(vec1.copy(), vec1.copy()); - for (int i = 1; i < verts.length; i++) - c.enclose(verts[i].vec); - return c; - } -} diff --git a/src/main/java/codechicken/lib/render/CCModelLibrary.java b/src/main/java/codechicken/lib/render/CCModelLibrary.java deleted file mode 100644 index a5bdce96..00000000 --- a/src/main/java/codechicken/lib/render/CCModelLibrary.java +++ /dev/null @@ -1,89 +0,0 @@ -package codechicken.lib.render; - -import codechicken.lib.vec.*; - -import static codechicken.lib.math.MathHelper.phi; - -public class CCModelLibrary -{ - public static CCModel icosahedron4; - public static CCModel icosahedron7; - - private static int i; - - static - { - generateIcosahedron(); - } - - private static void generateIcosahedron() - { - Vector3[] verts = new Vector3[12]; - - verts[0] = new Vector3(-1, phi, 0); - verts[1] = new Vector3(1, phi, 0); - verts[2] = new Vector3(1, -phi, 0); - verts[3] = new Vector3(-1, -phi, 0); - - verts[4] = new Vector3(0, -1, phi); - verts[5] = new Vector3(0, 1, phi); - verts[6] = new Vector3(0, 1, -phi); - verts[7] = new Vector3(0, -1, -phi); - - verts[8] = new Vector3(phi, 0, -1); - verts[9] = new Vector3(phi, 0, 1); - verts[10] = new Vector3(-phi, 0, 1); - verts[11] = new Vector3(-phi, 0, -1); - - Quat quat = Quat.aroundAxis(0, 0, 1, Math.atan(1 / phi)); - for (Vector3 vec : verts) - quat.rotate(vec); - - icosahedron4 = CCModel.newModel(4, 60); - icosahedron7 = CCModel.newModel(7, 80); - - i = 0; - //top - addIcosahedronTriangle(verts[1], 0.5, 0, verts[0], 0, 0.25, verts[5], 1, 0.25); - addIcosahedronTriangle(verts[1], 0.5, 0, verts[5], 0, 0.25, verts[9], 1, 0.25); - addIcosahedronTriangle(verts[1], 0.5, 0, verts[9], 0, 0.25, verts[8], 1, 0.25); - addIcosahedronTriangle(verts[1], 0.5, 0, verts[8], 0, 0.25, verts[6], 1, 0.25); - addIcosahedronTriangle(verts[1], 0.5, 0, verts[6], 0, 0.25, verts[0], 1, 0.25); - //centre 1vert top - addIcosahedronTriangle(verts[0], 0.5, 0.25, verts[11], 0, 0.75, verts[10], 1, 0.75); - addIcosahedronTriangle(verts[5], 0.5, 0.25, verts[10], 0, 0.75, verts[4], 1, 0.75); - addIcosahedronTriangle(verts[9], 0.5, 0.25, verts[4], 0, 0.75, verts[2], 1, 0.75); - addIcosahedronTriangle(verts[8], 0.5, 0.25, verts[2], 0, 0.75, verts[7], 1, 0.75); - addIcosahedronTriangle(verts[6], 0.5, 0.25, verts[7], 0, 0.75, verts[11], 1, 0.75); - //centre 1vert bottom - addIcosahedronTriangle(verts[2], 0.5, 0.75, verts[8], 0, 0.25, verts[9], 1, 0.25); - addIcosahedronTriangle(verts[7], 0.5, 0.75, verts[6], 0, 0.25, verts[8], 1, 0.25); - addIcosahedronTriangle(verts[11], 0.5, 0.75, verts[0], 0, 0.25, verts[6], 1, 0.25); - addIcosahedronTriangle(verts[10], 0.5, 0.75, verts[5], 0, 0.25, verts[0], 1, 0.25); - addIcosahedronTriangle(verts[4], 0.5, 0.75, verts[9], 0, 0.25, verts[5], 1, 0.25); - //bottom - addIcosahedronTriangle(verts[3], 0.5, 1, verts[2], 0, 0.75, verts[4], 1, 0.75); - addIcosahedronTriangle(verts[3], 0.5, 1, verts[7], 0, 0.75, verts[2], 1, 0.75); - addIcosahedronTriangle(verts[3], 0.5, 1, verts[11], 0, 0.75, verts[7], 1, 0.75); - addIcosahedronTriangle(verts[3], 0.5, 1, verts[10], 0, 0.75, verts[11], 1, 0.75); - addIcosahedronTriangle(verts[3], 0.5, 1, verts[4], 0, 0.75, verts[10], 1, 0.75); - - icosahedron4.computeNormals().smoothNormals(); - icosahedron7.computeNormals().smoothNormals(); - } - - private static void addIcosahedronTriangle(Vector3 vec1, double u1, double v1, - Vector3 vec2, double u2, double v2, - Vector3 vec3, double u3, double v3) - { - icosahedron4.verts[i * 3] = icosahedron7.verts[i * 4] = new Vertex5(vec1, u1, v1); - icosahedron4.verts[i * 3 + 1] = icosahedron7.verts[i * 4 + 1] = new Vertex5(vec2, u2, v2); - icosahedron4.verts[i * 3 + 2] = icosahedron7.verts[i * 4 + 2] = icosahedron7.verts[i * 4 + 3] = new Vertex5(vec3, u3, v3); - i++; - } - - public static Matrix4 getRenderMatrix(Vector3 position, Rotation rotation, double scale) - { - return new Matrix4().translate(position).apply(new Scale(scale)).apply(rotation); - } -} diff --git a/src/main/java/codechicken/lib/render/CCRenderPipeline.java b/src/main/java/codechicken/lib/render/CCRenderPipeline.java deleted file mode 100644 index ab5206d1..00000000 --- a/src/main/java/codechicken/lib/render/CCRenderPipeline.java +++ /dev/null @@ -1,173 +0,0 @@ -package codechicken.lib.render; - -import codechicken.lib.render.CCRenderState.IVertexOperation; -import codechicken.lib.render.CCRenderState.VertexAttribute; - -import java.util.ArrayList; - -public class CCRenderPipeline -{ - @SuppressWarnings("rawtypes") - private ArrayList attribs = new ArrayList(); - private ArrayList ops = new ArrayList(); - private ArrayList nodes = new ArrayList(); - private ArrayList sorted = new ArrayList(); - private PipelineNode loading; - private PipelineBuilder builder = new PipelineBuilder(); - - public void setPipeline(IVertexOperation... ops) - { - this.ops.clear(); - for (int i = 0; i < ops.length; i++) - this.ops.add(ops[i]); - rebuild(); - } - - public void reset() - { - ops.clear(); - unbuild(); - } - - @SuppressWarnings("unchecked") - private void unbuild() - { - for (int i = 0; i < attribs.size(); i++) - attribs.get(i).active = false; - attribs.clear(); - sorted.clear(); - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - public void rebuild() - { - if (ops.isEmpty() || CCRenderState.model == null) - { - return; - } - - //ensure enough nodes for all ops - while (nodes.size() < CCRenderState.operationCount()) - nodes.add(new PipelineNode()); - unbuild(); - - if (CCRenderState.useNormals) - { - addAttribute(CCRenderState.normalAttrib); - } - if (CCRenderState.useColour) - { - addAttribute(CCRenderState.colourAttrib); - } - if (CCRenderState.computeLighting) - { - addAttribute(CCRenderState.lightingAttrib); - } - - for (int i = 0; i < ops.size(); i++) - { - IVertexOperation op = ops.get(i); - loading = nodes.get(op.operationID()); - boolean loaded = op.load(); - if (loaded) - { - loading.op = op; - } - - if (op instanceof VertexAttribute) - { - if (loaded) - { - attribs.add((VertexAttribute) op); - } else - { - ((VertexAttribute) op).active = false; - } - } - } - - for (int i = 0; i < nodes.size(); i++) - nodes.get(i).add(); - } - - public void addRequirement(int opRef) - { - loading.deps.add(nodes.get(opRef)); - } - - @SuppressWarnings("rawtypes") - public void addDependency(VertexAttribute attrib) - { - loading.deps.add(nodes.get(attrib.operationID())); - addAttribute(attrib); - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - public void addAttribute(VertexAttribute attrib) - { - if (!attrib.active) - { - ops.add(attrib); - attrib.active = true; - } - } - - public void operate() - { - for (int i = 0; i < sorted.size(); i++) - sorted.get(i).operate(); - } - - public PipelineBuilder builder() - { - ops.clear(); - return builder; - } - - public class PipelineBuilder - { - public PipelineBuilder add(IVertexOperation op) - { - ops.add(op); - return this; - } - - public PipelineBuilder add(IVertexOperation... ops) - { - for (int i = 0; i < ops.length; i++) - CCRenderPipeline.this.ops.add(ops[i]); - return this; - } - - public void build() - { - rebuild(); - } - - public void render() - { - rebuild(); - CCRenderState.render(); - } - } - - private class PipelineNode - { - public ArrayList deps = new ArrayList(); - public IVertexOperation op; - - public void add() - { - if (op == null) - { - return; - } - - for (int i = 0; i < deps.size(); i++) - deps.get(i).add(); - deps.clear(); - sorted.add(op); - op = null; - } - } -} diff --git a/src/main/java/codechicken/lib/render/CCRenderState.java b/src/main/java/codechicken/lib/render/CCRenderState.java deleted file mode 100644 index 6c84bf79..00000000 --- a/src/main/java/codechicken/lib/render/CCRenderState.java +++ /dev/null @@ -1,520 +0,0 @@ -package codechicken.lib.render; - -import codechicken.lib.colour.ColourRGBA; -import codechicken.lib.lighting.LC; -import codechicken.lib.lighting.LightMatrix; -import codechicken.lib.util.Copyable; -import codechicken.lib.vec.Rotation; -import codechicken.lib.vec.Transformation; -import codechicken.lib.vec.Vector3; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.OpenGlHelper; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.util.ResourceLocation; -import net.minecraft.world.IBlockAccess; - -import java.util.ArrayList; - -/** - * The core of the CodeChickenLib render system. - * Rendering operations are written to avoid object allocations by reusing static variables. - */ -public class CCRenderState -{ - private static int nextOperationIndex; - - public static int registerOperation() - { - return nextOperationIndex++; - } - - public static int operationCount() - { - return nextOperationIndex; - } - - /** - * Represents an operation to be run for each vertex that operates on and modifies the current state - */ - public static interface IVertexOperation - { - /** - * Load any required reference and add dependencies to the pipeline based on the current model (may be null) - * Return false if this operation is redundant in the pipeline with the given model - */ - public boolean load(); - - /** - * Perform the operation on the current render state - */ - public void operate(); - - /** - * Get the unique id representing this type of operation. Duplicate operation IDs within the pipeline may have unexpected results. - * ID shoulld be obtained from CCRenderState.registerOperation() and stored in a static variable - */ - public int operationID(); - } - - private static ArrayList> vertexAttributes = new ArrayList>(); - - private static int registerVertexAttribute(VertexAttribute attr) - { - vertexAttributes.add(attr); - return vertexAttributes.size() - 1; - } - - public static VertexAttribute getAttribute(int index) - { - return vertexAttributes.get(index); - } - - /** - * Management class for a vertex attrute such as colour, normal etc - * This class should handle the loading of the attrute from an array provided by IVertexSource.getAttributes or the computation of this attrute from others - * - * @param The array type for this attrute eg. int[], Vector3[] - */ - public static abstract class VertexAttribute implements IVertexOperation - { - public final int attributeIndex = registerVertexAttribute(this); - private final int operationIndex = registerOperation(); - /** - * Set to true when the attrute is part of the pipeline. Should only be managed by CCRenderState when constructing the pipeline - */ - public boolean active = false; - - /** - * Construct a new array for storage of vertex attrutes in a model - */ - public abstract T newArray(int length); - - @Override - public int operationID() - { - return operationIndex; - } - } - - public static void arrayCopy(Object src, int srcPos, Object dst, int destPos, int length) - { - System.arraycopy(src, srcPos, dst, destPos, length); - if (dst instanceof Copyable[]) - { - Object[] oa = (Object[]) dst; - @SuppressWarnings("unchecked") - Copyable[] c = (Copyable[]) dst; - for (int i = destPos; i < destPos + length; i++) - if (c[i] != null) - { - oa[i] = c[i].copy(); - } - } - } - - public static T copyOf(VertexAttribute attr, T src, int length) - { - T dst = attr.newArray(length); - arrayCopy(src, 0, dst, 0, ((Object[]) src).length); - return dst; - } - - public static interface IVertexSource - { - public Vertex5[] getVertices(); - - /** - * Gets an array of vertex attrutes - * - * @param attr The vertex attrute to get - * @param The attrute array type - * @return An array, or null if not computed - */ - public T getAttributes(VertexAttribute attr); - - /** - * @return True if the specified attrute is provided by this model, either by returning an array from getAttributes or by setting the state in prepareVertex - */ - public boolean hasAttribute(VertexAttribute attr); - - /** - * Callback to set CCRenderState for a vertex before the pipeline runs - */ - public void prepareVertex(); - } - - public static VertexAttribute normalAttrib = new VertexAttribute() - { - private Vector3[] normalRef; - - @Override - public Vector3[] newArray(int length) - { - return new Vector3[length]; - } - - @Override - public boolean load() - { - normalRef = model.getAttributes(this); - if (model.hasAttribute(this)) - { - return normalRef != null; - } - - if (model.hasAttribute(sideAttrib)) - { - pipeline.addDependency(sideAttrib); - return true; - } - throw new IllegalStateException("Normals requested but neither normal or side attrutes are provided by the model"); - } - - @Override - public void operate() - { - if (normalRef != null) - { - setNormal(normalRef[vertexIndex]); - } else - { - setNormal(Rotation.axes[side]); - } - } - }; - public static VertexAttribute colourAttrib = new VertexAttribute() - { - private int[] colourRef; - - @Override - public int[] newArray(int length) - { - return new int[length]; - } - - @Override - public boolean load() - { - colourRef = model.getAttributes(this); - return colourRef != null || !model.hasAttribute(this); - } - - @Override - public void operate() - { - if (colourRef != null) - { - setColour(ColourRGBA.multiply(baseColour, colourRef[vertexIndex])); - } else - { - setColour(baseColour); - } - } - }; - public static VertexAttribute lightingAttrib = new VertexAttribute() - { - private int[] colourRef; - - @Override - public int[] newArray(int length) - { - return new int[length]; - } - - @Override - public boolean load() - { - if (!computeLighting || !useColour || !model.hasAttribute(this)) - { - return false; - } - - colourRef = model.getAttributes(this); - if (colourRef != null) - { - pipeline.addDependency(colourAttrib); - return true; - } - return false; - } - - @Override - public void operate() - { - setColour(ColourRGBA.multiply(colour, colourRef[vertexIndex])); - } - }; - public static VertexAttribute sideAttrib = new VertexAttribute() - { - private int[] sideRef; - - @Override - public int[] newArray(int length) - { - return new int[length]; - } - - @Override - public boolean load() - { - sideRef = model.getAttributes(this); - if (model.hasAttribute(this)) - { - return sideRef != null; - } - - pipeline.addDependency(normalAttrib); - return true; - } - - @Override - public void operate() - { - if (sideRef != null) - { - side = sideRef[vertexIndex]; - } else - { - side = CCModel.findSide(normal); - } - } - }; - /** - * Uses the position of the lightmatrix to compute LC if not provided - */ - public static VertexAttribute lightCoordAttrib = new VertexAttribute() - { - private LC[] lcRef; - private Vector3 vec = new Vector3();//for computation - private Vector3 pos = new Vector3(); - - @Override - public LC[] newArray(int length) - { - return new LC[length]; - } - - @Override - public boolean load() - { - lcRef = model.getAttributes(this); - if (model.hasAttribute(this)) - { - return lcRef != null; - } - - pos.set(lightMatrix.pos.x, lightMatrix.pos.y, lightMatrix.pos.z); - pipeline.addDependency(sideAttrib); - pipeline.addRequirement(Transformation.operationIndex); - return true; - } - - @Override - public void operate() - { - if (lcRef != null) - { - lc.set(lcRef[vertexIndex]); - } else - { - lc.compute(vec.set(vert.vec).sub(pos), side); - } - } - }; - - //pipeline state - public static IVertexSource model; - public static int firstVertexIndex; - public static int lastVertexIndex; - public static int vertexIndex; - public static CCRenderPipeline pipeline = new CCRenderPipeline(); - - //context - public static int baseColour; - public static int alphaOverride; - public static boolean useNormals; - public static boolean computeLighting; - public static boolean useColour; - public static LightMatrix lightMatrix = new LightMatrix(); - - //vertex outputs - public static Vertex5 vert = new Vertex5(); - public static boolean hasNormal; - public static Vector3 normal = new Vector3(); - public static boolean hasColour; - public static int colour; - public static boolean hasBrightness; - public static int brightness; - - //attrute storage - public static int side; - public static LC lc = new LC(); - - public static void reset() - { - model = null; - pipeline.reset(); - useNormals = hasNormal = hasBrightness = hasColour = false; - useColour = computeLighting = true; - baseColour = alphaOverride = -1; - } - - public static void setPipeline(IVertexOperation... ops) - { - pipeline.setPipeline(ops); - } - - public static void setPipeline(IVertexSource model, int start, int end, IVertexOperation... ops) - { - pipeline.reset(); - setModel(model, start, end); - pipeline.setPipeline(ops); - } - - public static void bindModel(IVertexSource model) - { - if (CCRenderState.model != model) - { - CCRenderState.model = model; - pipeline.rebuild(); - } - } - - public static void setModel(IVertexSource source) - { - setModel(source, 0, source.getVertices().length); - } - - public static void setModel(IVertexSource source, int start, int end) - { - bindModel(source); - setVertexRange(start, end); - } - - public static void setVertexRange(int start, int end) - { - firstVertexIndex = start; - lastVertexIndex = end; - } - - public static void render(IVertexOperation... ops) - { - setPipeline(ops); - render(); - } - - public static void render() - { - Vertex5[] verts = model.getVertices(); - for (vertexIndex = firstVertexIndex; vertexIndex < lastVertexIndex; vertexIndex++) - { - model.prepareVertex(); - vert.set(verts[vertexIndex]); - runPipeline(); - writeVert(); - } - } - - public static void runPipeline() - { - pipeline.operate(); - } - - public static void writeVert() - { - if (hasNormal) - { - Tessellator.instance.setNormal((float) normal.x, (float) normal.y, (float) normal.z); - } - if (hasColour) - { - Tessellator.instance.setColorRGBA(colour >>> 24, colour >> 16 & 0xFF, colour >> 8 & 0xFF, alphaOverride >= 0 ? alphaOverride : colour & 0xFF); - } - if (hasBrightness) - { - Tessellator.instance.setBrightness(brightness); - } - Tessellator.instance.addVertexWithUV(vert.vec.x, vert.vec.y, vert.vec.z, vert.uv.u, vert.uv.v); - } - - public static void setNormal(double x, double y, double z) - { - hasNormal = true; - normal.set(x, y, z); - } - - public static void setNormal(Vector3 n) - { - hasNormal = true; - normal.set(n); - } - - public static void setColour(int c) - { - hasColour = true; - colour = c; - } - - public static void setBrightness(int b) - { - hasBrightness = true; - brightness = b; - } - - public static void setBrightness(IBlockAccess world, int x, int y, int z) - { - setBrightness(world.getBlock(x, y, z).getMixedBrightnessForBlock(world, x, y, z)); - } - - public static void pullLightmap() - { - setBrightness((int) OpenGlHelper.lastBrightnessY << 16 | (int) OpenGlHelper.lastBrightnessX); - } - - public static void pushLightmap() - { - OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, brightness & 0xFFFF, brightness >>> 16); - } - - /** - * Compact helper for setting dynamic rendering context. Uses normals and doesn't compute lighting - */ - public static void setDynamic() - { - useNormals = true; - computeLighting = false; - } - - public static void changeTexture(String texture) - { - changeTexture(new ResourceLocation(texture)); - } - - public static void changeTexture(ResourceLocation texture) - { - Minecraft.getMinecraft().renderEngine.bindTexture(texture); - } - - public static void startDrawing() - { - startDrawing(7); - } - - public static void startDrawing(int mode) - { - Tessellator.instance.startDrawing(mode); - if (hasColour) - { - Tessellator.instance.setColorRGBA(colour >>> 24, colour >> 16 & 0xFF, colour >> 8 & 0xFF, alphaOverride >= 0 ? alphaOverride : colour & 0xFF); - } - if (hasBrightness) - { - Tessellator.instance.setBrightness(brightness); - } - } - - public static void draw() - { - Tessellator.instance.draw(); - } -} diff --git a/src/main/java/codechicken/lib/render/ColourMultiplier.java b/src/main/java/codechicken/lib/render/ColourMultiplier.java deleted file mode 100644 index d242af42..00000000 --- a/src/main/java/codechicken/lib/render/ColourMultiplier.java +++ /dev/null @@ -1,46 +0,0 @@ -package codechicken.lib.render; - -import codechicken.lib.colour.ColourRGBA; - -public class ColourMultiplier implements CCRenderState.IVertexOperation -{ - public static final int operationIndex = CCRenderState.registerOperation(); - private static ColourMultiplier instance = new ColourMultiplier(-1); - public int colour; - - public ColourMultiplier(int colour) - { - this.colour = colour; - } - - public static ColourMultiplier instance(int colour) - { - instance.colour = colour; - return instance; - } - - @Override - public boolean load() - { - if (colour == -1) - { - CCRenderState.setColour(-1); - return false; - } - - CCRenderState.pipeline.addDependency(CCRenderState.colourAttrib); - return true; - } - - @Override - public void operate() - { - CCRenderState.setColour(ColourRGBA.multiply(CCRenderState.colour, colour)); - } - - @Override - public int operationID() - { - return operationIndex; - } -} diff --git a/src/main/java/codechicken/lib/render/EntityDigIconFX.java b/src/main/java/codechicken/lib/render/EntityDigIconFX.java deleted file mode 100644 index 62f3e41f..00000000 --- a/src/main/java/codechicken/lib/render/EntityDigIconFX.java +++ /dev/null @@ -1,138 +0,0 @@ -package codechicken.lib.render; - -import codechicken.lib.vec.Cuboid6; -import codechicken.lib.vec.Vector3; -import net.minecraft.client.particle.EffectRenderer; -import net.minecraft.client.particle.EntityFX; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; - -public class EntityDigIconFX extends EntityFX -{ - public EntityDigIconFX(World world, double x, double y, double z, double dx, double dy, double dz, IIcon icon) - { - super(world, x, y, z, dx, dy, dz); - particleIcon = icon; - particleGravity = 1; - particleRed = particleGreen = particleBlue = 0.6F; - particleScale /= 2.0F; - } - - public static void addBlockHitEffects(World world, Cuboid6 bounds, int side, IIcon icon, EffectRenderer effectRenderer) - { - float border = 0.1F; - Vector3 diff = bounds.max.copy().subtract(bounds.min).add(-2 * border); - diff.x *= world.rand.nextDouble(); - diff.y *= world.rand.nextDouble(); - diff.z *= world.rand.nextDouble(); - Vector3 pos = diff.add(bounds.min).add(border); - - if (side == 0) - { - diff.y = bounds.min.y - border; - } - if (side == 1) - { - diff.y = bounds.max.y + border; - } - if (side == 2) - { - diff.z = bounds.min.z - border; - } - if (side == 3) - { - diff.z = bounds.max.z + border; - } - if (side == 4) - { - diff.x = bounds.min.x - border; - } - if (side == 5) - { - diff.x = bounds.max.x + border; - } - - effectRenderer.addEffect( - new EntityDigIconFX(world, pos.x, pos.y, pos.z, 0, 0, 0, icon) - .multiplyVelocity(0.2F).multipleParticleScaleBy(0.6F)); - } - - public static void addBlockDestroyEffects(World world, Cuboid6 bounds, IIcon[] icons, EffectRenderer effectRenderer) - { - Vector3 diff = bounds.max.copy().subtract(bounds.min); - Vector3 center = bounds.min.copy().add(bounds.max).multiply(0.5); - Vector3 density = diff.copy().multiply(4); - density.x = Math.ceil(density.x); - density.y = Math.ceil(density.y); - density.z = Math.ceil(density.z); - - for (int i = 0; i < density.x; ++i) - for (int j = 0; j < density.y; ++j) - for (int k = 0; k < density.z; ++k) - { - double x = bounds.min.x + (i + 0.5) * diff.x / density.x; - double y = bounds.min.y + (j + 0.5) * diff.y / density.y; - double z = bounds.min.z + (k + 0.5) * diff.z / density.z; - effectRenderer.addEffect( - new EntityDigIconFX(world, x, y, z, x - center.x, y - center.y, z - center.z, icons[world.rand.nextInt(icons.length)])); - } - } - - @Override - public int getFXLayer() - { - return 1; - } - - public float getScale() - { - return particleScale; - } - - public void setScale(float scale) - { - particleScale = scale; - } - - public int getMaxAge() - { - return particleMaxAge; - } - - public void setMaxAge(int age) - { - particleMaxAge = age; - } - - /** - * copy pasted from EntityDiggingFX - */ - @Override - public void renderParticle(Tessellator par1Tessellator, float par2, float par3, float par4, float par5, float par6, float par7) - { - float f6 = (particleTextureIndexX + particleTextureJitterX / 4.0F) / 16.0F; - float f7 = f6 + 0.015609375F; - float f8 = (particleTextureIndexY + particleTextureJitterY / 4.0F) / 16.0F; - float f9 = f8 + 0.015609375F; - float f10 = 0.1F * particleScale; - - if (particleIcon != null) - { - f6 = particleIcon.getInterpolatedU(particleTextureJitterX / 4.0F * 16.0F); - f7 = particleIcon.getInterpolatedU((particleTextureJitterX + 1.0F) / 4.0F * 16.0F); - f8 = particleIcon.getInterpolatedV(particleTextureJitterY / 4.0F * 16.0F); - f9 = particleIcon.getInterpolatedV((particleTextureJitterY + 1.0F) / 4.0F * 16.0F); - } - - float f11 = (float) (prevPosX + (posX - prevPosX) * par2 - interpPosX); - float f12 = (float) (prevPosY + (posY - prevPosY) * par2 - interpPosY); - float f13 = (float) (prevPosZ + (posZ - prevPosZ) * par2 - interpPosZ); - float f14 = 1.0F; - par1Tessellator.setColorOpaque_F(f14 * particleRed, f14 * particleGreen, f14 * particleBlue); - par1Tessellator.addVertexWithUV(f11 - par3 * f10 - par6 * f10, f12 - par4 * f10, f13 - par5 * f10 - par7 * f10, f6, f9); - par1Tessellator.addVertexWithUV(f11 - par3 * f10 + par6 * f10, f12 + par4 * f10, f13 - par5 * f10 + par7 * f10, f6, f8); - par1Tessellator.addVertexWithUV(f11 + par3 * f10 + par6 * f10, f12 + par4 * f10, f13 + par5 * f10 + par7 * f10, f7, f8); - par1Tessellator.addVertexWithUV(f11 + par3 * f10 - par6 * f10, f12 - par4 * f10, f13 + par5 * f10 - par7 * f10, f7, f9); - } -} diff --git a/src/main/java/codechicken/lib/render/FontUtils.java b/src/main/java/codechicken/lib/render/FontUtils.java deleted file mode 100644 index 35295b71..00000000 --- a/src/main/java/codechicken/lib/render/FontUtils.java +++ /dev/null @@ -1,74 +0,0 @@ -package codechicken.lib.render; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.item.ItemStack; -import org.lwjgl.opengl.GL11; - -public class FontUtils -{ - public static final String[] prefixes = new String[]{"K", "M", "G"}; - public static FontRenderer fontRenderer = Minecraft.getMinecraft().fontRenderer; - - public static void drawCenteredString(String s, int xCenter, int y, int colour) - { - fontRenderer.drawString(s, xCenter - fontRenderer.getStringWidth(s) / 2, y, colour); - } - - public static void drawRightString(String s, int xRight, int y, int colour) - { - fontRenderer.drawString(s, xRight - fontRenderer.getStringWidth(s), y, colour); - } - - public static void drawItemQuantity(int x, int y, ItemStack item, String quantity, int mode) - { - if (item == null || (quantity == null && item.stackSize <= 1)) - { - return; - } - - if (quantity == null) - { - switch (mode) - { - case 2: - int q = item.stackSize; - String postfix = ""; - for (int p = 0; p < 3 && q > 1000; p++) - { - q /= 1000; - postfix = prefixes[p]; - } - quantity = Integer.toString(q) + postfix; - case 1: - quantity = ""; - if (item.stackSize / 64 > 0) - { - quantity += item.stackSize / 64 + "s"; - } - if (item.stackSize % 64 > 0) - { - quantity += item.stackSize % 64; - } - break; - default: - quantity = Integer.toString(item.stackSize); - break; - } - } - - double scale = quantity.length() > 2 ? 0.5 : 1; - double sheight = 8 * scale; - double swidth = fontRenderer.getStringWidth(quantity) * scale; - - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_DEPTH_TEST); - GL11.glPushMatrix(); - GL11.glTranslated(x + 16 - swidth, y + 16 - sheight, 0); - GL11.glScaled(scale, scale, 1); - fontRenderer.drawStringWithShadow(quantity, 0, 0, 0xFFFFFF); - GL11.glPopMatrix(); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_DEPTH_TEST); - } -} diff --git a/src/main/java/codechicken/lib/render/IFaceRenderer.java b/src/main/java/codechicken/lib/render/IFaceRenderer.java deleted file mode 100644 index d2ed2b45..00000000 --- a/src/main/java/codechicken/lib/render/IFaceRenderer.java +++ /dev/null @@ -1,6 +0,0 @@ -package codechicken.lib.render; - -public interface IFaceRenderer -{ - public void renderFace(Vertex5[] face, int side); -} diff --git a/src/main/java/codechicken/lib/render/ManagedTextureFX.java b/src/main/java/codechicken/lib/render/ManagedTextureFX.java deleted file mode 100644 index 03050ea5..00000000 --- a/src/main/java/codechicken/lib/render/ManagedTextureFX.java +++ /dev/null @@ -1,31 +0,0 @@ -package codechicken.lib.render; - -public class ManagedTextureFX extends TextureFX -{ - public boolean changed; - - public ManagedTextureFX(int size, String name) - { - super(size, name); - imageData = new int[size * size]; - } - - @Override - public void setup() - { - } - - public void setData(int[] data) - { - System.arraycopy(data, 0, imageData, 0, imageData.length); - changed = true; - } - - @Override - public boolean changed() - { - boolean r = changed; - changed = false; - return r; - } -} diff --git a/src/main/java/codechicken/lib/render/PlaceholderTexture.java b/src/main/java/codechicken/lib/render/PlaceholderTexture.java deleted file mode 100644 index 630f677a..00000000 --- a/src/main/java/codechicken/lib/render/PlaceholderTexture.java +++ /dev/null @@ -1,25 +0,0 @@ -package codechicken.lib.render; - -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.IResourceManager; -import net.minecraft.util.ResourceLocation; - -public class PlaceholderTexture extends TextureAtlasSprite -{ - protected PlaceholderTexture(String par1) - { - super(par1); - } - - @Override - public boolean hasCustomLoader(IResourceManager manager, ResourceLocation location) - { - return true; - } - - @Override - public boolean load(IResourceManager manager, ResourceLocation location) - { - return true; - } -} diff --git a/src/main/java/codechicken/lib/render/QBImporter.java b/src/main/java/codechicken/lib/render/QBImporter.java deleted file mode 100644 index e8fc666e..00000000 --- a/src/main/java/codechicken/lib/render/QBImporter.java +++ /dev/null @@ -1,927 +0,0 @@ -package codechicken.lib.render; - -import codechicken.lib.render.uv.UV; -import codechicken.lib.render.uv.UVScale; -import codechicken.lib.vec.*; -import com.google.common.collect.HashMultimap; -import com.google.common.collect.Multimap; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.util.IIcon; -import net.minecraft.util.ResourceLocation; - -import javax.imageio.ImageIO; -import java.awt.image.BufferedImage; -import java.io.*; -import java.util.*; - -public class QBImporter -{ - public static final int TEXTUREPLANES = 1; - public static final int SQUARETEXTURE = 2; - public static final int MERGETEXTURES = 4; - public static final int SCALEMC = 8; - private static final int[][] vertOrder = new int[][]{//clockwise because MC is left handed - {3, 0}, - {1, 0}, - {1, 2}, - {3, 2}}; - private static final int CODEFLAG = Integer.reverseBytes(2); - private static final int NEXTSLICEFLAG = Integer.reverseBytes(6); - - private static String readAsciiString(DataInputStream din) throws IOException - { - byte[] bytes = new byte[din.readByte() & 0xFF]; - din.readFully(bytes); - return new String(bytes, "US-ASCII"); - } - - private static int readTni(DataInputStream din) throws IOException - { - return Integer.reverseBytes(din.readInt()); - } - - public static QBModel loadQB(InputStream input) throws IOException - { - DataInputStream din = new DataInputStream(input); - - QBModel m = new QBModel(); - @SuppressWarnings("unused") - int version = din.readInt(); - int colorFormat = din.readInt(); - m.rightHanded = din.readInt() != 0; - boolean compressed = din.readInt() != 0; - boolean visEncoded = din.readInt() != 0; - - if (visEncoded) - { - throw new IllegalArgumentException("Encoded Visiblity States not supported"); - } - - m.matrices = new QBMatrix[readTni(din)]; - for (int i = 0; i < m.matrices.length; i++) - { - QBMatrix mat = new QBMatrix(); - m.matrices[i] = mat; - mat.name = readAsciiString(din); - mat.size = new BlockCoord(readTni(din), readTni(din), readTni(din)); - mat.pos = new BlockCoord(readTni(din), readTni(din), readTni(din)); - mat.matrix = new int[mat.size.x][mat.size.y][mat.size.z]; - mat.readMatrix(din, compressed); - if (colorFormat == 1) - { - mat.convertBGRAtoRGBA(); - } - } - - return m; - } - - public static QBModel loadQB(ResourceLocation res) - { - try - { - return loadQB(Minecraft.getMinecraft().getResourceManager().getResource(res).getInputStream()); - } catch (Exception e) - { - throw new RuntimeException("failed to load model: " + res, e); - } - } - - public static QBModel loadQB(File file) - { - try - { - FileInputStream fin = new FileInputStream(file); - try - { - return loadQB(fin); - } finally - { - fin.close(); - } - } catch (Exception e) - { - throw new RuntimeException("failed to load model: " + file.getPath(), e); - } - } - - private static class ImagePackNode - { - Rectangle4i rect; - ImagePackNode child1; - ImagePackNode child2; - QBImage packed; - - public ImagePackNode(int x, int y, int w, int h) - { - rect = new Rectangle4i(x, y, w, h); - } - - private static void nextSize(Rectangle4i rect, boolean square) - { - if (square) - { - rect.w <<= 1; - rect.h <<= 1; - } else - { - if (rect.w == rect.h) - { - rect.w *= 2; - } else - { - rect.h *= 2; - } - } - } - - public static ImagePackNode pack(List images, boolean square) - { - Collections.sort(images); - - int area = 0; - for (QBImage img : images) - area += img.area(); - - ImagePackNode node = new ImagePackNode(0, 0, 2, 2); - while (node.rect.area() < area) - nextSize(node.rect, square); - - while (true) - { - boolean packed = true; - for (QBImage img : images) - if (!node.pack(img)) - { - packed = false; - break; - } - - if (packed) - { - return node; - } - - node.child1 = node.child2 = null; - nextSize(node.rect, square); - } - } - - public boolean pack(QBImage img) - { - if (child1 != null) - { - return child1.pack(img) || child2.pack(img); - } - - if (packed != null) - { - return false; - } - - int fit = getFit(img.width(), img.height()); - if (fit == 0) - { - return false; - } - - if ((fit & 2) != 0) - {//exact fit - packed = img; - img.packSlot = rect; - img.packT = new ImageTransform((fit & 1) << 2); - return true; - } - - int w = (fit & 1) == 0 ? img.width() : img.height(); - int h = (fit & 1) == 0 ? img.height() : img.width(); - - if (rect.w - w > rect.h - h) - {//create split with biggest leftover space - child1 = new ImagePackNode(rect.x, rect.y, w, rect.h); - child2 = new ImagePackNode(rect.x + w, rect.y, rect.w - w, rect.h); - } else - { - child1 = new ImagePackNode(rect.x, rect.y, rect.w, h); - child2 = new ImagePackNode(rect.x, rect.y + h, rect.w, rect.h - h); - } - return child1.pack(img); - } - - private int getFit(int w, int h) - { - if (w == rect.w && h == rect.h) - { - return 2; - } - if (w == rect.h && h == rect.w) - { - return 3; - } - if (rect.w >= w && rect.h >= h) - { - return 4; - } - if (rect.w >= h && rect.h >= w) - { - return 5; - } - - return 0; - } - - public BufferedImage toImage() - { - BufferedImage img = new BufferedImage(rect.w, rect.h, BufferedImage.TYPE_INT_ARGB); - write(img); - return img; - } - - private void write(BufferedImage img) - { - if (child1 != null) - { - child1.write(img); - child2.write(img); - } else if (packed != null) - { - ImageTransform t = packed.packT; - for (int u = 0; u < rect.w; u++) - for (int v = 0; v < rect.h; v++) - { - int rgba = t.access(packed, u, v); - img.setRGB(u + rect.x, v + rect.y, rgba >>> 8 | rgba << 24); - } - } - } - } - - private static class ImageTransform - { - int transform; - - public ImageTransform(int i) - { - transform = i; - } - - public ImageTransform() - { - this(0); - } - - public boolean transpose() - { - return (transform & 4) != 0; - } - - public boolean flipU() - { - return (transform & 1) != 0; - } - - public boolean flipV() - { - return (transform & 2) != 0; - } - - public int access(QBImage img, int u, int v) - { - if (transpose()) - { - int tmp = u; - u = v; - v = tmp; - } - if (flipU()) - { - u = img.width() - 1 - u; - } - if (flipV()) - { - v = img.height() - 1 - v; - } - - return img.data[u][v]; - } - - public UV transform(UV uv) - { - if (transpose()) - { - double tmp = uv.u; - uv.u = uv.v; - uv.v = tmp; - } - if (flipU()) - { - uv.u = 1 - uv.u; - } - if (flipV()) - { - uv.v = 1 - uv.v; - } - - return uv; - } - } - - public static class QBImage implements Comparable - { - int[][] data; - ImageTransform packT; - Rectangle4i packSlot; - - public int width() - { - return data.length; - } - - public int height() - { - return data[0].length; - } - - public int area() - { - return width() * height(); - } - - @Override - public int compareTo(QBImage o) - { - int a = area(); - int b = o.area(); - return a > b ? -1 : a == b ? 0 : 1; - } - - public ImageTransform transformTo(QBImage img) - { - if (width() == img.width() && height() == img.height()) - { - for (int i = 0; i < 4; i++) - { - ImageTransform t = new ImageTransform(i); - if (equals(img, t)) - { - return t; - } - } - } - if (width() == img.height() && height() == img.width()) - { - for (int i = 4; i < 8; i++) - { - ImageTransform t = new ImageTransform(i); - if (equals(img, t)) - { - return t; - } - } - } - return null; - } - - public boolean equals(QBImage img, ImageTransform t) - { - for (int u = 0; u < img.width(); u++) - for (int v = 0; v < img.height(); v++) - if (t.access(this, u, v) != img.data[u][v]) - { - return false; - } - - return true; - } - - public void transform(UV uv) - { - packT.transform(uv); - uv.u *= packSlot.w; - uv.v *= packSlot.h; - uv.u += packSlot.x; - uv.v += packSlot.y; - } - } - - public static class QBQuad - { - public Vertex5[] verts = new Vertex5[4]; - public QBImage image = new QBImage(); - public ImageTransform t = new ImageTransform(); - public int side; - - public QBQuad(int side) - { - this.side = side; - } - - public static QBQuad restore(Rectangle4i flat, int side, double d, QBImage img) - { - QBQuad quad = new QBQuad(side); - quad.image = img; - - Transformation t = new Scale(-1, 1, -1).with(Rotation.sideOrientation(side, 0)).with(new Translation(new Vector3().setSide(side, d))); - quad.verts[0] = new Vertex5(flat.x, 0, flat.y, 0, 0); - quad.verts[1] = new Vertex5(flat.x + flat.w, 0, flat.y, 1, 0); - quad.verts[2] = new Vertex5(flat.x + flat.w, 0, flat.y + flat.h, 1, 1); - quad.verts[3] = new Vertex5(flat.x, 0, flat.y + flat.h, 0, 1); - for (Vertex5 vert : quad.verts) - vert.apply(t); - - return quad; - } - - public void applyImageT() - { - for (Vertex5 vert : verts) - { - t.transform(vert.uv); - image.transform(vert.uv); - } - } - - public Rectangle4i flatten() - { - Transformation t = Rotation.sideOrientation(side, 0).inverse().with(new Scale(-1, 0, -1)); - Vector3 vmin = verts[0].vec.copy().apply(t); - Vector3 vmax = verts[2].vec.copy().apply(t); - return new Rectangle4i((int) vmin.x, (int) vmin.z, (int) (vmax.x - vmin.x), (int) (vmax.z - vmin.z)); - } - } - - public static class QBCuboid - { - public QBMatrix mat; - public CuboidCoord c; - public int sides; - - public QBCuboid(QBMatrix mat, CuboidCoord c) - { - this.mat = mat; - this.c = c; - sides = 0; - } - - public static boolean intersects(QBCuboid a, QBCuboid b) - { - CuboidCoord c = a.c; - CuboidCoord d = b.c; - return c.min.x <= d.max.x && - d.min.x <= c.max.x && - c.min.y <= d.max.y && - d.min.y <= c.max.y && - c.min.z <= d.max.z && - d.min.z <= c.max.z; - } - - public static void clip(QBCuboid a, QBCuboid b) - { - if (intersects(a, b)) - { - a.clip(b); - b.clip(a); - } - } - - public void clip(QBCuboid o) - { - CuboidCoord d = o.c; - for (int a = 0; a < 6; a += 2) - { - int a1 = (a + 2) % 6; - int a2 = (a + 4) % 6; - if (c.getSide(a1 + 1) <= d.getSide(a1 + 1) && - c.getSide(a1) >= d.getSide(a1) && - c.getSide(a2 + 1) <= d.getSide(a2 + 1) && - c.getSide(a2) >= d.getSide(a2)) - { - - if (c.getSide(a) <= d.getSide(a + 1) && c.getSide(a) >= d.getSide(a)) - { - c.setSide(a, d.getSide(a + 1) + 1); - sides |= 1 << a; - } - if (c.getSide(a + 1) >= d.getSide(a) && c.getSide(a + 1) <= d.getSide(a + 1)) - { - c.setSide(a + 1, d.getSide(a) - 1); - sides |= 2 << a; - } - } - } - } - - public void extractQuads(List quads) - { - Cuboid6 box = c.bounds(); - for (int s = 0; s < 6; s++) - if ((sides & 1 << s) == 0) - { - quads.add(extractQuad(s, box)); - } - } - - private QBQuad extractQuad(int side, Cuboid6 box) - { - double[] da = new double[3]; - da[side >> 1] = box.getSide(side); - - QBQuad quad = new QBQuad(side); - for (int i = 0; i < 4; i++) - { - int rU = vertOrder[i][0]; - int rV = vertOrder[i][1]; - int sideU = Rotation.rotateSide(side, rU); - int sideV = Rotation.rotateSide(side, rV); - da[sideU >> 1] = box.getSide(sideU); - da[sideV >> 1] = box.getSide(sideV); - quad.verts[i] = new Vertex5(Vector3.fromAxes(da), (3 - rU) / 2, rV / 2); - } - - int sideU = Rotation.rotateSide(side, 1); - int sideV = Rotation.rotateSide(side, 2); - quad.image.data = new int[c.size(sideU)][c.size(sideV)]; - QBImage image = quad.image; - - int[] ia = new int[3]; - ia[side >> 1] = c.getSide(side); - ia[sideU >> 1] = c.getSide(sideU ^ 1); - ia[sideV >> 1] = c.getSide(sideV ^ 1); - BlockCoord b = BlockCoord.fromAxes(ia); - BlockCoord bU = BlockCoord.sideOffsets[sideU]; - BlockCoord bV = BlockCoord.sideOffsets[sideV]; - for (int u = 0; u < image.width(); u++) - for (int v = 0; v < image.height(); v++) - image.data[u][v] = mat.matrix[b.x + bU.x * u + bV.x * v][b.y + bU.y * u + bV.y * v][b.z + bU.z * u + bV.z * v]; - - return quad; - } - } - - public static class QBMatrix - { - public String name; - public BlockCoord pos; - public BlockCoord size; - public int[][][] matrix; - - private static void addImages(List quads, List images) - { - for (QBQuad q : quads) - { - QBImage img = q.image; - boolean matched = false; - for (QBImage img2 : images) - { - ImageTransform t = img.transformTo(img2); - if (t != null) - { - q.t = t; - q.image = img2; - matched = true; - break; - } - } - if (!matched) - { - images.add(img); - } - } - } - - public void readMatrix(DataInputStream din, boolean compressed) throws IOException - { - if (compressed) - { - int z = 0; - while (z < size.z) - { - int index = 0; - - while (true) - { - int data = din.readInt(); - - if (data == NEXTSLICEFLAG) - { - break; - } - - if (data == CODEFLAG) - { - int count = readTni(din); - data = din.readInt(); - - for (int j = 0; j < count; j++, index++) - matrix[index % size.x][index / size.x][z] = data; - } else - { - matrix[index % size.x][index / size.x][z] = data; - index++; - } - } - z++; - } - } else - { - for (int z = 0; z < size.z; z++) - for (int y = 0; y < size.y; y++) - for (int x = 0; x < size.x; x++) - matrix[x][y][z] = din.readInt(); - } - } - - public void convertBGRAtoRGBA() - { - for (int z = 0; z < size.z; z++) - for (int y = 0; y < size.y; y++) - for (int x = 0; x < size.x; x++) - { - int i = matrix[x][y][z]; - matrix[x][y][z] = Integer.reverseBytes(i >>> 8) | i & 0xFF; - } - } - - private boolean voxelFull(boolean[][][] solid, CuboidCoord c) - { - for (BlockCoord b : c) - if (matrix[b.x][b.y][b.z] == 0) - { - return false; - } - for (BlockCoord b : c) - solid[b.x][b.y][b.z] = false; - return true; - } - - private QBCuboid expand(boolean[][][] solid, BlockCoord b) - { - CuboidCoord c = new CuboidCoord(b); - solid[b.x][b.y][b.z] = false; - - for (int s = 0; s < 6; s++) - { - CuboidCoord slice = c.copy(); - slice.expand(s ^ 1, -(slice.size(s) - 1)); - slice.expand(s, 1); - - while (slice.getSide(s) >= 0 && slice.getSide(s) < size.getSide(s)) - { - if (!voxelFull(solid, slice)) - { - break; - } - slice.expand(s ^ 1, -1); - slice.expand(s, 1); - c.expand(s, 1); - } - } - return new QBCuboid(this, c); - } - - public List rectangulate() - { - List list = new ArrayList(); - boolean[][][] solid = new boolean[size.x][size.y][size.z]; - for (int z = 0; z < size.z; z++) - for (int y = 0; y < size.y; y++) - for (int x = 0; x < size.x; x++) - solid[x][y][z] = matrix[x][y][z] != 0; - - for (int x = 0; x < size.x; x++) - for (int z = 0; z < size.z; z++) - for (int y = 0; y < size.y; y++) - if (solid[x][y][z]) - { - list.add(expand(solid, new BlockCoord(x, y, z))); - } - - for (int i = 0; i < list.size(); i++) - for (int j = i + 1; j < list.size(); j++) - QBCuboid.clip(list.get(i), list.get(j)); - - return list; - } - - public List extractQuads(boolean texturePlanes) - { - List quads = new LinkedList(); - for (QBCuboid c : rectangulate()) - c.extractQuads(quads); - - if (texturePlanes) - { - optimisePlanes(quads); - } - - return quads; - } - - private void optimisePlanes(List quads) - { - Multimap map = HashMultimap.create(); - for (QBQuad quad : quads) - map.put(quad.side | ((int) quad.verts[0].vec.getSide(quad.side)) << 3, quad); - - quads.clear(); - for (Integer key : map.keySet()) - { - Collection plane = map.get(key); - if (plane.size() == 1) - { - quads.add(plane.iterator().next()); - continue; - } - - int side = key & 7; - Rectangle4i rect = null; - for (QBQuad q : plane) - if (rect == null) - { - rect = q.flatten(); - } else - { - rect.include(q.flatten()); - } - - QBImage img = new QBImage(); - img.data = new int[rect.w][rect.h]; - for (QBQuad q : plane) - { - QBImage from = q.image; - Rectangle4i r = q.flatten(); - int du = r.x - rect.x; - int dv = r.y - rect.y; - for (int u = 0; u < from.width(); u++) - for (int v = 0; v < from.height(); v++) - img.data[du + u][dv + v] = from.data[u][v]; - } - - quads.add(QBQuad.restore(rect, side, key >> 3, img)); - } - } - - public CCModel buildModel(List quads, BufferedImage img, boolean scaleMC) - { - CCModel m = CCModel.quadModel(quads.size() * 4); - int i = 0; - for (QBQuad quad : quads) - { - quad.applyImageT(); - m.verts[i++] = quad.verts[0]; - m.verts[i++] = quad.verts[1]; - m.verts[i++] = quad.verts[2]; - m.verts[i++] = quad.verts[3]; - } - m.apply(new UVScale(1D / img.getWidth(), 1D / img.getHeight())); - m.apply(new Translation(pos.x, pos.y, pos.z)); - if (scaleMC) - { - m.apply(new Scale(1 / 16D)); - } - m.computeNormals(); - return m; - } - } - - public static class QBModel - { - public QBMatrix[] matrices; - public boolean rightHanded; - - public RasterisedModel toRasterisedModel(int flags) - { - List qbImages = new ArrayList(); - List> modelQuads = new ArrayList>(); - List images = new ArrayList(); - - boolean texturePlanes = (flags & TEXTUREPLANES) != 0; - boolean squareTextures = (flags & SQUARETEXTURE) != 0; - boolean mergeTextures = (flags & MERGETEXTURES) != 0; - boolean scaleMC = (flags & SCALEMC) != 0; - - for (QBMatrix mat : matrices) - { - List quads = mat.extractQuads(texturePlanes); - modelQuads.add(quads); - QBMatrix.addImages(quads, qbImages); - if (!mergeTextures) - { - images.add(ImagePackNode.pack(qbImages, squareTextures).toImage()); - qbImages.clear(); - } - } - - if (mergeTextures) - { - images.add(ImagePackNode.pack(qbImages, squareTextures).toImage()); - } - - RasterisedModel m = new RasterisedModel(images); - for (int i = 0; i < matrices.length; i++) - { - QBMatrix mat = matrices[i]; - BufferedImage img = images.get(mergeTextures ? 0 : i); - m.add(mat.name, mat.buildModel(modelQuads.get(i), img, scaleMC)); - } - return m; - } - } - - public static class RasterisedModel - { - private Map map = new HashMap(); - private List images; - private String[] icons; - - public RasterisedModel(List images) - { - this.images = images; - icons = new String[images.size()]; - } - - public void add(String name, CCModel m) - { - map.put(name, new Holder(m, Math.min(map.size(), images.size() - 1))); - } - - public CCModel getModel(String key) - { - return map.get(key).m; - } - - public IIcon getIcon(String key, IIconRegister r, String iconName) - { - int img = map.get(key).img; - if (icons[img] != null && !iconName.equals(icons[img])) - { - throw new IllegalArgumentException("Attempted to get a previously registered icon by a different name: " + icons[img] + ", " + iconName); - } - if (icons[img] != null) - { - return r.registerIcon(iconName); - } - - icons[img] = iconName; - return TextureUtils.getTextureSpecial(r, iconName).addTexture(new TextureDataHolder(images.get(img))); - } - - private void exportImg(BufferedImage img, File imgFile) throws IOException - { - if (!imgFile.exists()) - { - imgFile.createNewFile(); - } - ImageIO.write(img, "PNG", imgFile); - } - - public void export(File objFile, File imgDir) - { - try - { - if (!objFile.exists()) - { - objFile.createNewFile(); - } - if (!imgDir.exists()) - { - imgDir.mkdirs(); - } - - Map modelMap = new HashMap(); - for (Map.Entry e : map.entrySet()) - modelMap.put(e.getKey(), e.getValue().m); - - PrintWriter p = new PrintWriter(objFile); - CCModel.exportObj(modelMap, p); - p.close(); - - if (images.size() < map.size()) - { - exportImg(images.get(0), new File(imgDir, objFile.getName().replaceAll("(.+)\\..+", "$1.png"))); - } else - { - for (Map.Entry e : map.entrySet()) - exportImg(images.get(e.getValue().img), new File(imgDir, e.getKey() + ".png")); - } - - } catch (IOException e) - { - throw new RuntimeException(e); - } - } - - private class Holder - { - CCModel m; - int img; - - public Holder(CCModel m, int img) - { - this.m = m; - this.img = img; - } - } - } -} diff --git a/src/main/java/codechicken/lib/render/RenderUtils.java b/src/main/java/codechicken/lib/render/RenderUtils.java deleted file mode 100644 index 6ee10f16..00000000 --- a/src/main/java/codechicken/lib/render/RenderUtils.java +++ /dev/null @@ -1,375 +0,0 @@ -package codechicken.lib.render; - -import codechicken.lib.vec.Cuboid6; -import codechicken.lib.vec.Rectangle4i; -import codechicken.lib.vec.Vector3; -import net.minecraft.block.Block; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.entity.RenderItem; -import net.minecraft.client.renderer.entity.RenderManager; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; -import net.minecraftforge.client.IItemRenderer; -import net.minecraftforge.client.MinecraftForgeClient; -import net.minecraftforge.fluids.Fluid; -import net.minecraftforge.fluids.FluidStack; -import org.lwjgl.opengl.GL11; - -import static net.minecraftforge.client.IItemRenderer.ItemRenderType.ENTITY; -import static net.minecraftforge.client.IItemRenderer.ItemRendererHelper.BLOCK_3D; - -public class RenderUtils -{ - static Vector3[] vectors = new Vector3[8]; - static RenderItem uniformRenderItem = new RenderItem() - { - public boolean shouldBob() - { - return false; - } - }; - static EntityItem entityItem; - - static - { - for (int i = 0; i < vectors.length; i++) - vectors[i] = new Vector3(); - - uniformRenderItem.setRenderManager(RenderManager.instance); - - entityItem = new EntityItem(null); - entityItem.hoverStart = 0; - } - - public static void renderFluidQuad(Vector3 point1, Vector3 point2, Vector3 point3, Vector3 point4, IIcon icon, double res) - { - renderFluidQuad(point2, vectors[0].set(point4).subtract(point1), vectors[1].set(point1).subtract(point2), icon, res); - } - - /** - * Draws a tessellated quadrilateral bottom to top, left to right - * - * @param base The bottom left corner of the quad - * @param wide The bottom of the quad - * @param high The left side of the quad - * @param res Units per icon - */ - public static void renderFluidQuad(Vector3 base, Vector3 wide, Vector3 high, IIcon icon, double res) - { - Tessellator t = Tessellator.instance; - - double u1 = icon.getMinU(); - double du = icon.getMaxU() - icon.getMinU(); - double v2 = icon.getMaxV(); - double dv = icon.getMaxV() - icon.getMinV(); - - double wlen = wide.mag(); - double hlen = high.mag(); - - double x = 0; - while (x < wlen) - { - double rx = wlen - x; - if (rx > res) - { - rx = res; - } - - double y = 0; - while (y < hlen) - { - double ry = hlen - y; - if (ry > res) - { - ry = res; - } - - Vector3 dx1 = vectors[2].set(wide).multiply(x / wlen); - Vector3 dx2 = vectors[3].set(wide).multiply((x + rx) / wlen); - Vector3 dy1 = vectors[4].set(high).multiply(y / hlen); - Vector3 dy2 = vectors[5].set(high).multiply((y + ry) / hlen); - - t.addVertexWithUV(base.x + dx1.x + dy2.x, base.y + dx1.y + dy2.y, base.z + dx1.z + dy2.z, u1, v2 - ry / res * dv); - t.addVertexWithUV(base.x + dx1.x + dy1.x, base.y + dx1.y + dy1.y, base.z + dx1.z + dy1.z, u1, v2); - t.addVertexWithUV(base.x + dx2.x + dy1.x, base.y + dx2.y + dy1.y, base.z + dx2.z + dy1.z, u1 + rx / res * du, v2); - t.addVertexWithUV(base.x + dx2.x + dy2.x, base.y + dx2.y + dy2.y, base.z + dx2.z + dy2.z, u1 + rx / res * du, v2 - ry / res * dv); - - y += ry; - } - - x += rx; - } - } - - public static void translateToWorldCoords(Entity entity, float frame) - { - double interpPosX = entity.lastTickPosX + (entity.posX - entity.lastTickPosX) * frame; - double interpPosY = entity.lastTickPosY + (entity.posY - entity.lastTickPosY) * frame; - double interpPosZ = entity.lastTickPosZ + (entity.posZ - entity.lastTickPosZ) * frame; - - GL11.glTranslated(-interpPosX, -interpPosY, -interpPosZ); - } - - public static void drawCuboidOutline(Cuboid6 c) - { - Tessellator var2 = Tessellator.instance; - var2.startDrawing(3); - var2.addVertex(c.min.x, c.min.y, c.min.z); - var2.addVertex(c.max.x, c.min.y, c.min.z); - var2.addVertex(c.max.x, c.min.y, c.max.z); - var2.addVertex(c.min.x, c.min.y, c.max.z); - var2.addVertex(c.min.x, c.min.y, c.min.z); - var2.draw(); - var2.startDrawing(3); - var2.addVertex(c.min.x, c.max.y, c.min.z); - var2.addVertex(c.max.x, c.max.y, c.min.z); - var2.addVertex(c.max.x, c.max.y, c.max.z); - var2.addVertex(c.min.x, c.max.y, c.max.z); - var2.addVertex(c.min.x, c.max.y, c.min.z); - var2.draw(); - var2.startDrawing(1); - var2.addVertex(c.min.x, c.min.y, c.min.z); - var2.addVertex(c.min.x, c.max.y, c.min.z); - var2.addVertex(c.max.x, c.min.y, c.min.z); - var2.addVertex(c.max.x, c.max.y, c.min.z); - var2.addVertex(c.max.x, c.min.y, c.max.z); - var2.addVertex(c.max.x, c.max.y, c.max.z); - var2.addVertex(c.min.x, c.min.y, c.max.z); - var2.addVertex(c.min.x, c.max.y, c.max.z); - var2.draw(); - } - - public static void renderFluidCuboid(Cuboid6 bound, IIcon tex, double res) - { - renderFluidQuad(//bottom - new Vector3(bound.min.x, bound.min.y, bound.min.z), - new Vector3(bound.max.x, bound.min.y, bound.min.z), - new Vector3(bound.max.x, bound.min.y, bound.max.z), - new Vector3(bound.min.x, bound.min.y, bound.max.z), - tex, res); - renderFluidQuad(//top - new Vector3(bound.min.x, bound.max.y, bound.min.z), - new Vector3(bound.min.x, bound.max.y, bound.max.z), - new Vector3(bound.max.x, bound.max.y, bound.max.z), - new Vector3(bound.max.x, bound.max.y, bound.min.z), - tex, res); - renderFluidQuad(//-x - new Vector3(bound.min.x, bound.max.y, bound.min.z), - new Vector3(bound.min.x, bound.min.y, bound.min.z), - new Vector3(bound.min.x, bound.min.y, bound.max.z), - new Vector3(bound.min.x, bound.max.y, bound.max.z), - tex, res); - renderFluidQuad(//+x - new Vector3(bound.max.x, bound.max.y, bound.max.z), - new Vector3(bound.max.x, bound.min.y, bound.max.z), - new Vector3(bound.max.x, bound.min.y, bound.min.z), - new Vector3(bound.max.x, bound.max.y, bound.min.z), - tex, res); - renderFluidQuad(//-z - new Vector3(bound.max.x, bound.max.y, bound.min.z), - new Vector3(bound.max.x, bound.min.y, bound.min.z), - new Vector3(bound.min.x, bound.min.y, bound.min.z), - new Vector3(bound.min.x, bound.max.y, bound.min.z), - tex, res); - renderFluidQuad(//+z - new Vector3(bound.min.x, bound.max.y, bound.max.z), - new Vector3(bound.min.x, bound.min.y, bound.max.z), - new Vector3(bound.max.x, bound.min.y, bound.max.z), - new Vector3(bound.max.x, bound.max.y, bound.max.z), - tex, res); - } - - public static void renderBlockOverlaySide(int x, int y, int z, int side, double tx1, double tx2, double ty1, double ty2) - { - double[] points = new double[]{x - 0.009, x + 1.009, y - 0.009, y + 1.009, z - 0.009, z + 1.009}; - - Tessellator tessellator = Tessellator.instance; - switch (side) - { - case 0: - tessellator.addVertexWithUV(points[0], points[2], points[4], tx1, ty1); - tessellator.addVertexWithUV(points[1], points[2], points[4], tx2, ty1); - tessellator.addVertexWithUV(points[1], points[2], points[5], tx2, ty2); - tessellator.addVertexWithUV(points[0], points[2], points[5], tx1, ty2); - break; - case 1: - tessellator.addVertexWithUV(points[1], points[3], points[4], tx2, ty1); - tessellator.addVertexWithUV(points[0], points[3], points[4], tx1, ty1); - tessellator.addVertexWithUV(points[0], points[3], points[5], tx1, ty2); - tessellator.addVertexWithUV(points[1], points[3], points[5], tx2, ty2); - break; - case 2: - tessellator.addVertexWithUV(points[0], points[3], points[4], tx2, ty1); - tessellator.addVertexWithUV(points[1], points[3], points[4], tx1, ty1); - tessellator.addVertexWithUV(points[1], points[2], points[4], tx1, ty2); - tessellator.addVertexWithUV(points[0], points[2], points[4], tx2, ty2); - break; - case 3: - tessellator.addVertexWithUV(points[1], points[3], points[5], tx2, ty1); - tessellator.addVertexWithUV(points[0], points[3], points[5], tx1, ty1); - tessellator.addVertexWithUV(points[0], points[2], points[5], tx1, ty2); - tessellator.addVertexWithUV(points[1], points[2], points[5], tx2, ty2); - break; - case 4: - tessellator.addVertexWithUV(points[0], points[3], points[5], tx2, ty1); - tessellator.addVertexWithUV(points[0], points[3], points[4], tx1, ty1); - tessellator.addVertexWithUV(points[0], points[2], points[4], tx1, ty2); - tessellator.addVertexWithUV(points[0], points[2], points[5], tx2, ty2); - break; - case 5: - tessellator.addVertexWithUV(points[1], points[3], points[4], tx2, ty1); - tessellator.addVertexWithUV(points[1], points[3], points[5], tx1, ty1); - tessellator.addVertexWithUV(points[1], points[2], points[5], tx1, ty2); - tessellator.addVertexWithUV(points[1], points[2], points[4], tx2, ty2); - break; - } - } - - public static boolean shouldRenderFluid(FluidStack stack) - { - return stack.amount > 0 && stack.getFluid() != null; - } - - /** - * @param stack The fluid stack to render - * @return The icon of the fluid - */ - public static IIcon prepareFluidRender(FluidStack stack, int alpha) - { - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - - Fluid fluid = stack.getFluid(); - CCRenderState.setColour(fluid.getColor(stack) << 8 | alpha); - TextureUtils.bindAtlas(fluid.getSpriteNumber()); - return TextureUtils.safeIcon(fluid.getIcon(stack)); - } - - /** - * Re-enables lighting and disables blending. - */ - public static void postFluidRender() - { - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_BLEND); - } - - public static double fluidDensityToAlpha(double density) - { - return Math.pow(density, 0.4); - } - - /** - * Renders a fluid within a bounding box. - * If the fluid is a liquid it will render as a normal tank with height equal to density/bound.height. - * If the fluid is a gas, it will render the full box with an alpha equal to density. - * Warning, bound will be mutated if the fluid is a liquid - * - * @param stack The fluid to render. - * @param bound The box within which the fluid is contained. - * @param density The volume of fluid / the capacity of the tank. For gases this determines the alpha, for liquids this determines the height. - * @param res The resolution to render at. - */ - public static void renderFluidCuboid(FluidStack stack, Cuboid6 bound, double density, double res) - { - if (!shouldRenderFluid(stack)) - { - return; - } - - int alpha = 255; - if (stack.getFluid().isGaseous()) - { - alpha = (int) (fluidDensityToAlpha(density) * 255); - } else - { - bound.max.y = bound.min.y + (bound.max.y - bound.min.y) * density; - } - - IIcon tex = prepareFluidRender(stack, alpha); - CCRenderState.startDrawing(); - renderFluidCuboid(bound, tex, res); - CCRenderState.draw(); - postFluidRender(); - } - - public static void renderFluidGauge(FluidStack stack, Rectangle4i rect, double density, double res) - { - if (!shouldRenderFluid(stack)) - { - return; - } - - int alpha = 255; - if (stack.getFluid().isGaseous()) - { - alpha = (int) (fluidDensityToAlpha(density) * 255); - } else - { - int height = (int) (rect.h * density); - rect.y += rect.h - height; - rect.h = height; - } - - IIcon tex = prepareFluidRender(stack, alpha); - CCRenderState.startDrawing(); - renderFluidQuad( - new Vector3(rect.x, rect.y + rect.h, 0), - new Vector3(rect.w, 0, 0), - new Vector3(0, -rect.h, 0), tex, res); - CCRenderState.draw(); - postFluidRender(); - } - - - /** - * Renders item and blocks in the world at 0,0,0 with transformations that size them appropriately - */ - public static void renderItemUniform(ItemStack item) - { - renderItemUniform(item, 0); - } - - /** - * Renders item and blocks in the world at 0,0,0 with transformations that size them appropriately - * - * @param spin The spin angle of the item around the y axis in degrees - */ - public static void renderItemUniform(ItemStack item, double spin) - { - IItemRenderer customRenderer = MinecraftForgeClient.getItemRenderer(item, ENTITY); - boolean is3D = customRenderer != null && customRenderer.shouldUseRenderHelper(ENTITY, item, BLOCK_3D); - - boolean larger = false; - if (item.getItem() instanceof ItemBlock && RenderBlocks.renderItemIn3d(Block.getBlockFromItem(item.getItem()).getRenderType())) - { - int renderType = Block.getBlockFromItem(item.getItem()).getRenderType(); - larger = !(renderType == 1 || renderType == 19 || renderType == 12 || renderType == 2); - } else if (is3D) - { - larger = true; - } - - double d = 2; - double d1 = 1 / d; - if (larger) - { - GL11.glScaled(d, d, d); - } - - GL11.glColor4f(1, 1, 1, 1); - - entityItem.setEntityItemStack(item); - uniformRenderItem.doRender(entityItem, 0, larger ? 0.09 : 0.06, 0, 0, (float) (spin * 9 / Math.PI)); - - if (larger) - { - GL11.glScaled(d1, d1, d1); - } - } -} diff --git a/src/main/java/codechicken/lib/render/ShaderProgram.java b/src/main/java/codechicken/lib/render/ShaderProgram.java deleted file mode 100644 index 31e33bf7..00000000 --- a/src/main/java/codechicken/lib/render/ShaderProgram.java +++ /dev/null @@ -1,149 +0,0 @@ -package codechicken.lib.render; - -import org.lwjgl.opengl.ARBShaderObjects; -import org.lwjgl.opengl.ARBVertexShader; -import org.lwjgl.opengl.GL11; -import org.lwjgl.util.vector.Matrix4f; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; - -import static org.lwjgl.opengl.ARBShaderObjects.*; - -public class ShaderProgram -{ - int programID; - - public ShaderProgram() - { - programID = glCreateProgramObjectARB(); - if (programID == 0) - { - throw new RuntimeException("Unable to allocate shader program object."); - } - } - - public static void restore() - { - glUseProgramObjectARB(0); - } - - public static String asString(InputStream stream) throws IOException - { - StringBuilder sb = new StringBuilder(); - BufferedReader bin = new BufferedReader(new InputStreamReader(stream)); - String line; - while ((line = bin.readLine()) != null) - sb.append(line).append('\n'); - stream.close(); - return sb.toString(); - } - - private static String getInfoLog(int shaderID) - { - return glGetInfoLogARB(shaderID, glGetObjectParameteriARB(shaderID, GL_OBJECT_INFO_LOG_LENGTH_ARB)); - } - - public void attach(int shaderType, String resource) - { - InputStream stream = ShaderProgram.class.getResourceAsStream(resource); - if (stream == null) - { - throw new RuntimeException("Unable to locate resource: " + resource); - } - - attach(shaderType, stream); - } - - public void use() - { - glUseProgramObjectARB(programID); - } - - public void link() - { - glLinkProgramARB(programID); - if (glGetObjectParameteriARB(programID, GL_OBJECT_LINK_STATUS_ARB) == GL11.GL_FALSE) - { - throw new RuntimeException("Error linking program: " + getInfoLog(programID)); - } - - glValidateProgramARB(programID); - if (glGetObjectParameteriARB(programID, GL_OBJECT_VALIDATE_STATUS_ARB) == GL11.GL_FALSE) - { - throw new RuntimeException("Error validating program: " + getInfoLog(programID)); - } - - use(); - onLink(); - restore(); - } - - public void attach(int shaderType, InputStream stream) - { - if (stream == null) - { - throw new RuntimeException("Invalid shader inputstream"); - } - - int shaderID = 0; - try - { - shaderID = glCreateShaderObjectARB(shaderType); - if (shaderID == 0) - { - throw new RuntimeException("Unable to allocate shader object."); - } - - try - { - glShaderSourceARB(shaderID, asString(stream)); - } catch (IOException e) - { - throw new RuntimeException("Error reading inputstream.", e); - } - - glCompileShaderARB(shaderID); - if (glGetObjectParameteriARB(shaderID, GL_OBJECT_COMPILE_STATUS_ARB) == GL11.GL_FALSE) - { - throw new RuntimeException("Error compiling shader: " + getInfoLog(shaderID)); - } - - glAttachObjectARB(programID, shaderID); - } catch (RuntimeException e) - { - glDeleteObjectARB(shaderID); - throw e; - } - } - - public int getUniformLoc(String name) - { - return ARBShaderObjects.glGetUniformLocationARB(programID, name); - } - - public int getAttribLoc(String name) - { - return ARBVertexShader.glGetAttribLocationARB(programID, name); - } - - public void uniformTexture(String name, int textureIndex) - { - ARBShaderObjects.glUniform1iARB(getUniformLoc(name), textureIndex); - } - - public void onLink() - { - - } - - public void glVertexAttributeMat4(int loc, Matrix4f matrix) - { - ARBVertexShader.glVertexAttrib4fARB(loc, matrix.m00, matrix.m01, matrix.m02, matrix.m03); - ARBVertexShader.glVertexAttrib4fARB(loc + 1, matrix.m10, matrix.m11, matrix.m12, matrix.m13); - ARBVertexShader.glVertexAttrib4fARB(loc + 2, matrix.m20, matrix.m21, matrix.m22, matrix.m23); - ARBVertexShader.glVertexAttrib4fARB(loc + 3, matrix.m30, matrix.m31, matrix.m32, matrix.m33); - } -} diff --git a/src/main/java/codechicken/lib/render/SpriteSheetManager.java b/src/main/java/codechicken/lib/render/SpriteSheetManager.java deleted file mode 100644 index abfa2edf..00000000 --- a/src/main/java/codechicken/lib/render/SpriteSheetManager.java +++ /dev/null @@ -1,147 +0,0 @@ -package codechicken.lib.render; - -import codechicken.lib.render.TextureUtils.IIconSelfRegister; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.client.renderer.texture.TextureMap; -import net.minecraft.util.IIcon; -import net.minecraft.util.ResourceLocation; - -import java.util.ArrayList; -import java.util.HashMap; - -public class SpriteSheetManager -{ - private static HashMap spriteSheets = new HashMap(); - - public static SpriteSheet getSheet(ResourceLocation resource) - { - return getSheet(16, 16, resource); - } - - @SideOnly(Side.CLIENT) - public static class SpriteSheet implements IIconSelfRegister - { - public int atlasIndex; - private int tilesX; - private int tilesY; - private ArrayList newSprites = new ArrayList(); - private TextureSpecial[] sprites; - private ResourceLocation resource; - private TextureDataHolder texture; - private int spriteWidth; - private int spriteHeight; - - private SpriteSheet(int tilesX, int tilesY, ResourceLocation textureFile) - { - this.tilesX = tilesX; - this.tilesY = tilesY; - this.resource = textureFile; - sprites = new TextureSpecial[tilesX * tilesY]; - } - - public void requestIndicies(int... indicies) - { - for (int i : indicies) - setupSprite(i); - } - - public void registerIcons(IIconRegister register) - { - TextureMap textureMap = (TextureMap) register; - - if (TextureUtils.refreshTexture(textureMap, resource.getResourcePath())) - { - reloadTexture(); - for (TextureSpecial sprite : sprites) - if (sprite != null) - { - textureMap.setTextureEntry(sprite.getIconName(), sprite); - } - } else - { - for (int i : newSprites) - textureMap.setTextureEntry(sprites[i].getIconName(), sprites[i]); - } - newSprites.clear(); - } - - public TextureSpecial setupSprite(int i) - { - if (sprites[i] == null) - { - String name = resource + "_" + i; - sprites[i] = new TextureSpecial(name).baseFromSheet(this, i); - newSprites.add(i); - } - return sprites[i]; - } - - private void reloadTexture() - { - texture = TextureUtils.loadTexture(resource); - spriteWidth = texture.width / tilesX; - spriteHeight = texture.height / tilesY; - } - - public IIcon getSprite(int index) - { - IIcon i = sprites[index]; - if (i == null) - { - throw new IllegalArgumentException("Sprite at index: " + index + " from texture file " + resource + " was not preloaded."); - } - return i; - } - - public TextureDataHolder createSprite(int spriteIndex) - { - int sx = spriteIndex % tilesX; - int sy = spriteIndex / tilesX; - TextureDataHolder sprite = new TextureDataHolder(spriteWidth, spriteHeight); - TextureUtils.copySubImg(texture.data, texture.width, sx * spriteWidth, sy * spriteHeight, - spriteWidth, spriteHeight, - sprite.data, spriteWidth, 0, 0); - return sprite; - } - - public int spriteWidth() - { - return spriteWidth; - } - - public int spriteHeight() - { - return spriteHeight; - } - - public TextureSpecial bindTextureFX(int i, TextureFX textureFX) - { - return setupSprite(i).addTextureFX(textureFX); - } - - public SpriteSheet selfRegister(int atlas) - { - TextureUtils.addIconRegistrar(this); - return this; - } - - @Override - public int atlasIndex() - { - return atlasIndex; - } - } - - - static SpriteSheet getSheet(int tilesX, int tilesY, ResourceLocation resource) - { - SpriteSheet sheet = spriteSheets.get(resource.toString()); - if (sheet == null) - { - spriteSheets.put(resource.toString(), sheet = new SpriteSheet(tilesX, tilesY, resource)); - } - return sheet; - } -} diff --git a/src/main/java/codechicken/lib/render/TextureDataHolder.java b/src/main/java/codechicken/lib/render/TextureDataHolder.java deleted file mode 100644 index 60b1e4ee..00000000 --- a/src/main/java/codechicken/lib/render/TextureDataHolder.java +++ /dev/null @@ -1,38 +0,0 @@ -package codechicken.lib.render; - -import java.awt.image.BufferedImage; - -public class TextureDataHolder -{ - public int width; - public int height; - public int[] data; - - public TextureDataHolder(int width, int height) - { - this.width = width; - this.height = height; - data = new int[width * height]; - } - - public TextureDataHolder(int[] data, int width) - { - this.data = data; - this.width = width; - height = data.length / width; - } - - public TextureDataHolder(BufferedImage img) - { - this(img.getWidth(), img.getHeight()); - img.getRGB(0, 0, width, height, data, 0, width); - } - - public TextureDataHolder copyData() - { - int[] copy = new int[data.length]; - System.arraycopy(data, 0, copy, 0, data.length); - data = copy; - return this; - } -} diff --git a/src/main/java/codechicken/lib/render/TextureFX.java b/src/main/java/codechicken/lib/render/TextureFX.java deleted file mode 100644 index f4b401f9..00000000 --- a/src/main/java/codechicken/lib/render/TextureFX.java +++ /dev/null @@ -1,69 +0,0 @@ -package codechicken.lib.render; - -import codechicken.lib.render.SpriteSheetManager.SpriteSheet; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.Minecraft; - -@SideOnly(Side.CLIENT) -public class TextureFX -{ - public int[] imageData; - public int tileSizeBase = 16; - public int tileSizeSquare = 256; - public int tileSizeMask = 15; - public int tileSizeSquareMask = 255; - - public boolean anaglyphEnabled; - public TextureSpecial texture; - - public TextureFX(int spriteIndex, SpriteSheet sheet) - { - texture = sheet.bindTextureFX(spriteIndex, this); - } - - public TextureFX(int size, String name) - { - texture = new TextureSpecial(name).blank(size).selfRegister().addTextureFX(this); - } - - public TextureFX setAtlas(int index) - { - texture.atlasIndex = index; - return this; - } - - public void setup() - { - imageData = new int[tileSizeSquare]; - } - - public void onTextureDimensionsUpdate(int width, int height) - { - if (width != height) - { - throw new IllegalArgumentException("Non-Square textureFX not supported (" + width + ":" + height + ")"); - } - - tileSizeBase = width; - tileSizeSquare = tileSizeBase * tileSizeBase; - tileSizeMask = tileSizeBase - 1; - tileSizeSquareMask = tileSizeSquare - 1; - setup(); - } - - public void update() - { - anaglyphEnabled = Minecraft.getMinecraft().gameSettings.anaglyph; - onTick(); - } - - public void onTick() - { - } - - public boolean changed() - { - return true; - } -} diff --git a/src/main/java/codechicken/lib/render/TextureSpecial.java b/src/main/java/codechicken/lib/render/TextureSpecial.java deleted file mode 100644 index f1011014..00000000 --- a/src/main/java/codechicken/lib/render/TextureSpecial.java +++ /dev/null @@ -1,219 +0,0 @@ -package codechicken.lib.render; - -import codechicken.lib.render.SpriteSheetManager.SpriteSheet; -import codechicken.lib.render.TextureUtils.IIconSelfRegister; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.renderer.texture.TextureMap; -import net.minecraft.client.renderer.texture.TextureUtil; -import net.minecraft.client.resources.IResourceManager; -import net.minecraft.client.resources.data.AnimationMetadataSection; -import net.minecraft.client.settings.GameSettings; -import net.minecraft.util.ResourceLocation; - -import java.awt.image.BufferedImage; -import java.util.ArrayList; - -@SideOnly(Side.CLIENT) -public class TextureSpecial extends TextureAtlasSprite implements IIconSelfRegister -{ - public int atlasIndex; - //sprite sheet fields - private int spriteIndex; - private SpriteSheet spriteSheet; - //textureFX fields - private TextureFX textureFX; - private int mipmapLevels; - private int rawWidth; - private int rawHeight; - private int blankSize = -1; - private ArrayList baseTextures; - private boolean selfRegister; - - protected TextureSpecial(String par1) - { - super(par1); - } - - public TextureSpecial addTexture(TextureDataHolder t) - { - if (baseTextures == null) - { - baseTextures = new ArrayList(); - } - baseTextures.add(t); - return this; - } - - public TextureSpecial baseFromSheet(SpriteSheet spriteSheet, int spriteIndex) - { - this.spriteSheet = spriteSheet; - this.spriteIndex = spriteIndex; - return this; - } - - public TextureSpecial addTextureFX(TextureFX fx) - { - textureFX = fx; - return this; - } - - @Override - public void initSprite(int sheetWidth, int sheetHeight, int originX, int originY, boolean rotated) - { - super.initSprite(sheetWidth, sheetHeight, originX, originY, rotated); - if (textureFX != null) - { - textureFX.onTextureDimensionsUpdate(rawWidth, rawHeight); - } - } - - @Override - public void updateAnimation() - { - if (textureFX != null) - { - textureFX.update(); - if (textureFX.changed()) - { - int[][] mipmaps = new int[mipmapLevels + 1][]; - mipmaps[0] = textureFX.imageData; - mipmaps = prepareAnisotropicFiltering(mipmaps); - mipmaps = TextureUtil.generateMipmapData(mipmapLevels, width, mipmaps); - TextureUtil.uploadTextureMipmap(mipmaps, width, height, originX, originY, false, false); - } - } - } - - - /** - * Copy paste mojang code because it's private, and CCL can't have access transformers or reflection - */ - public int[][] prepareAnisotropicFiltering(int[][] mipmaps) - { - if (Minecraft.getMinecraft().gameSettings.anisotropicFiltering <= 1) - { - return mipmaps; - } else - { - int[][] aint1 = new int[mipmaps.length][]; - - for (int k = 0; k < mipmaps.length; ++k) - { - int[] aint2 = mipmaps[k]; - - if (aint2 != null) - { - int[] aint3 = new int[(rawWidth + 16 >> k) * (rawHeight + 16 >> k)]; - System.arraycopy(aint2, 0, aint3, 0, aint2.length); - aint1[k] = TextureUtil.prepareAnisotropicData(aint3, rawWidth >> k, rawHeight >> k, 8 >> k); - } - } - - return aint1; - } - } - - @Override - public void loadSprite(BufferedImage[] images, AnimationMetadataSection animationMeta, boolean anisotropicFiltering) - { - rawWidth = images[0].getWidth(); - rawHeight = images[0].getHeight(); - super.loadSprite(images, animationMeta, anisotropicFiltering); - } - - @Override - public void generateMipmaps(int p_147963_1_) - { - super.generateMipmaps(p_147963_1_); - mipmapLevels = p_147963_1_; - } - - @Override - public boolean hasCustomLoader(IResourceManager manager, ResourceLocation location) - { - return true; - } - - public void addFrame(int[] data, int width, int height) - { - GameSettings settings = Minecraft.getMinecraft().gameSettings; - BufferedImage[] images = new BufferedImage[settings.mipmapLevels + 1]; - images[0] = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); - images[0].setRGB(0, 0, width, height, data, 0, width); - - loadSprite(images, null, settings.anisotropicFiltering > 1); - } - - @Override - public boolean load(IResourceManager manager, ResourceLocation location) - { - if (baseTextures != null) - { - for (TextureDataHolder tex : baseTextures) - addFrame(tex.data, tex.width, tex.height); - } else if (spriteSheet != null) - { - TextureDataHolder tex = spriteSheet.createSprite(spriteIndex); - addFrame(tex.data, tex.width, tex.height); - } else if (blankSize > 0) - { - addFrame(new int[blankSize * blankSize], blankSize, blankSize); - } - - if (framesTextureData.isEmpty()) - { - throw new RuntimeException("No base frame for texture: " + getIconName()); - } - - return false; - } - - @Override - public boolean hasAnimationMetadata() - { - return textureFX != null || super.hasAnimationMetadata(); - } - - @Override - public int getFrameCount() - { - if (textureFX != null) - { - return 1; - } - - return super.getFrameCount(); - } - - public TextureSpecial blank(int size) - { - blankSize = size; - return this; - } - - public TextureSpecial selfRegister() - { - selfRegister = true; - TextureUtils.addIconRegistrar(this); - return this; - } - - @Override - public void registerIcons(IIconRegister register) - { - if (selfRegister) - { - ((TextureMap) register).setTextureEntry(getIconName(), this); - } - } - - @Override - public int atlasIndex() - { - return atlasIndex; - } -} diff --git a/src/main/java/codechicken/lib/render/TextureUtils.java b/src/main/java/codechicken/lib/render/TextureUtils.java deleted file mode 100644 index 9f26c7a1..00000000 --- a/src/main/java/codechicken/lib/render/TextureUtils.java +++ /dev/null @@ -1,192 +0,0 @@ -package codechicken.lib.render; - -import codechicken.lib.colour.Colour; -import codechicken.lib.colour.ColourARGB; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.client.renderer.texture.TextureManager; -import net.minecraft.client.renderer.texture.TextureMap; -import net.minecraft.util.IIcon; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.event.TextureStitchEvent; -import net.minecraftforge.common.MinecraftForge; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; - -import javax.imageio.ImageIO; -import java.awt.image.BufferedImage; -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; - -public class TextureUtils -{ - private static ArrayList iconRegistrars = new ArrayList(); - - public static void addIconRegistrar(IIconSelfRegister registrar) - { - iconRegistrars.add(registrar); - } - - /** - * @return an array of ARGB pixel data - */ - public static int[] loadTextureData(ResourceLocation resource) - { - return loadTexture(resource).data; - } - - public static Colour[] loadTextureColours(ResourceLocation resource) - { - int[] idata = loadTextureData(resource); - Colour[] data = new Colour[idata.length]; - for (int i = 0; i < data.length; i++) - data[i] = new ColourARGB(idata[i]); - return data; - } - - public static InputStream getTextureResource(ResourceLocation textureFile) throws IOException - { - return Minecraft.getMinecraft().getResourceManager().getResource(textureFile).getInputStream(); - } - - public static BufferedImage loadBufferedImage(ResourceLocation textureFile) - { - try - { - return loadBufferedImage(getTextureResource(textureFile)); - } catch (Exception e) - { - System.err.println("Failed to load texture file: " + textureFile); - e.printStackTrace(); - } - return null; - } - - public static BufferedImage loadBufferedImage(InputStream in) throws IOException - { - BufferedImage img = ImageIO.read(in); - in.close(); - return img; - } - - public static TextureManager engine() - { - return Minecraft.getMinecraft().renderEngine; - } - - public static void copySubImg(int[] fromTex, int fromWidth, int fromX, int fromY, int width, int height, int[] toTex, int toWidth, int toX, int toY) - { - for (int y = 0; y < height; y++) - for (int x = 0; x < width; x++) - { - int fp = (y + fromY) * fromWidth + x + fromX; - int tp = (y + toX) * toWidth + x + toX; - - toTex[tp] = fromTex[fp]; - } - } - - public static void bindAtlas(int atlasIndex) - { - engine().bindTexture(atlasIndex == 0 ? TextureMap.locationBlocksTexture : TextureMap.locationItemsTexture); - } - - public static IIcon getBlankIcon(int size, IIconRegister iconRegister) - { - TextureMap textureMap = (TextureMap) iconRegister; - String s = "blank_" + size; - if (textureMap.getTextureExtry(s) == null) - { - TextureSpecial icon = new TextureSpecial(s).blank(size); - textureMap.setTextureEntry(s, icon); - } - return iconRegister.registerIcon(s); - } - - public static TextureSpecial getTextureSpecial(IIconRegister iconRegister, String name) - { - TextureMap textureMap = (TextureMap) iconRegister; - IIcon entry = textureMap.getTextureExtry(name); - if (entry != null) - { - throw new IllegalStateException("Texture: " + name + " is already registered"); - } - - TextureSpecial icon = new TextureSpecial(name); - textureMap.setTextureEntry(name, icon); - return icon; - } - - public static void prepareTexture(int target, int texture, int min_mag_filter, int wrap) - { - GL11.glBindTexture(target, texture); - GL11.glTexParameteri(target, GL11.GL_TEXTURE_MIN_FILTER, min_mag_filter); - GL11.glTexParameteri(target, GL11.GL_TEXTURE_MAG_FILTER, min_mag_filter); - switch (target) - { - case GL12.GL_TEXTURE_3D: - GL11.glTexParameteri(target, GL12.GL_TEXTURE_WRAP_R, wrap); - case GL11.GL_TEXTURE_2D: - GL11.glTexParameteri(target, GL11.GL_TEXTURE_WRAP_T, wrap); - case GL11.GL_TEXTURE_1D: - GL11.glTexParameteri(target, GL11.GL_TEXTURE_WRAP_S, wrap); - } - } - - public static TextureDataHolder loadTexture(ResourceLocation resource) - { - BufferedImage img = loadBufferedImage(resource); - if (img == null) - { - throw new RuntimeException("Texture not found: " + resource); - } - return new TextureDataHolder(img); - } - - /** - * Uses an empty placeholder texture to tell if the map has been reloaded since the last call to refresh texture and the texture with name needs to be reacquired to be valid - */ - public static boolean refreshTexture(TextureMap map, String name) - { - if (map.getTextureExtry(name) == null) - { - map.setTextureEntry(name, new PlaceholderTexture(name)); - return true; - } - return false; - } - - public static IIcon safeIcon(IIcon icon) - { - if (icon == null) - { - icon = ((TextureMap) Minecraft.getMinecraft().getTextureManager().getTexture(TextureMap.locationBlocksTexture)).getAtlasSprite("missingno"); - } - - return icon; - } - - @SubscribeEvent - public void textureLoad(TextureStitchEvent.Pre event) - { - for (IIconSelfRegister reg : iconRegistrars) - if (reg.atlasIndex() == event.map.getTextureType()) - { - reg.registerIcons(event.map); - } - } - - public static interface IIconSelfRegister - { - public void registerIcons(IIconRegister register); - - public int atlasIndex(); - } - - static - { - MinecraftForge.EVENT_BUS.register(new TextureUtils()); - } -} diff --git a/src/main/java/codechicken/lib/render/Vertex5.java b/src/main/java/codechicken/lib/render/Vertex5.java deleted file mode 100644 index 48243217..00000000 --- a/src/main/java/codechicken/lib/render/Vertex5.java +++ /dev/null @@ -1,93 +0,0 @@ -package codechicken.lib.render; - -import codechicken.lib.render.uv.UV; -import codechicken.lib.render.uv.UVTransformation; -import codechicken.lib.util.Copyable; -import codechicken.lib.vec.Transformation; -import codechicken.lib.vec.Vector3; - -import java.math.BigDecimal; -import java.math.MathContext; -import java.math.RoundingMode; - -public class Vertex5 implements Copyable -{ - public Vector3 vec; - public UV uv; - - public Vertex5() - { - this(new Vector3(), new UV()); - } - - public Vertex5(Vector3 vert, UV uv) - { - this.vec = vert; - this.uv = uv; - } - - public Vertex5(Vector3 vert, double u, double v) - { - this(vert, new UV(u, v)); - } - - public Vertex5(double x, double y, double z, double u, double v) - { - this(x, y, z, u, v, 0); - } - - public Vertex5(double x, double y, double z, double u, double v, int tex) - { - this(new Vector3(x, y, z), new UV(u, v, tex)); - } - - public Vertex5(Vertex5 vertex5) - { - this(vertex5.vec.copy(), vertex5.uv.copy()); - } - - public Vertex5 set(double x, double y, double z, double u, double v) - { - vec.set(x, y, z); - uv.set(u, v); - return this; - } - - public Vertex5 set(double x, double y, double z, double u, double v, int tex) - { - vec.set(x, y, z); - uv.set(u, v, tex); - return this; - } - - public Vertex5 set(Vertex5 vert) - { - vec.set(vert.vec); - uv.set(vert.uv); - return this; - } - - public Vertex5 copy() - { - return new Vertex5(this); - } - - public String toString() - { - MathContext cont = new MathContext(4, RoundingMode.HALF_UP); - return "Vertex: (" + new BigDecimal(vec.x, cont) + ", " + new BigDecimal(vec.y, cont) + ", " + new BigDecimal(vec.z, cont) + ") " + - "(" + new BigDecimal(uv.u, cont) + ", " + new BigDecimal(uv.v, cont) + ") (" + uv.tex + ")"; - } - - public Vertex5 apply(Transformation t) - { - vec.apply(t); - return this; - } - - public Vertex5 apply(UVTransformation t) - { - uv.apply(t); - return this; - } -} diff --git a/src/main/java/codechicken/lib/render/uv/IconTransformation.java b/src/main/java/codechicken/lib/render/uv/IconTransformation.java deleted file mode 100644 index 357e5f52..00000000 --- a/src/main/java/codechicken/lib/render/uv/IconTransformation.java +++ /dev/null @@ -1,27 +0,0 @@ -package codechicken.lib.render.uv; - -import codechicken.lib.vec.IrreversibleTransformationException; -import net.minecraft.util.IIcon; - -public class IconTransformation extends UVTransformation -{ - public IIcon icon; - - public IconTransformation(IIcon icon) - { - this.icon = icon; - } - - @Override - public void apply(UV uv) - { - uv.u = icon.getInterpolatedU(uv.u * 16); - uv.v = icon.getInterpolatedV(uv.v * 16); - } - - @Override - public UVTransformation inverse() - { - throw new IrreversibleTransformationException(this); - } -} diff --git a/src/main/java/codechicken/lib/render/uv/MultiIconTransformation.java b/src/main/java/codechicken/lib/render/uv/MultiIconTransformation.java deleted file mode 100644 index 106aac98..00000000 --- a/src/main/java/codechicken/lib/render/uv/MultiIconTransformation.java +++ /dev/null @@ -1,28 +0,0 @@ -package codechicken.lib.render.uv; - -import codechicken.lib.vec.IrreversibleTransformationException; -import net.minecraft.util.IIcon; - -public class MultiIconTransformation extends UVTransformation -{ - public IIcon[] icons; - - public MultiIconTransformation(IIcon... icons) - { - this.icons = icons; - } - - @Override - public void apply(UV uv) - { - IIcon icon = icons[uv.tex % icons.length]; - uv.u = icon.getInterpolatedU(uv.u * 16); - uv.v = icon.getInterpolatedV(uv.v * 16); - } - - @Override - public UVTransformation inverse() - { - throw new IrreversibleTransformationException(this); - } -} diff --git a/src/main/java/codechicken/lib/render/uv/UV.java b/src/main/java/codechicken/lib/render/uv/UV.java deleted file mode 100644 index ddb02cf9..00000000 --- a/src/main/java/codechicken/lib/render/uv/UV.java +++ /dev/null @@ -1,95 +0,0 @@ -package codechicken.lib.render.uv; - -import codechicken.lib.util.Copyable; - -import java.math.BigDecimal; -import java.math.MathContext; -import java.math.RoundingMode; - -public class UV implements Copyable -{ - public double u; - public double v; - public int tex; - - public UV() - { - } - - public UV(double u, double v) - { - this(u, v, 0); - } - - public UV(double u, double v, int tex) - { - this.u = u; - this.v = v; - this.tex = tex; - } - - public UV(UV uv) - { - this(uv.u, uv.v, uv.tex); - } - - public UV set(double u, double v, int tex) - { - this.u = u; - this.v = v; - this.tex = tex; - return this; - } - - public UV set(double u, double v) - { - return set(u, v, tex); - } - - public UV set(UV uv) - { - return set(uv.u, uv.v, uv.tex); - } - - public UV copy() - { - return new UV(this); - } - - public UV add(UV uv) - { - u += uv.u; - v += uv.v; - return this; - } - - public UV multiply(double d) - { - u *= d; - v *= d; - return this; - } - - public String toString() - { - MathContext cont = new MathContext(4, RoundingMode.HALF_UP); - return "UV(" + new BigDecimal(u, cont) + ", " + new BigDecimal(v, cont) + ")"; - } - - public UV apply(UVTransformation t) - { - t.apply(this); - return this; - } - - @Override - public boolean equals(Object o) - { - if (!(o instanceof UV)) - { - return false; - } - UV uv = (UV) o; - return u == uv.u && v == uv.v; - } -} \ No newline at end of file diff --git a/src/main/java/codechicken/lib/render/uv/UVRotation.java b/src/main/java/codechicken/lib/render/uv/UVRotation.java deleted file mode 100644 index e4b95bc6..00000000 --- a/src/main/java/codechicken/lib/render/uv/UVRotation.java +++ /dev/null @@ -1,60 +0,0 @@ -package codechicken.lib.render.uv; - -import codechicken.lib.math.MathHelper; - -import java.math.BigDecimal; -import java.math.MathContext; -import java.math.RoundingMode; - -public class UVRotation extends UVTransformation -{ - public double angle; - - /** - * @param angle The angle to rotate counterclockwise in radians - */ - public UVRotation(double angle) - { - this.angle = angle; - } - - @Override - public void apply(UV uv) - { - double c = MathHelper.cos(angle); - double s = MathHelper.sin(angle); - double u2 = c * uv.u + s * uv.v; - uv.v = -s * uv.u + c * uv.v; - uv.u = u2; - } - - @Override - public UVTransformation inverse() - { - return new UVRotation(-angle); - } - - @Override - public UVTransformation merge(UVTransformation next) - { - if (next instanceof UVRotation) - { - return new UVRotation(angle + ((UVRotation) next).angle); - } - - return null; - } - - @Override - public boolean isRedundant() - { - return MathHelper.between(-1E-5, angle, 1E-5); - } - - @Override - public String toString() - { - MathContext cont = new MathContext(4, RoundingMode.HALF_UP); - return "UVRotation(" + new BigDecimal(angle, cont) + ")"; - } -} diff --git a/src/main/java/codechicken/lib/render/uv/UVScale.java b/src/main/java/codechicken/lib/render/uv/UVScale.java deleted file mode 100644 index 6d16a095..00000000 --- a/src/main/java/codechicken/lib/render/uv/UVScale.java +++ /dev/null @@ -1,42 +0,0 @@ -package codechicken.lib.render.uv; - -import java.math.BigDecimal; -import java.math.MathContext; -import java.math.RoundingMode; - -public class UVScale extends UVTransformation -{ - double su; - double sv; - - public UVScale(double scaleu, double scalev) - { - su = scaleu; - sv = scalev; - } - - public UVScale(double d) - { - this(d, d); - } - - @Override - public void apply(UV uv) - { - uv.u *= su; - uv.v *= sv; - } - - @Override - public UVTransformation inverse() - { - return new UVScale(1 / su, 1 / sv); - } - - @Override - public String toString() - { - MathContext cont = new MathContext(4, RoundingMode.HALF_UP); - return "UVScale(" + new BigDecimal(su, cont) + ", " + new BigDecimal(sv, cont) + ")"; - } -} diff --git a/src/main/java/codechicken/lib/render/uv/UVTransformation.java b/src/main/java/codechicken/lib/render/uv/UVTransformation.java deleted file mode 100644 index befd8435..00000000 --- a/src/main/java/codechicken/lib/render/uv/UVTransformation.java +++ /dev/null @@ -1,42 +0,0 @@ -package codechicken.lib.render.uv; - -import codechicken.lib.render.CCRenderState; -import codechicken.lib.vec.ITransformation; - -/** - * Abstract supertype for any UV transformation - */ -public abstract class UVTransformation extends ITransformation implements CCRenderState.IVertexOperation -{ - public static final int operationIndex = CCRenderState.registerOperation(); - - public UVTransformation at(UV point) - { - return new UVTransformationList(new UVTranslation(-point.u, -point.v), this, new UVTranslation(point.u, point.v)); - } - - public UVTransformationList with(UVTransformation t) - { - return new UVTransformationList(this, t); - } - - @Override - public boolean load() - { - return !isRedundant(); - } - - @Override - public void operate() - { - apply(CCRenderState.vert.uv); - } - - @Override - public int operationID() - { - return operationIndex; - } -} - - diff --git a/src/main/java/codechicken/lib/render/uv/UVTransformationList.java b/src/main/java/codechicken/lib/render/uv/UVTransformationList.java deleted file mode 100644 index 2e04b1b7..00000000 --- a/src/main/java/codechicken/lib/render/uv/UVTransformationList.java +++ /dev/null @@ -1,133 +0,0 @@ -package codechicken.lib.render.uv; - -import java.util.ArrayList; -import java.util.Iterator; - -public class UVTransformationList extends UVTransformation -{ - private ArrayList transformations = new ArrayList(); - - public UVTransformationList(UVTransformation... transforms) - { - for (UVTransformation t : transforms) - if (t instanceof UVTransformationList) - { - transformations.addAll(((UVTransformationList) t).transformations); - } else - { - transformations.add(t); - } - - compact(); - } - - @Override - public void apply(UV uv) - { - for (int i = 0; i < transformations.size(); i++) - transformations.get(i).apply(uv); - } - - @Override - public UVTransformationList with(UVTransformation t) - { - if (t.isRedundant()) - { - return this; - } - - if (t instanceof UVTransformationList) - { - transformations.addAll(((UVTransformationList) t).transformations); - } else - { - transformations.add(t); - } - - compact(); - return this; - } - - public UVTransformationList prepend(UVTransformation t) - { - if (t.isRedundant()) - { - return this; - } - - if (t instanceof UVTransformationList) - { - transformations.addAll(0, ((UVTransformationList) t).transformations); - } else - { - transformations.add(0, t); - } - - compact(); - return this; - } - - private void compact() - { - ArrayList newList = new ArrayList(transformations.size()); - Iterator iterator = transformations.iterator(); - UVTransformation prev = null; - while (iterator.hasNext()) - { - UVTransformation t = iterator.next(); - if (t.isRedundant()) - { - continue; - } - - if (prev != null) - { - UVTransformation m = prev.merge(t); - if (m == null) - { - newList.add(prev); - } else if (m.isRedundant()) - { - t = null; - } else - { - t = m; - } - } - prev = t; - } - if (prev != null) - { - newList.add(prev); - } - - if (newList.size() < transformations.size()) - { - transformations = newList; - } - } - - @Override - public boolean isRedundant() - { - return transformations.size() == 0; - } - - @Override - public UVTransformation inverse() - { - UVTransformationList rev = new UVTransformationList(); - for (int i = transformations.size() - 1; i >= 0; i--) - rev.with(transformations.get(i).inverse()); - return rev; - } - - @Override - public String toString() - { - String s = ""; - for (UVTransformation t : transformations) - s += "\n" + t.toString(); - return s.trim(); - } -} diff --git a/src/main/java/codechicken/lib/render/uv/UVTranslation.java b/src/main/java/codechicken/lib/render/uv/UVTranslation.java deleted file mode 100644 index f4d0b3b9..00000000 --- a/src/main/java/codechicken/lib/render/uv/UVTranslation.java +++ /dev/null @@ -1,63 +0,0 @@ -package codechicken.lib.render.uv; - -import codechicken.lib.math.MathHelper; - -import java.math.BigDecimal; -import java.math.MathContext; -import java.math.RoundingMode; - -public class UVTranslation extends UVTransformation -{ - public double du; - public double dv; - - public UVTranslation(double u, double v) - { - du = u; - dv = v; - } - - @Override - public void apply(UV uv) - { - uv.u += du; - uv.v += dv; - } - - @Override - public UVTransformation at(UV point) - { - return this; - } - - @Override - public UVTransformation inverse() - { - return new UVTranslation(-du, -dv); - } - - @Override - public UVTransformation merge(UVTransformation next) - { - if (next instanceof UVTranslation) - { - UVTranslation t = (UVTranslation) next; - return new UVTranslation(du + t.du, dv + t.dv); - } - - return null; - } - - @Override - public boolean isRedundant() - { - return MathHelper.between(-1E-5, du, 1E-5) && MathHelper.between(-1E-5, dv, 1E-5); - } - - @Override - public String toString() - { - MathContext cont = new MathContext(4, RoundingMode.HALF_UP); - return "UVTranslation(" + new BigDecimal(du, cont) + ", " + new BigDecimal(dv, cont) + ")"; - } -} diff --git a/src/main/java/codechicken/lib/util/Copyable.java b/src/main/java/codechicken/lib/util/Copyable.java deleted file mode 100644 index 57be8301..00000000 --- a/src/main/java/codechicken/lib/util/Copyable.java +++ /dev/null @@ -1,6 +0,0 @@ -package codechicken.lib.util; - -public interface Copyable -{ - public T copy(); -} diff --git a/src/main/java/codechicken/lib/util/LangProxy.java b/src/main/java/codechicken/lib/util/LangProxy.java deleted file mode 100644 index 9282bd9d..00000000 --- a/src/main/java/codechicken/lib/util/LangProxy.java +++ /dev/null @@ -1,23 +0,0 @@ -package codechicken.lib.util; - -import net.minecraft.util.StatCollector; - -public class LangProxy -{ - public final String namespace; - - public LangProxy(String namespace) - { - this.namespace = namespace + "."; - } - - public String translate(String key) - { - return StatCollector.translateToLocal(namespace + key); - } - - public String format(String key, Object... params) - { - return StatCollector.translateToLocalFormatted(namespace + key, params); - } -} diff --git a/src/main/java/codechicken/lib/vec/AxisCycle.java b/src/main/java/codechicken/lib/vec/AxisCycle.java deleted file mode 100644 index 1ea4e2d5..00000000 --- a/src/main/java/codechicken/lib/vec/AxisCycle.java +++ /dev/null @@ -1,45 +0,0 @@ -package codechicken.lib.vec; - -public class AxisCycle -{ - public static Transformation[] cycles = new Transformation[]{ - new RedundantTransformation(), - new VariableTransformation(new Matrix4(0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1)) - { - @Override - public void apply(Vector3 vec) - { - double d0 = vec.x; - double d1 = vec.y; - double d2 = vec.z; - vec.x = d2; - vec.y = d0; - vec.z = d1; - } - - @Override - public Transformation inverse() - { - return cycles[2]; - } - }, - new VariableTransformation(new Matrix4(0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1)) - { - @Override - public void apply(Vector3 vec) - { - double d0 = vec.x; - double d1 = vec.y; - double d2 = vec.z; - vec.x = d1; - vec.y = d2; - vec.z = d0; - } - - @Override - public Transformation inverse() - { - return cycles[1]; - } - }}; -} diff --git a/src/main/java/codechicken/lib/vec/BlockCoord.java b/src/main/java/codechicken/lib/vec/BlockCoord.java deleted file mode 100644 index b032ba92..00000000 --- a/src/main/java/codechicken/lib/vec/BlockCoord.java +++ /dev/null @@ -1,256 +0,0 @@ -package codechicken.lib.vec; - -import codechicken.lib.math.MathHelper; -import codechicken.lib.util.Copyable; -import net.minecraft.tileentity.TileEntity; - -public class BlockCoord implements Comparable, Copyable -{ - public static final BlockCoord[] sideOffsets = new BlockCoord[]{ - new BlockCoord(0, -1, 0), - new BlockCoord(0, 1, 0), - new BlockCoord(0, 0, -1), - new BlockCoord(0, 0, 1), - new BlockCoord(-1, 0, 0), - new BlockCoord(1, 0, 0)}; - public int x; - public int y; - public int z; - - public BlockCoord(int x, int y, int z) - { - this.x = x; - this.y = y; - this.z = z; - } - - public BlockCoord(Vector3 v) - { - this(MathHelper.floor_double(v.x), MathHelper.floor_double(v.y), MathHelper.floor_double(v.z)); - } - - public BlockCoord(TileEntity tile) - { - this(tile.xCoord, tile.yCoord, tile.zCoord); - } - - public BlockCoord(int[] ia) - { - this(ia[0], ia[1], ia[2]); - } - - public BlockCoord() - { - } - - public static BlockCoord fromAxes(int[] ia) - { - return new BlockCoord(ia[2], ia[0], ia[1]); - } - - @Override - public boolean equals(Object obj) - { - if (!(obj instanceof BlockCoord)) - { - return false; - } - BlockCoord o2 = (BlockCoord) obj; - return x == o2.x && y == o2.y && z == o2.z; - } - - @Override - public int hashCode() - { - return (x ^ z) * 31 + y; - } - - public int compareTo(BlockCoord o) - { - if (x != o.x) return x < o.x ? 1 : -1; - if (y != o.y) return y < o.y ? 1 : -1; - if (z != o.z) return z < o.z ? 1 : -1; - return 0; - } - - public Vector3 toVector3Centered() - { - return new Vector3(x + 0.5, y + 0.5, z + 0.5); - } - - public BlockCoord multiply(int i) - { - x *= i; - y *= i; - z *= i; - return this; - } - - public double mag() - { - return Math.sqrt(x * x + y * y + z * z); - } - - public int mag2() - { - return x * x + y * y + z * z; - } - - public boolean isZero() - { - return x == 0 && y == 0 && z == 0; - } - - public boolean isAxial() - { - return x == 0 ? (y == 0 || z == 0) : (y == 0 && z == 0); - } - - public BlockCoord add(BlockCoord coord2) - { - x += coord2.x; - y += coord2.y; - z += coord2.z; - return this; - } - - public BlockCoord add(int i, int j, int k) - { - x += i; - y += j; - z += k; - return this; - } - - public BlockCoord sub(BlockCoord coord2) - { - x -= coord2.x; - y -= coord2.y; - z -= coord2.z; - return this; - } - - public BlockCoord sub(int i, int j, int k) - { - x -= i; - y -= j; - z -= k; - return this; - } - - public BlockCoord offset(int side) - { - return offset(side, 1); - } - - public BlockCoord offset(int side, int amount) - { - BlockCoord offset = sideOffsets[side]; - x += offset.x * amount; - y += offset.y * amount; - z += offset.z * amount; - return this; - } - - public BlockCoord inset(int side) - { - return inset(side, 1); - } - - public BlockCoord inset(int side, int amount) - { - return offset(side, -amount); - } - - public int getSide(int side) - { - switch (side) - { - case 0: - case 1: - return y; - case 2: - case 3: - return z; - case 4: - case 5: - return x; - } - throw new IndexOutOfBoundsException("Switch Falloff"); - } - - public BlockCoord setSide(int s, int v) - { - switch (s) - { - case 0: - case 1: - y = v; - break; - case 2: - case 3: - z = v; - break; - case 4: - case 5: - x = v; - break; - default: - throw new IndexOutOfBoundsException("Switch Falloff"); - } - return this; - } - - public int[] intArray() - { - return new int[]{x, y, z}; - } - - public BlockCoord copy() - { - return new BlockCoord(x, y, z); - } - - public BlockCoord set(int i, int j, int k) - { - x = i; - y = j; - z = k; - return this; - } - - public BlockCoord set(BlockCoord coord) - { - return set(coord.x, coord.y, coord.z); - } - - public BlockCoord set(int[] ia) - { - return set(ia[0], ia[1], ia[2]); - } - - public int toSide() - { - if (!isAxial()) return -1; - if (y < 0) return 0; - if (y > 0) return 1; - if (z < 0) return 2; - if (z > 0) return 3; - if (x < 0) return 4; - if (x > 0) return 5; - - return -1; - } - - public int absSum() - { - return (x < 0 ? -x : x) + - (y < 0 ? -y : y) + - (z < 0 ? -z : z); - } - - public String toString() - { - return "(" + x + ", " + y + ", " + z + ")"; - } -} diff --git a/src/main/java/codechicken/lib/vec/Cuboid6.java b/src/main/java/codechicken/lib/vec/Cuboid6.java deleted file mode 100644 index 0f1988e1..00000000 --- a/src/main/java/codechicken/lib/vec/Cuboid6.java +++ /dev/null @@ -1,231 +0,0 @@ -package codechicken.lib.vec; - -import codechicken.lib.util.Copyable; -import net.minecraft.block.Block; -import net.minecraft.util.AxisAlignedBB; - -import java.math.BigDecimal; -import java.math.MathContext; -import java.math.RoundingMode; - -public class Cuboid6 implements Copyable -{ - public static Cuboid6 full = new Cuboid6(0, 0, 0, 1, 1, 1); - - public Vector3 min; - public Vector3 max; - - public Cuboid6(Vector3 min, Vector3 max) - { - this.min = min; - this.max = max; - } - - public Cuboid6(AxisAlignedBB aabb) - { - min = new Vector3(aabb.minX, aabb.minY, aabb.minZ); - max = new Vector3(aabb.maxX, aabb.maxY, aabb.maxZ); - } - - public Cuboid6(Cuboid6 cuboid) - { - min = cuboid.min.copy(); - max = cuboid.max.copy(); - } - - public Cuboid6(double minx, double miny, double minz, double maxx, double maxy, double maxz) - { - min = new Vector3(minx, miny, minz); - max = new Vector3(maxx, maxy, maxz); - } - - public static boolean intersects(Cuboid6 a, Cuboid6 b) - { - return a != null && b != null && a.intersects(b); - } - - public AxisAlignedBB toAABB() - { - return AxisAlignedBB.getBoundingBox(min.x, min.y, min.z, max.x, max.y, max.z); - } - - public Cuboid6 copy() - { - return new Cuboid6(this); - } - - public Cuboid6 set(Cuboid6 c) - { - return set(c.min, c.max); - } - - public Cuboid6 set(Vector3 min, Vector3 max) - { - this.min.set(min); - this.max.set(max); - return this; - } - - public Cuboid6 set(double minx, double miny, double minz, double maxx, double maxy, double maxz) - { - min.set(minx, miny, minz); - max.set(maxx, maxy, maxz); - return this; - } - - public Cuboid6 add(Vector3 vec) - { - min.add(vec); - max.add(vec); - return this; - } - - public Cuboid6 sub(Vector3 vec) - { - min.subtract(vec); - max.subtract(vec); - return this; - } - - public Cuboid6 expand(double d) - { - return expand(new Vector3(d, d, d)); - } - - public Cuboid6 expand(Vector3 vec) - { - min.sub(vec); - max.add(vec); - return this; - } - - public void setBlockBounds(Block block) - { - block.setBlockBounds((float) min.x, (float) min.y, (float) min.z, (float) max.x, (float) max.y, (float) max.z); - } - - public boolean intersects(Cuboid6 b) - { - return max.x - 1E-5 > b.min.x && - b.max.x - 1E-5 > min.x && - max.y - 1E-5 > b.min.y && - b.max.y - 1E-5 > min.y && - max.z - 1E-5 > b.min.z && - b.max.z - 1E-5 > min.z; - } - - public Cuboid6 offset(Cuboid6 o) - { - min.add(o.min); - max.add(o.max); - return this; - } - - public Vector3 center() - { - return min.copy().add(max).multiply(0.5); - } - - public String toString() - { - MathContext cont = new MathContext(4, RoundingMode.HALF_UP); - return "Cuboid: (" + new BigDecimal(min.x, cont) + ", " + new BigDecimal(min.y, cont) + ", " + new BigDecimal(min.z, cont) + ") -> (" + - new BigDecimal(max.x, cont) + ", " + new BigDecimal(max.y, cont) + ", " + new BigDecimal(max.z, cont) + ")"; - } - - public Cuboid6 enclose(Vector3 vec) - { - if (min.x > vec.x) min.x = vec.x; - if (min.y > vec.y) min.y = vec.y; - if (min.z > vec.z) min.z = vec.z; - if (max.x < vec.x) max.x = vec.x; - if (max.y < vec.y) max.y = vec.y; - if (max.z < vec.z) max.z = vec.z; - return this; - } - - public Cuboid6 enclose(Cuboid6 c) - { - if (min.x > c.min.x) min.x = c.min.x; - if (min.y > c.min.y) min.y = c.min.y; - if (min.z > c.min.z) min.z = c.min.z; - if (max.x < c.max.x) max.x = c.max.x; - if (max.y < c.max.y) max.y = c.max.y; - if (max.z < c.max.z) max.z = c.max.z; - return this; - } - - public Cuboid6 apply(Transformation t) - { - t.apply(min); - t.apply(max); - double temp; - if (min.x > max.x) - { - temp = min.x; - min.x = max.x; - max.x = temp; - } - if (min.y > max.y) - { - temp = min.y; - min.y = max.y; - max.y = temp; - } - if (min.z > max.z) - { - temp = min.z; - min.z = max.z; - max.z = temp; - } - return this; - } - - public double getSide(int s) - { - switch (s) - { - case 0: - return min.y; - case 1: - return max.y; - case 2: - return min.z; - case 3: - return max.z; - case 4: - return min.x; - case 5: - return max.x; - } - throw new IndexOutOfBoundsException("Switch Falloff"); - } - - public Cuboid6 setSide(int s, double d) - { - switch (s) - { - case 0: - min.y = d; - break; - case 1: - max.y = d; - break; - case 2: - min.z = d; - break; - case 3: - max.z = d; - break; - case 4: - min.x = d; - break; - case 5: - max.x = d; - break; - default: - throw new IndexOutOfBoundsException("Switch Falloff"); - } - return this; - } -} diff --git a/src/main/java/codechicken/lib/vec/CuboidCoord.java b/src/main/java/codechicken/lib/vec/CuboidCoord.java deleted file mode 100644 index 8f4ad777..00000000 --- a/src/main/java/codechicken/lib/vec/CuboidCoord.java +++ /dev/null @@ -1,268 +0,0 @@ -package codechicken.lib.vec; - -import codechicken.lib.util.Copyable; -import net.minecraft.util.AxisAlignedBB; - -import java.util.Iterator; - -public class CuboidCoord implements Iterable, Copyable -{ - public BlockCoord min; - public BlockCoord max; - - public CuboidCoord() - { - min = new BlockCoord(); - max = new BlockCoord(); - } - - public CuboidCoord(BlockCoord min, BlockCoord max) - { - this.min = min; - this.max = max; - } - - public CuboidCoord(BlockCoord coord) - { - this(coord, coord.copy()); - } - - public CuboidCoord(int[] ia) - { - this(ia[0], ia[1], ia[2], ia[3], ia[4], ia[5]); - } - - public CuboidCoord(int x1, int y1, int z1, int x2, int y2, int z2) - { - this(new BlockCoord(x1, y1, z1), new BlockCoord(x2, y2, z2)); - } - - public CuboidCoord expand(int amount) - { - return expand(amount, amount, amount); - } - - public CuboidCoord expand(int x, int y, int z) - { - max.add(x, y, z); - min.sub(x, y, z); - return this; - } - - public CuboidCoord expand(int side, int amount) - { - if (side % 2 == 0)//negative side - { - min = min.offset(side, amount); - } else - { - max = max.offset(side, amount); - } - return this; - } - - public int size(int s) - { - switch (s) - { - case 0: - case 1: - return max.y - min.y + 1; - case 2: - case 3: - return max.z - min.z + 1; - case 4: - case 5: - return max.x - min.x + 1; - default: - return 0; - } - } - - public int getSide(int s) - { - switch (s) - { - case 0: - return min.y; - case 1: - return max.y; - case 2: - return min.z; - case 3: - return max.z; - case 4: - return min.x; - case 5: - return max.x; - } - throw new IndexOutOfBoundsException("Switch Falloff"); - } - - public CuboidCoord setSide(int s, int v) - { - switch (s) - { - case 0: - min.y = v; - break; - case 1: - max.y = v; - break; - case 2: - min.z = v; - break; - case 3: - max.z = v; - break; - case 4: - min.x = v; - break; - case 5: - max.x = v; - break; - default: - throw new IndexOutOfBoundsException("Switch Falloff"); - } - return this; - } - - public int getVolume() - { - return (max.x - min.x + 1) * (max.y - min.y + 1) * (max.z - min.z + 1); - } - - public Vector3 getCenterVec() - { - return new Vector3(min.x + (max.x - min.x + 1) / 2D, min.y + (max.y - min.y + 1) / 2D, min.z + (max.z - min.z + 1) / 2D); - } - - public BlockCoord getCenter(BlockCoord store) - { - store.set(min.x + (max.x - min.x) / 2, min.y + (max.y - min.y) / 2, min.z + (max.z - min.z) / 2); - return store; - } - - public boolean contains(BlockCoord coord) - { - return contains(coord.x, coord.y, coord.z); - } - - public boolean contains(int x, int y, int z) - { - return x >= min.x && x <= max.x - && y >= min.y && y <= max.y - && z >= min.z && z <= max.z; - } - - public int[] intArray() - { - return new int[]{min.x, min.y, min.z, max.x, max.y, max.z}; - } - - public CuboidCoord copy() - { - return new CuboidCoord(min.copy(), max.copy()); - } - - public Cuboid6 bounds() - { - return new Cuboid6(min.x, min.y, min.z, max.x + 1, max.y + 1, max.z + 1); - } - - public AxisAlignedBB toAABB() - { - return bounds().toAABB(); - } - - public void set(BlockCoord min, BlockCoord max) - { - this.min.set(min); - this.max.set(max); - } - - public CuboidCoord set(int x1, int y1, int z1, int x2, int y2, int z2) - { - min.set(x1, y1, z1); - max.set(x2, y2, z2); - return this; - } - - public CuboidCoord set(BlockCoord coord) - { - min.set(coord); - max.set(coord); - return this; - } - - public CuboidCoord set(int[] ia) - { - return set(ia[0], ia[1], ia[2], ia[3], ia[4], ia[5]); - } - - public CuboidCoord include(BlockCoord coord) - { - return include(coord.x, coord.y, coord.z); - } - - public CuboidCoord include(int x, int y, int z) - { - if (x < min.x) - { - min.x = x; - } else if (x > max.x) max.x = x; - if (y < min.y) - { - min.y = y; - } else if (y > max.y) max.y = y; - if (z < min.z) - { - min.z = z; - } else if (z > max.z) max.z = z; - return this; - } - - public Iterator iterator() - { - return new Iterator() - { - BlockCoord b = null; - - public boolean hasNext() - { - return b == null || !b.equals(max); - } - - public BlockCoord next() - { - if (b == null) - { - b = min.copy(); - } else - { - if (b.z != max.z) - { - b.z++; - } else - { - b.z = min.z; - if (b.y != max.y) - { - b.y++; - } else - { - b.y = min.y; - b.x++; - } - } - } - return b.copy(); - } - - public void remove() - { - throw new UnsupportedOperationException(); - } - }; - } -} diff --git a/src/main/java/codechicken/lib/vec/ITransformation.java b/src/main/java/codechicken/lib/vec/ITransformation.java deleted file mode 100644 index 668686c6..00000000 --- a/src/main/java/codechicken/lib/vec/ITransformation.java +++ /dev/null @@ -1,54 +0,0 @@ -package codechicken.lib.vec; - -/** - * Abstract supertype for any VectorN transformation - * - * @param The vector type - * @param The transformation type - */ -@SuppressWarnings({ "hiding", "rawtypes" }) -public abstract class ITransformation -{ - /** - * Applies this transformation to vec - */ - public abstract void apply(Vector vec); - - /** - * @param point The point to apply this transformation around - * @return Wraps this transformation in a translation to point and then back from point - */ - public abstract Transformation at(Vector point); - - /** - * Creates a TransformationList composed of this transformation followed by t - * If this is a TransformationList, the transformation will be appended and this returned - */ - public abstract Transformation with(Transformation t); - - /** - * Returns a simplified transformation that performs this, followed by next. If such a transformation does not exist, returns null - */ - public Transformation merge(Transformation next) - { - return null; - } - - /** - * Returns true if this transformation is redundant, eg. Scale(1, 1, 1), Translation(0, 0, 0) or Rotation(0, a, b, c) - */ - public boolean isRedundant() - { - return false; - } - - public abstract Transformation inverse(); - - /** - * Scala ++ operator - */ - public Transformation $plus$plus(Transformation t) - { - return with(t); - } -} diff --git a/src/main/java/codechicken/lib/vec/IrreversibleTransformationException.java b/src/main/java/codechicken/lib/vec/IrreversibleTransformationException.java deleted file mode 100644 index f40109fe..00000000 --- a/src/main/java/codechicken/lib/vec/IrreversibleTransformationException.java +++ /dev/null @@ -1,19 +0,0 @@ -package codechicken.lib.vec; - -@SuppressWarnings("serial") -public class IrreversibleTransformationException extends RuntimeException -{ - @SuppressWarnings("rawtypes") - public ITransformation t; - - public IrreversibleTransformationException(@SuppressWarnings("rawtypes") ITransformation t) - { - this.t = t; - } - - @Override - public String getMessage() - { - return "The following transformation is irreversible:\n" + t; - } -} diff --git a/src/main/java/codechicken/lib/vec/Line3.java b/src/main/java/codechicken/lib/vec/Line3.java deleted file mode 100644 index abfb45ed..00000000 --- a/src/main/java/codechicken/lib/vec/Line3.java +++ /dev/null @@ -1,51 +0,0 @@ -package codechicken.lib.vec; - - -public class Line3 -{ - public static final double tol = 0.0001D; - - public Vector3 pt1; - public Vector3 pt2; - - public Line3(Vector3 pt1, Vector3 pt2) - { - this.pt1 = pt1; - this.pt2 = pt2; - } - - public Line3() - { - this(new Vector3(), new Vector3()); - } - - public static boolean intersection2D(Line3 line1, Line3 line2, Vector3 store) - { - // calculate differences - double xD1 = line1.pt2.x - line1.pt1.x; - double zD1 = line1.pt2.z - line1.pt1.z; - double xD2 = line2.pt2.x - line2.pt1.x; - double zD2 = line2.pt2.z - line2.pt1.z; - - double xD3 = line1.pt1.x - line2.pt1.x; - double zD3 = line1.pt1.z - line2.pt1.z; - - double div = zD2 * xD1 - xD2 * zD1; - if (div == 0)//lines are parallel - { - return false; - } - double ua = (xD2 * zD3 - zD2 * xD3) / div; - store.set(line1.pt1.x + ua * xD1, 0, line1.pt1.z + ua * zD1); - - if (store.x >= Math.min(line1.pt1.x, line1.pt2.x) - tol && store.x >= Math.min(line2.pt1.x, line2.pt2.x) - tol - && store.z >= Math.min(line1.pt1.z, line1.pt2.z) - tol && store.z >= Math.min(line2.pt1.z, line2.pt2.z) - tol - && store.x <= Math.max(line1.pt1.x, line1.pt2.x) + tol && store.x <= Math.max(line2.pt1.x, line2.pt2.x) + tol - && store.z <= Math.max(line1.pt1.z, line1.pt2.z) + tol && store.z <= Math.max(line2.pt1.z, line2.pt2.z) + tol) - { - return true; - } - - return false; - } -} diff --git a/src/main/java/codechicken/lib/vec/Matrix4.java b/src/main/java/codechicken/lib/vec/Matrix4.java deleted file mode 100644 index a6ad9a1b..00000000 --- a/src/main/java/codechicken/lib/vec/Matrix4.java +++ /dev/null @@ -1,353 +0,0 @@ -package codechicken.lib.vec; - -import codechicken.lib.util.Copyable; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import org.lwjgl.opengl.GL11; - -import java.math.BigDecimal; -import java.math.MathContext; -import java.math.RoundingMode; -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.nio.DoubleBuffer; - -public class Matrix4 extends Transformation implements Copyable -{ - private static DoubleBuffer glBuf = ByteBuffer.allocateDirect(16 * 8).order(ByteOrder.nativeOrder()).asDoubleBuffer(); - - //m - public double m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33; - - public Matrix4() - { - m00 = m11 = m22 = m33 = 1; - } - - public Matrix4(double d00, double d01, double d02, double d03, - double d10, double d11, double d12, double d13, - double d20, double d21, double d22, double d23, - double d30, double d31, double d32, double d33) - { - m00 = d00; - m01 = d01; - m02 = d02; - m03 = d03; - m10 = d10; - m11 = d11; - m12 = d12; - m13 = d13; - m20 = d20; - m21 = d21; - m22 = d22; - m23 = d23; - m30 = d30; - m31 = d31; - m32 = d32; - m33 = d33; - } - - public Matrix4(Matrix4 mat) - { - set(mat); - } - - public Matrix4 setIdentity() - { - m00 = m11 = m22 = m33 = 1; - m01 = m02 = m03 = m10 = m12 = m13 = m20 = m21 = m23 = m30 = m31 = m32 = 0; - - return this; - } - - public Matrix4 translate(Vector3 vec) - { - m03 += m00 * vec.x + m01 * vec.y + m02 * vec.z; - m13 += m10 * vec.x + m11 * vec.y + m12 * vec.z; - m23 += m20 * vec.x + m21 * vec.y + m22 * vec.z; - m33 += m30 * vec.x + m31 * vec.y + m32 * vec.z; - - return this; - } - - public Matrix4 scale(Vector3 vec) - { - m00 *= vec.x; - m10 *= vec.x; - m20 *= vec.x; - m30 *= vec.x; - m01 *= vec.y; - m11 *= vec.y; - m21 *= vec.y; - m31 *= vec.y; - m02 *= vec.z; - m12 *= vec.z; - m22 *= vec.z; - m32 *= vec.z; - - return this; - } - - public Matrix4 rotate(double angle, Vector3 axis) - { - double c = Math.cos(angle); - double s = Math.sin(angle); - double mc = 1.0f - c; - double xy = axis.x * axis.y; - double yz = axis.y * axis.z; - double xz = axis.x * axis.z; - double xs = axis.x * s; - double ys = axis.y * s; - double zs = axis.z * s; - - double f00 = axis.x * axis.x * mc + c; - double f10 = xy * mc + zs; - double f20 = xz * mc - ys; - - double f01 = xy * mc - zs; - double f11 = axis.y * axis.y * mc + c; - double f21 = yz * mc + xs; - - double f02 = xz * mc + ys; - double f12 = yz * mc - xs; - double f22 = axis.z * axis.z * mc + c; - - double t00 = m00 * f00 + m01 * f10 + m02 * f20; - double t10 = m10 * f00 + m11 * f10 + m12 * f20; - double t20 = m20 * f00 + m21 * f10 + m22 * f20; - double t30 = m30 * f00 + m31 * f10 + m32 * f20; - double t01 = m00 * f01 + m01 * f11 + m02 * f21; - double t11 = m10 * f01 + m11 * f11 + m12 * f21; - double t21 = m20 * f01 + m21 * f11 + m22 * f21; - double t31 = m30 * f01 + m31 * f11 + m32 * f21; - m02 = m00 * f02 + m01 * f12 + m02 * f22; - m12 = m10 * f02 + m11 * f12 + m12 * f22; - m22 = m20 * f02 + m21 * f12 + m22 * f22; - m32 = m30 * f02 + m31 * f12 + m32 * f22; - m00 = t00; - m10 = t10; - m20 = t20; - m30 = t30; - m01 = t01; - m11 = t11; - m21 = t21; - m31 = t31; - - return this; - } - - public Matrix4 rotate(Rotation rotation) - { - rotation.apply(this); - return this; - } - - public Matrix4 leftMultiply(Matrix4 mat) - { - double n00 = m00 * mat.m00 + m10 * mat.m01 + m20 * mat.m02 + m30 * mat.m03; - double n01 = m01 * mat.m00 + m11 * mat.m01 + m21 * mat.m02 + m31 * mat.m03; - double n02 = m02 * mat.m00 + m12 * mat.m01 + m22 * mat.m02 + m32 * mat.m03; - double n03 = m03 * mat.m00 + m13 * mat.m01 + m23 * mat.m02 + m33 * mat.m03; - double n10 = m00 * mat.m10 + m10 * mat.m11 + m20 * mat.m12 + m30 * mat.m13; - double n11 = m01 * mat.m10 + m11 * mat.m11 + m21 * mat.m12 + m31 * mat.m13; - double n12 = m02 * mat.m10 + m12 * mat.m11 + m22 * mat.m12 + m32 * mat.m13; - double n13 = m03 * mat.m10 + m13 * mat.m11 + m23 * mat.m12 + m33 * mat.m13; - double n20 = m00 * mat.m20 + m10 * mat.m21 + m20 * mat.m22 + m30 * mat.m23; - double n21 = m01 * mat.m20 + m11 * mat.m21 + m21 * mat.m22 + m31 * mat.m23; - double n22 = m02 * mat.m20 + m12 * mat.m21 + m22 * mat.m22 + m32 * mat.m23; - double n23 = m03 * mat.m20 + m13 * mat.m21 + m23 * mat.m22 + m33 * mat.m23; - double n30 = m00 * mat.m30 + m10 * mat.m31 + m20 * mat.m32 + m30 * mat.m33; - double n31 = m01 * mat.m30 + m11 * mat.m31 + m21 * mat.m32 + m31 * mat.m33; - double n32 = m02 * mat.m30 + m12 * mat.m31 + m22 * mat.m32 + m32 * mat.m33; - double n33 = m03 * mat.m30 + m13 * mat.m31 + m23 * mat.m32 + m33 * mat.m33; - - m00 = n00; - m01 = n01; - m02 = n02; - m03 = n03; - m10 = n10; - m11 = n11; - m12 = n12; - m13 = n13; - m20 = n20; - m21 = n21; - m22 = n22; - m23 = n23; - m30 = n30; - m31 = n31; - m32 = n32; - m33 = n33; - - return this; - } - - public Matrix4 multiply(Matrix4 mat) - { - double n00 = m00 * mat.m00 + m01 * mat.m10 + m02 * mat.m20 + m03 * mat.m30; - double n01 = m00 * mat.m01 + m01 * mat.m11 + m02 * mat.m21 + m03 * mat.m31; - double n02 = m00 * mat.m02 + m01 * mat.m12 + m02 * mat.m22 + m03 * mat.m32; - double n03 = m00 * mat.m03 + m01 * mat.m13 + m02 * mat.m23 + m03 * mat.m33; - double n10 = m10 * mat.m00 + m11 * mat.m10 + m12 * mat.m20 + m13 * mat.m30; - double n11 = m10 * mat.m01 + m11 * mat.m11 + m12 * mat.m21 + m13 * mat.m31; - double n12 = m10 * mat.m02 + m11 * mat.m12 + m12 * mat.m22 + m13 * mat.m32; - double n13 = m10 * mat.m03 + m11 * mat.m13 + m12 * mat.m23 + m13 * mat.m33; - double n20 = m20 * mat.m00 + m21 * mat.m10 + m22 * mat.m20 + m23 * mat.m30; - double n21 = m20 * mat.m01 + m21 * mat.m11 + m22 * mat.m21 + m23 * mat.m31; - double n22 = m20 * mat.m02 + m21 * mat.m12 + m22 * mat.m22 + m23 * mat.m32; - double n23 = m20 * mat.m03 + m21 * mat.m13 + m22 * mat.m23 + m23 * mat.m33; - double n30 = m30 * mat.m00 + m31 * mat.m10 + m32 * mat.m20 + m33 * mat.m30; - double n31 = m30 * mat.m01 + m31 * mat.m11 + m32 * mat.m21 + m33 * mat.m31; - double n32 = m30 * mat.m02 + m31 * mat.m12 + m32 * mat.m22 + m33 * mat.m32; - double n33 = m30 * mat.m03 + m31 * mat.m13 + m32 * mat.m23 + m33 * mat.m33; - - m00 = n00; - m01 = n01; - m02 = n02; - m03 = n03; - m10 = n10; - m11 = n11; - m12 = n12; - m13 = n13; - m20 = n20; - m21 = n21; - m22 = n22; - m23 = n23; - m30 = n30; - m31 = n31; - m32 = n32; - m33 = n33; - - return this; - } - - public Matrix4 transpose() - { - double n00 = m00; - double n10 = m01; - double n20 = m02; - double n30 = m03; - double n01 = m10; - double n11 = m11; - double n21 = m12; - double n31 = m13; - double n02 = m20; - double n12 = m21; - double n22 = m22; - double n32 = m23; - double n03 = m30; - double n13 = m31; - double n23 = m32; - double n33 = m33; - - m00 = n00; - m01 = n01; - m02 = n02; - m03 = n03; - m10 = n10; - m11 = n11; - m12 = n12; - m13 = n13; - m20 = n20; - m21 = n21; - m22 = n22; - m23 = n23; - m30 = n30; - m31 = n31; - m32 = n32; - m33 = n33; - - return this; - } - - public Matrix4 copy() - { - return new Matrix4(this); - } - - public Matrix4 set(Matrix4 mat) - { - m00 = mat.m00; - m01 = mat.m01; - m02 = mat.m02; - m03 = mat.m03; - m10 = mat.m10; - m11 = mat.m11; - m12 = mat.m12; - m13 = mat.m13; - m20 = mat.m20; - m21 = mat.m21; - m22 = mat.m22; - m23 = mat.m23; - m30 = mat.m30; - m31 = mat.m31; - m32 = mat.m32; - m33 = mat.m33; - - return this; - } - - @Override - public void apply(Matrix4 mat) - { - mat.multiply(this); - } - - private void mult3x3(Vector3 vec) - { - double x = m00 * vec.x + m01 * vec.y + m02 * vec.z; - double y = m10 * vec.x + m11 * vec.y + m12 * vec.z; - double z = m20 * vec.x + m21 * vec.y + m22 * vec.z; - - vec.x = x; - vec.y = y; - vec.z = z; - } - - @Override - public void apply(Vector3 vec) - { - mult3x3(vec); - vec.add(m03, m13, m23); - } - - @Override - public void applyN(Vector3 vec) - { - mult3x3(vec); - vec.normalize(); - } - - @Override - public String toString() - { - MathContext cont = new MathContext(4, RoundingMode.HALF_UP); - return "[" + new BigDecimal(m00, cont) + "," + new BigDecimal(m01, cont) + "," + new BigDecimal(m02, cont) + "," + new BigDecimal(m03, cont) + "]\n" + - "[" + new BigDecimal(m10, cont) + "," + new BigDecimal(m11, cont) + "," + new BigDecimal(m12, cont) + "," + new BigDecimal(m13, cont) + "]\n" + - "[" + new BigDecimal(m20, cont) + "," + new BigDecimal(m21, cont) + "," + new BigDecimal(m22, cont) + "," + new BigDecimal(m23, cont) + "]\n" + - "[" + new BigDecimal(m30, cont) + "," + new BigDecimal(m31, cont) + "," + new BigDecimal(m32, cont) + "," + new BigDecimal(m33, cont) + "]"; - } - - public Matrix4 apply(Transformation t) - { - t.apply(this); - return this; - } - - @Override - @SideOnly(Side.CLIENT) - public void glApply() - { - glBuf.put(m00).put(m10).put(m20).put(m30) - .put(m01).put(m11).put(m21).put(m31) - .put(m02).put(m12).put(m22).put(m32) - .put(m03).put(m13).put(m23).put(m33); - glBuf.flip(); - GL11.glMultMatrix(glBuf); - } - - @Override - public Transformation inverse() - { - throw new IrreversibleTransformationException(this);//Don't waste your cpu with matrix inverses - } -} diff --git a/src/main/java/codechicken/lib/vec/Quat.java b/src/main/java/codechicken/lib/vec/Quat.java deleted file mode 100644 index 52c1049d..00000000 --- a/src/main/java/codechicken/lib/vec/Quat.java +++ /dev/null @@ -1,157 +0,0 @@ -package codechicken.lib.vec; - -import codechicken.lib.math.MathHelper; -import codechicken.lib.util.Copyable; - -import java.math.BigDecimal; -import java.math.MathContext; -import java.math.RoundingMode; - -public class Quat implements Copyable -{ - public double x; - public double y; - public double z; - public double s; - - public Quat() - { - s = 1; - x = 0; - y = 0; - z = 0; - } - - public Quat(Quat quat) - { - x = quat.x; - y = quat.y; - z = quat.z; - s = quat.s; - } - - public Quat(double d, double d1, double d2, double d3) - { - x = d1; - y = d2; - z = d3; - s = d; - } - - public static Quat aroundAxis(double ax, double ay, double az, double angle) - { - return new Quat().setAroundAxis(ax, ay, az, angle); - } - - public static Quat aroundAxis(Vector3 axis, double angle) - { - return aroundAxis(axis.x, axis.y, axis.z, angle); - } - - public Quat set(Quat quat) - { - x = quat.x; - y = quat.y; - z = quat.z; - s = quat.s; - - return this; - } - - public Quat set(double d, double d1, double d2, double d3) - { - x = d1; - y = d2; - z = d3; - s = d; - - return this; - } - - public Quat setAroundAxis(double ax, double ay, double az, double angle) - { - angle *= 0.5; - double d4 = MathHelper.sin(angle); - return set(MathHelper.cos(angle), ax * d4, ay * d4, az * d4); - } - - public Quat setAroundAxis(Vector3 axis, double angle) - { - return setAroundAxis(axis.x, axis.y, axis.z, angle); - } - - public Quat multiply(Quat quat) - { - double d = s * quat.s - x * quat.x - y * quat.y - z * quat.z; - double d1 = s * quat.x + x * quat.s - y * quat.z + z * quat.y; - double d2 = s * quat.y + x * quat.z + y * quat.s - z * quat.x; - double d3 = s * quat.z - x * quat.y + y * quat.x + z * quat.s; - s = d; - x = d1; - y = d2; - z = d3; - - return this; - } - - public Quat rightMultiply(Quat quat) - { - double d = s * quat.s - x * quat.x - y * quat.y - z * quat.z; - double d1 = s * quat.x + x * quat.s + y * quat.z - z * quat.y; - double d2 = s * quat.y - x * quat.z + y * quat.s + z * quat.x; - double d3 = s * quat.z + x * quat.y - y * quat.x + z * quat.s; - s = d; - x = d1; - y = d2; - z = d3; - - return this; - } - - public double mag() - { - return Math.sqrt(x * x + y * y + z * z + s * s); - } - - public Quat normalize() - { - double d = mag(); - if (d != 0) - { - d = 1 / d; - x *= d; - y *= d; - z *= d; - s *= d; - } - - return this; - } - - public Quat copy() - { - return new Quat(this); - } - - public void rotate(Vector3 vec) - { - double d = -x * vec.x - y * vec.y - z * vec.z; - double d1 = s * vec.x + y * vec.z - z * vec.y; - double d2 = s * vec.y - x * vec.z + z * vec.x; - double d3 = s * vec.z + x * vec.y - y * vec.x; - vec.x = d1 * s - d * x - d2 * z + d3 * y; - vec.y = d2 * s - d * y + d1 * z - d3 * x; - vec.z = d3 * s - d * z - d1 * y + d2 * x; - } - - public String toString() - { - MathContext cont = new MathContext(4, RoundingMode.HALF_UP); - return "Quat(" + new BigDecimal(s, cont) + ", " + new BigDecimal(x, cont) + ", " + new BigDecimal(y, cont) + ", " + new BigDecimal(z, cont) + ")"; - } - - public Rotation rotation() - { - return new Rotation(this); - } -} diff --git a/src/main/java/codechicken/lib/vec/Rectangle4i.java b/src/main/java/codechicken/lib/vec/Rectangle4i.java deleted file mode 100644 index 92f030fd..00000000 --- a/src/main/java/codechicken/lib/vec/Rectangle4i.java +++ /dev/null @@ -1,116 +0,0 @@ -package codechicken.lib.vec; - -public class Rectangle4i -{ - public int x; - public int y; - public int w; - public int h; - - public Rectangle4i() - { - } - - public Rectangle4i(int x, int y, int w, int h) - { - this.x = x; - this.y = y; - this.w = w; - this.h = h; - } - - public int x1() - { - return x; - } - - public int y1() - { - return y; - } - - public int x2() - { - return x + w - 1; - } - - public int y2() - { - return y + h - 1; - } - - public void set(int x, int y, int w, int h) - { - this.x = x; - this.y = y; - this.w = w; - this.h = h; - } - - public Rectangle4i offset(int dx, int dy) - { - x += dx; - y += dy; - return this; - } - - @Deprecated - public Rectangle4i with(int px, int py) - { - return include(px, py); - } - - public Rectangle4i include(int px, int py) - { - if (px < x) expand(px - x, 0); - if (px >= x + w) expand(px - x - w + 1, 0); - if (py < y) expand(0, py - y); - if (py >= y + h) expand(0, py - y - h + 1); - return this; - } - - public Rectangle4i include(Rectangle4i r) - { - include(r.x, r.y); - return include(r.x2(), r.y2()); - } - - public Rectangle4i expand(int px, int py) - { - if (px > 0) - { - w += px; - } else - { - x += px; - w -= px; - } - if (py > 0) - { - h += py; - } else - { - y += py; - h -= py; - } - return this; - } - - public boolean contains(int px, int py) - { - return x <= px && px < x + w && y <= py && py < y + h; - } - - public boolean intersects(Rectangle4i r) - { - return r.x + r.w > x && - r.x < x + w && - r.y + r.h > y && - r.y < y + h; - } - - public int area() - { - return w * h; - } -} diff --git a/src/main/java/codechicken/lib/vec/RedundantTransformation.java b/src/main/java/codechicken/lib/vec/RedundantTransformation.java deleted file mode 100644 index 99382a8b..00000000 --- a/src/main/java/codechicken/lib/vec/RedundantTransformation.java +++ /dev/null @@ -1,58 +0,0 @@ -package codechicken.lib.vec; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class RedundantTransformation extends Transformation -{ - @Override - public void apply(Vector3 vec) - { - } - - @Override - public void apply(Matrix4 mat) - { - } - - @Override - public void applyN(Vector3 normal) - { - } - - @Override - public Transformation at(Vector3 point) - { - return this; - } - - @Override - @SideOnly(Side.CLIENT) - public void glApply() - { - } - - @Override - public Transformation inverse() - { - return this; - } - - @Override - public Transformation merge(Transformation next) - { - return next; - } - - @Override - public boolean isRedundant() - { - return true; - } - - @Override - public String toString() - { - return "Nothing()"; - } -} diff --git a/src/main/java/codechicken/lib/vec/Rotation.java b/src/main/java/codechicken/lib/vec/Rotation.java deleted file mode 100644 index 08d86402..00000000 --- a/src/main/java/codechicken/lib/vec/Rotation.java +++ /dev/null @@ -1,358 +0,0 @@ -package codechicken.lib.vec; - -import codechicken.lib.math.MathHelper; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import org.lwjgl.opengl.GL11; - -import java.math.BigDecimal; -import java.math.MathContext; -import java.math.RoundingMode; - -public class Rotation extends Transformation -{ - public static Vector3[] axes = new Vector3[]{ - new Vector3(0, -1, 0), - new Vector3(0, 1, 0), - new Vector3(0, 0, -1), - new Vector3(0, 0, 1), - new Vector3(-1, 0, 0), - new Vector3(1, 0, 0)}; - /** - * Clockwise pi/2 about y looking down - */ - public static Transformation[] quarterRotations = new Transformation[]{ - new RedundantTransformation(), - new VariableTransformation(new Matrix4(0, 0, -1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1)) - { - @Override - public void apply(Vector3 vec) - { - double d1 = vec.x; - double d2 = vec.z; - vec.x = -d2; - vec.z = d1; - } - - @Override - public Transformation inverse() - { - return quarterRotations[3]; - } - }, - new VariableTransformation(new Matrix4(-1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1)) - { - @Override - public void apply(Vector3 vec) - { - vec.x = -vec.x; - vec.z = -vec.z; - } - - @Override - public Transformation inverse() - { - return this; - } - }, - new VariableTransformation(new Matrix4(0, 0, 1, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 1)) - { - @Override - public void apply(Vector3 vec) - { - double d1 = vec.x; - double d2 = vec.z; - vec.x = d2; - vec.z = -d1; - } - - @Override - public Transformation inverse() - { - return quarterRotations[1]; - } - } - }; - public static int[] sideRotMap = new int[]{ - 3, 4, 2, 5, - 3, 5, 2, 4, - 1, 5, 0, 4, - 1, 4, 0, 5, - 1, 2, 0, 3, - 1, 3, 0, 2}; - public static Transformation[] sideRotations = new Transformation[]{ - new RedundantTransformation(), - new VariableTransformation(new Matrix4(1, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1)) - { - @Override - public void apply(Vector3 vec) - { - vec.y = -vec.y; - vec.z = -vec.z; - } - - @Override - public Transformation inverse() - { - return this; - } - }, - new VariableTransformation(new Matrix4(1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1)) - { - @Override - public void apply(Vector3 vec) - { - double d1 = vec.y; - double d2 = vec.z; - vec.y = -d2; - vec.z = d1; - } - - @Override - public Transformation inverse() - { - return sideRotations[3]; - } - }, - new VariableTransformation(new Matrix4(1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1)) - { - @Override - public void apply(Vector3 vec) - { - double d1 = vec.y; - double d2 = vec.z; - vec.y = d2; - vec.z = -d1; - } - - @Override - public Transformation inverse() - { - return sideRotations[2]; - } - }, - new VariableTransformation(new Matrix4(0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)) - { - @Override - public void apply(Vector3 vec) - { - double d0 = vec.x; - double d1 = vec.y; - vec.x = d1; - vec.y = -d0; - } - - @Override - public Transformation inverse() - { - return sideRotations[5]; - } - }, - new VariableTransformation(new Matrix4(0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)) - { - @Override - public void apply(Vector3 vec) - { - double d0 = vec.x; - double d1 = vec.y; - vec.x = -d1; - vec.y = d0; - } - - @Override - public Transformation inverse() - { - return sideRotations[4]; - } - } - }; - public static int[] rotSideMap = new int[]{ - -1, -1, 2, 0, 1, 3, - -1, -1, 2, 0, 3, 1, - 2, 0, -1, -1, 3, 1, - 2, 0, -1, -1, 1, 3, - 2, 0, 1, 3, -1, -1, - 2, 0, 3, 1, -1, -1}; - /** - * Rotate pi/2 * this offset for [side] about y axis before rotating to the side for the rotation indicies to line up - */ - public static int[] sideRotOffsets = new int[]{0, 2, 2, 0, 1, 3}; - public double angle; - public Vector3 axis; - private Quat quat; - - public Rotation(double angle, Vector3 axis) - { - this.angle = angle; - this.axis = axis; - } - - public Rotation(double angle, double x, double y, double z) - { - this(angle, new Vector3(x, y, z)); - } - - public Rotation(Quat quat) - { - this.quat = quat; - - angle = Math.acos(quat.s) * 2; - if (angle == 0) - { - axis = new Vector3(0, 1, 0); - } else - { - double sa = Math.sin(angle * 0.5); - axis = new Vector3(quat.x / sa, quat.y / sa, quat.z / sa); - } - } - - public static int rotateSide(int s, int r) - { - return sideRotMap[s << 2 | r]; - } - - /** - * Reverse of rotateSide - */ - public static int rotationTo(int s1, int s2) - { - if ((s1 & 6) == (s2 & 6)) - { - throw new IllegalArgumentException("Faces " + s1 + " and " + s2 + " are opposites"); - } - return rotSideMap[s1 * 6 + s2]; - } - - /** - * @param player The placing player, used for obtaining the look vector - * @param side The side of the block being placed on - * @return The rotation for the face == side^1 - */ - public static int getSidedRotation(EntityPlayer player, int side) - { - Vector3 look = new Vector3(player.getLook(1)); - double max = 0; - int maxr = 0; - for (int r = 0; r < 4; r++) - { - Vector3 axis = Rotation.axes[rotateSide(side ^ 1, r)]; - double d = look.scalarProject(axis); - if (d > max) - { - max = d; - maxr = r; - } - } - return maxr; - } - - /** - * @return The rotation quat for side 0 and rotation 0 to side s with rotation r - */ - public static Transformation sideOrientation(int s, int r) - { - return quarterRotations[(r + sideRotOffsets[s]) % 4].with(sideRotations[s]); - } - - /** - * @param entity The placing com.darkona.adventurebackpack.entity, used for obtaining the look vector - * @return The side towards which the com.darkona.adventurebackpack.entity is most directly looking. - */ - public static int getSideFromLookAngle(EntityLivingBase entity) - { - Vector3 look = new Vector3(entity.getLook(1)); - double max = 0; - int maxs = 0; - for (int s = 0; s < 6; s++) - { - double d = look.scalarProject(axes[s]); - if (d > max) - { - max = d; - maxs = s; - } - } - return maxs; - } - - @Override - public void apply(Vector3 vec) - { - if (quat == null) - { - quat = Quat.aroundAxis(axis, angle); - } - - vec.rotate(quat); - } - - @Override - public void applyN(Vector3 normal) - { - apply(normal); - } - - @Override - public void apply(Matrix4 mat) - { - mat.rotate(angle, axis); - } - - public Quat toQuat() - { - if (quat == null) - { - quat = Quat.aroundAxis(axis, angle); - } - return quat; - } - - @Override - @SideOnly(Side.CLIENT) - public void glApply() - { - GL11.glRotatef((float) (angle * MathHelper.todeg), (float) axis.x, (float) axis.y, (float) axis.z); - } - - @Override - public Transformation inverse() - { - return new Rotation(-angle, axis); - } - - @Override - public Transformation merge(Transformation next) - { - if (next instanceof Rotation) - { - Rotation r = (Rotation) next; - if (r.axis.equalsT(axis)) - { - return new Rotation(angle + r.angle, axis); - } - - return new Rotation(toQuat().copy().multiply(r.toQuat())); - } - - return null; - } - - @Override - public boolean isRedundant() - { - return MathHelper.between(-1E-5, angle, 1E-5); - } - - @Override - public String toString() - { - MathContext cont = new MathContext(4, RoundingMode.HALF_UP); - return "Rotation(" + new BigDecimal(angle, cont) + ", " + new BigDecimal(axis.x, cont) + ", " + - new BigDecimal(axis.y, cont) + ", " + new BigDecimal(axis.z, cont) + ")"; - } - - -} diff --git a/src/main/java/codechicken/lib/vec/Scale.java b/src/main/java/codechicken/lib/vec/Scale.java deleted file mode 100644 index 712d5851..00000000 --- a/src/main/java/codechicken/lib/vec/Scale.java +++ /dev/null @@ -1,83 +0,0 @@ -package codechicken.lib.vec; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import org.lwjgl.opengl.GL11; - -import java.math.BigDecimal; -import java.math.MathContext; -import java.math.RoundingMode; - -public class Scale extends Transformation -{ - public Vector3 factor; - - public Scale(Vector3 factor) - { - this.factor = factor; - } - - public Scale(double factor) - { - this(new Vector3(factor, factor, factor)); - } - - public Scale(double x, double y, double z) - { - this(new Vector3(x, y, z)); - } - - @Override - public void apply(Vector3 vec) - { - vec.multiply(factor); - } - - @Override - public void applyN(Vector3 normal) - { - } - - @Override - public void apply(Matrix4 mat) - { - mat.scale(factor); - } - - @Override - @SideOnly(Side.CLIENT) - public void glApply() - { - GL11.glScaled(factor.x, factor.y, factor.z); - } - - @Override - public Transformation inverse() - { - return new Scale(1 / factor.x, 1 / factor.y, 1 / factor.z); - } - - @Override - public Transformation merge(Transformation next) - { - if (next instanceof Scale) - { - return new Scale(factor.copy().multiply(((Scale) next).factor)); - } - - return null; - } - - @Override - public boolean isRedundant() - { - return factor.equalsT(Vector3.one); - } - - @Override - public String toString() - { - MathContext cont = new MathContext(4, RoundingMode.HALF_UP); - return "Scale(" + new BigDecimal(factor.x, cont) + ", " + new BigDecimal(factor.y, cont) + ", " + new BigDecimal(factor.z, cont) + ")"; - } -} diff --git a/src/main/java/codechicken/lib/vec/SwapYZ.java b/src/main/java/codechicken/lib/vec/SwapYZ.java deleted file mode 100644 index 32085d96..00000000 --- a/src/main/java/codechicken/lib/vec/SwapYZ.java +++ /dev/null @@ -1,27 +0,0 @@ -package codechicken.lib.vec; - -public class SwapYZ extends VariableTransformation -{ - public SwapYZ() - { - super(new Matrix4( - 1, 0, 0, 0, - 0, 0, 1, 0, - 0, 1, 0, 0, - 0, 0, 0, 1)); - } - - @Override - public void apply(Vector3 vec) - { - double vz = vec.z; - vec.z = vec.y; - vec.y = vz; - } - - @Override - public Transformation inverse() - { - return this; - } -} diff --git a/src/main/java/codechicken/lib/vec/Transformation.java b/src/main/java/codechicken/lib/vec/Transformation.java deleted file mode 100644 index b6727c7b..00000000 --- a/src/main/java/codechicken/lib/vec/Transformation.java +++ /dev/null @@ -1,63 +0,0 @@ -package codechicken.lib.vec; - -import codechicken.lib.render.CCRenderState; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -/** - * Abstract supertype for any 3D vector transformation - */ -public abstract class Transformation extends ITransformation implements CCRenderState.IVertexOperation -{ - public static final int operationIndex = CCRenderState.registerOperation(); - - /** - * Applies this transformation to a normal (doesn't translate) - * - * @param normal The normal to transform - */ - public abstract void applyN(Vector3 normal); - - /** - * Applies this transformation to a matrix as a multiplication on the right hand side. - * - * @param mat The matrix to combine this transformation with - */ - public abstract void apply(Matrix4 mat); - - public Transformation at(Vector3 point) - { - return new TransformationList(new Translation(-point.x, -point.y, -point.z), this, point.translation()); - } - - public TransformationList with(Transformation t) - { - return new TransformationList(this, t); - } - - @SideOnly(Side.CLIENT) - public abstract void glApply(); - - @Override - public boolean load() - { - CCRenderState.pipeline.addRequirement(CCRenderState.normalAttrib.operationID()); - return !isRedundant(); - } - - @Override - public void operate() - { - apply(CCRenderState.vert.vec); - if (CCRenderState.normalAttrib.active) - { - applyN(CCRenderState.normal); - } - } - - @Override - public int operationID() - { - return operationIndex; - } -} diff --git a/src/main/java/codechicken/lib/vec/TransformationList.java b/src/main/java/codechicken/lib/vec/TransformationList.java deleted file mode 100644 index d40e3451..00000000 --- a/src/main/java/codechicken/lib/vec/TransformationList.java +++ /dev/null @@ -1,202 +0,0 @@ -package codechicken.lib.vec; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -import java.util.ArrayList; -import java.util.Iterator; - -public class TransformationList extends Transformation -{ - private ArrayList transformations = new ArrayList(); - private Matrix4 mat; - - public TransformationList(Transformation... transforms) - { - for (Transformation t : transforms) - if (t instanceof TransformationList) - { - transformations.addAll(((TransformationList) t).transformations); - } else - { - transformations.add(t); - } - - compact(); - } - - public Matrix4 compile() - { - if (mat == null) - { - mat = new Matrix4(); - for (int i = transformations.size() - 1; i >= 0; i--) - transformations.get(i).apply(mat); - } - return mat; - } - - /** - * Returns a global space matrix as opposed to an object space matrix (reverse application order) - * - * @return - */ - public Matrix4 reverseCompile() - { - Matrix4 mat = new Matrix4(); - for (Transformation t : transformations) - t.apply(mat); - return mat; - } - - @Override - public void apply(Vector3 vec) - { - if (mat != null) - { - mat.apply(vec); - } else - { - for (int i = 0; i < transformations.size(); i++) - transformations.get(i).apply(vec); - } - } - - @Override - public void applyN(Vector3 normal) - { - if (mat != null) - { - mat.applyN(normal); - } else - { - for (int i = 0; i < transformations.size(); i++) - transformations.get(i).applyN(normal); - } - } - - @Override - public void apply(Matrix4 mat) - { - mat.multiply(compile()); - } - - @Override - public TransformationList with(Transformation t) - { - if (t.isRedundant()) - { - return this; - } - - mat = null;//matrix invalid - if (t instanceof TransformationList) - { - transformations.addAll(((TransformationList) t).transformations); - } else - { - transformations.add(t); - } - - compact(); - return this; - } - - public TransformationList prepend(Transformation t) - { - if (t.isRedundant()) - { - return this; - } - - mat = null;//matrix invalid - if (t instanceof TransformationList) - { - transformations.addAll(0, ((TransformationList) t).transformations); - } else - { - transformations.add(0, t); - } - - compact(); - return this; - } - - private void compact() - { - ArrayList newList = new ArrayList(transformations.size()); - Iterator iterator = transformations.iterator(); - Transformation prev = null; - while (iterator.hasNext()) - { - Transformation t = iterator.next(); - if (t.isRedundant()) - { - continue; - } - - if (prev != null) - { - Transformation m = prev.merge(t); - if (m == null) - { - newList.add(prev); - } else if (m.isRedundant()) - { - t = null; - } else - { - t = m; - } - } - prev = t; - } - if (prev != null) - { - newList.add(prev); - } - - if (newList.size() < transformations.size()) - { - transformations = newList; - mat = null; - } - - if (transformations.size() > 3 && mat == null) - { - compile(); - } - } - - @Override - public boolean isRedundant() - { - return transformations.size() == 0; - } - - @Override - @SideOnly(Side.CLIENT) - public void glApply() - { - for (int i = transformations.size() - 1; i >= 0; i--) - transformations.get(i).glApply(); - } - - @Override - public Transformation inverse() - { - TransformationList rev = new TransformationList(); - for (int i = transformations.size() - 1; i >= 0; i--) - rev.with(transformations.get(i).inverse()); - return rev; - } - - @Override - public String toString() - { - String s = ""; - for (Transformation t : transformations) - s += "\n" + t.toString(); - return s.trim(); - } -} diff --git a/src/main/java/codechicken/lib/vec/Translation.java b/src/main/java/codechicken/lib/vec/Translation.java deleted file mode 100644 index 2d7e8cd9..00000000 --- a/src/main/java/codechicken/lib/vec/Translation.java +++ /dev/null @@ -1,84 +0,0 @@ -package codechicken.lib.vec; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import org.lwjgl.opengl.GL11; - -import java.math.BigDecimal; -import java.math.MathContext; -import java.math.RoundingMode; - -public class Translation extends Transformation -{ - public Vector3 vec; - - public Translation(Vector3 vec) - { - this.vec = vec; - } - - public Translation(double x, double y, double z) - { - this(new Vector3(x, y, z)); - } - - @Override - public void apply(Vector3 vec) - { - vec.add(this.vec); - } - - @Override - public void applyN(Vector3 normal) - { - } - - @Override - public void apply(Matrix4 mat) - { - mat.translate(vec); - } - - @Override - public Transformation at(Vector3 point) - { - return this; - } - - @Override - @SideOnly(Side.CLIENT) - public void glApply() - { - GL11.glTranslated(vec.x, vec.y, vec.z); - } - - @Override - public Transformation inverse() - { - return new Translation(-vec.x, -vec.y, -vec.z); - } - - @Override - public Transformation merge(Transformation next) - { - if (next instanceof Translation) - { - return new Translation(vec.copy().add(((Translation) next).vec)); - } - - return null; - } - - @Override - public boolean isRedundant() - { - return vec.equalsT(Vector3.zero); - } - - @Override - public String toString() - { - MathContext cont = new MathContext(4, RoundingMode.HALF_UP); - return "Translation(" + new BigDecimal(vec.x, cont) + ", " + new BigDecimal(vec.y, cont) + ", " + new BigDecimal(vec.z, cont) + ")"; - } -} diff --git a/src/main/java/codechicken/lib/vec/VariableTransformation.java b/src/main/java/codechicken/lib/vec/VariableTransformation.java deleted file mode 100644 index 84018e2b..00000000 --- a/src/main/java/codechicken/lib/vec/VariableTransformation.java +++ /dev/null @@ -1,33 +0,0 @@ -package codechicken.lib.vec; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public abstract class VariableTransformation extends Transformation -{ - public Matrix4 mat; - - public VariableTransformation(Matrix4 mat) - { - this.mat = mat; - } - - @Override - public void applyN(Vector3 normal) - { - apply(normal); - } - - @Override - public void apply(Matrix4 mat) - { - mat.multiply(this.mat); - } - - @Override - @SideOnly(Side.CLIENT) - public void glApply() - { - mat.glApply(); - } -} \ No newline at end of file diff --git a/src/main/java/codechicken/lib/vec/Vector3.java b/src/main/java/codechicken/lib/vec/Vector3.java deleted file mode 100644 index 2d3e58e9..00000000 --- a/src/main/java/codechicken/lib/vec/Vector3.java +++ /dev/null @@ -1,545 +0,0 @@ -package codechicken.lib.vec; - -import codechicken.lib.math.MathHelper; -import codechicken.lib.util.Copyable; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.Entity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Vec3; -import org.lwjgl.opengl.GL11; -import org.lwjgl.util.vector.Vector3f; -import org.lwjgl.util.vector.Vector4f; - -import java.math.BigDecimal; -import java.math.MathContext; -import java.math.RoundingMode; - -public class Vector3 implements Copyable -{ - public static Vector3 zero = new Vector3(); - public static Vector3 one = new Vector3(1, 1, 1); - public static Vector3 center = new Vector3(0.5, 0.5, 0.5); - - public double x; - public double y; - public double z; - - public Vector3() - { - } - - public Vector3(double d, double d1, double d2) - { - x = d; - y = d1; - z = d2; - } - - public Vector3(Vector3 vec) - { - x = vec.x; - y = vec.y; - z = vec.z; - } - - public Vector3(double[] da) - { - this(da[0], da[1], da[2]); - } - - public Vector3(Vec3 vec) - { - x = vec.xCoord; - y = vec.yCoord; - z = vec.zCoord; - } - - public Vector3(BlockCoord coord) - { - x = coord.x; - y = coord.y; - z = coord.z; - } - - public static Vector3 fromEntity(Entity e) - { - return new Vector3(e.posX, e.posY, e.posZ); - } - - public static Vector3 fromEntityCenter(Entity e) - { - return new Vector3(e.posX, e.posY - e.yOffset + e.height / 2, e.posZ); - } - - public static Vector3 fromTileEntity(TileEntity e) - { - return new Vector3(e.xCoord, e.yCoord, e.zCoord); - } - - public static Vector3 fromTileEntityCenter(TileEntity e) - { - return new Vector3(e.xCoord + 0.5, e.yCoord + 0.5, e.zCoord + 0.5); - } - - public static Vector3 fromAxes(double[] da) - { - return new Vector3(da[2], da[0], da[1]); - } - - public Vector3 copy() - { - return new Vector3(this); - } - - public Vector3 set(double d, double d1, double d2) - { - x = d; - y = d1; - z = d2; - return this; - } - - public Vector3 set(Vector3 vec) - { - x = vec.x; - y = vec.y; - z = vec.z; - return this; - } - - public double getSide(int side) - { - switch (side) - { - case 0: - case 1: - return y; - case 2: - case 3: - return z; - case 4: - case 5: - return x; - } - throw new IndexOutOfBoundsException("Switch Falloff"); - } - - public Vector3 setSide(int s, double v) - { - switch (s) - { - case 0: - case 1: - y = v; - break; - case 2: - case 3: - z = v; - break; - case 4: - case 5: - x = v; - break; - default: - throw new IndexOutOfBoundsException("Switch Falloff"); - } - return this; - } - - public double dotProduct(Vector3 vec) - { - double d = vec.x * x + vec.y * y + vec.z * z; - - if (d > 1 && d < 1.00001) - { - d = 1; - } else if (d < -1 && d > -1.00001) - { - d = -1; - } - return d; - } - - public double dotProduct(double d, double d1, double d2) - { - return d * x + d1 * y + d2 * z; - } - - public Vector3 crossProduct(Vector3 vec) - { - double d = y * vec.z - z * vec.y; - double d1 = z * vec.x - x * vec.z; - double d2 = x * vec.y - y * vec.x; - x = d; - y = d1; - z = d2; - return this; - } - - public Vector3 add(double d, double d1, double d2) - { - x += d; - y += d1; - z += d2; - return this; - } - - public Vector3 add(Vector3 vec) - { - x += vec.x; - y += vec.y; - z += vec.z; - return this; - } - - public Vector3 add(double d) - { - return add(d, d, d); - } - - public Vector3 sub(Vector3 vec) - { - return subtract(vec); - } - - public Vector3 subtract(Vector3 vec) - { - x -= vec.x; - y -= vec.y; - z -= vec.z; - return this; - } - - public Vector3 negate(Vector3 vec) - { - x = -x; - y = -y; - z = -z; - return this; - } - - public Vector3 multiply(double d) - { - x *= d; - y *= d; - z *= d; - return this; - } - - public Vector3 multiply(Vector3 f) - { - x *= f.x; - y *= f.y; - z *= f.z; - return this; - } - - public Vector3 multiply(double fx, double fy, double fz) - { - x *= fx; - y *= fy; - z *= fz; - return this; - } - - public double mag() - { - return Math.sqrt(x * x + y * y + z * z); - } - - public double magSquared() - { - return x * x + y * y + z * z; - } - - public Vector3 normalize() - { - double d = mag(); - if (d != 0) - { - multiply(1 / d); - } - return this; - } - - public String toString() - { - MathContext cont = new MathContext(4, RoundingMode.HALF_UP); - return "Vector3(" + new BigDecimal(x, cont) + ", " + new BigDecimal(y, cont) + ", " + new BigDecimal(z, cont) + ")"; - } - - public Vector3 perpendicular() - { - if (z == 0) - { - return zCrossProduct(); - } - return xCrossProduct(); - } - - public Vector3 xCrossProduct() - { - double d = z; - double d1 = -y; - x = 0; - y = d; - z = d1; - return this; - } - - public Vector3 zCrossProduct() - { - double d = y; - double d1 = -x; - x = d; - y = d1; - z = 0; - return this; - } - - public Vector3 yCrossProduct() - { - double d = -z; - double d1 = x; - x = d; - y = 0; - z = d1; - return this; - } - - public Vector3 rotate(double angle, Vector3 axis) - { - Quat.aroundAxis(axis.copy().normalize(), angle).rotate(this); - return this; - } - - public Vector3 rotate(Quat rotator) - { - rotator.rotate(this); - return this; - } - - public Vec3 toVec3D() - { - return Vec3.createVectorHelper(x, y, z); - } - - public double angle(Vector3 vec) - { - return Math.acos(copy().normalize().dotProduct(vec.copy().normalize())); - } - - public boolean isZero() - { - return x == 0 && y == 0 && z == 0; - } - - public boolean isAxial() - { - return x == 0 ? (y == 0 || z == 0) : (y == 0 && z == 0); - } - - @SideOnly(Side.CLIENT) - public Vector3f vector3f() - { - return new Vector3f((float) x, (float) y, (float) z); - } - - @SideOnly(Side.CLIENT) - public Vector4f vector4f() - { - return new Vector4f((float) x, (float) y, (float) z, 1); - } - - @SideOnly(Side.CLIENT) - public void glVertex() - { - GL11.glVertex3d(x, y, z); - } - - public Vector3 YZintercept(Vector3 end, double px) - { - double dx = end.x - x; - double dy = end.y - y; - double dz = end.z - z; - - if (dx == 0) - { - return null; - } - - double d = (px - x) / dx; - if (MathHelper.between(-1E-5, d, 1E-5)) - { - return this; - } - - if (!MathHelper.between(0, d, 1)) - { - return null; - } - - x = px; - y += d * dy; - z += d * dz; - return this; - } - - public Vector3 XZintercept(Vector3 end, double py) - { - double dx = end.x - x; - double dy = end.y - y; - double dz = end.z - z; - - if (dy == 0) - { - return null; - } - - double d = (py - y) / dy; - if (MathHelper.between(-1E-5, d, 1E-5)) - { - return this; - } - - if (!MathHelper.between(0, d, 1)) - { - return null; - } - - x += d * dx; - y = py; - z += d * dz; - return this; - } - - public Vector3 XYintercept(Vector3 end, double pz) - { - double dx = end.x - x; - double dy = end.y - y; - double dz = end.z - z; - - if (dz == 0) - { - return null; - } - - double d = (pz - z) / dz; - if (MathHelper.between(-1E-5, d, 1E-5)) - { - return this; - } - - if (!MathHelper.between(0, d, 1)) - { - return null; - } - - x += d * dx; - y += d * dy; - z = pz; - return this; - } - - public Vector3 negate() - { - x = -x; - y = -y; - z = -z; - return this; - } - - public Translation translation() - { - return new Translation(this); - } - - public double scalarProject(Vector3 b) - { - double l = b.mag(); - return l == 0 ? 0 : dotProduct(b) / l; - } - - public Vector3 project(Vector3 b) - { - double l = b.magSquared(); - if (l == 0) - { - set(0, 0, 0); - return this; - } - double m = dotProduct(b) / l; - set(b).multiply(m); - return this; - } - - @Override - public boolean equals(Object o) - { - if (!(o instanceof Vector3)) - { - return false; - } - Vector3 v = (Vector3) o; - return x == v.x && y == v.y && z == v.z; - } - - /** - * Equals method with tolerance - * - * @return true if this is equal to v within +-1E-5 - */ - public boolean equalsT(Vector3 v) - { - return MathHelper.between(x - 1E-5, v.x, x + 1E-5) && - MathHelper.between(y - 1E-5, v.y, y + 1E-5) && - MathHelper.between(z - 1E-5, v.z, z + 1E-5); - } - - public Vector3 apply(Transformation t) - { - t.apply(this); - return this; - } - - public Vector3 $tilde() - { - return normalize(); - } - - public Vector3 unary_$tilde() - { - return normalize(); - } - - public Vector3 $plus(Vector3 v) - { - return add(v); - } - - public Vector3 $minus(Vector3 v) - { - return subtract(v); - } - - public Vector3 $times(double d) - { - return multiply(d); - } - - public Vector3 $div(double d) - { - return multiply(1 / d); - } - - public Vector3 $times(Vector3 v) - { - return crossProduct(v); - } - - public double $dot$times(Vector3 v) - { - return dotProduct(v); - } -} diff --git a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java index e3413263..e2db2314 100644 --- a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java @@ -2,12 +2,23 @@ import java.util.Calendar; +import net.minecraftforge.common.MinecraftForge; +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.common.Loader; +import cpw.mods.fml.common.Mod; +import cpw.mods.fml.common.SidedProxy; +import cpw.mods.fml.common.event.FMLInitializationEvent; +import cpw.mods.fml.common.event.FMLPostInitializationEvent; +import cpw.mods.fml.common.event.FMLPreInitializationEvent; +import cpw.mods.fml.common.network.NetworkRegistry; + import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; import com.darkona.adventurebackpack.handlers.ClientEventHandler; import com.darkona.adventurebackpack.handlers.GeneralEventHandler; import com.darkona.adventurebackpack.handlers.GuiHandler; import com.darkona.adventurebackpack.handlers.PlayerEventHandler; +import com.darkona.adventurebackpack.handlers.TooltipsHandler; import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.init.ModEntities; import com.darkona.adventurebackpack.init.ModFluids; @@ -20,23 +31,13 @@ import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Utils; -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.common.Loader; -import cpw.mods.fml.common.Mod; -import cpw.mods.fml.common.SidedProxy; -import cpw.mods.fml.common.event.FMLInitializationEvent; -import cpw.mods.fml.common.event.FMLPostInitializationEvent; -import cpw.mods.fml.common.event.FMLPreInitializationEvent; -import cpw.mods.fml.common.network.NetworkRegistry; -import net.minecraftforge.common.MinecraftForge; - /** * Created on 10/10/2014 * * @author Javier Darkona */ -@SuppressWarnings("unused") -@Mod(modid = ModInfo.MOD_ID, name = ModInfo.MOD_NAME, version = ModInfo.MOD_VERSION, guiFactory = ModInfo.GUI_FACTORY_CLASS) +@Mod(modid = ModInfo.MOD_ID, name = ModInfo.MOD_NAME, version = ModInfo.MOD_VERSION, guiFactory = ModInfo.GUI_FACTORY_CLASS, + dependencies = "required-after:CodeChickenCore@[1.0.7.47,)") public class AdventureBackpack { @@ -54,13 +55,13 @@ public class AdventureBackpack PlayerEventHandler playerEventHandler; ClientEventHandler clientEventHandler; GeneralEventHandler generalEventHandler; + TooltipsHandler tooltipsHandler; GuiHandler guiHandler; @Mod.EventHandler public void preInit(FMLPreInitializationEvent event) { - proxy.Capes(); int year = Calendar.getInstance().get(Calendar.YEAR), month = Calendar.getInstance().get(Calendar.MONTH) + 1, day = Calendar.getInstance().get(Calendar.DAY_OF_MONTH); //Configuration @@ -83,10 +84,12 @@ public void preInit(FMLPreInitializationEvent event) playerEventHandler = new PlayerEventHandler(); generalEventHandler = new GeneralEventHandler(); clientEventHandler = new ClientEventHandler(); + tooltipsHandler = new TooltipsHandler(); MinecraftForge.EVENT_BUS.register(generalEventHandler); MinecraftForge.EVENT_BUS.register(clientEventHandler); MinecraftForge.EVENT_BUS.register(playerEventHandler); + MinecraftForge.EVENT_BUS.register(tooltipsHandler); FMLCommonHandler.instance().bus().register(playerEventHandler); @@ -95,7 +98,6 @@ public void preInit(FMLPreInitializationEvent event) @Mod.EventHandler public void init(FMLInitializationEvent event) { - proxy.init(); ModRecipes.init(); @@ -108,7 +110,6 @@ public void init(FMLInitializationEvent event) @Mod.EventHandler public void postInit(FMLPostInitializationEvent event) { - ConfigHandler.IS_BUILDCRAFT = Loader.isModLoaded("BuildCraft|Core"); ConfigHandler.IS_ENDERIO = Loader.isModLoaded("EnderIO"); @@ -122,6 +123,8 @@ public void postInit(FMLPostInitializationEvent event) LogHelper.info("EnderIO is present. Acting accordingly"); } + //ConditionalFluidEffect.init(); //TODO + //ModItems.conditionalInit(); ModRecipes.conditionalInit(); /* @@ -145,7 +148,5 @@ public void postInit(FMLPostInitializationEvent event) } LogHelper.info("-------------------------------------------------------------------------"); */ - } - } diff --git a/src/main/java/com/darkona/adventurebackpack/CreativeTabAB.java b/src/main/java/com/darkona/adventurebackpack/CreativeTabAB.java index 46b13170..cdd1ba0e 100644 --- a/src/main/java/com/darkona/adventurebackpack/CreativeTabAB.java +++ b/src/main/java/com/darkona/adventurebackpack/CreativeTabAB.java @@ -1,12 +1,14 @@ package com.darkona.adventurebackpack; -import com.darkona.adventurebackpack.init.ModItems; -import com.darkona.adventurebackpack.reference.ModInfo; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; +import com.darkona.adventurebackpack.init.ModItems; +import com.darkona.adventurebackpack.reference.ModInfo; + /** * Created on 11/10/2014. + * * @author Javier Darkona */ public class CreativeTabAB diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java index 8c918489..dc9d8896 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java @@ -2,18 +2,6 @@ import java.util.Random; -import com.darkona.adventurebackpack.AdventureBackpack; -import com.darkona.adventurebackpack.client.Icons; -import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.handlers.GuiHandler; -import com.darkona.adventurebackpack.init.ModItems; -import com.darkona.adventurebackpack.reference.BackpackNames; -import com.darkona.adventurebackpack.reference.ModInfo; -import com.darkona.adventurebackpack.util.Utils; - -import cpw.mods.fml.common.network.internal.FMLNetworkHandler; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.client.renderer.texture.IIconRegister; @@ -37,13 +25,24 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +import com.darkona.adventurebackpack.AdventureBackpack; +import com.darkona.adventurebackpack.client.Icons; +import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.handlers.GuiHandler; +import com.darkona.adventurebackpack.init.ModItems; +import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.reference.ModInfo; +import com.darkona.adventurebackpack.util.Utils; /** * Created on 12/10/2014. * * @author Javier Darkona */ -@SuppressWarnings("unused") public class BlockAdventureBackpack extends BlockContainer { diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java b/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java index f67b30cb..b5fff0a8 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java @@ -2,12 +2,6 @@ import java.util.Random; -import com.darkona.adventurebackpack.CreativeTabAB; -import com.darkona.adventurebackpack.reference.ModInfo; -import com.darkona.adventurebackpack.util.Utils; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; @@ -19,6 +13,12 @@ import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +import com.darkona.adventurebackpack.CreativeTabAB; +import com.darkona.adventurebackpack.reference.ModInfo; +import com.darkona.adventurebackpack.util.Utils; /** * Created on 05/01/2015 @@ -42,7 +42,6 @@ private void func_149978_e() this.setBlockBounds(0.2F, 0.0F, 0.2F, 0.8F, 0.15F, 0.8F); } - @SuppressWarnings("unused") private void blockBoundsForRender() { this.func_149978_e(); diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java b/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java index d3158518..313dfef0 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java @@ -3,14 +3,6 @@ import java.util.Iterator; import java.util.Random; -import com.darkona.adventurebackpack.init.ModBlocks; -import com.darkona.adventurebackpack.playerProperties.BackpackProperty; -import com.darkona.adventurebackpack.util.LogHelper; -import com.darkona.adventurebackpack.util.Resources; -import com.darkona.adventurebackpack.util.Utils; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockDirectional; import net.minecraft.block.material.Material; @@ -29,6 +21,14 @@ import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.chunk.IChunkProvider; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +import com.darkona.adventurebackpack.init.ModBlocks; +import com.darkona.adventurebackpack.playerProperties.BackpackProperty; +import com.darkona.adventurebackpack.util.LogHelper; +import com.darkona.adventurebackpack.util.Resources; +import com.darkona.adventurebackpack.util.Utils; /** * Created on 14/10/2014 @@ -54,7 +54,6 @@ public BlockSleepingBag() setBlockName(getUnlocalizedName()); } - @Override @SideOnly(Side.CLIENT) protected String getTextureName() @@ -71,7 +70,6 @@ public String getUnlocalizedName() return "blockSleepingBag"; } - private void func_149978_e() { this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.1F, 1.0F); @@ -136,8 +134,7 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p if (isBedOccupied(meta)) { EntityPlayer entityplayer1 = null; - @SuppressWarnings("rawtypes") - Iterator iterator = world.playerEntities.iterator(); + Iterator iterator = world.playerEntities.iterator(); while (iterator.hasNext()) { @@ -170,7 +167,7 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p setBedOccupied(world, x, y, z, true); //This is so the wake up event can detect it. It fires before the player wakes up. //and the bed location isn't set until then, normally. - player.setSpawnChunk(new ChunkCoordinates(x,y,z),true,player.dimension); + player.setSpawnChunk(new ChunkCoordinates(x, y, z), true, player.dimension); LogHelper.info("Looking for a campfire nearby..."); ChunkCoordinates campfire = Utils.findBlock3D(world, x, y, z, ModBlocks.blockCampFire, 8, 2); if (campfire != null) @@ -323,7 +320,6 @@ public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityP } } - @Override public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion boom) { @@ -334,8 +330,7 @@ public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explos public void onBlockDestroyedByPlayer(World world, int x, int y, int z, int meta) { //LogHelper.info("onBlockDestroyedByPlayer() : BlockSleepingBag"); - @SuppressWarnings("unused") - int direction = getDirection(meta); + int direction = getDirection(meta); int tileZ = z; int tileX = x; switch (meta) diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 6877d10d..dda07748 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -1,16 +1,5 @@ package com.darkona.adventurebackpack.block; -import com.darkona.adventurebackpack.common.BackpackAbilities; -import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; -import com.darkona.adventurebackpack.init.ModBlocks; -import com.darkona.adventurebackpack.init.ModItems; -import com.darkona.adventurebackpack.inventory.InventoryActions; -import com.darkona.adventurebackpack.inventory.SlotTool; -import com.darkona.adventurebackpack.item.ItemAdventureBackpack; -import com.darkona.adventurebackpack.util.BackpackUtils; -import com.darkona.adventurebackpack.util.Wearing; - import net.minecraft.block.Block; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -28,6 +17,17 @@ import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidTank; +import com.darkona.adventurebackpack.common.BackpackAbilities; +import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; +import com.darkona.adventurebackpack.init.ModBlocks; +import com.darkona.adventurebackpack.init.ModItems; +import com.darkona.adventurebackpack.inventory.InventoryActions; +import com.darkona.adventurebackpack.inventory.SlotTool; +import com.darkona.adventurebackpack.item.ItemAdventureBackpack; +import com.darkona.adventurebackpack.util.BackpackUtils; +import com.darkona.adventurebackpack.util.Wearing; + /** * Created by Darkona on 12/10/2014. */ @@ -251,7 +251,6 @@ public void readFromNBT(NBTTagCompound compound) @Override public void writeToNBT(NBTTagCompound compound) { - super.writeToNBT(compound); saveToNBT(compound); compound.setBoolean("sleepingbag", sleepingBagDeployed); compound.setInteger("sbx", sbx); @@ -259,6 +258,7 @@ public void writeToNBT(NBTTagCompound compound) compound.setInteger("sbz", sbz); compound.setInteger("lumen", luminosity); compound.setInteger("sbdir", sbdir); + super.writeToNBT(compound); } @Override @@ -323,7 +323,7 @@ public void saveToNBT(NBTTagCompound compound) @Override public FluidTank[] getTanksArray() { - FluidTank[] tanks = { leftTank, rightTank }; + FluidTank[] tanks = {leftTank, rightTank}; return tanks; } @@ -637,4 +637,4 @@ public void dirtyInventory() { } -} +} \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileCampfire.java b/src/main/java/com/darkona/adventurebackpack/block/TileCampfire.java index d1bd23e1..3d49ed9f 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileCampfire.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileCampfire.java @@ -14,8 +14,6 @@ public TileCampfire() { } - @SuppressWarnings("unused") private int burnTicks; - @SuppressWarnings("unused") private ItemStack[] foodCooking = new ItemStack[4]; } diff --git a/src/main/java/com/darkona/adventurebackpack/client/ClientActions.java b/src/main/java/com/darkona/adventurebackpack/client/ClientActions.java index 8fdf7b00..2e678163 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/ClientActions.java +++ b/src/main/java/com/darkona/adventurebackpack/client/ClientActions.java @@ -1,5 +1,12 @@ package com.darkona.adventurebackpack.client; +import net.minecraft.client.audio.SoundHandler; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import cpw.mods.fml.client.FMLClientHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + import com.darkona.adventurebackpack.client.audio.BoilingBoilerSound; import com.darkona.adventurebackpack.client.audio.CopterPackSound; import com.darkona.adventurebackpack.client.audio.JetpackSoundOn; @@ -9,13 +16,6 @@ import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; -import cpw.mods.fml.client.FMLClientHandler; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.audio.SoundHandler; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; - /** * Created on 11/10/2014 * diff --git a/src/main/java/com/darkona/adventurebackpack/client/Visuals.java b/src/main/java/com/darkona/adventurebackpack/client/Visuals.java index 53cafc72..d4990715 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/Visuals.java +++ b/src/main/java/com/darkona/adventurebackpack/client/Visuals.java @@ -1,7 +1,5 @@ package com.darkona.adventurebackpack.client; -import com.darkona.adventurebackpack.entity.fx.SteamFX; - import net.minecraft.client.Minecraft; import net.minecraft.client.particle.EntityFX; import net.minecraft.entity.player.EntityPlayer; @@ -9,6 +7,8 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; +import com.darkona.adventurebackpack.entity.fx.SteamFX; + /** * Created on 17/10/2014 * diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java index 2224e9c3..583d999c 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java @@ -1,13 +1,13 @@ package com.darkona.adventurebackpack.client.audio; -import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; -import com.darkona.adventurebackpack.reference.ModInfo; -import com.darkona.adventurebackpack.util.Wearing; - import net.minecraft.client.audio.MovingSound; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ResourceLocation; +import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; +import com.darkona.adventurebackpack.reference.ModInfo; +import com.darkona.adventurebackpack.util.Wearing; + /** * Created on 16/01/2015 * @@ -64,7 +64,7 @@ public void update() } InventoryCoalJetpack inv = new InventoryCoalJetpack(Wearing.getWearingJetpack(thePlayer)); - if (inv.isBoiling() && inv.getCoalTank().getFluidAmount() > 0) + if (inv.isBoiling() && inv.getSteamTank().getFluidAmount() > 0) { xPosF = (float) thePlayer.posX; yPosF = (float) thePlayer.posY; diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java index b2f5af08..6d7dfdb7 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java @@ -1,15 +1,15 @@ package com.darkona.adventurebackpack.client.audio; -import com.darkona.adventurebackpack.item.ItemCopterPack; -import com.darkona.adventurebackpack.reference.ModInfo; -import com.darkona.adventurebackpack.util.LogHelper; -import com.darkona.adventurebackpack.util.Wearing; - import net.minecraft.client.audio.MovingSound; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import com.darkona.adventurebackpack.item.ItemCopterPack; +import com.darkona.adventurebackpack.reference.ModInfo; +import com.darkona.adventurebackpack.util.LogHelper; +import com.darkona.adventurebackpack.util.Wearing; + /** * Created on 16/10/2014 * diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java b/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java index 412066fc..4bafc405 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java @@ -1,13 +1,13 @@ package com.darkona.adventurebackpack.client.audio; -import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; -import com.darkona.adventurebackpack.reference.ModInfo; -import com.darkona.adventurebackpack.util.Wearing; - import net.minecraft.client.audio.MovingSound; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ResourceLocation; +import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; +import com.darkona.adventurebackpack.reference.ModInfo; +import com.darkona.adventurebackpack.util.Wearing; + /** * Created on 16/01/2015 * diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java index 3d5fdddd..b6fca81c 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java @@ -1,13 +1,13 @@ package com.darkona.adventurebackpack.client.audio; -import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; -import com.darkona.adventurebackpack.reference.ModInfo; -import com.darkona.adventurebackpack.util.Wearing; - import net.minecraft.client.audio.MovingSound; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ResourceLocation; +import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; +import com.darkona.adventurebackpack.reference.ModInfo; +import com.darkona.adventurebackpack.util.Wearing; + /** * Created on 16/01/2015 * diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/NyanMovingSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/NyanMovingSound.java index c4329e25..4963bbf3 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/NyanMovingSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/NyanMovingSound.java @@ -1,11 +1,12 @@ package com.darkona.adventurebackpack.client.audio; -import com.darkona.adventurebackpack.reference.ModInfo; -import com.darkona.adventurebackpack.util.Wearing; import net.minecraft.client.audio.MovingSound; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ResourceLocation; +import com.darkona.adventurebackpack.reference.ModInfo; +import com.darkona.adventurebackpack.util.Wearing; + /** * Created on 16/10/2014 * diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index 712a6143..17e25e62 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -2,6 +2,12 @@ import org.lwjgl.opengl.GL11; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fluids.FluidTank; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; import com.darkona.adventurebackpack.config.ConfigHandler; @@ -13,12 +19,6 @@ import com.darkona.adventurebackpack.network.SleepingBagPacket; import com.darkona.adventurebackpack.util.Resources; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fluids.FluidTank; - /** * Created on 12/10/2014 * @@ -41,7 +41,9 @@ public class GuiAdvBackpack extends GuiWithTanks private static GuiImageButtonNormal unequipButton = new GuiImageButtonNormal(5, 91, 18, 18); private static GuiTank tankLeft = new GuiTank(25, 7, 100, 16, ConfigHandler.typeTankRender); private static GuiTank tankRight = new GuiTank(207, 7, 100, 16, ConfigHandler.typeTankRender); + @SuppressWarnings("FieldCanBeLocal") private FluidTank lft; + @SuppressWarnings("FieldCanBeLocal") private FluidTank rgt; public int lefties; public int topsies; diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java index cf221851..4874a897 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java @@ -2,6 +2,11 @@ import org.lwjgl.opengl.GL11; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidTank; + import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.config.Keybindings; import com.darkona.adventurebackpack.init.ModNetwork; @@ -12,11 +17,6 @@ import com.darkona.adventurebackpack.util.Utils; import com.darkona.adventurebackpack.util.Wearing; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fluids.FluidTank; - /** * Created on 15/01/2015 * @@ -70,9 +70,7 @@ protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int mouseX, in equipButton.draw(this, 1, 167); } } - //if (wearing) inventory = new InventoryCoalJetpack(Wearing.getWearingJetpack(player)); - } @Override @@ -82,7 +80,7 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) if (wearing) inventory = new InventoryCoalJetpack(Wearing.getWearingJetpack(player)); FluidTank water = inventory.getWaterTank(); - FluidTank steam = inventory.getCoalTank(); + FluidTank steam = inventory.getSteamTank(); GL11.glPushMatrix(); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java index 18b5e73c..8eb0e2f9 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java @@ -2,6 +2,10 @@ import org.lwjgl.opengl.GL11; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fluids.FluidTank; + import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.config.Keybindings; import com.darkona.adventurebackpack.init.ModNetwork; @@ -12,10 +16,6 @@ import com.darkona.adventurebackpack.util.Resources; import com.darkona.adventurebackpack.util.Utils; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fluids.FluidTank; - /** * Created on 03/01/2015 * diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiFactory.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiFactory.java index de9d38fc..0022e52c 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiFactory.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiFactory.java @@ -1,10 +1,10 @@ package com.darkona.adventurebackpack.client.gui; -import cpw.mods.fml.client.IModGuiFactory; +import java.util.Set; + import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; - -import java.util.Set; +import cpw.mods.fml.client.IModGuiFactory; /** * Created on 10/10/2014 diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java index efdaf4a0..6b343fff 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java @@ -6,17 +6,6 @@ import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; -import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.inventory.IInventoryTanks; -import com.darkona.adventurebackpack.item.ItemHose; -import com.darkona.adventurebackpack.reference.ModInfo; -import com.darkona.adventurebackpack.util.LogHelper; -import com.darkona.adventurebackpack.util.Wearing; - -import codechicken.lib.render.TextureUtils; -import cpw.mods.fml.common.eventhandler.EventPriority; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.Gui; @@ -32,6 +21,17 @@ import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; +import cpw.mods.fml.common.eventhandler.EventPriority; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import codechicken.lib.render.TextureUtils; + +import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.inventory.IInventoryTanks; +import com.darkona.adventurebackpack.item.ItemHose; +import com.darkona.adventurebackpack.reference.ModInfo; +import com.darkona.adventurebackpack.util.LogHelper; +import com.darkona.adventurebackpack.util.Wearing; /** * Created on 09/01/2015 @@ -41,13 +41,15 @@ public class GuiOverlay extends Gui { private Minecraft mc; + @SuppressWarnings("FieldCanBeLocal") private int screenWidth; + @SuppressWarnings("FieldCanBeLocal") private int screenHeight; protected static RenderItem itemRender = new RenderItem(); protected FontRenderer fontRendererObj; ScaledResolution resolution; - @SuppressWarnings("static-access") - public GuiOverlay(Minecraft mc) + + public GuiOverlay(Minecraft mc) { super(); @@ -63,63 +65,60 @@ public GuiOverlay(Minecraft mc) private static final int BUFF_ICON_BASE_V_OFFSET = 198; private static final int BUFF_ICONS_PER_ROW = 8; - @SubscribeEvent(priority = EventPriority.NORMAL) public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) { - if(event.type != RenderGameOverlayEvent.ElementType.EXPERIENCE) + if (event.type != RenderGameOverlayEvent.ElementType.EXPERIENCE) { return; } resolution = new ScaledResolution(this.mc, this.mc.displayWidth, this.mc.displayHeight); screenWidth = resolution.getScaledWidth(); screenHeight = resolution.getScaledHeight(); - if(ConfigHandler.statusOverlay) + if (ConfigHandler.statusOverlay) { int xPos = ConfigHandler.statusOverlayIndentH; int xStep = BUFF_ICON_SIZE + BUFF_ICON_SPACING; if (!ConfigHandler.statusOverlayLeft) { - xPos = screenWidth - BUFF_ICON_SIZE - ConfigHandler.statusOverlayIndentH; - xStep = - BUFF_ICON_SIZE - BUFF_ICON_SPACING; + xPos = screenWidth - BUFF_ICON_SIZE - ConfigHandler.statusOverlayIndentH; + xStep = -BUFF_ICON_SIZE - BUFF_ICON_SPACING; } int yPos = ConfigHandler.statusOverlayIndentV; if (!ConfigHandler.statusOverlayTop) { - yPos = screenHeight - BUFF_ICON_SIZE - ConfigHandler.statusOverlayIndentV; + yPos = screenHeight - BUFF_ICON_SIZE - ConfigHandler.statusOverlayIndentV; } - @SuppressWarnings("rawtypes") - Collection collection = this.mc.thePlayer.getActivePotionEffects(); + Collection collection = this.mc.thePlayer.getActivePotionEffects(); if (!collection.isEmpty()) { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glDisable(GL11.GL_LIGHTING); this.mc.renderEngine.bindTexture(new ResourceLocation("textures/gui/container/inventory.png")); - for (@SuppressWarnings("rawtypes") - Iterator iterator = this.mc.thePlayer.getActivePotionEffects() - .iterator(); iterator.hasNext(); xPos += xStep) + for (Iterator iterator = this.mc.thePlayer.getActivePotionEffects().iterator(); iterator.hasNext(); xPos += xStep) { PotionEffect potioneffect = (PotionEffect) iterator.next(); Potion potion = Potion.potionTypes[potioneffect.getPotionID()]; if (potion.hasStatusIcon()) { - int iconIndex = potion.getStatusIconIndex(); - this.drawTexturedModalRect( - xPos, yPos, - BUFF_ICON_BASE_U_OFFSET + iconIndex % BUFF_ICONS_PER_ROW * BUFF_ICON_SIZE, BUFF_ICON_BASE_V_OFFSET + iconIndex / BUFF_ICONS_PER_ROW * BUFF_ICON_SIZE, - BUFF_ICON_SIZE, BUFF_ICON_SIZE); + int iconIndex = potion.getStatusIconIndex(); + this.drawTexturedModalRect( + xPos, yPos, + BUFF_ICON_BASE_U_OFFSET + iconIndex % BUFF_ICONS_PER_ROW * BUFF_ICON_SIZE, + BUFF_ICON_BASE_V_OFFSET + iconIndex / BUFF_ICONS_PER_ROW * BUFF_ICON_SIZE, + BUFF_ICON_SIZE, BUFF_ICON_SIZE); } } } } - if(ConfigHandler.tanksOverlay) + if (ConfigHandler.tanksOverlay) { - EntityPlayer player= mc.thePlayer; - if(Wearing.isWearingWearable(player)) + EntityPlayer player = mc.thePlayer; + if (Wearing.isWearingWearable(player)) { IInventoryTanks inv = Wearing.getWearableInv(player); assert inv != null; @@ -128,7 +127,7 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) int textureHeight = 23; int textureWidth = 10; - int xPos = screenWidth - (textureWidth*3) - ConfigHandler.tanksOverlayIndentH; + int xPos = screenWidth - (textureWidth * 3) - ConfigHandler.tanksOverlayIndentH; if (!ConfigHandler.tanksOverlayRight) { xPos = ConfigHandler.tanksOverlayIndentH; @@ -219,7 +218,7 @@ private void drawTank(FluidTank tank, int startX, int startY, int height, int wi { GL11.glColor4f(1, 1, 1, 1); } - GuiTank.drawFluidPixelFromIcon(i, j, icon, 1, 1, 0, 0, 0, 0,1); + GuiTank.drawFluidPixelFromIcon(i, j, icon, 1, 1, 0, 0, 0, 0, 1); GL11.glPopMatrix(); } } @@ -232,14 +231,14 @@ private void drawTank(FluidTank tank, int startX, int startY, int height, int wi private void drawItemStack(ItemStack stack, int x, int y) { - if(stack == null)return; + if (stack == null) return; GL11.glTranslatef(0.0F, 0.0F, 32.0F); this.zLevel = 200.0F; itemRender.zLevel = 200.0F; FontRenderer font = null; font = stack.getItem().getFontRenderer(stack); if (font == null) font = fontRendererObj; - itemRender.renderItemIntoGUI(font,mc.getTextureManager(),stack,x,y); + itemRender.renderItemIntoGUI(font, mc.getTextureManager(), stack, x, y); this.zLevel = 0.0F; itemRender.zLevel = 0.0F; } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiTank.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiTank.java index 36f390f2..82ffafc6 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiTank.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiTank.java @@ -1,19 +1,21 @@ package com.darkona.adventurebackpack.client.gui; -import codechicken.lib.render.TextureUtils; -import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.util.LogHelper; +import java.util.ArrayList; +import java.util.List; + +import org.lwjgl.opengl.GL11; + import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.util.IIcon; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; -import org.lwjgl.opengl.GL11; +import codechicken.lib.render.TextureUtils; -import java.util.ArrayList; -import java.util.List; +import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.util.LogHelper; /** * Created by Darkona on 12/10/2014. @@ -34,7 +36,7 @@ public class GuiTank /** * Draws the fluid from a fluidTank in a GUI. * - * @param X The startX coordinate to start drawing from. + * @param X The startX coordinate to start drawing from. * @param Y The startY coordinate to start drawing from. * @param H The height in pixels of the tank. * @param W The width in pixels of the tank. @@ -73,7 +75,7 @@ public void draw(GuiWithTanks gui, FluidTank theFluid) tank = theFluid; liquidPerPixel = tank.getCapacity() / this.height; - this.zLevel = gui.getZLevel()+1; + this.zLevel = gui.getZLevel() + 1; switch (ConfigHandler.typeTankRender) { case 1: @@ -105,7 +107,7 @@ public void draw(GuiWithTanks gui, FluidTank theFluid, int X, int Y) */ private void drawMethodOne(GuiWithTanks gui) { - if(tank.getFluid() != null) + if (tank.getFluid() != null) { FluidStack fluid = tank.getFluid(); @@ -131,7 +133,7 @@ private void drawMethodOne(GuiWithTanks gui) */ private void drawMethodTwo() { - if(tank.getFluid() != null) + if (tank.getFluid() != null) { FluidStack fluid = tank.getFluid(); @@ -160,7 +162,7 @@ private void drawMethodTwo() */ private void drawMethodThree() { - if(tank.getFluid() != null) + if (tank.getFluid() != null) { FluidStack fluid = tank.getFluid(); diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java index 4e2b1b2f..126da21f 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java @@ -25,6 +25,9 @@ public int getTop() return guiTop; } - public float getZLevel() {return zLevel;} + public float getZLevel() + { + return zLevel; + } } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/IBackpackGui.java b/src/main/java/com/darkona/adventurebackpack/client/gui/IBackpackGui.java index 682d1254..6f54ee21 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/IBackpackGui.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/IBackpackGui.java @@ -10,13 +10,13 @@ public interface IBackpackGui { - public void drawTexturedModelRectFromIcon(int i, int j, IIcon icon, int h, int w); + void drawTexturedModelRectFromIcon(int i, int j, IIcon icon, int h, int w); - public int getLeft(); + int getLeft(); - public int getTop(); + int getTop(); //public void drawTexturedModalRect(int i, int j, int srcX, int srcY, int w, int h); - public float getZLevel(); + float getZLevel(); } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java b/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java index 60853fa0..61bfb94d 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java @@ -4,14 +4,14 @@ import java.util.Arrays; import java.util.List; -import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.reference.ModInfo; - -import cpw.mods.fml.client.config.GuiConfig; -import cpw.mods.fml.client.config.IConfigElement; import net.minecraft.client.gui.GuiScreen; import net.minecraftforge.common.config.ConfigCategory; import net.minecraftforge.common.config.ConfigElement; +import cpw.mods.fml.client.config.GuiConfig; +import cpw.mods.fml.client.config.IConfigElement; + +import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.reference.ModInfo; /** * Created by Darkona on 10/10/2014. @@ -21,19 +21,20 @@ public class ModGuiConfig extends GuiConfig public ModGuiConfig(GuiScreen guiScreen) { - super (guiScreen, getConfigElements(), ModInfo.MOD_ID, false, false, ModInfo.MOD_NAME); + super(guiScreen, getConfigElements(), ModInfo.MOD_ID, false, false, ModInfo.MOD_NAME); } - private static List getConfigElements() { - List configElements = new ArrayList(); - - List topCategories = Arrays.asList("gameplay", "graphics", "sound", "items", "worldgen"); - for (String categoryName : topCategories) - { - ConfigCategory category = ConfigHandler.config.getCategory(categoryName); - configElements.add(new ConfigElement(category)); - } - return configElements; + private static List getConfigElements() + { + List configElements = new ArrayList(); + + List topCategories = Arrays.asList("gameplay", "graphics", "sound", "items", "worldgen"); + for (String categoryName : topCategories) + { + ConfigCategory category = ConfigHandler.config.getCategory(categoryName); + configElements.add(new ConfigElement(category)); + } + return configElements; } } diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java index faad2498..23ece2f6 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java @@ -1,16 +1,18 @@ package com.darkona.adventurebackpack.client.models; +import java.util.List; + +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.item.ItemStack; import codechicken.lib.vec.Vector3; + import com.darkona.adventurebackpack.client.render.RendererStack; import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.inventory.InventoryBackpack; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import org.lwjgl.opengl.GL11; - -import java.util.List; /** * Created on 17/12/2014 @@ -205,7 +207,6 @@ private void init() lowerTool = new RendererStack(this, true); upperTool = new RendererStack(this, false); - bipedBody.addChild(mainBody); bipedBody.addChild(bed); bipedBody.addChild(tankLeftTop); @@ -216,11 +217,9 @@ private void init() mainBody.addChild(lowerTool); mainBody.addChild(upperTool); - float offsetZ = 0.4F; float offsetY = 0.2F; - for (ModelRenderer part : (List) bipedBody.childModels) { setOffset(part, part.offsetX + 0, part.offsetY + offsetY, part.offsetZ + offsetZ); @@ -233,6 +232,7 @@ public ModelBackpackArmor setWearable(ItemStack wearable) this.backpack = wearable; return this; } + public ModelBackpackArmor() { init(); @@ -243,6 +243,7 @@ public ModelBackpackArmor(ItemStack backpack) init(); this.backpack = backpack; } + @SuppressWarnings("unchecked") private void renderBackpack(Float scale) { @@ -260,9 +261,9 @@ private void renderBackpack(Float scale) if (ConfigHandler.enableToolsRender) { - lowerTool.stack = backpack.getStackInSlot(Constants.lowerTool); - upperTool.stack = backpack.getStackInSlot(Constants.upperTool); - } + lowerTool.stack = backpack.getStackInSlot(Constants.lowerTool); + upperTool.stack = backpack.getStackInSlot(Constants.upperTool); + } if (color.equals("Quartz") || color.equals("Slime") || color.equals("Snow")) { @@ -297,9 +298,9 @@ private void renderBackpack(Float scale) GL11.glPushMatrix(); GL11.glTranslatef(bipedBody.offsetX + 0, bipedBody.offsetY + 0.2F, bipedBody.offsetZ + 0.3f); - renderFluidInTank(backpack.getLeftTank(), new Vector3(0f,.5f,0f), new Vector3(.17f,0,.17f), new Vector3(-.17f, .05f, .2f), tankLeftTop); + renderFluidInTank(backpack.getLeftTank(), new Vector3(0f, .5f, 0f), new Vector3(.17f, 0, .17f), new Vector3(-.17f, .05f, .2f), tankLeftTop); - renderFluidInTank(backpack.getRightTank(), new Vector3(0f,.5f,0f), new Vector3(.17f,0,.17f), new Vector3(.41f, .05f, .2f), tankRightTop); + renderFluidInTank(backpack.getRightTank(), new Vector3(0f, .5f, 0f), new Vector3(.17f, 0, .17f), new Vector3(.41f, .05f, .2f), tankRightTop); GL11.glPopMatrix(); } @@ -309,8 +310,7 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f isSneak = ((entity != null) && (entity).isSneaking()); setRotationAngles(f, f1, f2, f3, f4, f5, entity); - @SuppressWarnings("unused") - float oV = (isSneak) ? 0 : .3F; + float oV = (isSneak) ? 0 : .3F; float scale = f5 * 0.9f; @@ -360,6 +360,6 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack stack) { this.backpack = stack; - render(entity, f, f1,f2,f3,f4,f5); + render(entity, f, f1, f2, f3, f4, f5); } } diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java index 061141b1..7d207b83 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java @@ -1,16 +1,18 @@ package com.darkona.adventurebackpack.client.models; +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraftforge.fluids.FluidTank; import codechicken.lib.render.CCRenderState; import codechicken.lib.render.RenderUtils; import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Vector3; + import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraftforge.fluids.FluidTank; -import org.lwjgl.opengl.GL11; /** * Created on 17/12/2014 @@ -275,8 +277,7 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f { //scale*=0.9; - @SuppressWarnings("unused") - boolean sleepingbag = backpack.isSBDeployed(); + boolean sleepingbag = backpack.isSBDeployed(); FluidTank tankLeft = backpack.getLeftTank(); FluidTank tankRight = backpack.getRightTank(); setRotationAngles(f, f1, f2, f3, f4, scale, entity); @@ -288,7 +289,9 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f if (tankLeft != null && tankLeft.getFluid() != null && tankLeft.getFluid().getFluid().getIcon() != null) { - Vector3 victor = new Vector3((tankLeftTop.rotationPointX * 0.1f - 0.22f), (tankLeftTop.rotationPointY * 0.1f + 0.05f), + Vector3 victor = new Vector3( + (tankLeftTop.rotationPointX * 0.1f - 0.22f), + (tankLeftTop.rotationPointY * 0.1f + 0.05f), (tankLeftTop.rotationPointZ * 0.1f + 0.15f)); GL11.glPushMatrix(); CCRenderState.reset(); @@ -302,7 +305,9 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f if (tankRight != null && tankRight.getFluid() != null && tankRight.getFluid().getFluid().getIcon() != null) { - Vector3 victor = new Vector3((tankRightTop.rotationPointX * 0.1f + 0.48f), (tankRightTop.rotationPointY * 0.1f + 0.05f), + Vector3 victor = new Vector3( + (tankRightTop.rotationPointX * 0.1f + 0.48f), + (tankRightTop.rotationPointY * 0.1f + 0.05f), (tankRightTop.rotationPointZ * 0.1f + 0.15f)); GL11.glPushMatrix(); CCRenderState.reset(); @@ -314,8 +319,7 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f } } - @SuppressWarnings("unused") - private void renderFluidsInTanks(FluidTank tankLeft, FluidTank tankRight, float scale) + private void renderFluidsInTanks(FluidTank tankLeft, FluidTank tankRight, float scale) { //Size of the cuboid //Y-- is up, Y++ is down diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelClockworkCrossbow.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelClockworkCrossbow.java index 0580c0d8..568fdfb4 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelClockworkCrossbow.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelClockworkCrossbow.java @@ -1,13 +1,15 @@ package com.darkona.adventurebackpack.client.models; -import com.darkona.adventurebackpack.client.render.RendererStack; -import com.darkona.adventurebackpack.util.Utils; +import org.lwjgl.opengl.GL11; + import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; -import org.lwjgl.opengl.GL11; + +import com.darkona.adventurebackpack.client.render.RendererStack; +import com.darkona.adventurebackpack.util.Utils; /** * clockworkCrossbow - Darkona @@ -100,7 +102,6 @@ public ModelClockworkCrossbow() this.setRotateAngle(sniperLeg1_1, 0.0F, 0.0F, -0.4363323129985824F); - this.hookTooth2 = new ModelRenderer(this, 0, 0); this.hookTooth2.setRotationPoint(0.0F, -1.0F, -1.0F); this.hookTooth2.addBox(0.0F, 0.0F, 0.0F, 3, 1, 1, 0.0F); @@ -200,8 +201,9 @@ public ModelClockworkCrossbow() public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack xbow) { this.xbow = xbow; - render(entity,f,f1,f2,f3,f4,f5); + render(entity, f, f1, f2, f3, f4, f5); } + @Override public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { @@ -217,7 +219,7 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f this.point.render(f5); this.handle2.render(f5); - this.handle.render(1/18f); + this.handle.render(1 / 18f); this.magazine.render(f5); @@ -233,17 +235,18 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f setOffset(arrow, -.75f, .1f, -.2f); arrow.render(f5); } - if(xbow != null && xbow.hasTagCompound() && xbow.stackTagCompound.hasKey("Shot")) + if (xbow != null && xbow.hasTagCompound() && xbow.stackTagCompound.hasKey("Shot")) { - if((xbow.stackTagCompound.getByte("Shot")>0)) + if ((xbow.stackTagCompound.getByte("Shot") > 0)) { setRotateAngle(stringLeft, 1.5707963267948966F, -0.5235987755982988F, 0.0F); setRotateAngle(stringRight, -1.5707963267948966F, 0.5235987755982988F, 0.0F); - }else + } else { - renderNormal(); + renderNormal(); } - }else{ + } else + { renderNormal(); } this.leftArc1.render(f5); @@ -258,7 +261,7 @@ private void renderNormal() setRotateAngle(arrow, Utils.degreesToRadians(-90), Utils.degreesToRadians(0), Utils.degreesToRadians(90)); arrow.setRotationPoint(xbowBody.rotationPointX, xbowBody.rotationPointY, xbowBody.rotationPointZ); GL11.glPushMatrix(); - GL11.glScalef(1.0f,1.0f,2f); + GL11.glScalef(1.0f, 1.0f, 2f); arrow.render(1 / 14); GL11.glPopMatrix(); } diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelCoalJetpack.java index 601fa6ea..6aae9e32 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelCoalJetpack.java @@ -4,13 +4,13 @@ import org.lwjgl.opengl.GL11; -import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; - -import codechicken.lib.vec.Vector3; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import codechicken.lib.vec.Vector3; + +import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; public class ModelCoalJetpack extends ModelWearable { diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelCopterPack.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelCopterPack.java index 27f3c147..ce85f8dc 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelCopterPack.java @@ -1,16 +1,18 @@ package com.darkona.adventurebackpack.client.models; -import codechicken.lib.vec.Vector3; -import com.darkona.adventurebackpack.inventory.InventoryCopterPack; -import com.darkona.adventurebackpack.item.ItemCopterPack; -import com.darkona.adventurebackpack.util.Utils; +import java.util.List; + +import org.lwjgl.opengl.GL11; + import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; -import org.lwjgl.opengl.GL11; +import codechicken.lib.vec.Vector3; -import java.util.List; +import com.darkona.adventurebackpack.inventory.InventoryCopterPack; +import com.darkona.adventurebackpack.item.ItemCopterPack; +import com.darkona.adventurebackpack.util.Utils; /** * Created on 31/12/2014 @@ -55,7 +57,6 @@ private void init() this.Base.setRotationPoint(0.0F, 0.0F, 0.0F); this.Base.addBox(-4.0F, 0.0F, 2.0F, 8, 12, 1); - //TANK this.TankTop = new ModelRenderer(this, 0, 33); @@ -98,7 +99,6 @@ private void init() this.FuelLine2.addBox(1.0F, 1.0F, 2.0F, 1, 1, 1, 0.0F); this.TankBottom.addChild(this.FuelLine2); - //ENGINE this.EngineBody = new ModelRenderer(this, 0, 23); this.EngineBody.setRotationPoint(0.0F, 0.0F, 0.0F); @@ -181,6 +181,7 @@ public ModelCopterPack setWearable(ItemStack wearable) this.copterPack = wearable; return this; } + public ModelCopterPack(ItemStack wearable) { this.copterPack = wearable; @@ -219,11 +220,12 @@ private void renderCopterPack(Entity entity, float scale) renderFluidInTank(copterInv.getFuelTank(), new Vector3(0, .25f, 0), new Vector3(.25f, 0, .25f), new Vector3(0f, 0.0625f, 0.0f), TankTop); } - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack stack) - { - this.copterPack = stack; - render(entity, f, f1,f2,f3,f4,f5); - } + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack stack) + { + this.copterPack = stack; + render(entity, f, f1, f2, f3, f4, f5); + } @Override public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelFullArmor.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelFullArmor.java index d769fabf..25bfdf15 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelFullArmor.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelFullArmor.java @@ -22,21 +22,21 @@ public ModelFullArmor() public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - setRotationAngles(f,f1,f2,f3,f4,f5,entity); - if(entity instanceof EntityLivingBase) + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + if (entity instanceof EntityLivingBase) { - EntityLivingBase owner = (EntityLivingBase)entity; + EntityLivingBase owner = (EntityLivingBase) entity; this.isSneak = owner.isSneaking(); this.onGround = entity.onGround ? 1 : 0; this.heldItemRight = (owner.getHeldItem() != null) ? 1 : 0; this.isRiding = entity.isRiding(); - if(owner instanceof EntityPlayer) + if (owner instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) owner; this.aimedBow = player.isUsingItem() && player.getItemInUse() != null && player.getItemInUse().getItemUseAction() == EnumAction.bow; this.heldItemRight = (player.getCurrentEquippedItem() != null) ? 1 : 0; } } - super.render(entity, f, f1, f2, f3, f4, f5); + super.render(entity, f, f1, f2, f3, f4, f5); } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelInflatableBoat.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelInflatableBoat.java index 8ede103b..742595ca 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelInflatableBoat.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelInflatableBoat.java @@ -2,13 +2,13 @@ import org.lwjgl.opengl.GL11; -import com.darkona.adventurebackpack.entity.EntityInflatableBoat; -import com.darkona.adventurebackpack.util.Utils; - import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; +import com.darkona.adventurebackpack.entity.EntityInflatableBoat; +import com.darkona.adventurebackpack.util.Utils; + /** * InflatableBoat - Darkona * Created using Tabula 4.1.0 diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelWearable.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelWearable.java index 6f85c9af..93721896 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelWearable.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelWearable.java @@ -1,14 +1,15 @@ package com.darkona.adventurebackpack.client.models; -import codechicken.lib.render.RenderUtils; -import codechicken.lib.vec.Cuboid6; -import codechicken.lib.vec.Vector3; +import org.lwjgl.opengl.GL11; + import net.minecraft.client.model.ModelBiped; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidTank; -import org.lwjgl.opengl.GL11; +import codechicken.lib.render.RenderUtils; +import codechicken.lib.vec.Cuboid6; +import codechicken.lib.vec.Vector3; /** * Created on 10/01/2015 @@ -57,13 +58,13 @@ public void renderFluidInTank(FluidTank tank, Vector3 minCoords, Vector3 maxCoor if (tank != null && tank.getFluid() != null && tank.getFluid().getFluid().getIcon() != null) { Vector3 victor = new Vector3( - (parent.rotationPointX * 0.1f + parent.offsetX * 0.1 + offset.x) , // + (parent.rotationPointX * 0.1f + parent.offsetX * 0.1 + offset.x), // (parent.rotationPointY * 0.1f + parent.offsetY * 0.1 + offset.y), (parent.rotationPointZ * 0.1f + parent.offsetZ * 0.1 + offset.z)); - Cuboid6 cat = new Cuboid6(minCoords.x,minCoords.y,minCoords.z, maxCoords.x, maxCoords.y, maxCoords.z); + Cuboid6 cat = new Cuboid6(minCoords.x, minCoords.y, minCoords.z, maxCoords.x, maxCoords.y, maxCoords.z); //Thanks Chickenbones! - RenderUtils.renderFluidCuboid(tank.getFluid(), cat.add(victor),((1.0F * tank.getFluidAmount()) / (1.0F * tank.getCapacity())), 0.8); + RenderUtils.renderFluidCuboid(tank.getFluid(), cat.add(victor), ((1.0F * tank.getFluidAmount()) / (1.0F * tank.getCapacity())), 0.8); } } diff --git a/src/main/java/copy/betterstorage/utils/RenderUtils.java b/src/main/java/com/darkona/adventurebackpack/client/render/CopygirlRenderUtils.java similarity index 76% rename from src/main/java/copy/betterstorage/utils/RenderUtils.java rename to src/main/java/com/darkona/adventurebackpack/client/render/CopygirlRenderUtils.java index 2046e1f8..e31382e6 100644 --- a/src/main/java/copy/betterstorage/utils/RenderUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/CopygirlRenderUtils.java @@ -1,7 +1,8 @@ -package copy.betterstorage.utils; +package com.darkona.adventurebackpack.client.render; + +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.ItemRenderer; import net.minecraft.client.renderer.Tessellator; @@ -11,16 +12,40 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.util.ResourceLocation; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +/** + * The MIT License (MIT) + * + * Copyright (c) 2014 copygirl + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ @SideOnly(Side.CLIENT) -public final class RenderUtils +public final class CopygirlRenderUtils { private static final ResourceLocation glint = new ResourceLocation("textures/misc/enchanted_item_glint.png"); - private RenderUtils() + private CopygirlRenderUtils() { } @@ -51,7 +76,7 @@ public static void renderItemIn3d(ItemStack stack) float maxU = icon.getMaxU(); float minV = icon.getMinV(); float maxV = icon.getMaxV(); - RenderUtils.setColorFromInt(item.getColorFromItemStack(stack, pass)); + CopygirlRenderUtils.setColorFromInt(item.getColorFromItemStack(stack, pass)); ItemRenderer.renderItemIn2D(tessellator, maxU, minV, minU, maxV, icon.getIconWidth(), icon.getIconHeight(), 0.0625F); } diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RenderRideableSpider.java b/src/main/java/com/darkona/adventurebackpack/client/render/RenderRideableSpider.java index 8c59aef1..6318847e 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RenderRideableSpider.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RenderRideableSpider.java @@ -1,22 +1,23 @@ package com.darkona.adventurebackpack.client.render; -import com.darkona.adventurebackpack.entity.EntityFriendlySpider; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import org.lwjgl.opengl.GL11; + import net.minecraft.client.model.ModelSpider; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; -import org.lwjgl.opengl.GL11; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +import com.darkona.adventurebackpack.entity.EntityFriendlySpider; @SideOnly(Side.CLIENT) public class RenderRideableSpider extends RenderLiving { private static final ResourceLocation spiderEyesTextures = new ResourceLocation("textures/entity/spider_eyes.png"); private static final ResourceLocation spiderTextures = new ResourceLocation("textures/entity/spider/spider.png"); - @SuppressWarnings("unused") - private static final String __OBFID = "CL_00001027"; + private static final String __OBFID = "CL_00001027"; public RenderRideableSpider() { @@ -37,8 +38,7 @@ protected int shouldRenderPass(EntityFriendlySpider p_77032_1_, int p_77032_2_, if (p_77032_2_ != 0) { return -1; - } - else + } else { this.bindTexture(spiderEyesTextures); GL11.glEnable(GL11.GL_BLEND); @@ -48,8 +48,7 @@ protected int shouldRenderPass(EntityFriendlySpider p_77032_1_, int p_77032_2_, if (p_77032_1_.isInvisible()) { GL11.glDepthMask(false); - } - else + } else { GL11.glDepthMask(true); } @@ -57,7 +56,7 @@ protected int shouldRenderPass(EntityFriendlySpider p_77032_1_, int p_77032_2_, char c0 = 61680; int j = c0 % 65536; int k = c0 / 65536; - OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)j / 1.0F, (float)k / 1.0F); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float) j / 1.0F, (float) k / 1.0F); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); return 1; } @@ -74,8 +73,9 @@ protected ResourceLocation getEntityTexture(EntityFriendlySpider p_110775_1_) /** * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture. */ + @Override protected ResourceLocation getEntityTexture(Entity p_110775_1_) { - return this.getEntityTexture((EntityFriendlySpider)p_110775_1_); + return this.getEntityTexture((EntityFriendlySpider) p_110775_1_); } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java index d2ac4432..786b32f5 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java @@ -1,16 +1,17 @@ package com.darkona.adventurebackpack.client.render; -import com.darkona.adventurebackpack.AdventureBackpack; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; + import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.client.models.ModelBackpackBlock; import com.darkona.adventurebackpack.reference.BackpackNames; import com.darkona.adventurebackpack.util.Resources; import com.darkona.adventurebackpack.util.Utils; -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; /** * Created on 12/10/2014 @@ -18,11 +19,10 @@ * @author Darkona */ -@SuppressWarnings("unused") public class RendererAdventureBackpackBlock extends TileEntitySpecialRenderer { - // private ModelAdventureBackpackBlock model; + //private ModelAdventureBackpackBlock model; private ModelBackpackBlock model; public RendererAdventureBackpackBlock() @@ -82,5 +82,4 @@ public void renderTileEntityAt(TileEntity te, double x, double y, double z, floa } - } diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererCampFire.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererCampFire.java index 205659ef..a7b16a73 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererCampFire.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererCampFire.java @@ -1,12 +1,14 @@ package com.darkona.adventurebackpack.client.render; -import com.darkona.adventurebackpack.client.models.ModelCampFire; -import com.darkona.adventurebackpack.util.Resources; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; + +import com.darkona.adventurebackpack.client.models.ModelCampFire; +import com.darkona.adventurebackpack.util.Resources; /** * Created on 05/01/2015 diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java index faa5a44e..55f1f439 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java @@ -1,14 +1,15 @@ package com.darkona.adventurebackpack.client.render; -import com.darkona.adventurebackpack.config.ConfigHandler; +import org.lwjgl.opengl.GL11; + import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraftforge.client.IItemRenderer; -import org.lwjgl.opengl.GL11; + +import com.darkona.adventurebackpack.config.ConfigHandler; /** * Created on 13/10/2014 @@ -19,8 +20,9 @@ public class RendererHose implements IItemRenderer { private static RenderItem renderHose = new RenderItem(); + @SuppressWarnings("FieldCanBeLocal") private FontRenderer fontRenderer; - private Tessellator tessellator = Tessellator.instance; + //private Tessellator tessellator = Tessellator.instance; @Override public boolean handleRenderType(ItemStack item, ItemRenderType type) @@ -35,6 +37,7 @@ public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRe } @Override + @SuppressWarnings("incomplete-switch") public void renderItem(ItemRenderType type, ItemStack hose, Object... data) { diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererInflatableBoat.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererInflatableBoat.java index 6a83ec67..73c65769 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererInflatableBoat.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererInflatableBoat.java @@ -1,13 +1,15 @@ package com.darkona.adventurebackpack.client.render; -import com.darkona.adventurebackpack.client.models.ModelInflatableBoat; -import com.darkona.adventurebackpack.entity.EntityInflatableBoat; -import com.darkona.adventurebackpack.util.Resources; +import org.lwjgl.opengl.GL11; + import net.minecraft.client.renderer.entity.Render; import net.minecraft.entity.Entity; import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; -import org.lwjgl.opengl.GL11; + +import com.darkona.adventurebackpack.client.models.ModelInflatableBoat; +import com.darkona.adventurebackpack.entity.EntityInflatableBoat; +import com.darkona.adventurebackpack.util.Resources; /** * Created on 05/01/2015 @@ -17,8 +19,8 @@ public class RendererInflatableBoat extends Render { - private ResourceLocation boatTexture = Resources.modelTextures("inflatableBoat"); - private ModelInflatableBoat boatModel = new ModelInflatableBoat(); + private ResourceLocation boatTexture = Resources.modelTextures("inflatableBoat"); + private ModelInflatableBoat boatModel = new ModelInflatableBoat(); public RendererInflatableBoat() { diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java index f2644b59..36412a1a 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java @@ -1,45 +1,34 @@ package com.darkona.adventurebackpack.client.render; -import com.darkona.adventurebackpack.AdventureBackpack; -import com.darkona.adventurebackpack.client.models.ModelBackpackBlock; -import com.darkona.adventurebackpack.inventory.InventoryBackpack; -import com.darkona.adventurebackpack.reference.BackpackNames; -import com.darkona.adventurebackpack.util.Resources; +import org.lwjgl.opengl.GL11; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.EntityClientPlayerMP; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.IItemRenderer; -import net.minecraftforge.event.entity.player.ItemTooltipEvent; -import net.minecraft.client.renderer.entity.Render; -import net.minecraft.client.renderer.entity.RenderManager; -import net.minecraft.client.renderer.entity.RenderPlayer; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.client.renderer.EntityRenderer; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraftforge.client.event.RenderPlayerEvent; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.client.entity.AbstractClientPlayer; -import org.lwjgl.opengl.GL11; + +import com.darkona.adventurebackpack.AdventureBackpack; +import com.darkona.adventurebackpack.client.models.ModelBackpackBlock; +import com.darkona.adventurebackpack.inventory.InventoryBackpack; +import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.util.Resources; /** * Created on 12/10/2014 * * @author Darkona */ -@SuppressWarnings("unused") + public class RendererItemAdventureBackpack implements IItemRenderer { private final ModelBackpackBlock model; - private Minecraft mc; public RendererItemAdventureBackpack() { model = new ModelBackpackBlock(); } + @Override public boolean handleRenderType(ItemStack item, IItemRenderer.ItemRenderType type) { switch (type) @@ -58,6 +47,7 @@ public boolean handleRenderType(ItemStack item, IItemRenderer.ItemRenderType typ return false; } + @Override public boolean shouldUseRenderHelper(IItemRenderer.ItemRenderType type, ItemStack item, IItemRenderer.ItemRendererHelper helper) { switch (type) @@ -76,6 +66,7 @@ public boolean shouldUseRenderHelper(IItemRenderer.ItemRenderType type, ItemStac return false; } + @Override public void renderItem(IItemRenderer.ItemRenderType type, ItemStack backpack, Object... data) { InventoryBackpack inv = new InventoryBackpack(backpack); @@ -190,8 +181,9 @@ public void renderItem(IItemRenderer.ItemRenderType type, ItemStack backpack, Ob GL11.glPopMatrix(); GL11.glPopMatrix(); break; + case FIRST_PERSON_MAP: break; } } - } \ No newline at end of file +} \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureHat.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureHat.java index 86a22715..1449b297 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureHat.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureHat.java @@ -3,15 +3,15 @@ import org.lwjgl.opengl.GL11; -import com.darkona.adventurebackpack.client.models.ModelAdventureHat; -import com.darkona.adventurebackpack.util.Resources; - import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.IItemRenderer; +import com.darkona.adventurebackpack.client.models.ModelAdventureHat; +import com.darkona.adventurebackpack.util.Resources; + /** * Created by Darkona on 11/10/2014. diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemClockworkCrossbow.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemClockworkCrossbow.java index 16af1a2e..4f11c206 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemClockworkCrossbow.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemClockworkCrossbow.java @@ -1,14 +1,16 @@ package com.darkona.adventurebackpack.client.render; -import com.darkona.adventurebackpack.client.models.ModelClockworkCrossbow; -import com.darkona.adventurebackpack.util.Resources; +import org.lwjgl.opengl.GL11; + import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.IItemRenderer; -import org.lwjgl.opengl.GL11; + +import com.darkona.adventurebackpack.client.models.ModelClockworkCrossbow; +import com.darkona.adventurebackpack.util.Resources; /** diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java index 7702d5ec..71849805 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java @@ -1,12 +1,12 @@ package com.darkona.adventurebackpack.client.render; -import copy.betterstorage.utils.RenderUtils; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import org.lwjgl.opengl.GL11; + import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.item.ItemStack; -import org.lwjgl.opengl.GL11; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; public class RendererStack extends ModelRenderer { @@ -52,7 +52,7 @@ public void render(float par1) GL11.glRotatef(45F, 0, 0, 1); } - RenderUtils.renderItemIn3d(stack); + CopygirlRenderUtils.renderItemIn3d(stack); GL11.glPopAttrib(); GL11.glPopMatrix(); GL11.glPopMatrix(); diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererWearableEquipped.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererWearableEquipped.java index 88460e91..1e7e9680 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererWearableEquipped.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererWearableEquipped.java @@ -1,7 +1,8 @@ package com.darkona.adventurebackpack.client.render; -import com.darkona.adventurebackpack.item.IBackWearableItem; -import com.darkona.adventurebackpack.util.Wearing; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.renderer.OpenGlHelper; @@ -12,8 +13,9 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; + +import com.darkona.adventurebackpack.item.IBackWearableItem; +import com.darkona.adventurebackpack.util.Wearing; /** * Created on 25/12/2014 @@ -64,7 +66,7 @@ public void render(Entity entity, double x, double y, double z, float rotX, floa GL11.glEnable(GL11.GL_TEXTURE_2D); OpenGlHelper.setActiveTexture(OpenGlHelper.defaultTexUnit); GL11.glPopMatrix(); - }catch(Exception ex) + } catch (Exception ex) { //discard silently because NO ONE CARES } @@ -76,8 +78,7 @@ protected void renderMainModel(EntityLivingBase entity, float limbSwing1, float if (!entity.isInvisible()) { modelBipedMain.render(entity, limbSwing1, limbswing2, z, yaw, whatever, scale); - } else - if (!entity.isInvisibleToPlayer(Minecraft.getMinecraft().thePlayer)) + } else if (!entity.isInvisibleToPlayer(Minecraft.getMinecraft().thePlayer)) { GL11.glPushMatrix(); GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.15F); diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java index 8f00ed39..408c644d 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java @@ -3,18 +3,6 @@ import java.util.Iterator; import java.util.List; -import com.darkona.adventurebackpack.block.TileAdventureBackpack; -import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.entity.ai.EntityAIAvoidPlayerWithBackpack; -import com.darkona.adventurebackpack.init.ModFluids; -import com.darkona.adventurebackpack.init.ModNetwork; -import com.darkona.adventurebackpack.inventory.InventoryBackpack; -import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; -import com.darkona.adventurebackpack.reference.BackpackNames; -import com.darkona.adventurebackpack.util.LogHelper; -import com.darkona.adventurebackpack.util.Utils; -import com.darkona.adventurebackpack.util.Wearing; - import net.minecraft.entity.Entity; import net.minecraft.entity.ai.EntityAIBase; import net.minecraft.entity.ai.EntityAITasks; @@ -31,6 +19,18 @@ import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; +import com.darkona.adventurebackpack.block.TileAdventureBackpack; +import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.entity.ai.EntityAIAvoidPlayerWithBackpack; +import com.darkona.adventurebackpack.init.ModFluids; +import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.inventory.InventoryBackpack; +import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; +import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.util.LogHelper; +import com.darkona.adventurebackpack.util.Utils; +import com.darkona.adventurebackpack.util.Wearing; + /** * Created on 12/10/2014 * @@ -89,8 +89,8 @@ public void executeAbility(EntityPlayer player, World world, Object backpack) { //This is black magic and shouldn't be attempted by the faint of heart. this.getClass() - .getMethod("item" + colorName, EntityPlayer.class, World.class, ItemStack.class) - .invoke(backpackAbilities, player, world, backpack); + .getMethod("item" + colorName, EntityPlayer.class, World.class, ItemStack.class) + .invoke(backpackAbilities, player, world, backpack); } catch (Exception oops) { //NOBODY CARES @@ -111,8 +111,8 @@ public void executeAbility(EntityPlayer player, World world, Object backpack) be very careful with "getMethod". */ this.getClass() - .getMethod("tile" + colorName, World.class, TileAdventureBackpack.class) - .invoke(backpackAbilities, world, backpack); + .getMethod("tile" + colorName, World.class, TileAdventureBackpack.class) + .invoke(backpackAbilities, world, backpack); } catch (Exception oops) { //Seriously, nobody cares if this can't work, this is just so the game won't explode. @@ -129,8 +129,8 @@ public void executeRemoval(EntityPlayer player, World world, ItemStack backpack) { //This is black magic and shouldn't be attempted by the faint of heart. backpackRemovals.getClass() - .getMethod("item" + colorName, EntityPlayer.class, World.class, ItemStack.class) - .invoke(backpackRemovals, player, world, backpack); + .getMethod("item" + colorName, EntityPlayer.class, World.class, ItemStack.class) + .invoke(backpackRemovals, player, world, backpack); } catch (Exception oops) { LogHelper.error("---Something bad happened when removing a backpack---"); @@ -142,14 +142,14 @@ public void executeRemoval(EntityPlayer player, World world, ItemStack backpack) * These are the colorNames of the backpacks that have abilities when being worn. */ private static String[] validWearingBackpacks = - { - "Bat", "Squid", "Pigman", "Cactus", "Cow", "Pig", "Dragon", "Slime", "Chicken", "Wolf", "Ocelot", "Creeper", "Rainbow", "Melon", "Sunflower", "Mooshroom" - }; + { + "Bat", "Squid", "Pigman", "Cactus", "Cow", "Pig", "Dragon", "Slime", "Chicken", "Wolf", "Ocelot", "Creeper", "Rainbow", "Melon", "Sunflower", "Mooshroom" + }; private static String[] validRemovalBackpacks = - { - "Bat", "Squid", "Pigman", "Dragon", "Rainbow" - }; + { + "Bat", "Squid", "Pigman", "Dragon", "Rainbow" + }; /** * These are the colorNames of the backpacks that have abilities while being blocks. Note that not all the @@ -157,8 +157,7 @@ public void executeRemoval(EntityPlayer player, World world, ItemStack backpack) * * @see com.darkona.adventurebackpack.block.BlockAdventureBackpack */ - @SuppressWarnings("unused") - private static String[] validTileBackpacks = { "Cactus", "Melon" }; + private static String[] validTileBackpacks = {"Cactus", "Melon"}; /** * Detects if a player is under the rain. For detecting when it is Under The Sea (maybe to sing a nice Disney tune) @@ -169,12 +168,13 @@ public void executeRemoval(EntityPlayer player, World world, ItemStack backpack) */ private boolean isUnderRain(EntityPlayer player) { - return player.worldObj.canLightningStrikeAt(MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY), MathHelper.floor_double(player.posZ)) || player.worldObj - .canLightningStrikeAt(MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY + player.height), MathHelper.floor_double(player.posZ)); + return player.worldObj.canLightningStrikeAt(MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY), MathHelper.floor_double(player.posZ)) + || player.worldObj.canLightningStrikeAt(MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY + player.height), MathHelper.floor_double(player.posZ)); } /** * This backpack will feed you while you stay in the sun, slowly. At the very least you shouldn't starve. + * * @param player * @param world * @param backpack @@ -202,6 +202,7 @@ public void itemSunflower(EntityPlayer player, World world, ItemStack backpack) /** * Nana nana nana nana Bat - Batpack! See in the dark! + * * @param player * @param world * @param backpack @@ -220,8 +221,7 @@ public void itemBat(EntityPlayer player, World world, ItemStack backpack) if ((nightVision == null || nightVision.getDuration() < 222) && !Wearing.getBackpackInv(player, true).getDisableNVision()) { player.addPotionEffect(new PotionEffect(Potion.nightVision.id, 239, -1, true)); - } - else if (nightVision != null && Wearing.getBackpackInv(player, true).getDisableNVision()) + } else if (nightVision != null && Wearing.getBackpackInv(player, true).getDisableNVision()) { backpackRemovals.itemBat(player, world, backpack); } @@ -233,8 +233,7 @@ public void itemSquid(EntityPlayer player, World world, ItemStack backpack) { player.addPotionEffect(new PotionEffect(Potion.waterBreathing.getId(), 19, -1, true)); itemBat(player, world, backpack); - } - else if (player.isPotionActive(Potion.waterBreathing.id) && player.getActivePotionEffect(Potion.waterBreathing).getAmplifier() == -1) + } else if (player.isPotionActive(Potion.waterBreathing.id) && player.getActivePotionEffect(Potion.waterBreathing).getAmplifier() == -1) { backpackRemovals.itemSquid(player, world, backpack); } @@ -280,8 +279,7 @@ public void itemDragon(EntityPlayer player, World world, ItemStack backpack) { player.addPotionEffect(new PotionEffect(Potion.regeneration.getId(), 900, ConfigHandler.dragonBackpackRegen - 1, true)); } - } - else if (potion != null && potion.getAmplifier() == ConfigHandler.dragonBackpackRegen - 1) + } else if (potion != null && potion.getAmplifier() == ConfigHandler.dragonBackpackRegen - 1) { if (player.worldObj.isRemote) { @@ -565,7 +563,6 @@ public void itemCreeper(EntityPlayer player, World world, ItemStack backpack) private FluidStack milkStack = new FluidStack(FluidRegistry.getFluid("milk"), 1); private FluidStack soupStack = new FluidStack(FluidRegistry.getFluid("mushroomstew"), 1); - @SuppressWarnings("unused") private FluidStack lavaStack = new FluidStack(FluidRegistry.LAVA, 1); /** diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java index 43cfb5c7..a1ff235a 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java @@ -1,15 +1,15 @@ package com.darkona.adventurebackpack.common; -import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.inventory.InventoryBackpack; -import com.darkona.adventurebackpack.util.Wearing; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.world.World; +import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.inventory.InventoryBackpack; +import com.darkona.adventurebackpack.util.Wearing; + /** * Created on 09/01/2015 * diff --git a/src/main/java/com/darkona/adventurebackpack/common/Constants.java b/src/main/java/com/darkona/adventurebackpack/common/Constants.java index ab583709..57639ff5 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/Constants.java +++ b/src/main/java/com/darkona/adventurebackpack/common/Constants.java @@ -4,18 +4,15 @@ /** * Created on 11/10/2014. + * * @author Javier Darkona */ public class Constants { public static final int inventorySize = 45; - public static final int bucket = FluidContainerRegistry.BUCKET_VOLUME; - public static final int basicTankCapacity = bucket * 4; - public static final int advancedTankCapacity = bucket * 8; - public static final int heroicTankCapacity = bucket * 12; - //Inventory Special Slots + // Inventory Special Slots private static final int endOfInventory = inventorySize - 7; public static final int upperTool = endOfInventory + 1; public static final int lowerTool = upperTool + 1; @@ -25,4 +22,13 @@ public class Constants public static final int bucketInRight = bucketOutLeft + 1; public static final int bucketOutRight = bucketInRight + 1; + // Tanks + public static final int bucket = FluidContainerRegistry.BUCKET_VOLUME; + public static final int basicTankCapacity = bucket * 4; + public static final int heroicTankCapacity = bucket * 12; + public static final int advancedTankCapacity = bucket * 8; + public static final int jetpackWaterTankCapacity = bucket * 6; + public static final int jetpackSteamTankCapacity = bucket * 12; + public static final int copterTankCapacity = bucket * 6; + } diff --git a/src/main/java/com/darkona/adventurebackpack/common/IInventoryAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/common/IInventoryAdventureBackpack.java index e9d210dc..3d389c4a 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/IInventoryAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/common/IInventoryAdventureBackpack.java @@ -1,44 +1,44 @@ package com.darkona.adventurebackpack.common; -import com.darkona.adventurebackpack.block.TileAdventureBackpack; -import com.darkona.adventurebackpack.inventory.IInventoryTanks; - import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.fluids.FluidTank; +import com.darkona.adventurebackpack.block.TileAdventureBackpack; +import com.darkona.adventurebackpack.inventory.IInventoryTanks; + /** * Created by Darkona on 12/10/2014. */ public interface IInventoryAdventureBackpack extends IInventoryTanks { - public FluidTank getLeftTank(); + FluidTank getLeftTank(); - public FluidTank getRightTank(); + FluidTank getRightTank(); - public ItemStack[] getInventory(); + ItemStack[] getInventory(); - public TileAdventureBackpack getTile(); + TileAdventureBackpack getTile(); - public ItemStack getParentItemStack(); + ItemStack getParentItemStack(); - public String getColorName(); + String getColorName(); - public int getLastTime(); + int getLastTime(); - public NBTTagCompound getExtendedProperties(); + NBTTagCompound getExtendedProperties(); - public void setExtendedProperties(NBTTagCompound properties); + void setExtendedProperties(NBTTagCompound properties); - public boolean isSpecial(); + boolean isSpecial(); - public void saveTanks(NBTTagCompound compound); + void saveTanks(NBTTagCompound compound); - public void loadTanks(NBTTagCompound compound); + void loadTanks(NBTTagCompound compound); - public boolean hasItem(Item item); + boolean hasItem(Item item); void consumeInventoryItem(Item item); @@ -46,8 +46,8 @@ public interface IInventoryAdventureBackpack extends IInventoryTanks void setLastTime(int time); - public void dirtyTime(); + void dirtyTime(); - public void dirtyExtended(); + void dirtyExtended(); } diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index b0eb1e5e..800f67fd 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -2,6 +2,19 @@ import java.util.Random; +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.projectile.EntityArrow; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.world.World; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; + import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; @@ -17,19 +30,6 @@ import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Wearing; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.projectile.EntityArrow; -import net.minecraft.init.Items; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.ChatComponentTranslation; -import net.minecraft.world.World; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidTank; - /** * Created on 23/12/2014 * @@ -332,7 +332,7 @@ public static int[] canDeploySleepingBag(World world, int coordX, int coordY, in break; } } - int result[] = { newMeta, coordX, coordY, coordZ }; + int result[] = {newMeta, coordX, coordY, coordZ}; return result; } diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index fea61a3f..67d09614 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -2,15 +2,15 @@ import java.io.File; -import com.darkona.adventurebackpack.reference.ModInfo; - +import net.minecraftforge.common.config.Configuration; import cpw.mods.fml.client.event.ConfigChangedEvent; import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import net.minecraftforge.common.config.Configuration; +import com.darkona.adventurebackpack.reference.ModInfo; /** * Created on 10/10/2014. + * * @author Javier Darkona */ public class ConfigHandler @@ -31,6 +31,7 @@ public class ConfigHandler public static boolean fixLead = true; public static boolean enableToolsRender = true; + public static boolean enableTooltips = true; public static int typeTankRender = 2; public static boolean tanksHoveringText = false; @@ -102,14 +103,13 @@ public static void init(File configFile) } } - @SuppressWarnings("static-access") private static void loadConfiguration() { // Gameplay allowSoulBound = config.getBoolean("Allow SoulBound", "gameplay", true, "Allow SoulBound enchant on wearable packs"); backpackAbilities = config.getBoolean("Backpack Abilities", "gameplay", true, "Allow the backpacks to execute their special abilities, or be only cosmetic (Doesn't affect lightning transformation) Must be " + "disabled in both Client and Server to work properly"); - backpackDeathPlace = config.getBoolean("Backpack Death Place", "gameplay", true,"Place backpacks as a block when you die?"); + backpackDeathPlace = config.getBoolean("Backpack Death Place", "gameplay", true, "Place backpacks as a block when you die?"); fixLead = config.getBoolean("Fix Vanilla Lead", "gameplay", true, "Fix the vanilla Lead? (Checks mobs falling on a leash to not die of fall damage if they're not falling so fast)"); enableCampfireSpawn = config.getBoolean("Enable Campfire Spawn", "gameplay", false, "Enable/Disable ability to spawn at campfire"); enableHoseDrink = config.getBoolean("Enable Hose Drink", "gameplay", true, "Enable/Disable hose drink mode"); @@ -118,6 +118,7 @@ private static void loadConfiguration() // Graphics typeTankRender = config.getInt("Tank Render Type", "graphics", 3, 1, 3, "1,2 or 3 for different rendering of fluids in the Backpack GUI"); enableToolsRender = config.getBoolean("Enable Tools Render", "graphics", true, "Enable rendering for tools in the backpack tool slots. May cause visual glitches with Gregtech tools"); + enableTooltips = config.getBoolean("Enable Tooltips", "graphics", true, "Enable tooltips?"); tanksHoveringText = config.getBoolean("Hovering Text", "graphics", false, "Show hovering text on fluid tanks?"); // Graphics.Status @@ -140,7 +141,7 @@ private static void loadConfiguration() allowSoundPiston = config.getBoolean("Piston Boots", "sound", true, "Allow playing the PistonBoots sound"); // Items - enableItemFilters = config.getBoolean("Enable Item Filters", "items", true, "Enable filters from Disallow category"); + enableItemFilters = config.getBoolean("Enable Item Filters", "items", true, "Enable filters from Disallow category"); forbiddenDimensions = config.getStringList("Forbidden Dimensions", "items", nameDefault, "Disallow opening backpack inventory for specific dimension ID"); // Items.Disallowed @@ -204,7 +205,7 @@ public void onConfigChangeEvent(ConfigChangedEvent.OnConfigChangedEvent event) /*private static boolean isConfigVersionWrong(Configuration configuration) { - return !configuration.getLoadedConfigVersion().equals(configuration.getDefinedConfigVersion()); + return !configuration.getLoadedConfigVersion().equals(configuration.getDefinedConfigVersion()); }*/ -} +} \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/config/GeneralConfig.java b/src/main/java/com/darkona/adventurebackpack/config/GeneralConfig.java deleted file mode 100644 index 4d86a968..00000000 --- a/src/main/java/com/darkona/adventurebackpack/config/GeneralConfig.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.darkona.adventurebackpack.config; - -/** - * Created by Darkona on 12/10/2014. - */ -public class GeneralConfig -{ - - - public static final String GUI_TANK_KEY = "Tank_GUI_Resolution"; - public static final String GUI_TANK_COMMENT = "Resolution can take values of 1,2,4,8 or 16, other values will bork your game. The higher the value the smaller the fluids will look in your GUI"; -} - diff --git a/src/main/java/com/darkona/adventurebackpack/config/Keybindings.java b/src/main/java/com/darkona/adventurebackpack/config/Keybindings.java index a8af9db1..fa65cc1b 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/Keybindings.java +++ b/src/main/java/com/darkona/adventurebackpack/config/Keybindings.java @@ -1,7 +1,9 @@ package com.darkona.adventurebackpack.config; -import com.darkona.adventurebackpack.reference.Names; import net.minecraft.client.settings.KeyBinding; + +import com.darkona.adventurebackpack.reference.Names; + import org.lwjgl.input.Keyboard; /** @@ -12,8 +14,8 @@ public class Keybindings { public static KeyBinding openBackpack = new KeyBinding(Names.keys.OPEN_BACKPACK_INVENTORY, Keyboard.KEY_B, Names.keys.CATEGORY); - public static KeyBinding toggleHose = new KeyBinding(Names.keys.TOGGLE_HOSE_TANK, Keyboard.KEY_N, Names.keys.CATEGORY); -// public static KeyBinding jumpKey = + public static KeyBinding toggleActions = new KeyBinding(Names.keys.TOGGLE_BACKPACK_ACTIONS, Keyboard.KEY_N, Names.keys.CATEGORY); + //public static KeyBinding jumpKey = } diff --git a/src/main/java/com/darkona/adventurebackpack/config/ManualConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ManualConfigHandler.java deleted file mode 100644 index 43530cc6..00000000 --- a/src/main/java/com/darkona/adventurebackpack/config/ManualConfigHandler.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.darkona.adventurebackpack.config; - -import net.minecraftforge.common.config.Configuration; - -import java.io.File; - -/** - * Created on 04/01/2015 - * - * @author Darkona - */ -public class ManualConfigHandler -{ - - public static Configuration config; - - public static void init(File configFile) - { - if (config == null) - { - config = new Configuration(configFile); - loadConfiguration(); - } - } - - private static void loadConfiguration() - { - - if (config.hasChanged()) - { - config.save(); - } - } - -} diff --git a/src/main/java/com/darkona/adventurebackpack/develop/ChatHandler.java b/src/main/java/com/darkona/adventurebackpack/develop/ChatHandler.java deleted file mode 100644 index 4e6cb600..00000000 --- a/src/main/java/com/darkona/adventurebackpack/develop/ChatHandler.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.darkona.adventurebackpack.develop; - -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.ChatComponentTranslation; -public class ChatHandler -{ - public static void sendServerMessage(String string) - { - ChatComponentTranslation translation = new ChatComponentTranslation(string, new Object[0]); - MinecraftServer.getServer().getConfigurationManager().sendChatMsg(translation); - } - } diff --git a/src/main/java/com/darkona/adventurebackpack/develop/DeveloperJoining.java b/src/main/java/com/darkona/adventurebackpack/develop/DeveloperJoining.java deleted file mode 100644 index a0b85d7c..00000000 --- a/src/main/java/com/darkona/adventurebackpack/develop/DeveloperJoining.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.darkona.adventurebackpack.develop; - -import net.minecraft.entity.player.EntityPlayerMP; -import com.darkona.adventurebackpack.develop.msg; - -public class DeveloperJoining -{ - private EntityPlayerMP player; - - public void onPlayerLogin() - { - msg.handleJoin(player); - } - } diff --git a/src/main/java/com/darkona/adventurebackpack/develop/msg.java b/src/main/java/com/darkona/adventurebackpack/develop/msg.java deleted file mode 100644 index f54170a9..00000000 --- a/src/main/java/com/darkona/adventurebackpack/develop/msg.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.darkona.adventurebackpack.develop; - -import java.util.ArrayList; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.EnumChatFormatting; -import com.darkona.adventurebackpack.develop.ChatHandler; - -public class msg { - public static void loadDev() { - } - private static ArrayList devUUID = new ArrayList(); - static - { - //add uuid to list Developers who had work with this mod - devUUID.add("e23b034b-c2d2-4ae5-ba7a-93fb08de9c69"); - devUUID.add("9932b533-00b3-4d05-bac8-288500df7c9d"); - } - - public static boolean isDev(String uuid) - { - return devUUID.contains(uuid); - } - - public static void handleJoin(EntityPlayer player) - { - if (isDev(player.getUniqueID().toString())) { - ChatHandler.sendServerMessage("" + EnumChatFormatting.AQUA + "~~AdventureBackPack Mod Dev~~ " + EnumChatFormatting.UNDERLINE + player.getDisplayName() + EnumChatFormatting.AQUA + " has joined."); - } - } - } diff --git a/src/main/java/com/darkona/adventurebackpack/develop/texturejoining.java b/src/main/java/com/darkona/adventurebackpack/develop/texturejoining.java deleted file mode 100644 index 52f97d7f..00000000 --- a/src/main/java/com/darkona/adventurebackpack/develop/texturejoining.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.darkona.adventurebackpack.develop; - -import net.minecraft.entity.player.EntityPlayerMP; -import com.darkona.adventurebackpack.develop.texturemsg; - -public class texturejoining -{ - private EntityPlayerMP player; - - public void onPlayerLogin() - { - texturemsg.handleJoin(player); - } - } diff --git a/src/main/java/com/darkona/adventurebackpack/develop/texturemsg.java b/src/main/java/com/darkona/adventurebackpack/develop/texturemsg.java deleted file mode 100644 index 036df81c..00000000 --- a/src/main/java/com/darkona/adventurebackpack/develop/texturemsg.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.darkona.adventurebackpack.develop; - -import java.util.ArrayList; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.EnumChatFormatting; -import com.darkona.adventurebackpack.develop.ChatHandler; - -public class texturemsg { - public static void loadDev() { - } - private static ArrayList textureUUID = new ArrayList(); - static - { - //add uuid to list Graphic Designer who had work with this mod - textureUUID.add("a06c96be-f9d0-4074-8cad-500a0c311761"); - textureUUID.add("9932b533-00b3-4d05-bac8-288500df7c9d"); - } - - public static boolean istexture(String uuid) - { - return textureUUID.contains(uuid); - } - - public static void handleJoin(EntityPlayer player) - { - if (istexture(player.getUniqueID().toString())) { - ChatHandler.sendServerMessage("" + EnumChatFormatting.AQUA + "~~AdventureBackPack Mod Graphic Designer~~ " + EnumChatFormatting.UNDERLINE + player.getDisplayName() + EnumChatFormatting.AQUA + " has joined."); - } - } - } diff --git a/src/main/java/com/darkona/adventurebackpack/entity/EntityFriendlySpider.java b/src/main/java/com/darkona/adventurebackpack/entity/EntityFriendlySpider.java index 80c73fa0..27e9a68b 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/EntityFriendlySpider.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/EntityFriendlySpider.java @@ -1,9 +1,19 @@ package com.darkona.adventurebackpack.entity; -import com.darkona.adventurebackpack.util.Wearing; +import java.util.Random; + import net.minecraft.block.Block; -import net.minecraft.entity.*; -import net.minecraft.entity.ai.*; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityCreature; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.EnumCreatureAttribute; +import net.minecraft.entity.IEntityLivingData; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.EntityAIControlledByPlayer; +import net.minecraft.entity.ai.EntityAILookIdle; +import net.minecraft.entity.ai.EntityAISwimming; +import net.minecraft.entity.ai.EntityAIWander; +import net.minecraft.entity.ai.EntityAIWatchClosest; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.item.Item; @@ -14,7 +24,7 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; -import java.util.Random; +import com.darkona.adventurebackpack.util.Wearing; /** * Created on 11/01/2015 @@ -26,17 +36,16 @@ public class EntityFriendlySpider extends EntityCreature private float prevRearingAmount; private int jumpTicks; - @SuppressWarnings("unused") - private EntityPlayer owner; - @SuppressWarnings("unused") - private boolean tamed = false; - @SuppressWarnings("unused") - private final EntityAIControlledByPlayer aiControlledByPlayer; + private EntityPlayer owner; + private boolean tamed = false; + @SuppressWarnings("FieldCanBeLocal") + private final EntityAIControlledByPlayer aiControlledByPlayer; @Override - protected void entityInit() { + protected void entityInit() + { super.entityInit(); - this.dataWatcher.addObject(16, (byte)0); + this.dataWatcher.addObject(16, (byte) 0); } @Override @@ -48,7 +57,8 @@ protected void applyEntityAttributes() this.getEntityAttribute(SharedMonsterAttributes.followRange).setBaseValue(40.0D); } - public EntityFriendlySpider(World world) { + public EntityFriendlySpider(World world) + { super(world); this.setSize(1.4F, 0.9F); this.tasks.addTask(0, new EntityAISwimming(this)); @@ -57,16 +67,19 @@ public EntityFriendlySpider(World world) { this.tasks.addTask(7, new EntityAIWatchClosest(this, EntityPlayer.class, 6.0F)); this.tasks.addTask(8, new EntityAILookIdle(this)); } + @Override protected boolean isAIEnabled() { return true; } + @Override public int getTalkInterval() { return 300; } + /** * Returns the sound this mob makes while it's alive. */ @@ -118,8 +131,7 @@ public boolean attackEntityFrom(DamageSource damageSource, float amount) if (this.isEntityInvulnerable()) { return false; - } - else if (super.attackEntityFrom(damageSource, amount)) + } else if (super.attackEntityFrom(damageSource, amount)) { Entity entity = damageSource.getEntity(); @@ -131,13 +143,11 @@ else if (super.attackEntityFrom(damageSource, amount)) } return true; - } - else + } else { return true; } - } - else + } else { return false; } @@ -167,6 +177,7 @@ protected boolean func_146066_aG() { return true; } + /** * Returns the item that this EntityLiving is holding, if any. */ @@ -178,7 +189,7 @@ public ItemStack getHeldItem() /** * 0: Tool in Hand; 1-4: Armor - * */ + */ @Override public ItemStack getEquipmentInSlot(int slot) { @@ -204,12 +215,14 @@ public ItemStack[] getLastActiveItems() } @Override - public boolean canRiderInteract() { + public boolean canRiderInteract() + { return false; } @Override - protected boolean interact(EntityPlayer player) { + protected boolean interact(EntityPlayer player) + { try { @@ -226,12 +239,14 @@ protected boolean interact(EntityPlayer player) { } @Override - public boolean canBeSteered() { + public boolean canBeSteered() + { return true; } @Override - protected Entity findPlayerToAttack() { + protected Entity findPlayerToAttack() + { if (this.riddenByEntity != null) return null; float f = this.getBrightness(1.0F); @@ -247,14 +262,17 @@ protected Entity findPlayerToAttack() { } @Override - public boolean canBeCollidedWith() { + public boolean canBeCollidedWith() + { return !isDead; } @Override - public boolean shouldRiderFaceForward(EntityPlayer player) { + public boolean shouldRiderFaceForward(EntityPlayer player) + { return true; } + public boolean isBesideClimbableBlock() { return (this.dataWatcher.getWatchableObjectByte(16) & 1) != 0; @@ -270,9 +288,8 @@ public void setBesideClimbableBlock(boolean p_70839_1_) if (p_70839_1_) { - b0 = (byte)(b0 | 1); - } - else + b0 = (byte) (b0 | 1); + } else { b0 &= -2; } @@ -281,7 +298,8 @@ public void setBesideClimbableBlock(boolean p_70839_1_) } @Override - public void onUpdate() { + public void onUpdate() + { super.onUpdate(); if (this.worldObj.isRemote && this.dataWatcher.hasChanges()) { @@ -301,7 +319,8 @@ public void onUpdate() { } } - private void normalLivingUpdateWithNoAI(){ + private void normalLivingUpdateWithNoAI() + { if (this.jumpTicks > 0) { --this.jumpTicks; @@ -309,17 +328,16 @@ private void normalLivingUpdateWithNoAI(){ if (this.newPosRotationIncrements > 0) { - double d0 = this.posX + (this.newPosX - this.posX) / (double)this.newPosRotationIncrements; - double d1 = this.posY + (this.newPosY - this.posY) / (double)this.newPosRotationIncrements; - double d2 = this.posZ + (this.newPosZ - this.posZ) / (double)this.newPosRotationIncrements; + double d0 = this.posX + (this.newPosX - this.posX) / (double) this.newPosRotationIncrements; + double d1 = this.posY + (this.newPosY - this.posY) / (double) this.newPosRotationIncrements; + double d2 = this.posZ + (this.newPosZ - this.posZ) / (double) this.newPosRotationIncrements; double d3 = MathHelper.wrapAngleTo180_double(this.newRotationYaw - (double) this.rotationYaw); - this.rotationYaw = (float)((double)this.rotationYaw + d3 / (double)this.newPosRotationIncrements); - this.rotationPitch = (float)((double)this.rotationPitch + (this.newRotationPitch - (double)this.rotationPitch) / (double)this.newPosRotationIncrements); + this.rotationYaw = (float) ((double) this.rotationYaw + d3 / (double) this.newPosRotationIncrements); + this.rotationPitch = (float) ((double) this.rotationPitch + (this.newRotationPitch - (double) this.rotationPitch) / (double) this.newPosRotationIncrements); --this.newPosRotationIncrements; this.setPosition(d0, d1, d2); this.setRotation(this.rotationYaw, this.rotationPitch); - } - else if (!this.isClientWorld()) + } else if (!this.isClientWorld()) { this.motionX *= 0.98D; this.motionY *= 0.98D; @@ -349,8 +367,7 @@ else if (!this.isClientWorld()) this.moveStrafing = 0.0F; this.moveForward = 0.0F; this.randomYawVelocity = 0.0F; - } - else if (this.isClientWorld()) + } else if (this.isClientWorld()) { } @@ -367,13 +384,11 @@ else if (this.isClientWorld()) this.jump(); this.jumpTicks = 10; } - } - else + } else { this.motionY += 0.03999999910593033D; } - } - else + } else { this.jumpTicks = 0; } @@ -396,7 +411,8 @@ else if (this.isClientWorld()) } @Override - public void onLivingUpdate() { + public void onLivingUpdate() + { if (this.riddenByEntity != null) { normalLivingUpdateWithNoAI(); @@ -408,20 +424,22 @@ public void onLivingUpdate() { } @Override - public double getMountedYOffset() { + public double getMountedYOffset() + { return super.getMountedYOffset(); } @Override - public void moveEntityWithHeading(float strafe, float forward) { + public void moveEntityWithHeading(float strafe, float forward) + { if (this.riddenByEntity != null) { this.prevRotationYaw = this.rotationYaw = this.riddenByEntity.rotationYaw; this.rotationPitch = this.riddenByEntity.rotationPitch * 0.5F; this.setRotation(this.rotationYaw, this.rotationPitch); this.rotationYawHead = this.renderYawOffset = this.rotationYaw; - strafe = ((EntityLivingBase)this.riddenByEntity).moveStrafing * 0.5F; - forward = ((EntityLivingBase)this.riddenByEntity).moveForward; + strafe = ((EntityLivingBase) this.riddenByEntity).moveStrafing * 0.5F; + forward = ((EntityLivingBase) this.riddenByEntity).moveForward; if (forward <= 0.0F) { @@ -432,7 +450,7 @@ public void moveEntityWithHeading(float strafe, float forward) { if (!this.worldObj.isRemote) { - this.setAIMoveSpeed((float)this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).getAttributeValue()); + this.setAIMoveSpeed((float) this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).getAttributeValue()); super.moveEntityWithHeading(strafe, forward); } @@ -448,8 +466,7 @@ public void moveEntityWithHeading(float strafe, float forward) { this.limbSwingAmount += (f4 - this.limbSwingAmount) * 0.4F; this.limbSwing += this.limbSwingAmount; - } - else + } else { this.stepHeight = 0.5F; this.jumpMovementFactor = 0.02F; @@ -458,23 +475,24 @@ public void moveEntityWithHeading(float strafe, float forward) { } @Override - public void updateRiderPosition() { + public void updateRiderPosition() + { super.updateRiderPosition(); - if (this.prevRearingAmount > 0.0F) - { - float f = MathHelper.sin(this.renderYawOffset * (float) Math.PI / 180.0F); - float f1 = MathHelper.cos(this.renderYawOffset * (float) Math.PI / 180.0F); - float f2 = 0.7F * this.prevRearingAmount; - float f3 = 0.15F * this.prevRearingAmount; - this.riddenByEntity.setPosition(this.posX + (f2 * f), this.posY + this.getMountedYOffset() + this.riddenByEntity.getYOffset() - + f3, this.posZ - (f2 * f1)); + if (this.prevRearingAmount > 0.0F) + { + float f = MathHelper.sin(this.renderYawOffset * (float) Math.PI / 180.0F); + float f1 = MathHelper.cos(this.renderYawOffset * (float) Math.PI / 180.0F); + float f2 = 0.7F * this.prevRearingAmount; + float f3 = 0.15F * this.prevRearingAmount; + this.riddenByEntity.setPosition(this.posX + (f2 * f), this.posY + this.getMountedYOffset() + this.riddenByEntity.getYOffset() + + f3, this.posZ - (f2 * f1)); - if (this.riddenByEntity instanceof EntityLivingBase) - { - ((EntityLivingBase) this.riddenByEntity).renderYawOffset = this.renderYawOffset; - } - } + if (this.riddenByEntity instanceof EntityLivingBase) + { + ((EntityLivingBase) this.riddenByEntity).renderYawOffset = this.renderYawOffset; + } + } } @@ -487,8 +505,7 @@ public void spiderJump() public static class GroupData implements IEntityLivingData { public int field_111105_a; - @SuppressWarnings("unused") - private static final String __OBFID = "CL_00001700"; + private static final String __OBFID = "CL_00001700"; public void func_111104_a(Random p_111104_1_) { @@ -497,16 +514,13 @@ public void func_111104_a(Random p_111104_1_) if (i <= 1) { this.field_111105_a = Potion.moveSpeed.id; - } - else if (i <= 2) + } else if (i <= 2) { this.field_111105_a = Potion.damageBoost.id; - } - else if (i <= 3) + } else if (i <= 3) { this.field_111105_a = Potion.regeneration.id; - } - else if (i <= 4) + } else if (i <= 4) { this.field_111105_a = Potion.invisibility.id; } @@ -524,8 +538,7 @@ protected void attackEntity(Entity p_70785_1_, float p_70785_2_) if (f1 > 0.5F && this.rand.nextInt(100) == 0) { this.entityToAttack = null; - } - else + } else { if (p_70785_2_ > 2.0F && p_70785_2_ < 6.0F && this.rand.nextInt(10) == 0) { @@ -534,12 +547,11 @@ protected void attackEntity(Entity p_70785_1_, float p_70785_2_) double d0 = p_70785_1_.posX - this.posX; double d1 = p_70785_1_.posZ - this.posZ; float f2 = MathHelper.sqrt_double(d0 * d0 + d1 * d1); - this.motionX = d0 / (double)f2 * 0.5D * 0.800000011920929D + this.motionX * 0.20000000298023224D; - this.motionZ = d1 / (double)f2 * 0.5D * 0.800000011920929D + this.motionZ * 0.20000000298023224D; + this.motionX = d0 / (double) f2 * 0.5D * 0.800000011920929D + this.motionX * 0.20000000298023224D; + this.motionZ = d1 / (double) f2 * 0.5D * 0.800000011920929D + this.motionZ * 0.20000000298023224D; this.motionY = 0.4000000059604645D; } - } - else + } else { super.attackEntity(p_70785_1_, p_70785_2_); } @@ -580,7 +592,9 @@ public boolean isOnLadder() * Sets the Entity inside a web block. */ @Override - public void setInWeb() {} + public void setInWeb() + { + } /** * Get this Entity's EnumCreatureAttribute diff --git a/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java b/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java index c8be9dbb..49124c06 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java @@ -2,13 +2,8 @@ import java.util.List; -import com.darkona.adventurebackpack.init.ModItems; -import com.darkona.adventurebackpack.inventory.IInventoryTanks; - -import cpw.mods.fml.common.registry.IEntityAdditionalSpawnData; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; + import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.Entity; @@ -25,6 +20,12 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.fluids.FluidTank; +import cpw.mods.fml.common.registry.IEntityAdditionalSpawnData; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +import com.darkona.adventurebackpack.init.ModItems; +import com.darkona.adventurebackpack.inventory.IInventoryTanks; /** * Created on 05/01/2015 @@ -33,7 +34,7 @@ */ public class EntityInflatableBoat extends EntityBoat implements IInventoryTanks, IEntityAdditionalSpawnData { - @SuppressWarnings("unused") + @SuppressWarnings({"FieldCanBeLocal"}) private FluidTank fuelTank; private boolean isBoatEmpty; private double speedMultiplier; @@ -324,7 +325,6 @@ public void onUpdate() if (!this.worldObj.isRemote) { - @SuppressWarnings("rawtypes") List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.expand(0.20000000298023224D, 0.0D, 0.20000000298023224D)); if (list != null && !list.isEmpty()) diff --git a/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIAvoidPlayerWithBackpack.java b/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIAvoidPlayerWithBackpack.java index 0e4b4959..2b239114 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIAvoidPlayerWithBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIAvoidPlayerWithBackpack.java @@ -1,7 +1,7 @@ package com.darkona.adventurebackpack.entity.ai; -import com.darkona.adventurebackpack.reference.BackpackNames; -import com.darkona.adventurebackpack.util.Wearing; +import java.util.List; + import net.minecraft.command.IEntitySelector; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityCreature; @@ -13,7 +13,8 @@ import net.minecraft.pathfinding.PathNavigate; import net.minecraft.util.Vec3; -import java.util.List; +import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.util.Wearing; /** * Created by Darkona on 12/10/2014. @@ -46,10 +47,9 @@ public class EntityAIAvoidPlayerWithBackpack extends EntityAIBase /** * The class of the com.darkona.adventurebackpack.entity we should avoid */ - @SuppressWarnings("rawtypes") - private Class targetEntityClass; + private Class targetEntityClass; - public EntityAIAvoidPlayerWithBackpack(EntityCreature par1EntityCreature, @SuppressWarnings("rawtypes") Class par2Class, float par3, double par4, double par6, String colorName) + public EntityAIAvoidPlayerWithBackpack(EntityCreature par1EntityCreature, Class par2Class, float par3, double par4, double par6, String colorName) { this.theEntity = par1EntityCreature; this.targetEntityClass = par2Class; @@ -64,6 +64,7 @@ public EntityAIAvoidPlayerWithBackpack(EntityCreature par1EntityCreature, @Suppr /** * Returns whether the EntityAIBase should begin execution. */ + @Override public boolean shouldExecute() { if (this.targetEntityClass == EntityPlayer.class) @@ -93,7 +94,6 @@ public boolean shouldExecute() return false; } - Vec3 vec3 = RandomPositionGenerator.findRandomTargetBlockAwayFrom(this.theEntity, 16, 7, Vec3.createVectorHelper(this.closestLivingEntity.posX, this.closestLivingEntity.posY, this.closestLivingEntity.posZ)); if (vec3 == null) @@ -114,6 +114,7 @@ public boolean shouldExecute() /** * Returns whether an in-progress EntityAIBase should continue executing */ + @Override public boolean continueExecuting() { return !this.entityPathNavigate.noPath(); @@ -122,6 +123,7 @@ public boolean continueExecuting() /** * Execute a one shot task or start executing a continuous task */ + @Override public void startExecuting() { this.entityPathNavigate.setPath(this.entityPathEntity, this.farSpeed); @@ -130,6 +132,7 @@ public void startExecuting() /** * Resets the task */ + @Override public void resetTask() { this.closestLivingEntity = null; @@ -138,6 +141,7 @@ public void resetTask() /** * Updates the task */ + @Override public void updateTask() { if (this.theEntity.getDistanceSqToEntity(this.closestLivingEntity) < 49.0D) diff --git a/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIHorseFollowOwner.java b/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIHorseFollowOwner.java index 8cbe2825..6b98a2ea 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIHorseFollowOwner.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIHorseFollowOwner.java @@ -1,13 +1,14 @@ package com.darkona.adventurebackpack.entity.ai; -import com.darkona.adventurebackpack.util.Wearing; +import java.util.UUID; + import net.minecraft.entity.ai.EntityAIBase; import net.minecraft.entity.passive.EntityHorse; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.pathfinding.PathNavigate; import net.minecraft.world.World; -import java.util.UUID; +import com.darkona.adventurebackpack.util.Wearing; /** * Created on 09/01/2015 @@ -16,92 +17,97 @@ */ public class EntityAIHorseFollowOwner extends EntityAIBase { - private EntityHorse theHorse; - private EntityPlayer theOwner; - World theWorld; - private double speed; - private PathNavigate petPathfinder; - private int tickCounter; - float maxDist; - float minDist; - private boolean avoidWater; - @SuppressWarnings("unused") - private static final String __OBFID = "CL_00001585"; - - public EntityAIHorseFollowOwner(EntityHorse horse, double speed, float minDist, float maxDist) + private EntityHorse theHorse; + private EntityPlayer theOwner; + World theWorld; + private double speed; + private PathNavigate petPathfinder; + private int tickCounter; + float maxDist; + float minDist; + private boolean avoidWater; + private static final String __OBFID = "CL_00001585"; + + public EntityAIHorseFollowOwner(EntityHorse horse, double speed, float minDist, float maxDist) + { + theHorse = horse; + theWorld = horse.worldObj; + theOwner = theWorld.func_152378_a(UUID.fromString(theHorse.func_152119_ch())); + this.speed = speed * 2; + petPathfinder = horse.getNavigator(); + this.minDist = minDist; + this.maxDist = maxDist; + } + + + public double getDistanceSquaredToOwner() + { + double relX = theHorse.posX - theOwner.posX; + double relY = theHorse.posY - theOwner.posY; + double relZ = theHorse.posZ - theOwner.posZ; + return relX * relX + relY * relY + relZ * relZ; + } + + + @Override + public boolean shouldExecute() + { + if (!theHorse.isTame() || theHorse.getLeashed() || !theHorse.hasCustomNameTag()) return false; + if (theOwner == null) { - theHorse = horse; - theWorld = horse.worldObj; theOwner = theWorld.func_152378_a(UUID.fromString(theHorse.func_152119_ch())); - this.speed = speed * 2; - petPathfinder = horse.getNavigator(); - this.minDist = minDist; - this.maxDist = maxDist; - } - - - public double getDistanceSquaredToOwner() - { - double relX = theHorse.posX - theOwner.posX; - double relY = theHorse.posY - theOwner.posY; - double relZ = theHorse.posZ - theOwner.posZ; - return relX * relX + relY * relY + relZ * relZ; - } - - - - public boolean shouldExecute() - { - if(!theHorse.isTame() || theHorse.getLeashed() || !theHorse.hasCustomNameTag())return false; - if (theOwner == null) { - theOwner = theWorld.func_152378_a(UUID.fromString(theHorse.func_152119_ch())); - if (theOwner == null) - { - return false; - } - } - if(!Wearing.isWearingTheRightBackpack(theOwner, "Horse"))return false; - if (theHorse.getDistanceSqToEntity(theOwner) < minDist * minDist * 20) { + if (theOwner == null) + { return false; } - return true; } - - public boolean continueExecuting() + if (!Wearing.isWearingTheRightBackpack(theOwner, "Horse")) return false; + if (theHorse.getDistanceSqToEntity(theOwner) < minDist * minDist * 20) { - return (Wearing.isWearingTheRightBackpack(theOwner,"Horse") && !this.petPathfinder.noPath() && theHorse.getDistanceSqToEntity(theOwner) > this.maxDist * this.maxDist * 2); + return false; } - - public void startExecuting() - { - tickCounter = 0; - avoidWater = this.theHorse.getNavigator().getAvoidsWater(); - petPathfinder = theHorse.getNavigator(); - } - - public void resetTask() - { - theOwner = null; - petPathfinder.clearPathEntity(); - theHorse.getNavigator().setAvoidsWater(this.avoidWater); - } - - - public void updateTask() + return true; + } + + @Override + public boolean continueExecuting() + { + return (Wearing.isWearingTheRightBackpack(theOwner, "Horse") && !this.petPathfinder.noPath() && theHorse.getDistanceSqToEntity(theOwner) > this.maxDist * this.maxDist * 2); + } + + @Override + public void startExecuting() + { + tickCounter = 0; + avoidWater = this.theHorse.getNavigator().getAvoidsWater(); + petPathfinder = theHorse.getNavigator(); + } + + @Override + public void resetTask() + { + theOwner = null; + petPathfinder.clearPathEntity(); + theHorse.getNavigator().setAvoidsWater(this.avoidWater); + } + + + @Override + public void updateTask() + { + //theHorse.getLookHelper().setLookPositionWithEntity(theOwner, 10.0F, this.theHorse.getVerticalFaceSpeed()); + if (--tickCounter <= 0) { - //theHorse.getLookHelper().setLookPositionWithEntity(theOwner, 10.0F, this.theHorse.getVerticalFaceSpeed()); - if (--tickCounter <= 0) + tickCounter = 10; + if (!theHorse.getLeashed()) { - tickCounter = 10; - if (!theHorse.getLeashed()) + if (!petPathfinder.tryMoveToEntityLiving(theOwner, speed)) { - if (!petPathfinder.tryMoveToEntityLiving(theOwner, speed)) - { - return; - } + return; } } } + } } diff --git a/src/main/java/com/darkona/adventurebackpack/entity/fx/SteamFX.java b/src/main/java/com/darkona/adventurebackpack/entity/fx/SteamFX.java index cab49e21..e4e590f1 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/fx/SteamFX.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/fx/SteamFX.java @@ -1,10 +1,10 @@ package com.darkona.adventurebackpack.entity.fx; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.particle.EntityFX; import net.minecraft.client.renderer.Tessellator; import net.minecraft.world.World; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; /** * Created on 19/01/2015 diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/FluidEffectRegistry.java b/src/main/java/com/darkona/adventurebackpack/fluids/FluidEffectRegistry.java index 3a9a73aa..47f988dd 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/FluidEffectRegistry.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/FluidEffectRegistry.java @@ -1,17 +1,22 @@ package com.darkona.adventurebackpack.fluids; -import adventurebackpack.api.FluidEffect; -import com.darkona.adventurebackpack.fluids.effects.*; -import com.darkona.adventurebackpack.util.LogHelper; +import java.util.ArrayList; +import java.util.Map; + import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; import com.google.common.collect.ImmutableMap; + import net.minecraft.entity.Entity; import net.minecraft.world.World; import net.minecraftforge.fluids.Fluid; -import java.util.ArrayList; -import java.util.Map; +import com.darkona.adventurebackpack.fluids.effects.LavaEffect; +import com.darkona.adventurebackpack.fluids.effects.MelonJuiceEffect; +import com.darkona.adventurebackpack.fluids.effects.MilkEffect; +import com.darkona.adventurebackpack.fluids.effects.MushroomStewEffect; +import com.darkona.adventurebackpack.util.LogHelper; +import adventurebackpack.api.FluidEffect; /** * Created on 12/10/2014 diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/FluidMelonJuice.java b/src/main/java/com/darkona/adventurebackpack/fluids/FluidMelonJuice.java index 3805c3ab..d6e3099a 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/FluidMelonJuice.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/FluidMelonJuice.java @@ -1,11 +1,12 @@ package com.darkona.adventurebackpack.fluids; -import com.darkona.adventurebackpack.client.Icons; import net.minecraft.util.IIcon; import net.minecraft.world.World; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; +import com.darkona.adventurebackpack.client.Icons; + /** * Created by Darkona on 12/10/2014. */ diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/FluidMilk.java b/src/main/java/com/darkona/adventurebackpack/fluids/FluidMilk.java index ca06b4cd..33344238 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/FluidMilk.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/FluidMilk.java @@ -1,14 +1,16 @@ package com.darkona.adventurebackpack.fluids; -import com.darkona.adventurebackpack.client.Icons; import net.minecraft.util.IIcon; import net.minecraft.world.World; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; +import com.darkona.adventurebackpack.client.Icons; + /** * Created on 12/10/2014. + * * @author Javier Darkona */ public class FluidMilk extends Fluid diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/FluidMushroomStew.java b/src/main/java/com/darkona/adventurebackpack/fluids/FluidMushroomStew.java index ebbcec88..238c734a 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/FluidMushroomStew.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/FluidMushroomStew.java @@ -1,11 +1,12 @@ package com.darkona.adventurebackpack.fluids; -import com.darkona.adventurebackpack.client.Icons; import net.minecraft.util.IIcon; import net.minecraft.world.World; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; +import com.darkona.adventurebackpack.client.Icons; + /** * Created on 11/01/2015 * diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/effects/FuelEffect.java b/src/main/java/com/darkona/adventurebackpack/fluids/effects/FuelEffect.java index 75fbdf53..c30e7104 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/effects/FuelEffect.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/effects/FuelEffect.java @@ -1,8 +1,5 @@ package com.darkona.adventurebackpack.fluids.effects; -import com.darkona.adventurebackpack.util.Utils; - -import adventurebackpack.api.FluidEffect; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.potion.Potion; @@ -10,6 +7,9 @@ import net.minecraft.world.World; import net.minecraftforge.fluids.FluidRegistry; +import com.darkona.adventurebackpack.util.Utils; +import adventurebackpack.api.FluidEffect; + /** * Created on 12/10/2014 * @@ -31,7 +31,7 @@ public FuelEffect() * conditions based on where the player is. * * @param world The World. - * @param player The Player. + * @param entity The Player. */ @Override public void affectDrinker(World world, Entity entity) diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/effects/LavaEffect.java b/src/main/java/com/darkona/adventurebackpack/fluids/effects/LavaEffect.java index 704cf129..3dfdfa98 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/effects/LavaEffect.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/effects/LavaEffect.java @@ -1,6 +1,5 @@ package com.darkona.adventurebackpack.fluids.effects; -import adventurebackpack.api.FluidEffect; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.potion.Potion; @@ -8,6 +7,8 @@ import net.minecraft.world.World; import net.minecraftforge.fluids.FluidRegistry; +import adventurebackpack.api.FluidEffect; + /** * Created by Darkona on 12/10/2014. */ diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/effects/MelonJuiceEffect.java b/src/main/java/com/darkona/adventurebackpack/fluids/effects/MelonJuiceEffect.java index fb24a646..59fa56bd 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/effects/MelonJuiceEffect.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/effects/MelonJuiceEffect.java @@ -1,15 +1,15 @@ package com.darkona.adventurebackpack.fluids.effects; -import com.darkona.adventurebackpack.init.ModFluids; -import com.darkona.adventurebackpack.util.Utils; - -import adventurebackpack.api.FluidEffect; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.world.World; +import com.darkona.adventurebackpack.init.ModFluids; +import com.darkona.adventurebackpack.util.Utils; +import adventurebackpack.api.FluidEffect; + /** * Created by Darkona on 12/10/2014. */ @@ -27,10 +27,8 @@ public MelonJuiceEffect() * heal, fill hunger, etc. You can use the world parameter to make * conditions based on where the player is. * - * @param world - * The World. - * @param player - * The Player. + * @param world The World. + * @param entity The Player. */ @Override public void affectDrinker(World world, Entity entity) diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/effects/MilkEffect.java b/src/main/java/com/darkona/adventurebackpack/fluids/effects/MilkEffect.java index 36f0e860..326ac25e 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/effects/MilkEffect.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/effects/MilkEffect.java @@ -1,11 +1,12 @@ package com.darkona.adventurebackpack.fluids.effects; -import adventurebackpack.api.FluidEffect; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; import net.minecraftforge.fluids.FluidRegistry; +import adventurebackpack.api.FluidEffect; + /** * Created on 12/10/2014. * diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/effects/MushroomStewEffect.java b/src/main/java/com/darkona/adventurebackpack/fluids/effects/MushroomStewEffect.java index aa4a03d3..62be71b9 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/effects/MushroomStewEffect.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/effects/MushroomStewEffect.java @@ -1,17 +1,17 @@ package com.darkona.adventurebackpack.fluids.effects; -import adventurebackpack.api.FluidEffect; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; import net.minecraftforge.fluids.FluidRegistry; +import adventurebackpack.api.FluidEffect; + /** * Created on 11/01/2015 * * @author Darkona */ -@SuppressWarnings("unused") public class MushroomStewEffect extends FluidEffect { public MushroomStewEffect() diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/effects/OilEffect.java b/src/main/java/com/darkona/adventurebackpack/fluids/effects/OilEffect.java index 76c9f508..33fcbb87 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/effects/OilEffect.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/effects/OilEffect.java @@ -1,6 +1,5 @@ package com.darkona.adventurebackpack.fluids.effects; -import adventurebackpack.api.FluidEffect; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.potion.Potion; @@ -8,6 +7,8 @@ import net.minecraft.world.World; import net.minecraftforge.fluids.FluidRegistry; +import adventurebackpack.api.FluidEffect; + /** * Created by Darkona on 12/10/2014. */ diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java index 1b3fae1e..06a7aa32 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java @@ -1,6 +1,15 @@ package com.darkona.adventurebackpack.handlers; -import com.darkona.adventurebackpack.common.Constants; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityClientPlayerMP; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.event.MouseEvent; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + import com.darkona.adventurebackpack.common.ServerActions; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.init.ModNetwork; @@ -11,20 +20,6 @@ import com.darkona.adventurebackpack.reference.BackpackNames; import com.darkona.adventurebackpack.util.Wearing; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.EntityClientPlayerMP; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.EnumChatFormatting; -import net.minecraftforge.client.event.MouseEvent; -import net.minecraftforge.event.entity.player.ItemTooltipEvent; -import net.minecraftforge.fluids.FluidTank; - /** * Created on 17/10/2014 * @@ -32,39 +27,6 @@ */ public class ClientEventHandler { - /** - * Makes the tool tips of the backpacks have the Tank information displayed below. - */ - @SubscribeEvent - @SideOnly(Side.CLIENT) - public void toolTips(ItemTooltipEvent event) - { - if (event.itemStack.getItem() instanceof ItemAdventureBackpack) - { - NBTTagCompound compound = event.itemStack.stackTagCompound; - FluidTank tank = new FluidTank(Constants.basicTankCapacity); - String tankInfo = ""; - if (compound != null) - { - if (compound.hasKey("leftTank")) - { - tank.readFromNBT(compound.getCompoundTag("leftTank")); - String name = tank.getFluid() == null ? "" : tank.getFluid().getLocalizedName(); - tankInfo = EnumChatFormatting.BLUE + "Left Tank: " + tank.getFluidAmount() + "/" + tank.getCapacity() + " " + name; - - event.toolTip.add(tankInfo); - } - if (compound.hasKey("rightTank")) - { - tank.readFromNBT(compound.getCompoundTag("rightTank")); - String name = tank.getFluid() == null ? "" : tank.getFluid().getLocalizedName(); - tankInfo = EnumChatFormatting.RED + "Right Tank: " + tank.getFluidAmount() + "/" + tank.getCapacity() + " " + name; - - event.toolTip.add(tankInfo); - } - } - } - } /** * @param event diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java index 55cfb5ae..cea660a1 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java @@ -2,18 +2,6 @@ import java.util.UUID; -import com.darkona.adventurebackpack.common.ServerActions; -import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.entity.ai.EntityAIHorseFollowOwner; -import com.darkona.adventurebackpack.events.WearableEvent; -import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; -import com.darkona.adventurebackpack.init.ModNetwork; -import com.darkona.adventurebackpack.inventory.InventoryBackpack; -import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; -import com.darkona.adventurebackpack.util.Utils; -import com.darkona.adventurebackpack.util.Wearing; - -import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.EntityAITasks; import net.minecraft.entity.passive.EntityHorse; @@ -29,6 +17,18 @@ import net.minecraftforge.event.entity.player.ArrowNockEvent; import net.minecraftforge.event.entity.player.PlayerUseItemEvent; import net.minecraftforge.fluids.FluidRegistry; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; + +import com.darkona.adventurebackpack.common.ServerActions; +import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.entity.ai.EntityAIHorseFollowOwner; +import com.darkona.adventurebackpack.events.WearableEvent; +import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; +import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.inventory.InventoryBackpack; +import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; +import com.darkona.adventurebackpack.util.Utils; +import com.darkona.adventurebackpack.util.Wearing; /** * Created on 17/10/2014 @@ -47,7 +47,7 @@ public void eatGoldenApple(PlayerUseItemEvent.Finish event) if (ConfigHandler.backpackAbilities) { if (event.item.getItem() instanceof ItemAppleGold && - //((ItemAppleGold) event.item.getItem()).getRarity(event.item) == EnumRarity.epic && + //((ItemAppleGold) event.item.getItem()).getRarity(event.item) == EnumRarity.epic && Wearing.isWearingTheRightBackpack(player, "Rainbow")) { diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java index 3df8e1aa..6bc61587 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java @@ -1,5 +1,9 @@ package com.darkona.adventurebackpack.handlers; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; +import cpw.mods.fml.common.network.IGuiHandler; + import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.client.gui.GuiAdvBackpack; import com.darkona.adventurebackpack.client.gui.GuiCoalJetpack; @@ -12,10 +16,6 @@ import com.darkona.adventurebackpack.inventory.InventoryCopterPack; import com.darkona.adventurebackpack.util.Wearing; -import cpw.mods.fml.common.network.IGuiHandler; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.world.World; - /** * Created on 12/10/2014 * diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java index a1ebcb7d..e2dbcf04 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java @@ -1,5 +1,10 @@ package com.darkona.adventurebackpack.handlers; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.InputEvent; + import com.darkona.adventurebackpack.common.ServerActions; import com.darkona.adventurebackpack.config.Keybindings; import com.darkona.adventurebackpack.entity.EntityFriendlySpider; @@ -14,11 +19,6 @@ import com.darkona.adventurebackpack.reference.Key; import com.darkona.adventurebackpack.util.Wearing; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.common.gameevent.InputEvent; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; - /** * Created by Darkona on 11/10/2014. */ @@ -31,7 +31,7 @@ private static Key getPressedKeyBinding() { return Key.INVENTORY_KEY; } - if (Keybindings.toggleHose.isPressed()) + if (Keybindings.toggleActions.isPressed()) { return Key.TOGGLE_KEY; } @@ -43,7 +43,7 @@ private static Key getPressedKeyBinding() return Key.UNKNOWN; } - private static final String[] NIGHTVISION_BACKPACKS = { "Bat", "Squid", "Dragon" }; + private static final String[] NIGHTVISION_BACKPACKS = {"Bat", "Squid", "Dragon"}; @SubscribeEvent public void handleKeyInputEvent(InputEvent.KeyInputEvent event) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index d4f38ad5..71190a3d 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -1,27 +1,5 @@ package com.darkona.adventurebackpack.handlers; -import com.darkona.adventurebackpack.common.ServerActions; -import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.develop.msg; -import com.darkona.adventurebackpack.develop.texturemsg; -import com.darkona.adventurebackpack.entity.EntityFriendlySpider; -import com.darkona.adventurebackpack.entity.ai.EntityAIHorseFollowOwner; -import com.darkona.adventurebackpack.init.ModBlocks; -import com.darkona.adventurebackpack.init.ModItems; -import com.darkona.adventurebackpack.item.IBackWearableItem; -import com.darkona.adventurebackpack.item.ItemAdventureBackpack; -import com.darkona.adventurebackpack.playerProperties.BackpackProperty; -import com.darkona.adventurebackpack.proxy.ServerProxy; -import com.darkona.adventurebackpack.reference.BackpackNames; -import com.darkona.adventurebackpack.util.LogHelper; -import com.darkona.adventurebackpack.util.Utils; -import com.darkona.adventurebackpack.util.Wearing; - -import cpw.mods.fml.common.eventhandler.Event; -import cpw.mods.fml.common.eventhandler.EventPriority; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.common.gameevent.PlayerEvent; -import cpw.mods.fml.common.gameevent.TickEvent; import net.minecraft.entity.EntityCreature; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.item.EntityItem; @@ -42,16 +20,37 @@ import net.minecraftforge.event.entity.player.EntityInteractEvent; import net.minecraftforge.event.entity.player.PlayerDropsEvent; import net.minecraftforge.event.entity.player.PlayerWakeUpEvent; +import cpw.mods.fml.common.eventhandler.Event; +import cpw.mods.fml.common.eventhandler.EventPriority; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.PlayerEvent; +import cpw.mods.fml.common.gameevent.TickEvent; + +import com.darkona.adventurebackpack.common.ServerActions; +import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.entity.EntityFriendlySpider; +import com.darkona.adventurebackpack.entity.ai.EntityAIHorseFollowOwner; +import com.darkona.adventurebackpack.init.ModBlocks; +import com.darkona.adventurebackpack.init.ModItems; +import com.darkona.adventurebackpack.item.IBackWearableItem; +import com.darkona.adventurebackpack.item.ItemAdventureBackpack; +import com.darkona.adventurebackpack.playerProperties.BackpackProperty; +import com.darkona.adventurebackpack.proxy.ServerProxy; +import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.util.EnchUtils; +import com.darkona.adventurebackpack.util.LogHelper; +import com.darkona.adventurebackpack.util.Utils; +import com.darkona.adventurebackpack.util.Wearing; /** - * Created on 11/10/2014 Handle ALL the events! + * Created on 11/10/2014 + * Handle ALL the events! * * @author Darkona * @see com.darkona.adventurebackpack.client.ClientActions */ public class PlayerEventHandler { - @SuppressWarnings("unused") private static int tickCounter = 0; @SubscribeEvent @@ -65,7 +64,6 @@ public void registerBackpackProperty(EntityEvent.EntityConstructing event) AdventureBackpack.proxy.joinPlayer((EntityPlayer)event.entity); }*/ } - } @SubscribeEvent @@ -84,8 +82,6 @@ public void joinPlayer(EntityJoinWorldEvent event) BackpackProperty.sync(player); LogHelper.info("Stored properties retrieved"); } - msg.handleJoin(player); - texturemsg.handleJoin(player); } } } @@ -245,7 +241,7 @@ public void playerDeathDrop(PlayerDropsEvent event) ItemStack pack = Wearing.getWearingWearable(player); BackpackProperty props = BackpackProperty.get(player); - if (Utils.isSoulBounded(pack) + if (EnchUtils.isSoulBounded(pack) || (ConfigHandler.backpackDeathPlace && pack.getItem() instanceof ItemAdventureBackpack)) { ((IBackWearableItem) props.getWearable().getItem()).onPlayerDeath(player.worldObj, player, props.getWearable()); @@ -347,14 +343,6 @@ public void tickPlayer(TickEvent.PlayerTickEvent event) { BackpackProperty.get(event.player).executeWearableUpdateProtocol(); } - /*if (event.phase == TickEvent.Phase.END) - { - if (event.side.isServer()) - { - //Thanks @knoxz for fixing performance issue - //BackpackProperty.syncToNear(event.player); - } - }*/ } } diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/RenderHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/RenderHandler.java index 0f0f0a7a..05902582 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/RenderHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/RenderHandler.java @@ -1,10 +1,11 @@ package com.darkona.adventurebackpack.handlers; -import com.darkona.adventurebackpack.proxy.ClientProxy; +import net.minecraftforge.client.event.RenderPlayerEvent; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraftforge.client.event.RenderPlayerEvent; + +import com.darkona.adventurebackpack.proxy.ClientProxy; /** * Created on 25/12/2014 @@ -30,6 +31,6 @@ public void playerSpecialsRendering(RenderPlayerEvent.Specials.Pre event) float yaw = event.entity.rotationYaw; ClientProxy.rendererWearableEquipped.render(event.entity, x, y, z, rotationX, rotationY, rotationZ, pitch, yaw); - event.renderCape = true; + event.renderCape = false; } } diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipsHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipsHandler.java new file mode 100644 index 00000000..7a3fc878 --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipsHandler.java @@ -0,0 +1,142 @@ +package com.darkona.adventurebackpack.handlers; + +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.common.util.Constants.NBT; +import net.minecraftforge.event.entity.player.ItemTooltipEvent; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.item.ItemAdventureBackpack; +import com.darkona.adventurebackpack.item.ItemCoalJetpack; +import com.darkona.adventurebackpack.item.ItemCopterPack; + +/** + * Created by Ugachaga on 24.03.2017. + */ +public class TooltipsHandler +{ + @SubscribeEvent + @SideOnly(Side.CLIENT) + public void toolTips(ItemTooltipEvent event) + { + if (!ConfigHandler.enableTooltips) + return; + + String holdTheShift = String.format("%s%s", EnumChatFormatting.WHITE, EnumChatFormatting.ITALIC); + + if (event.itemStack.getItem() instanceof ItemAdventureBackpack) + { + FluidTank tank = new FluidTank(Constants.basicTankCapacity); + NBTTagCompound compound = event.itemStack.stackTagCompound; + NBTTagCompound backpackData = null; + if (compound != null && compound.hasKey("backpackData")) + backpackData = compound.getCompoundTag("backpackData"); + + if (backpackData != null && GuiScreen.isShiftKeyDown()) + { + if (backpackData.hasKey("ABPItems")) + { + int itemCount = backpackData.getTagList("ABPItems", NBT.TAG_COMPOUND).tagCount(); + event.toolTip.add("Slots used: " + itemCount + "/41"); //TODO format, add toolslots info + } + if (backpackData.hasKey("leftTank")) + { + tank.readFromNBT(backpackData.getCompoundTag("leftTank")); + event.toolTip.add("Left Tank: " + tankToolTip(tank)); + } + if (backpackData.hasKey("rightTank")) + { + tank.readFromNBT(backpackData.getCompoundTag("rightTank")); + event.toolTip.add("Right Tank: " + tankToolTip(tank)); + } + } else if (backpackData != null && backpackData.hasKey("ABPItems")) + { + event.toolTip.add(holdTheShift); + } + } else if (event.itemStack.getItem() instanceof ItemCoalJetpack) + { + FluidTank waterTank = new FluidTank(Constants.jetpackWaterTankCapacity); + FluidTank steamTank = new FluidTank(Constants.jetpackSteamTankCapacity); + NBTTagCompound compound = event.itemStack.stackTagCompound; + NBTTagCompound jetpackData = null; + if (compound != null && compound.hasKey("jetpackData")) + jetpackData = compound.getCompoundTag("jetpackData"); + + if (jetpackData != null && GuiScreen.isShiftKeyDown()) + { + if (jetpackData.hasKey("waterTank")) + { + waterTank.readFromNBT(jetpackData.getCompoundTag("waterTank")); + event.toolTip.add("Left Tank: " + tankToolTip(waterTank)); + } + if (jetpackData.hasKey("steamTank")) + { + steamTank.readFromNBT(jetpackData.getCompoundTag("steamTank")); + event.toolTip.add("Right Tank: " + tankToolTip(steamTank)); //TODO water->steam + } + //TODO add temperature, fuel, max height, keys maybe? + } else if (jetpackData != null && jetpackData.hasKey("waterTank")) + { + event.toolTip.add(holdTheShift); + } + } else if (event.itemStack.getItem() instanceof ItemCopterPack) + { + FluidTank fuelTank = new FluidTank(Constants.copterTankCapacity); + NBTTagCompound compound = event.itemStack.stackTagCompound; + if (compound != null && compound.hasKey("fuelTank")) + fuelTank.readFromNBT(compound.getCompoundTag("fuelTank")); + + if (GuiScreen.isShiftKeyDown()) + { + //TODO add max height, keys maybe?, + event.toolTip.add("Fuel Tank: " + tankToolTip(fuelTank)); + } else + { + event.toolTip.add(holdTheShift); + } + } + } + + private String tankToolTip(FluidTank tank) + { + String fluidAmount = amountFormat(tank.getFluidAmount(), tank.getCapacity()); + String fluidName = tank.getFluid() == null ? "" : fluidFormat(tank.getFluid()); + return fluidAmount + (tank.getFluidAmount() > 0 ? "/" + tank.getCapacity() : "") + fluidName; + } + + private String amountFormat(Integer fluidAmount, int tankCapacity) + { + String amountFormatted = fluidAmount.toString(); + if (fluidAmount == tankCapacity) + amountFormatted = EnumChatFormatting.WHITE + amountFormatted; + else if (fluidAmount == 0) + amountFormatted = EnumChatFormatting.ITALIC + "Empty"; + return amountFormatted; + } + + private String fluidFormat(FluidStack fluid) + { + String fluidUnlocName = fluid.getUnlocalizedName().toLowerCase(); + String fluidLocName = fluid.getLocalizedName(); + String fluidFormat = " "; + if (fluidUnlocName.contains("lava") || fluidUnlocName.contains("fire")) + fluidFormat += EnumChatFormatting.RED; + else if (fluidUnlocName.contains("water")) + fluidFormat += EnumChatFormatting.BLUE; + else if (fluidUnlocName.contains("oil")) + fluidFormat += EnumChatFormatting.BLACK; + else if (fluidUnlocName.contains("fuel")) + fluidFormat += EnumChatFormatting.YELLOW; + else if (fluidUnlocName.contains("milk")) + fluidFormat += EnumChatFormatting.WHITE; + return fluidFormat + fluidLocName; + } + +} diff --git a/src/main/java/com/darkona/adventurebackpack/init/ConditionalFluidEffect.java b/src/main/java/com/darkona/adventurebackpack/init/ConditionalFluidEffect.java index fc1fa25f..ad32cb24 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ConditionalFluidEffect.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ConditionalFluidEffect.java @@ -1,9 +1,9 @@ package com.darkona.adventurebackpack.init; -import adventurebackpack.api.FluidEffect; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.fluids.effects.FuelEffect; import com.darkona.adventurebackpack.fluids.effects.OilEffect; +import adventurebackpack.api.FluidEffect; /** * Created on 28/12/2014 diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModBlocks.java b/src/main/java/com/darkona/adventurebackpack/init/ModBlocks.java index 6d2cab7f..4a74ed73 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModBlocks.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModBlocks.java @@ -1,9 +1,14 @@ package com.darkona.adventurebackpack.init; -import com.darkona.adventurebackpack.block.*; import cpw.mods.fml.common.registry.GameRegistry; +import com.darkona.adventurebackpack.block.BlockAdventureBackpack; +import com.darkona.adventurebackpack.block.BlockCampFire; +import com.darkona.adventurebackpack.block.BlockSleepingBag; +import com.darkona.adventurebackpack.block.TileAdventureBackpack; +import com.darkona.adventurebackpack.block.TileCampfire; + /** * Created by Darkona on 12/10/2014. */ diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModEntities.java b/src/main/java/com/darkona/adventurebackpack/init/ModEntities.java index dbe42333..3d12f6dc 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModEntities.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModEntities.java @@ -1,11 +1,11 @@ package com.darkona.adventurebackpack.init; +import cpw.mods.fml.common.registry.EntityRegistry; + import com.darkona.adventurebackpack.AdventureBackpack; import com.darkona.adventurebackpack.entity.EntityFriendlySpider; import com.darkona.adventurebackpack.entity.EntityInflatableBoat; -import cpw.mods.fml.common.registry.EntityRegistry; - /** * Created on 12/10/2014 * diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModFluids.java b/src/main/java/com/darkona/adventurebackpack/init/ModFluids.java index 45e4c5e1..66ec1f91 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModFluids.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModFluids.java @@ -1,15 +1,15 @@ package com.darkona.adventurebackpack.init; -import com.darkona.adventurebackpack.fluids.FluidMelonJuice; -import com.darkona.adventurebackpack.fluids.FluidMilk; -import com.darkona.adventurebackpack.fluids.FluidMushroomStew; -import com.darkona.adventurebackpack.reference.GeneralReference; - import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidRegistry; +import com.darkona.adventurebackpack.fluids.FluidMelonJuice; +import com.darkona.adventurebackpack.fluids.FluidMilk; +import com.darkona.adventurebackpack.fluids.FluidMushroomStew; +import com.darkona.adventurebackpack.reference.GeneralReference; + /** * Created on 12/10/2014. * diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModItems.java b/src/main/java/com/darkona/adventurebackpack/init/ModItems.java index 0d19137c..5cf28f6d 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModItems.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModItems.java @@ -1,5 +1,7 @@ package com.darkona.adventurebackpack.init; +import cpw.mods.fml.common.registry.GameRegistry; + import com.darkona.adventurebackpack.item.ArmorAB; import com.darkona.adventurebackpack.item.ItemAdventureBackpack; import com.darkona.adventurebackpack.item.ItemAdventureHat; @@ -14,12 +16,10 @@ import com.darkona.adventurebackpack.item.ItemMachete; import com.darkona.adventurebackpack.item.ItemPistonBoots; -import cpw.mods.fml.common.registry.GameRegistry; - /** * Created on 10/10/2014 - * @author Darkona * + * @author Darkona */ public class ModItems { @@ -31,7 +31,7 @@ public class ModItems public static final ArmorAB adventurePants = new ItemAdventurePants(); public static final ArmorAB pistonBoots = new ItemPistonBoots(); public static final ItemCopterPack copterPack = new ItemCopterPack(); - public static final ItemCoalJetpack CoalJetpack = new ItemCoalJetpack(); + public static final ItemCoalJetpack coalJetpack = new ItemCoalJetpack(); public static final ItemAdventureBackpack adventureBackpack = new ItemAdventureBackpack(); public static final ItemComponent component = new ItemComponent(); public static final ItemHose hose = new ItemHose(); @@ -46,10 +46,24 @@ public static void init() GameRegistry.registerItem(adventurePants, "adventurePants"); GameRegistry.registerItem(pistonBoots, "pistonBoots"); GameRegistry.registerItem(copterPack, "copterPack"); - GameRegistry.registerItem(CoalJetpack, "CoalJetpack"); + GameRegistry.registerItem(coalJetpack, "CoalJetpack"); //TODO rename to coalJetpack GameRegistry.registerItem(adventureBackpack, "adventureBackpack"); GameRegistry.registerItem(component, "backpackComponent"); GameRegistry.registerItem(hose, "backpackHose"); GameRegistry.registerItem(melonJuiceBottle, "melonJuiceBottle"); } + + /*public static void conditionalInit() + { + if (ConfigHandler.IS_BUILDCRAFT) + { + GameRegistry.registerItem(copterPack, "copterPack"); + } + + if (ConfigHandler.IS_RAILCRAFT) + { + GameRegistry.registerItem(steamJetpack, "steamJetpack"); + } + }*/ + } diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModMaterials.java b/src/main/java/com/darkona/adventurebackpack/init/ModMaterials.java index fdce7c90..7f0ae20a 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModMaterials.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModMaterials.java @@ -6,13 +6,13 @@ /** * Created on 11/10/2014 - * @author Darkona * + * @author Darkona */ public class ModMaterials { public static Item.ToolMaterial ruggedIron = EnumHelper.addToolMaterial("RUGGED_IRON", 2, 350, 6.5F, 5.2F, 10); - public static ItemArmor.ArmorMaterial ruggedLeather = EnumHelper.addArmorMaterial("RUGGED_LEATHER", 15, new int[] { 2, 5, 4, 2 }, 12); + public static ItemArmor.ArmorMaterial ruggedLeather = EnumHelper.addArmorMaterial("RUGGED_LEATHER", 15, new int[]{2, 5, 4, 2}, 12); } diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java b/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java index fa902b4f..a313589f 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java @@ -1,5 +1,12 @@ package com.darkona.adventurebackpack.init; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.WorldServer; +import cpw.mods.fml.common.network.NetworkRegistry; +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper; +import cpw.mods.fml.relauncher.Side; + import com.darkona.adventurebackpack.network.CowAbilityPacket; import com.darkona.adventurebackpack.network.CycleToolPacket; import com.darkona.adventurebackpack.network.EquipUnequipBackWearablePacket; @@ -13,17 +20,10 @@ import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.reference.ModInfo; -import cpw.mods.fml.common.network.NetworkRegistry; -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper; -import cpw.mods.fml.relauncher.Side; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.world.WorldServer; - /** * Created on 12/10/2014 - * @author Darkona * + * @author Darkona */ public class ModNetwork { @@ -48,13 +48,14 @@ public static void init() } + @SuppressWarnings("unchecked") public static void registerClientSide(Class handler, Class message) { net.registerMessage(handler, message, messages, Side.CLIENT); messages++; } - @SuppressWarnings({ "rawtypes", "unchecked" }) + @SuppressWarnings("unchecked") private static void registerMessage(Class handler, Class message) { net.registerMessage(handler, message, messages, Side.CLIENT); diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java index f2250646..c7a390ad 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java @@ -2,16 +2,16 @@ import java.lang.reflect.Field; -import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.init.recipes.BackpackRecipesList; -import com.darkona.adventurebackpack.reference.BackpackNames; -import com.darkona.adventurebackpack.util.LogHelper; - -import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.ShapedOreRecipe; +import cpw.mods.fml.common.registry.GameRegistry; + +import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.init.recipes.BackpackRecipesList; +import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.util.LogHelper; /** * Created on 20/10/2014 @@ -56,7 +56,7 @@ public static void init() //CoalJetpack if (ConfigHandler.recipeCoalJetpack) { - GameRegistry.addRecipe(new ItemStack(ModItems.CoalJetpack), + GameRegistry.addRecipe(new ItemStack(ModItems.coalJetpack), "SWT", "GIG", "FWS", diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java b/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java index ea7e7201..34f1e683 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java @@ -2,10 +2,6 @@ import java.util.Random; -import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.reference.BackpackNames; - -import cpw.mods.fml.common.registry.VillagerRegistry; import net.minecraft.entity.passive.EntityVillager; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -13,6 +9,10 @@ import net.minecraft.village.MerchantRecipe; import net.minecraft.village.MerchantRecipeList; import net.minecraftforge.common.ChestGenHooks; +import cpw.mods.fml.common.registry.VillagerRegistry; + +import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.reference.BackpackNames; /** * Created on 24/12/2014 @@ -77,8 +77,8 @@ public static class TradeHandler implements VillagerRegistry.IVillageTradeHandle * @param recipeList * @param random */ - @SuppressWarnings("unchecked") @Override + @SuppressWarnings("unchecked") public void manipulateTradesForVillager(EntityVillager villager, MerchantRecipeList recipeList, Random random) { //0 Farmer, 1 Librarian, 2Priest, 3 Blacksmith, 4 Butcher diff --git a/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipe.java b/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipe.java index c82d955f..da8ae4e5 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipe.java +++ b/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipe.java @@ -1,17 +1,18 @@ package com.darkona.adventurebackpack.init.recipes; -import com.darkona.adventurebackpack.init.ModItems; -import com.darkona.adventurebackpack.reference.BackpackNames; -import com.darkona.adventurebackpack.util.LogHelper; +import java.lang.reflect.Field; +import java.util.HashMap; +import java.util.Map; + import net.minecraft.inventory.InventoryCrafting; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -import java.lang.reflect.Field; -import java.util.HashMap; -import java.util.Map; +import com.darkona.adventurebackpack.init.ModItems; +import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.util.LogHelper; /** * Created on 20/10/2014 @@ -23,8 +24,7 @@ public class AbstractBackpackRecipe implements IRecipe final BackpackRecipes br = new BackpackRecipes(); private ItemStack result; - @SuppressWarnings("unused") - private ItemStack[] recipe; + private ItemStack[] recipe; public boolean compareStacksForColor(ItemStack stack1, ItemStack stack2) { diff --git a/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipeTwo.java b/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipeTwo.java index fb58f82b..7ed282ff 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipeTwo.java +++ b/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipeTwo.java @@ -1,12 +1,13 @@ package com.darkona.adventurebackpack.init.recipes; -import com.darkona.adventurebackpack.init.ModItems; import net.minecraft.inventory.InventoryCrafting; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import com.darkona.adventurebackpack.init.ModItems; + /** * Created on 24/12/2014 * diff --git a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipes.java index 48c8ce27..45149183 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipes.java @@ -1,14 +1,15 @@ package com.darkona.adventurebackpack.init.recipes; -import com.darkona.adventurebackpack.init.ModItems; +import java.util.HashMap; +import java.util.List; + import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import java.util.HashMap; -import java.util.List; +import com.darkona.adventurebackpack.init.ModItems; /** * Created on 20/10/2014 @@ -93,7 +94,7 @@ public BackpackRecipes() 'E', Items.emerald, 'D', Items.diamond ); - + Chest = reviewRecipe( "CWC", "WaW", @@ -602,8 +603,8 @@ public BackpackRecipes() public final ItemStack[] ModdedNetwork; - @SuppressWarnings({ "unchecked", "rawtypes" }) - public static ItemStack[] reviewRecipe(Object... objects) + @SuppressWarnings("unchecked") + public static ItemStack[] reviewRecipe(Object... objects) { String s = ""; //BackpackRecipe recipe = new BackpackRecipe(); diff --git a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipesList.java b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipesList.java index c5061f97..d650625d 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipesList.java +++ b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipesList.java @@ -1,12 +1,13 @@ package com.darkona.adventurebackpack.init.recipes; -import com.darkona.adventurebackpack.init.ModItems; -import com.darkona.adventurebackpack.reference.BackpackNames; +import java.util.List; + import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; -import java.util.List; +import com.darkona.adventurebackpack.init.ModItems; +import com.darkona.adventurebackpack.reference.BackpackNames; /** * Created on 20/10/2014 @@ -122,7 +123,7 @@ public BackpackRecipesList() 'E', Items.emerald, 'D', Items.diamond ); - + Chest = reviewRecipe( "CWC", "WaW", diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index d49089f0..691cbcc7 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -1,8 +1,5 @@ package com.darkona.adventurebackpack.inventory; -import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -15,6 +12,9 @@ import net.minecraft.item.crafting.CraftingManager; import net.minecraftforge.fluids.FluidTank; +import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; + /** * Created on 12/10/2014 * @@ -32,6 +32,7 @@ public class ContainerBackpack extends Container implements IWearableContainer public IInventory craftResult = new InventoryCraftResult(); EntityPlayer player; + @SuppressWarnings("FieldCanBeLocal") private final int PLAYER_HOT_START = 0, PLAYER_HOT_END = PLAYER_HOT_START + 8, @@ -340,39 +341,32 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) if (rightAmount > 0 && (rightAmount + containerCapacity <= maxAmount) && rightFluid.equals(containerFluid)) { mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false); - } - else + } else { mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false); } - } - else if ((leftAmount + containerCapacity <= maxAmount) && leftFluid.equals(containerFluid)) + } else if ((leftAmount + containerCapacity <= maxAmount) && leftFluid.equals(containerFluid)) { mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false); - } - else if (rightAmount == 0 || (rightAmount + containerCapacity <= maxAmount) && rightFluid.equals(containerFluid)) + } else if (rightAmount == 0 || (rightAmount + containerCapacity <= maxAmount) && rightFluid.equals(containerFluid)) { mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false); - } - else if (SlotBackpack.isValidItem(stack)) + } else if (SlotBackpack.isValidItem(stack)) { mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false); } - } - else if (SlotFluid.isEmpty(stack)) + } else if (SlotFluid.isEmpty(stack)) { if (leftAmount == 0) { if (rightAmount != 0) { mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false); - } - else if (SlotBackpack.isValidItem(stack)) + } else if (SlotBackpack.isValidItem(stack)) { mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false); } - } - else + } else { mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java index b825f8e1..9cc3e757 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java @@ -18,6 +18,7 @@ public class ContainerCopter extends Container implements IWearableContainer private final int PLAYER_HOT_START = 0; private final int PLAYER_HOT_END = PLAYER_HOT_START + 8; private final int PLAYER_INV_START = PLAYER_HOT_END + 1; + @SuppressWarnings("FieldCanBeLocal") private final int PLAYER_INV_END = PLAYER_INV_START + 26; EntityPlayer player; boolean wearing; diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java index cb878f5b..dc17807b 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java @@ -18,6 +18,7 @@ public class ContainerJetpack extends Container implements IWearableContainer private final int PLAYER_HOT_START = 0; private final int PLAYER_HOT_END = PLAYER_HOT_START + 8; private final int PLAYER_INV_START = PLAYER_HOT_END + 1; + @SuppressWarnings("FieldCanBeLocal") private final int PLAYER_INV_END = PLAYER_INV_START + 26; boolean wearing; diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/IAsynchronousInventory.java b/src/main/java/com/darkona/adventurebackpack/inventory/IAsynchronousInventory.java index 49c15233..8a00dd2d 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/IAsynchronousInventory.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/IAsynchronousInventory.java @@ -10,7 +10,7 @@ */ public interface IAsynchronousInventory extends IInventory { - public void setInventorySlotContentsNoSave(int slot, ItemStack stack); + void setInventorySlotContentsNoSave(int slot, ItemStack stack); - public ItemStack decrStackSizeNoSave(int slot, int amount); + ItemStack decrStackSizeNoSave(int slot, int amount); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryTanks.java b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryTanks.java index 8c5e30a6..97e54b5e 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryTanks.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryTanks.java @@ -10,15 +10,15 @@ */ public interface IInventoryTanks extends IAsynchronousInventory { - public boolean updateTankSlots(); + boolean updateTankSlots(); - public void loadFromNBT(NBTTagCompound compound); + void loadFromNBT(NBTTagCompound compound); - public void saveToNBT(NBTTagCompound compound); + void saveToNBT(NBTTagCompound compound); - public FluidTank[] getTanksArray(); + FluidTank[] getTanksArray(); - public void dirtyInventory(); + void dirtyInventory(); - public void dirtyTanks(); + void dirtyTanks(); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/IWearableContainer.java b/src/main/java/com/darkona/adventurebackpack/inventory/IWearableContainer.java index 5f0faaee..9712839b 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/IWearableContainer.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/IWearableContainer.java @@ -7,5 +7,5 @@ */ public interface IWearableContainer { - public void refresh(); + void refresh(); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java index 7fece460..4f6e15f3 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java @@ -1,9 +1,5 @@ package com.darkona.adventurebackpack.inventory; -import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; -import com.darkona.adventurebackpack.util.FluidUtils; - import net.minecraft.block.Block; import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; @@ -12,6 +8,10 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; +import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; +import com.darkona.adventurebackpack.util.FluidUtils; + /** * Created on 16/10/2014 * @@ -28,13 +28,13 @@ public class InventoryActions * it simply fills the tank. * * @param inventory The inventory type thing that will have its tank updated. - * @param tank The tank that's going to be updated. - * @param slotIn The slot in which the fluid container item must be to update the tank. + * @param tank The tank that's going to be updated. + * @param slotIn The slot in which the fluid container item must be to update the tank. * @return True if the tank was filled and the resulting filled or empty container item was placed in the other slot. */ public static boolean transferContainerTank(IInventoryTanks inventory, FluidTank tank, int slotIn) { - ItemStack stackIn = inventory.getStackInSlot(slotIn); + ItemStack stackIn = inventory.getStackInSlot(slotIn); if (tank == null || stackIn == null) return false; //Set slot out for whatever number the output slot should be. @@ -100,9 +100,8 @@ public static boolean transferContainerTank(IInventoryTanks inventory, FluidTank inventory.setInventorySlotContentsNoSave(slotOut, stackOut); //inventory.dirtyInventory(); return true; - } else - if (stackOut != null && stackOut.getItem() != null // ??! - && stackOut.getItem() == inventory.getStackInSlot(slotOut).getItem()) + } else if (stackOut != null && stackOut.getItem() != null // ??! + && stackOut.getItem() == inventory.getStackInSlot(slotOut).getItem()) { int maxStack = inventory.getStackInSlot(slotOut).getMaxStackSize(); if (maxStack > 1 && (inventory.getStackInSlot(slotOut).stackSize + 1) <= maxStack) @@ -133,7 +132,7 @@ public static void consumeItemInInventory(IInventory backpack, Item item) } if (i >= 0) { - backpack.decrStackSize(i,1); + backpack.decrStackSize(i, 1); } } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index e939ecce..794f361f 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -1,13 +1,6 @@ package com.darkona.adventurebackpack.inventory; -import com.darkona.adventurebackpack.block.BlockAdventureBackpack; -import com.darkona.adventurebackpack.block.TileAdventureBackpack; -import com.darkona.adventurebackpack.common.BackpackAbilities; -import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; -import com.darkona.adventurebackpack.item.ItemAdventureBackpack; - import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -17,6 +10,13 @@ import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidTank; +import com.darkona.adventurebackpack.block.BlockAdventureBackpack; +import com.darkona.adventurebackpack.block.TileAdventureBackpack; +import com.darkona.adventurebackpack.common.BackpackAbilities; +import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; +import com.darkona.adventurebackpack.item.ItemAdventureBackpack; + /** * Created on 12/10/2014 * @@ -53,7 +53,7 @@ public void setContainerStack(ItemStack containerStack) public InventoryBackpack(ItemStack backpack) { containerStack = backpack; - if(!backpack.hasTagCompound()) + if (!backpack.hasTagCompound()) { backpack.stackTagCompound = new NBTTagCompound(); saveToNBT(backpack.stackTagCompound); @@ -199,6 +199,7 @@ public ItemStack decrStackSize(int slot, int quantity) } return itemstack; } + @Override public ItemStack decrStackSizeNoSave(int slot, int quantity) { @@ -226,7 +227,7 @@ public boolean updateTankSlots() @Override public void loadFromNBT(NBTTagCompound compound) { - if(compound.hasKey("backpackData")) + if (compound.hasKey("backpackData")) { NBTTagCompound backpackData = compound.getCompoundTag("backpackData"); NBTTagList items = backpackData.getTagList("ABPItems", net.minecraftforge.common.util.Constants.NBT.TAG_COMPOUND); @@ -254,8 +255,8 @@ public void loadFromNBT(NBTTagCompound compound) @Override public void saveToNBT(NBTTagCompound compound) { - // if(Utils.inServer()) - // { + // if(Utils.inServer()) + // { NBTTagCompound backpackData = new NBTTagCompound(); NBTTagList items = new NBTTagList(); for (int i = 0; i < inventory.length; i++) @@ -280,14 +281,14 @@ public void saveToNBT(NBTTagCompound compound) backpackData.setBoolean("disableCycling", disableCycling); backpackData.setBoolean("disableNVision", disableNVision); - compound.setTag("backpackData",backpackData); + compound.setTag("backpackData", backpackData); //} } @Override public FluidTank[] getTanksArray() { - FluidTank[] array = {leftTank,rightTank}; + FluidTank[] array = {leftTank, rightTank}; return array; } @@ -344,7 +345,7 @@ public void closeInventory() /* if(Utils.inServer()) {*/ saveToNBT(containerStack.stackTagCompound); - // } + // } } @Override @@ -377,27 +378,28 @@ public ItemStack getStackInSlot(int slot) @Override public void dirtyTanks() { - containerStack.stackTagCompound.getCompoundTag("backpackData").setTag("leftTank",leftTank.writeToNBT(new NBTTagCompound())); - containerStack.stackTagCompound.getCompoundTag("backpackData").setTag("rightTank",rightTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag("backpackData").setTag("leftTank", leftTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag("backpackData").setTag("rightTank", rightTank.writeToNBT(new NBTTagCompound())); } @Override public void dirtyTime() { - containerStack.stackTagCompound.getCompoundTag("backpackData").setInteger("lastTime",lastTime); + containerStack.stackTagCompound.getCompoundTag("backpackData").setInteger("lastTime", lastTime); } @Override public void dirtyExtended() { containerStack.stackTagCompound.getCompoundTag("backpackData").removeTag("extendedProperties"); - containerStack.stackTagCompound.getCompoundTag("backpackData").setTag("extendedProperties",extendedProperties); + containerStack.stackTagCompound.getCompoundTag("backpackData").setTag("extendedProperties", extendedProperties); } @Override public void dirtyInventory() { - if(updateTankSlots()){ + if (updateTankSlots()) + { dirtyTanks(); } NBTTagList items = new NBTTagList(); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index 5e586df0..7cd92211 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -1,16 +1,18 @@ package com.darkona.adventurebackpack.inventory; -import com.darkona.adventurebackpack.util.FluidUtils; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntityFurnace; +import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidTank; +import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.util.FluidUtils; + /** * Created on 15/01/2015 * @@ -20,15 +22,15 @@ public class InventoryCoalJetpack implements IInventoryTanks { public static final boolean OFF = false; public static final boolean ON = true; - private FluidTank WaterTank = new FluidTank(6000); - private FluidTank CoalTank = new FluidTank(12000); + private FluidTank waterTank = new FluidTank(Constants.jetpackWaterTankCapacity); + private FluidTank steamTank = new FluidTank(Constants.jetpackSteamTankCapacity); private ItemStack[] inventory = new ItemStack[3]; private int temperature = 25; private boolean status = OFF; private int burnTicks = 0; private ItemStack containerStack; private long systemTime = 0; - private boolean Water = false; + private boolean boiling = false; private boolean leaking = false; private boolean inUse = false; public int currentItemBurnTime = 0; @@ -72,18 +74,18 @@ public void loadFromNBT(NBTTagCompound compound) if (compound.hasKey("jetpackData")) { NBTTagCompound jetpackData = compound.getCompoundTag("jetpackData"); - WaterTank.readFromNBT(jetpackData.getCompoundTag("WaterTank")); - CoalTank.readFromNBT(jetpackData.getCompoundTag("CoalTank")); + waterTank.readFromNBT(jetpackData.getCompoundTag("waterTank")); + steamTank.readFromNBT(jetpackData.getCompoundTag("steamTank")); temperature = jetpackData.getInteger("temperature"); status = jetpackData.getBoolean("status"); burnTicks = jetpackData.getInteger("burnTicks"); coolTicks = jetpackData.getInteger("coolTicks"); systemTime = jetpackData.getLong("systemTime"); inUse = jetpackData.getBoolean("inUse"); - Water = jetpackData.getBoolean("water"); + boiling = jetpackData.getBoolean("boiling"); leaking = jetpackData.getBoolean("leaking"); currentItemBurnTime = jetpackData.getInteger("currentBurn"); - NBTTagList items = jetpackData.getTagList("inventory", net.minecraftforge.common.util.Constants.NBT.TAG_COMPOUND); + NBTTagList items = jetpackData.getTagList("inventory", NBT.TAG_COMPOUND); for (int i = 0; i < items.tagCount(); i++) { NBTTagCompound item = items.getCompoundTagAt(i); @@ -108,15 +110,15 @@ public void saveToNBT(NBTTagCompound compound) jetpackData = new NBTTagCompound(); } - jetpackData.setTag("WaterTank", WaterTank.writeToNBT(new NBTTagCompound())); - jetpackData.setTag("CoalTank", CoalTank.writeToNBT(new NBTTagCompound())); + jetpackData.setTag("waterTank", waterTank.writeToNBT(new NBTTagCompound())); + jetpackData.setTag("steamTank", steamTank.writeToNBT(new NBTTagCompound())); jetpackData.setInteger("temperature", temperature); jetpackData.setBoolean("status", status); jetpackData.setInteger("burnTicks", burnTicks); jetpackData.setInteger("coolTicks", coolTicks); jetpackData.setLong("systemTime", systemTime); jetpackData.setBoolean("inUse", inUse); - jetpackData.setBoolean("water", Water); + jetpackData.setBoolean("boiling", boiling); jetpackData.setBoolean("leaking", leaking); jetpackData.setInteger("currentBurn", currentItemBurnTime); NBTTagList items = new NBTTagList(); @@ -138,7 +140,7 @@ public void saveToNBT(NBTTagCompound compound) @Override public FluidTank[] getTanksArray() { - FluidTank[] tanks = { WaterTank, CoalTank }; + FluidTank[] tanks = {waterTank, steamTank}; return tanks; } @@ -163,14 +165,14 @@ public void dirtyInventory() @Override public void dirtyTanks() { - containerStack.stackTagCompound.getCompoundTag("jetPackData").setTag("WaterTank", WaterTank.writeToNBT(new NBTTagCompound())); - containerStack.stackTagCompound.getCompoundTag("jetPackData").setTag("CoalTank", CoalTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag("jetPackData").setTag("waterTank", waterTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag("jetPackData").setTag("steamTank", steamTank.writeToNBT(new NBTTagCompound())); } public void dirtyBoiler() { NBTTagCompound jetpackData = containerStack.stackTagCompound.getCompoundTag("jetPackData"); - jetpackData.setBoolean("water", Water); + jetpackData.setBoolean("boiling", boiling); jetpackData.setBoolean("leaking", leaking); jetpackData.setInteger("temperature", temperature); jetpackData.setInteger("burnTicks", burnTicks); @@ -291,10 +293,10 @@ public void onInventoryChanged() ItemStack container = getStackInSlot(i); if (FluidContainerRegistry.isFilledContainer(container) && FluidUtils.isContainerForFluid(container, FluidRegistry.WATER)) { - InventoryActions.transferContainerTank(this, WaterTank, i); - } else if (FluidContainerRegistry.isEmptyContainer(container) && WaterTank.getFluid() != null && FluidUtils.isContainerForFluid(container, FluidRegistry.WATER)) + InventoryActions.transferContainerTank(this, waterTank, i); + } else if (FluidContainerRegistry.isEmptyContainer(container) && waterTank.getFluid() != null && FluidUtils.isContainerForFluid(container, FluidRegistry.WATER)) { - InventoryActions.transferContainerTank(this, WaterTank, i); + InventoryActions.transferContainerTank(this, waterTank, i); } } } @@ -346,8 +348,10 @@ public void closeInventory() @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { - if (slot == BUCKET_IN_SLOT) return SlotFluid.isContainer(stack) && FluidUtils.isContainerForFluid(stack, FluidRegistry.WATER); - if (slot == FUEL_SLOT) return TileEntityFurnace.isItemFuel(stack); + if (slot == BUCKET_IN_SLOT) + return SlotFluid.isContainer(stack) && FluidUtils.isContainerForFluid(stack, FluidRegistry.WATER); + if (slot == FUEL_SLOT) + return TileEntityFurnace.isItemFuel(stack); return false; } @@ -358,12 +362,12 @@ public ItemStack getParentItemStack() public FluidTank getWaterTank() { - return WaterTank; + return waterTank; } - public FluidTank getCoalTank() + public FluidTank getSteamTank() { - return CoalTank; + return steamTank; } public boolean getStatus() @@ -396,14 +400,14 @@ public void setInUse(boolean inUse) this.inUse = inUse; } - public boolean isWater() + public boolean isBoiling() { - return Water; + return boiling; } - public void setWater(boolean Water) + public void setBoiling(boolean boiling) { - this.Water = Water; + this.boiling = boiling; } public boolean isLeaking() @@ -484,14 +488,7 @@ public ItemStack getContainerStack() public void calculateLostTime() { - @SuppressWarnings("unused") long elapsedTimesince = System.currentTimeMillis() - systemTime; - } - public boolean isBoiling() - { - // TODO Auto-generated method stub - return false; - } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java index d53a5158..8fb98149 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java @@ -1,15 +1,16 @@ package com.darkona.adventurebackpack.inventory; -import com.darkona.adventurebackpack.item.ItemCopterPack; -import com.darkona.adventurebackpack.reference.GeneralReference; -import com.darkona.adventurebackpack.util.FluidUtils; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidTank; +import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.item.ItemCopterPack; +import com.darkona.adventurebackpack.reference.GeneralReference; +import com.darkona.adventurebackpack.util.FluidUtils; + /** * Created on 02/01/2015 * @@ -18,7 +19,7 @@ public class InventoryCopterPack implements IInventoryTanks { private ItemStack containerStack; - public FluidTank fuelTank = new FluidTank(6000); + public FluidTank fuelTank = new FluidTank(Constants.copterTankCapacity); public int tickCounter = 0; public byte status = ItemCopterPack.OFF_MODE; private ItemStack[] inventory = new ItemStack[2]; @@ -182,8 +183,6 @@ public boolean isItemValidForSlot(int i, ItemStack stack) public void onInventoryChanged() { - - @SuppressWarnings("unused") ItemStack container = getStackInSlot(0); closeInventory(); @@ -262,7 +261,7 @@ public void saveToNBT(NBTTagCompound compound) @Override public FluidTank[] getTanksArray() { - FluidTank[] tanks = { fuelTank }; + FluidTank[] tanks = {fuelTank}; return tanks; } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotAdventureBackpack.java index 9d9492e2..80ba4735 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotAdventureBackpack.java @@ -1,6 +1,5 @@ package com.darkona.adventurebackpack.inventory; -import com.darkona.adventurebackpack.util.Utils; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Slot; diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java index 91b90c8c..8544c579 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java @@ -1,12 +1,12 @@ package com.darkona.adventurebackpack.inventory; -import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; -import com.darkona.adventurebackpack.config.ConfigHandler; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; +import com.darkona.adventurebackpack.config.ConfigHandler; + /** * Created by Darkona on 12/10/2014. */ @@ -30,7 +30,7 @@ public class SlotBackpack extends SlotAdventureBackpack "mcp.mobius.betterbarrels.common.items.dolly.ItemBarrelMover", "mcp.mobius.betterbarrels.common.items.dolly.ItemDiamondMover", // Project Red Exploration Backpacks - "mrtjp.projectred.exploration.ItemBackpack", }; + "mrtjp.projectred.exploration.ItemBackpack",}; public SlotBackpack(IInventoryAdventureBackpack inventory, int id, int x, int y) { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java index b85a2cc7..337a4bf2 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java @@ -1,13 +1,13 @@ package com.darkona.adventurebackpack.inventory; -import com.darkona.adventurebackpack.util.Utils; - import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidTank; +import com.darkona.adventurebackpack.util.Utils; + /** * Created on 12/10/2014 * @@ -15,11 +15,11 @@ */ public class SlotFluid extends SlotAdventureBackpack { - private static final String[] VALID_CONTAINER_NAMES = { "bucket" }; + private static final String[] VALID_CONTAINER_NAMES = {"bucket"}; - private static final String[] VALID_CONTAINER_IDS = { "minecraft:milk_bucket" }; + private static final String[] VALID_CONTAINER_IDS = {"minecraft:milk_bucket"}; - private static final String[] INVALID_CONTAINER_NAMES = { "cell" }; + private static final String[] INVALID_CONTAINER_NAMES = {"cell"}; public SlotFluid(IInventory inventory, int id, int x, int y) { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java index 8bbda210..736a2d6c 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java @@ -1,8 +1,5 @@ package com.darkona.adventurebackpack.inventory; -import com.darkona.adventurebackpack.item.ItemAdventureBackpack; -import com.darkona.adventurebackpack.item.ItemHose; - import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemFishingRod; @@ -12,6 +9,9 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.ItemTool; +import com.darkona.adventurebackpack.item.ItemAdventureBackpack; +import com.darkona.adventurebackpack.item.ItemHose; + /** * Created on 12/10/2014 * @@ -30,9 +30,9 @@ public boolean isItemValid(ItemStack stack) return isValidTool(stack); } - private static final String[] VALID_TOOL_NAMES = { "wrench", "hammer", "axe", "shovel", "grafter", "scoop", "crowbar", "mattock", "drill", }; + private static final String[] VALID_TOOL_NAMES = {"wrench", "hammer", "axe", "shovel", "grafter", "scoop", "crowbar", "mattock", "drill",}; - private static final String[] INVALID_TOOL_NAMES = { "bucket", "sword", "dagger", "sabre", "rapier", "shield", "cutlass", "bow", "whip", "disassembler", "robit" }; + private static final String[] INVALID_TOOL_NAMES = {"bucket", "sword", "dagger", "sabre", "rapier", "shield", "cutlass", "bow", "whip", "disassembler", "robit"}; public static boolean isValidTool(ItemStack stack) { @@ -122,7 +122,8 @@ public static boolean isValidTool(ItemStack stack) try { //Thaumcraft - if (java.lang.Class.forName("thaumcraft.common.items.wands.ItemWandCasting").isInstance(item)) return true; + if (java.lang.Class.forName("thaumcraft.common.items.wands.ItemWandCasting").isInstance(item)) + return true; } catch (Exception oops) { // oops.printStackTrace(); diff --git a/src/main/java/com/darkona/adventurebackpack/item/ArmorAB.java b/src/main/java/com/darkona/adventurebackpack/item/ArmorAB.java index f138408e..4023bd77 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ArmorAB.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ArmorAB.java @@ -1,19 +1,20 @@ package com.darkona.adventurebackpack.item; -import com.darkona.adventurebackpack.CreativeTabAB; -import com.darkona.adventurebackpack.init.ModMaterials; -import com.darkona.adventurebackpack.reference.ModInfo; -import com.darkona.adventurebackpack.util.Resources; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.Entity; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +import com.darkona.adventurebackpack.CreativeTabAB; +import com.darkona.adventurebackpack.init.ModMaterials; +import com.darkona.adventurebackpack.reference.ModInfo; +import com.darkona.adventurebackpack.util.Resources; /** * Created on 11/10/2014. + * * @author Javier Darkona */ public class ArmorAB extends ItemArmor diff --git a/src/main/java/com/darkona/adventurebackpack/item/IBackWearableItem.java b/src/main/java/com/darkona/adventurebackpack/item/IBackWearableItem.java index c9467e3b..41e77681 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/IBackWearableItem.java +++ b/src/main/java/com/darkona/adventurebackpack/item/IBackWearableItem.java @@ -1,12 +1,12 @@ package com.darkona.adventurebackpack.item; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; /** * Created on 08/01/2015 @@ -15,18 +15,18 @@ */ public interface IBackWearableItem { - public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack); + void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack); - public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack); + void onPlayerDeath(World world, EntityPlayer player, ItemStack stack); - public void onEquipped(World world, EntityPlayer player, ItemStack stack); + void onEquipped(World world, EntityPlayer player, ItemStack stack); - public void onUnequipped(World world, EntityPlayer player, ItemStack stack); + void onUnequipped(World world, EntityPlayer player, ItemStack stack); @SideOnly(Side.CLIENT) - public ModelBiped getWearableModel(ItemStack wearable); + ModelBiped getWearableModel(ItemStack wearable); @SideOnly(Side.CLIENT) - public ResourceLocation getWearableTexture(ItemStack wearable); + ResourceLocation getWearableTexture(ItemStack wearable); } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAB.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAB.java index 7060d0a5..058963a6 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAB.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAB.java @@ -1,13 +1,13 @@ package com.darkona.adventurebackpack.item; -import com.darkona.adventurebackpack.CreativeTabAB; -import com.darkona.adventurebackpack.reference.ModInfo; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +import com.darkona.adventurebackpack.CreativeTabAB; +import com.darkona.adventurebackpack.reference.ModInfo; /** * Created by Darkona on 10/10/2014. diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 260239e5..2f26385e 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -2,6 +2,25 @@ import java.util.List; +import net.minecraft.block.Block; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ChunkCoordinates; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.util.ForgeDirection; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + import com.darkona.adventurebackpack.AdventureBackpack; import com.darkona.adventurebackpack.block.BlockAdventureBackpack; import com.darkona.adventurebackpack.block.TileAdventureBackpack; @@ -18,28 +37,10 @@ import com.darkona.adventurebackpack.proxy.ClientProxy; import com.darkona.adventurebackpack.reference.BackpackNames; import com.darkona.adventurebackpack.util.BackpackUtils; +import com.darkona.adventurebackpack.util.EnchUtils; import com.darkona.adventurebackpack.util.Resources; import com.darkona.adventurebackpack.util.Utils; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.client.model.ModelBiped; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.ChunkCoordinates; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.ResourceLocation; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.common.util.ForgeDirection; - /** * Created on 12/10/2014 * @@ -73,7 +74,7 @@ public int getItemEnchantability() @Override public boolean isBookEnchantable(ItemStack stack, ItemStack book) { - return (Utils.isSoulBook(book)); + return EnchUtils.isSoulBook(book); } /** @@ -184,6 +185,7 @@ public boolean placeBackpack(ItemStack stack, EntityPlayer player, World world, if (from) { stack.stackSize--; + } else { BackpackProperty.get(player).setWearable(null); @@ -256,7 +258,7 @@ public String getArmorTexture(ItemStack stack, Entity entity, int slot, String t } @Override - @SuppressWarnings({ "rawtypes", "unchecked" }) + @SuppressWarnings({"rawtypes", "unchecked"}) @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4) { @@ -270,8 +272,8 @@ public void addInformation(ItemStack stack, EntityPlayer player, List list, bool } } - @SuppressWarnings({ "unchecked", "rawtypes" }) @Override + @SuppressWarnings({"unchecked", "rawtypes"}) @SideOnly(Side.CLIENT) public void getSubItems(Item item, CreativeTabs par2CreativeTabs, List subItems) { @@ -302,7 +304,7 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) @Override public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) { - if (world.isRemote || !ConfigHandler.backpackDeathPlace || Utils.isSoulBounded(stack) + if (world.isRemote || !ConfigHandler.backpackDeathPlace || EnchUtils.isSoulBounded(stack) || player.getEntityWorld().getGameRules().getGameRuleBooleanValue("keepInventory")) { return; @@ -325,7 +327,7 @@ private boolean tryPlace(World world, EntityPlayer player, ItemStack backpack) int Y = (int) player.posY; if (Y < 1) Y = 1; - int positions[] = { 0, -1, 1, -2, 2, -3, 3, -4, 4, -5, 5, -6, 6 }; + int positions[] = {0, -1, 1, -2, 2, -3, 3, -4, 4, -5, 5, -6, 6}; for (int shiftY : positions) { diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java index 0ccbc199..567bc9f0 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java @@ -1,13 +1,13 @@ package com.darkona.adventurebackpack.item; -import com.darkona.adventurebackpack.client.models.ModelAdventureHat; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +import com.darkona.adventurebackpack.client.models.ModelAdventureHat; /** * Created by Darkona on 11/10/2014. diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index d8a17136..39406e1c 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -1,18 +1,5 @@ package com.darkona.adventurebackpack.item; -import com.darkona.adventurebackpack.init.ModNetwork; -import com.darkona.adventurebackpack.inventory.ContainerJetpack; -import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; -import com.darkona.adventurebackpack.network.GUIPacket; -import com.darkona.adventurebackpack.network.PlayerActionPacket; -import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; -import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; -import com.darkona.adventurebackpack.proxy.ClientProxy; -import com.darkona.adventurebackpack.util.Resources; -import com.darkona.adventurebackpack.util.Utils; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.Entity; @@ -24,6 +11,19 @@ import net.minecraftforge.common.BiomeDictionary; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.inventory.ContainerJetpack; +import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; +import com.darkona.adventurebackpack.network.GUIPacket; +import com.darkona.adventurebackpack.network.PlayerActionPacket; +import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; +import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; +import com.darkona.adventurebackpack.proxy.ClientProxy; +import com.darkona.adventurebackpack.util.EnchUtils; +import com.darkona.adventurebackpack.util.Resources; /** * Created on 15/01/2015 @@ -53,7 +53,7 @@ public int getItemEnchantability() @Override public boolean isBookEnchantable(ItemStack stack, ItemStack book) { - return (Utils.isSoulBook(book)); + return EnchUtils.isSoulBook(book); } @Override @@ -133,7 +133,7 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) inv.openInventory(); boolean mustFizzz = !inv.isInUse(); int CoalConsumed = 13; - boolean canUse = inv.getCoalTank().drain(CoalConsumed, false) != null; + boolean canUse = inv.getSteamTank().drain(CoalConsumed, false) != null; if (inv.getStatus()) { @@ -171,8 +171,8 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) { elevate(player); - inv.getCoalTank().drain(CoalConsumed, true); - if (inv.getCoalTank().getFluidAmount() == 0) + inv.getSteamTank().drain(CoalConsumed, true); + if (inv.getSteamTank().getFluidAmount() == 0) { inv.setInUse(false); } @@ -185,7 +185,8 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) { player.fallDistance = 0; } - if (!world.isRemote) ModNetwork.sendToNearby(new EntityParticlePacket.Message(EntityParticlePacket.JETPACK_PARTICLE, player), player); + if (!world.isRemote) + ModNetwork.sendToNearby(new EntityParticlePacket.Message(EntityParticlePacket.JETPACK_PARTICLE, player), player); } inv.closeInventory(); @@ -195,8 +196,8 @@ private void runWater(InventoryCoalJetpack inv, World world, EntityPlayer player { int temperature = inv.getTemperature(); boolean mustSSSSS = !inv.isLeaking(); - boolean mustBlublub = !inv.isWater(); - boolean Water = inv.isWater(); + boolean mustBlublub = !inv.isBoiling(); + boolean Water = inv.isBoiling(); boolean leaking = inv.isLeaking(); if (temperature >= 100 && inv.getWaterTank().getFluidAmount() > 0) @@ -217,18 +218,18 @@ private void runWater(InventoryCoalJetpack inv, World world, EntityPlayer player if (Water) { - if (inv.getCoalTank().getFluidAmount() < inv.getCoalTank().getCapacity()) + if (inv.getSteamTank().getFluidAmount() < inv.getSteamTank().getCapacity()) { if (inv.getWaterTank().getFluid() != null) { int water = inv.getWaterTank().drain((temperature / 100), true).amount; - inv.getCoalTank().fill(new FluidStack(FluidRegistry.getFluid("water"), water * 4), true); + inv.getSteamTank().fill(new FluidStack(FluidRegistry.getFluid("water"), water * 4), true); inv.dirtyTanks(); } } } - if (inv.getCoalTank().getFluidAmount() < inv.getCoalTank().getCapacity() - 100) + if (inv.getSteamTank().getFluidAmount() < inv.getSteamTank().getCapacity() - 100) { if (leaking) { @@ -245,7 +246,7 @@ private void runWater(InventoryCoalJetpack inv, World world, EntityPlayer player } } } - inv.setWater(Water); + inv.setBoiling(Water); inv.setLeaking(leaking); inv.setTemperature(temperature); } @@ -280,7 +281,7 @@ public void onEquipped(World world, EntityPlayer player, ItemStack stack) public void onUnequipped(World world, EntityPlayer player, ItemStack stack) { InventoryCoalJetpack inv = new InventoryCoalJetpack(stack); - inv.setWater(false); + inv.setBoiling(false); inv.setInUse(false); inv.setLeaking(false); inv.setStatus(false); diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java b/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java index b9e4a726..302fb623 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java @@ -3,10 +3,6 @@ import java.util.HashMap; import java.util.List; -import com.darkona.adventurebackpack.entity.EntityInflatableBoat; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; @@ -20,6 +16,10 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.World; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +import com.darkona.adventurebackpack.entity.EntityInflatableBoat; /** * Created on 11/10/2014 @@ -86,8 +86,8 @@ public String getUnlocalizedName(ItemStack stack) } @Override - @SideOnly(Side.CLIENT) @SuppressWarnings("unchecked") + @SideOnly(Side.CLIENT) public void getSubItems(Item item, CreativeTabs creativeTabs, List list) { for (int i = 1; i <= names.length; i++) diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java index 6dc5687f..b906d443 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java @@ -2,20 +2,6 @@ import java.util.List; -import com.darkona.adventurebackpack.client.models.ModelCopterPack; -import com.darkona.adventurebackpack.init.ModNetwork; -import com.darkona.adventurebackpack.inventory.ContainerCopter; -import com.darkona.adventurebackpack.inventory.InventoryCopterPack; -import com.darkona.adventurebackpack.network.GUIPacket; -import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; -import com.darkona.adventurebackpack.proxy.ClientProxy; -import com.darkona.adventurebackpack.reference.GeneralReference; -import com.darkona.adventurebackpack.util.Resources; -import com.darkona.adventurebackpack.util.Utils; -import com.darkona.adventurebackpack.util.Wearing; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.Entity; @@ -29,6 +15,20 @@ import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +import com.darkona.adventurebackpack.client.models.ModelCopterPack; +import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.inventory.ContainerCopter; +import com.darkona.adventurebackpack.inventory.InventoryCopterPack; +import com.darkona.adventurebackpack.network.GUIPacket; +import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; +import com.darkona.adventurebackpack.proxy.ClientProxy; +import com.darkona.adventurebackpack.reference.GeneralReference; +import com.darkona.adventurebackpack.util.EnchUtils; +import com.darkona.adventurebackpack.util.Resources; +import com.darkona.adventurebackpack.util.Wearing; /** * Created on 31/12/2014 @@ -59,7 +59,7 @@ public int getItemEnchantability() @Override public boolean isBookEnchantable(ItemStack stack, ItemStack book) { - return (Utils.isSoulBook(book)); + return EnchUtils.isSoulBook(book); } @Override @@ -77,7 +77,7 @@ public void onUpdate(ItemStack stack, World world, Entity entity, int slot, bool { } - @SuppressWarnings(value = "unchecked") + @SuppressWarnings("unchecked") public void pushEntities(World world, EntityPlayer player, float speed) { double posX = player.posX; diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java b/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java index a7c51ade..00b1b615 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java @@ -1,17 +1,5 @@ package com.darkona.adventurebackpack.item; -import com.darkona.adventurebackpack.CreativeTabAB; -import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.common.ServerActions; -import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; -import com.darkona.adventurebackpack.init.ModFluids; -import com.darkona.adventurebackpack.inventory.InventoryBackpack; -import com.darkona.adventurebackpack.util.Resources; -import com.darkona.adventurebackpack.util.Utils; -import com.darkona.adventurebackpack.util.Wearing; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; @@ -34,6 +22,18 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.IFluidHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +import com.darkona.adventurebackpack.CreativeTabAB; +import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.common.ServerActions; +import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; +import com.darkona.adventurebackpack.init.ModFluids; +import com.darkona.adventurebackpack.inventory.InventoryBackpack; +import com.darkona.adventurebackpack.util.Resources; +import com.darkona.adventurebackpack.util.Utils; +import com.darkona.adventurebackpack.util.Wearing; /** * Created by Darkona on 12/10/2014. diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemJuiceBottle.java b/src/main/java/com/darkona/adventurebackpack/item/ItemJuiceBottle.java index 764f7c04..b648defc 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemJuiceBottle.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemJuiceBottle.java @@ -1,10 +1,5 @@ package com.darkona.adventurebackpack.item; -import com.darkona.adventurebackpack.CreativeTabAB; -import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; -import com.darkona.adventurebackpack.init.ModFluids; -import com.darkona.adventurebackpack.util.Resources; - import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; @@ -12,6 +7,11 @@ import net.minecraft.item.ItemStack; import net.minecraft.world.World; +import com.darkona.adventurebackpack.CreativeTabAB; +import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; +import com.darkona.adventurebackpack.init.ModFluids; +import com.darkona.adventurebackpack.util.Resources; + /** * Created on 19/10/2014 * diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemMachete.java b/src/main/java/com/darkona/adventurebackpack/item/ItemMachete.java index 03c20a52..6c10db56 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemMachete.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemMachete.java @@ -2,8 +2,6 @@ import java.util.Set; -import com.darkona.adventurebackpack.CreativeTabAB; -import com.darkona.adventurebackpack.init.ModMaterials; import com.google.common.collect.Sets; import net.minecraft.block.Block; @@ -19,6 +17,9 @@ import net.minecraftforge.common.IShearable; import net.minecraftforge.oredict.OreDictionary; +import com.darkona.adventurebackpack.CreativeTabAB; +import com.darkona.adventurebackpack.init.ModMaterials; + /** * Created on 10/10/2014 * @@ -26,8 +27,8 @@ */ public class ItemMachete extends ToolAB { - @SuppressWarnings("rawtypes") - private static final Set breakableBlocks = Sets.newHashSet(Blocks.pumpkin, + private static final Set breakableBlocks = Sets.newHashSet( + Blocks.pumpkin, Blocks.web, Blocks.leaves, Blocks.leaves2, @@ -51,7 +52,7 @@ public class ItemMachete extends ToolAB Blocks.wheat, Blocks.wool); - @SuppressWarnings("unused") + @SuppressWarnings("FieldCanBeLocal") private float field_150934_a; public ItemMachete() @@ -105,14 +106,13 @@ public boolean onBlockDestroyed(ItemStack stack, World world, Block block, int x @Override public boolean onBlockStartBreak(ItemStack itemstack, int x, int y, int z, EntityPlayer player) { - /* - if (player.worldObj.isRemote) + /*if (player.worldObj.isRemote) { return false; } int id = player.worldObj.getBlockId(x, y, z); for(ItemStack stacky : OreDictionary.getOres("treeLeaves")){ - if (stacky.itemID == id) return false; + if (stacky.itemID == id) return false; } if (Block.blocksList[id] instanceof IShearable ) @@ -121,7 +121,7 @@ public boolean onBlockStartBreak(ItemStack itemstack, int x, int y, int z, Entit if (target.isShearable(itemstack, player.worldObj, x, y, z)) { ArrayList drops = target.onSheared(itemstack, player.worldObj, x, y, z, - EnchantmentHelper.getEnchantmentLevel(Enchantment.fortune.effectId, itemstack)); + EnchantmentHelper.getEnchantmentLevel(Enchantment.fortune.effectId, itemstack)); Random rand = new Random(); for(ItemStack stack : drops) @@ -139,8 +139,8 @@ public boolean onBlockStartBreak(ItemStack itemstack, int x, int y, int z, Entit player.addStat(StatList.mineBlockStatArray[id], 1); } } - return false; - */ + return false;*/ + return new ItemStack(new ItemShears()).getItem().onBlockStartBreak(itemstack, x, y, z, player); } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java b/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java index ec1b0308..4dd685ca 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java @@ -1,7 +1,5 @@ package com.darkona.adventurebackpack.item; -import com.darkona.adventurebackpack.config.ConfigHandler; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -9,6 +7,8 @@ import net.minecraft.potion.PotionEffect; import net.minecraft.world.World; +import com.darkona.adventurebackpack.config.ConfigHandler; + /** * Created by Darkona on 11/10/2014. */ @@ -27,7 +27,7 @@ public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) { if (ConfigHandler.pistonBootsAutoStep) player.stepHeight = 1.001F; - if (ConfigHandler.pistonBootsSprintBoost !=0 && player.isSprinting()) + if (ConfigHandler.pistonBootsSprintBoost != 0 && player.isSprinting()) player.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 1, ConfigHandler.pistonBootsSprintBoost - 1)); } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ToolAB.java b/src/main/java/com/darkona/adventurebackpack/item/ToolAB.java index 4287c2fd..1e57ce5c 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ToolAB.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ToolAB.java @@ -2,15 +2,15 @@ import java.util.Set; -import com.darkona.adventurebackpack.reference.ModInfo; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemTool; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +import com.darkona.adventurebackpack.reference.ModInfo; /** * Created by Darkona on 11/10/2014. @@ -18,7 +18,7 @@ public class ToolAB extends ItemTool { - public ToolAB(ToolMaterial material, @SuppressWarnings("rawtypes") Set breakableBlocks) + public ToolAB(ToolMaterial material, Set breakableBlocks) { super(1f, material, breakableBlocks); //setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); diff --git a/src/main/java/com/darkona/adventurebackpack/network/CowAbilityPacket.java b/src/main/java/com/darkona/adventurebackpack/network/CowAbilityPacket.java index 1f4a8b12..59a5b2bc 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/CowAbilityPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/CowAbilityPacket.java @@ -1,17 +1,19 @@ package com.darkona.adventurebackpack.network; -import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; -import com.darkona.adventurebackpack.inventory.ContainerBackpack; -import cpw.mods.fml.common.network.ByteBufUtils; -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import java.util.UUID; + import io.netty.buffer.ByteBuf; + import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; +import cpw.mods.fml.common.network.ByteBufUtils; +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import java.util.UUID; +import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; +import com.darkona.adventurebackpack.inventory.ContainerBackpack; /** * Created on 16/10/2014 diff --git a/src/main/java/com/darkona/adventurebackpack/network/CycleToolPacket.java b/src/main/java/com/darkona/adventurebackpack/network/CycleToolPacket.java index 1e402280..8c5d3639 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/CycleToolPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/CycleToolPacket.java @@ -1,11 +1,13 @@ package com.darkona.adventurebackpack.network; -import com.darkona.adventurebackpack.common.ServerActions; +import io.netty.buffer.ByteBuf; + +import net.minecraft.entity.player.EntityPlayerMP; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayerMP; + +import com.darkona.adventurebackpack.common.ServerActions; /** * Created by Darkona on 12/10/2014. diff --git a/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java b/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java index cc5a1f9f..a7103c5e 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java @@ -1,14 +1,15 @@ package com.darkona.adventurebackpack.network; -import com.darkona.adventurebackpack.util.BackpackUtils; -import com.darkona.adventurebackpack.util.Wearing; +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ChatComponentTranslation; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.ChatComponentTranslation; + +import com.darkona.adventurebackpack.util.BackpackUtils; +import com.darkona.adventurebackpack.util.Wearing; /** * Created on 08/01/2015 @@ -34,7 +35,8 @@ public Message onMessage(Message message, MessageContext ctx) /*if (message.force && Wearing.isWearingWearable(player)) { BackpackUtils.unequipWearable(player); - } else */if (Wearing.isHoldingWearable(player) && !Wearing.isWearingWearable(player)) + } else */ + if (Wearing.isHoldingWearable(player) && !Wearing.isWearingWearable(player)) { if (BackpackUtils.equipWearable(player.getCurrentEquippedItem(), player) == BackpackUtils.reasons.SUCCESFUL) { diff --git a/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java b/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java index 40f67580..3c815aa1 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java @@ -1,5 +1,14 @@ package com.darkona.adventurebackpack.network; +import io.netty.buffer.ByteBuf; + +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.world.World; +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; + import com.darkona.adventurebackpack.AdventureBackpack; import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.config.ConfigHandler; @@ -7,14 +16,6 @@ import com.darkona.adventurebackpack.inventory.ContainerBackpack; import com.darkona.adventurebackpack.util.Wearing; -import cpw.mods.fml.common.network.internal.FMLNetworkHandler; -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.world.World; - /** * Created by Darkona on 12/10/2014. */ @@ -46,7 +47,7 @@ public IMessage onMessage(GUImessage message, MessageContext ctx) if (message.type == COPTER_GUI) { - if(message.from == FROM_KEYBIND) + if (message.from == FROM_KEYBIND) { if (Wearing.isWearingCopter(player)) { @@ -54,7 +55,7 @@ public IMessage onMessage(GUImessage message, MessageContext ctx) return null; } } - if(message.from == FROM_HOLDING) + if (message.from == FROM_HOLDING) { if (Wearing.isHoldingCopter(player)) { @@ -65,7 +66,7 @@ public IMessage onMessage(GUImessage message, MessageContext ctx) } if (message.type == JETPACK_GUI) { - if(message.from == FROM_KEYBIND) + if (message.from == FROM_KEYBIND) { if (Wearing.isWearingJetpack(player)) { @@ -73,7 +74,7 @@ public IMessage onMessage(GUImessage message, MessageContext ctx) return null; } } - if(message.from == FROM_HOLDING) + if (message.from == FROM_HOLDING) { if (Wearing.isHoldingJetpack(player)) { diff --git a/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java b/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java index a9c3dae0..75bf9fa6 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java @@ -1,12 +1,14 @@ package com.darkona.adventurebackpack.network; -import com.darkona.adventurebackpack.entity.EntityFriendlySpider; -import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; -import com.darkona.adventurebackpack.util.Wearing; +import io.netty.buffer.ByteBuf; + import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import io.netty.buffer.ByteBuf; + +import com.darkona.adventurebackpack.entity.EntityFriendlySpider; +import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; +import com.darkona.adventurebackpack.util.Wearing; /** * Created by Darkona on 12/10/2014. @@ -22,16 +24,17 @@ public IMessage onMessage(ActionMessage message, MessageContext ctx) { if (ctx.side.isServer()) { - if(message.type == spiderJump){ - if(ctx.getServerHandler().playerEntity.ridingEntity != null && ctx.getServerHandler().playerEntity.ridingEntity instanceof EntityFriendlySpider) + if (message.type == spiderJump) + { + if (ctx.getServerHandler().playerEntity.ridingEntity != null && ctx.getServerHandler().playerEntity.ridingEntity instanceof EntityFriendlySpider) { - ((EntityFriendlySpider)ctx.getServerHandler().playerEntity.ridingEntity).setJumping(true); + ((EntityFriendlySpider) ctx.getServerHandler().playerEntity.ridingEntity).setJumping(true); } } - if(message.type == JETPACK_IN_USE || message.type == JETPACK_NOT_IN_USE) + if (message.type == JETPACK_IN_USE || message.type == JETPACK_NOT_IN_USE) { - if(Wearing.isWearingJetpack(ctx.getServerHandler().playerEntity)) + if (Wearing.isWearingJetpack(ctx.getServerHandler().playerEntity)) { InventoryCoalJetpack inv = new InventoryCoalJetpack(Wearing.getWearingJetpack(ctx.getServerHandler().playerEntity)); inv.setInUse(message.type == JETPACK_IN_USE); diff --git a/src/main/java/com/darkona/adventurebackpack/network/SleepingBagPacket.java b/src/main/java/com/darkona/adventurebackpack/network/SleepingBagPacket.java index 70e7ccee..b40a7a3c 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/SleepingBagPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/SleepingBagPacket.java @@ -1,10 +1,12 @@ package com.darkona.adventurebackpack.network; -import com.darkona.adventurebackpack.common.ServerActions; +import io.netty.buffer.ByteBuf; + import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import io.netty.buffer.ByteBuf; + +import com.darkona.adventurebackpack.common.ServerActions; /** * Created on 19/10/2014 diff --git a/src/main/java/com/darkona/adventurebackpack/network/SyncPropertiesPacket.java b/src/main/java/com/darkona/adventurebackpack/network/SyncPropertiesPacket.java index 5c7036d3..b90ae324 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/SyncPropertiesPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/SyncPropertiesPacket.java @@ -1,15 +1,17 @@ package com.darkona.adventurebackpack.network; -import com.darkona.adventurebackpack.AdventureBackpack; -import com.darkona.adventurebackpack.init.ModNetwork; -import com.darkona.adventurebackpack.playerProperties.BackpackProperty; +import io.netty.buffer.ByteBuf; + +import net.minecraft.client.Minecraft; +import net.minecraft.nbt.NBTTagCompound; import cpw.mods.fml.common.network.ByteBufUtils; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.nbt.NBTTagCompound; + +import com.darkona.adventurebackpack.AdventureBackpack; +import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.playerProperties.BackpackProperty; /** * Created on 08/01/2015 @@ -29,9 +31,11 @@ public Message onMessage(Message message, MessageContext ctx) if (ctx.side.isClient() && message.properties != null) { - if (Minecraft.getMinecraft().theWorld == null) { + if (Minecraft.getMinecraft().theWorld == null) + { ModNetwork.net.sendToServer(new SyncPropertiesPacket.Message()); - } else { + } else + { AdventureBackpack.proxy.synchronizePlayer(message.ID, message.properties); } } diff --git a/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java b/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java index 0798817e..db11e7c5 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java @@ -1,14 +1,15 @@ package com.darkona.adventurebackpack.network; -import com.darkona.adventurebackpack.common.ServerActions; -import com.darkona.adventurebackpack.util.Wearing; +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayerMP; import cpw.mods.fml.common.network.ByteBufUtils; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayerMP; + +import com.darkona.adventurebackpack.common.ServerActions; +import com.darkona.adventurebackpack.util.Wearing; /** * Created on 12/10/2014 @@ -32,17 +33,17 @@ public Message onMessage(Message message, MessageContext ctx) if (player != null) { - if((message.type == COPTER_ON_OFF || message.type == COPTER_TOGGLE)) + if ((message.type == COPTER_ON_OFF || message.type == COPTER_TOGGLE)) ServerActions.toggleCopterPack(player, Wearing.getWearingCopter(player), message.type); - if(message.type == JETPACK_ON_OFF) - ServerActions.toggleCoalJetpack(player,Wearing.getWearingJetpack(player),message.type); + if (message.type == JETPACK_ON_OFF) + ServerActions.toggleCoalJetpack(player, Wearing.getWearingJetpack(player), message.type); - if(message.type == CYCLING_ON_OFF) - ServerActions.toggleToolCycling(player,Wearing.getWearingBackpack(player),message.type); + if (message.type == CYCLING_ON_OFF) + ServerActions.toggleToolCycling(player, Wearing.getWearingBackpack(player), message.type); - if(message.type == NIGHTVISION_ON_OFF) - ServerActions.toggleNightVision(player,Wearing.getWearingBackpack(player),message.type); + if (message.type == NIGHTVISION_ON_OFF) + ServerActions.toggleNightVision(player, Wearing.getWearingBackpack(player), message.type); } } diff --git a/src/main/java/com/darkona/adventurebackpack/network/messages/EntityParticlePacket.java b/src/main/java/com/darkona/adventurebackpack/network/messages/EntityParticlePacket.java index 72f588f4..daa89f40 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/messages/EntityParticlePacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/messages/EntityParticlePacket.java @@ -1,14 +1,15 @@ package com.darkona.adventurebackpack.network.messages; -import com.darkona.adventurebackpack.client.ClientActions; -import com.darkona.adventurebackpack.init.ModNetwork; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.Entity; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; + +import com.darkona.adventurebackpack.client.ClientActions; +import com.darkona.adventurebackpack.init.ModNetwork; /** * Created on 06/01/2015 diff --git a/src/main/java/com/darkona/adventurebackpack/network/messages/EntitySoundPacket.java b/src/main/java/com/darkona/adventurebackpack/network/messages/EntitySoundPacket.java index 7a154238..ef6ca540 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/messages/EntitySoundPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/messages/EntitySoundPacket.java @@ -1,15 +1,16 @@ package com.darkona.adventurebackpack.network.messages; -import com.darkona.adventurebackpack.client.ClientActions; -import com.darkona.adventurebackpack.init.ModNetwork; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; import io.netty.buffer.ByteBuf; + import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; + +import com.darkona.adventurebackpack.client.ClientActions; +import com.darkona.adventurebackpack.init.ModNetwork; /** * Created on 06/01/2015 diff --git a/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java b/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java index 205d4ddb..e43369e4 100644 --- a/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java +++ b/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java @@ -1,10 +1,5 @@ package com.darkona.adventurebackpack.playerProperties; -import com.darkona.adventurebackpack.init.ModNetwork; -import com.darkona.adventurebackpack.item.IBackWearableItem; -import com.darkona.adventurebackpack.network.SyncPropertiesPacket; -import com.darkona.adventurebackpack.util.Utils; - import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -12,15 +7,18 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ChunkCoordinates; import net.minecraft.world.World; -import net.minecraftforge.client.event.RenderPlayerEvent; import net.minecraftforge.common.IExtendedEntityProperties; +import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.item.IBackWearableItem; +import com.darkona.adventurebackpack.network.SyncPropertiesPacket; +import com.darkona.adventurebackpack.util.Utils; + /** * Created on 24/10/2014 * * @author Darkona */ -@SuppressWarnings("unused") public class BackpackProperty implements IExtendedEntityProperties { @@ -31,7 +29,7 @@ public class BackpackProperty implements IExtendedEntityProperties private NBTTagCompound wearableData = new NBTTagCompound(); private boolean forceCampFire = false; private int dimension = 0; - private RenderPlayerEvent.Specials.Pre event; + //private RenderPlayerEvent.Specials.Pre event; public NBTTagCompound getWearableData() { diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java index 950205b9..434cddc8 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java @@ -2,6 +2,17 @@ import java.lang.reflect.Field; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.client.MinecraftForgeClient; +import net.minecraftforge.common.MinecraftForge; +import cpw.mods.fml.client.registry.ClientRegistry; +import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.common.FMLCommonHandler; + import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.block.TileCampfire; import com.darkona.adventurebackpack.client.gui.GuiOverlay; @@ -27,20 +38,6 @@ import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.util.Utils; -import com.jadarstudios.developercapes.DevCapes; - -import cpw.mods.fml.client.registry.ClientRegistry; -import cpw.mods.fml.client.registry.RenderingRegistry; -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.common.event.FMLInitializationEvent; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.EntityRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraftforge.client.MinecraftForgeClient; -import net.minecraftforge.common.MinecraftForge; /** * Created on 10/10/2014 @@ -83,10 +80,6 @@ public void joinPlayer(EntityPlayer player) { } - public void onPlayerLogin(EntityPlayer player) - { - } - @Override public void synchronizePlayer(int id, NBTTagCompound properties) { @@ -134,51 +127,7 @@ public void initRenderers() public void registerKeybindings() { ClientRegistry.registerKeyBinding(Keybindings.openBackpack); - ClientRegistry.registerKeyBinding(Keybindings.toggleHose); + ClientRegistry.registerKeyBinding(Keybindings.toggleActions); FMLCommonHandler.instance().bus().register(new KeybindHandler()); } - - @Override - public void registerHandlers() - { - // TODO Auto-generated method stub - } - - @Override - public void init(FMLInitializationEvent event) - { - // TODO Auto-generated method stub - } - - @Override - public void registerRenderInformation() - { - renderHandler = new RenderHandler(); - MinecraftForge.EVENT_BUS.register(renderHandler); - rendererWearableEquipped = new RendererWearableEquipped(); - - rendererItemAdventureBackpack = new RendererItemAdventureBackpack(); - MinecraftForgeClient.registerItemRenderer(ModItems.adventureBackpack, rendererItemAdventureBackpack); - MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(ModBlocks.blockBackpack), rendererItemAdventureBackpack); - ClientRegistry.bindTileEntitySpecialRenderer(TileAdventureBackpack.class, new RendererAdventureBackpackBlock()); - int i = 0; - for (Field curField : EntityRenderer.class.getDeclaredFields()) - { - if (curField.getType() == float.class) - { - if (++i == 15) - { - camRollField = curField; - curField.setAccessible(true); - } - } - } - } - - @Override - public void Capes() - { - DevCapes.getInstance().registerConfig("https://raw.githubusercontent.com/runescapejon/Adventurebackpack-Capes/master/capes.json"); - } - } diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java index 3df3bd0f..8466805d 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java @@ -1,24 +1,13 @@ package com.darkona.adventurebackpack.proxy; -import cpw.mods.fml.common.FMLCommonHandler; +import net.minecraft.entity.player.EntityPlayerMP; import cpw.mods.fml.common.gameevent.TickEvent.PlayerTickEvent; import cpw.mods.fml.relauncher.Side; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraftforge.common.MinecraftForge; public abstract class CommonProxy implements IProxy { private EntityPlayerMP player; - @Override - public void registerHandlers() - { - - Object eventHandler = null; - FMLCommonHandler.instance().bus().register(eventHandler); - MinecraftForge.EVENT_BUS.register(eventHandler); - } - public void serverTick(PlayerTickEvent event) { { diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java index 53f926b5..9f032a2d 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java @@ -1,6 +1,5 @@ package com.darkona.adventurebackpack.proxy; -import cpw.mods.fml.common.event.FMLInitializationEvent; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; @@ -12,21 +11,14 @@ public interface IProxy { - public void init(); + void init(); - public void registerKeybindings(); + void registerKeybindings(); void initNetwork(); - public void joinPlayer(EntityPlayer player); + void joinPlayer(EntityPlayer player); - public void synchronizePlayer(int id, NBTTagCompound compound); + void synchronizePlayer(int id, NBTTagCompound compound); - void registerHandlers(); - - void init(FMLInitializationEvent event); - - public void registerRenderInformation(); - - void Capes(); } diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java index 96edc9b4..5f61fef3 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java @@ -4,22 +4,18 @@ import java.util.Map; import java.util.UUID; -import com.darkona.adventurebackpack.develop.DeveloperJoining; -import com.darkona.adventurebackpack.playerProperties.BackpackProperty; -import com.darkona.adventurebackpack.util.LogHelper; - -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.common.event.FMLInitializationEvent; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import com.darkona.adventurebackpack.playerProperties.BackpackProperty; +import com.darkona.adventurebackpack.util.LogHelper; + /** * Created on 22/12/2014 * * @author Darkona */ -@SuppressWarnings("unused") public class ServerProxy implements IProxy { private static final Map extendedEntityData = new HashMap(); @@ -27,13 +23,11 @@ public class ServerProxy implements IProxy @Override public void init() { - FMLCommonHandler.instance().bus().register(new DeveloperJoining()); } @Override public void registerKeybindings() { - } @Override @@ -85,28 +79,4 @@ public static NBTTagCompound extractPlayerProps(UUID playerID) { return extendedEntityData.remove(playerID); } - - @Override - public void registerHandlers() - { - // TODO Auto-generated method stub - } - - @Override - public void registerRenderInformation() - { - - } - - @Override - public void init(FMLInitializationEvent event) - { - FMLCommonHandler.instance().bus().register(new DeveloperJoining()); - } - - @Override - public void Capes() - { - // TODO Auto-generated method stub - } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/reference/BackpackNames.java b/src/main/java/com/darkona/adventurebackpack/reference/BackpackNames.java index 4e395e3f..7860d51d 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/BackpackNames.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/BackpackNames.java @@ -1,12 +1,12 @@ package com.darkona.adventurebackpack.reference; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; + import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.item.ItemAdventureBackpack; import com.darkona.adventurebackpack.util.BackpackUtils; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; - /** * Created on 15/10/2014 * diff --git a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java index 505ad320..161e21e5 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java @@ -2,10 +2,10 @@ import java.util.HashMap; -import com.darkona.adventurebackpack.config.ConfigHandler; - import net.minecraftforge.fluids.Fluid; +import com.darkona.adventurebackpack.config.ConfigHandler; + /** * Created on 16/01/2015 * diff --git a/src/main/java/com/darkona/adventurebackpack/reference/ModInfo.java b/src/main/java/com/darkona/adventurebackpack/reference/ModInfo.java index 47e354f0..95225c07 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/ModInfo.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/ModInfo.java @@ -6,7 +6,7 @@ public class ModInfo { public static final String MOD_NAME = "Adventure Backpack"; - public static final String MOD_VERSION = "1.7.10-0.9f"; + public static final String MOD_VERSION = "@VERSION@"; public static final String MOD_ID = "adventurebackpack"; public static final String MOD_CHANNEL = "advBackpackChan"; public static final String MOD_CLIENT_PROXY = "com.darkona.adventurebackpack.proxy.ClientProxy"; diff --git a/src/main/java/com/darkona/adventurebackpack/reference/Names.java b/src/main/java/com/darkona/adventurebackpack/reference/Names.java index 6e561147..958da517 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/Names.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/Names.java @@ -7,13 +7,10 @@ */ public final class Names { - public static final class keys { - public static final String CATEGORY = "keys.adventureBackpack.category"; public static String OPEN_BACKPACK_INVENTORY = "keys.adventureBackpack.openBackpackInventory"; - public static String TOGGLE_HOSE_TANK = "keys.adventureBackpack.switchHoseTank"; + public static String TOGGLE_BACKPACK_ACTIONS = "keys.adventureBackpack.switchHoseTank"; } - } diff --git a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java index c588bb22..6c5d02c8 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java @@ -3,15 +3,15 @@ import java.util.Timer; import java.util.TimerTask; -import com.darkona.adventurebackpack.events.WearableEvent; -import com.darkona.adventurebackpack.playerProperties.BackpackProperty; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ChatComponentTranslation; import net.minecraftforge.common.MinecraftForge; +import com.darkona.adventurebackpack.events.WearableEvent; +import com.darkona.adventurebackpack.playerProperties.BackpackProperty; + /** * Created on 08/01/2015 * @@ -20,7 +20,6 @@ public class BackpackUtils { private static Timer timer = new Timer(); - private static TimerTask unequipTask; public enum reasons { @@ -48,7 +47,7 @@ public static reasons equipWearable(ItemStack backpack, EntityPlayer player) public static void unequipWearable(EntityPlayer player) { - unequipTask = new DelayUnequipTask(player); + TimerTask unequipTask = new DelayUnequipTask(player); timer.schedule(unequipTask, 200); } diff --git a/src/main/java/com/darkona/adventurebackpack/util/EnchUtils.java b/src/main/java/com/darkona/adventurebackpack/util/EnchUtils.java new file mode 100644 index 00000000..2bf25208 --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/util/EnchUtils.java @@ -0,0 +1,89 @@ +package com.darkona.adventurebackpack.util; + +import net.minecraft.enchantment.Enchantment; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraftforge.common.util.Constants.NBT; + +import com.darkona.adventurebackpack.config.ConfigHandler; + +/** + * Created by Ugachaga on 24.03.2017. + */ + +public class EnchUtils +{ + static + { + setSoulBoundID(); + } + + // -3 - disabled by config + // -2 - EnderIO not found + // -1 - enchantment not found + private static int soulBoundID; + + public static int getSoulBoundID() + { + return soulBoundID; + } + + private static void setSoulBoundID() + { + if (!ConfigHandler.allowSoulBound) + { + soulBoundID = -3; + return; + } + if (!ConfigHandler.IS_ENDERIO) + { + soulBoundID = -2; + return; + } + for (Enchantment ench : Enchantment.enchantmentsList) + { + if (ench != null && ench.getName().equals("enchantment.enderio.soulBound")) + { + soulBoundID = ench.effectId; + return; + } + } + soulBoundID = -1; + } + + public static boolean isSoulBounded(ItemStack stack) + { + NBTTagList stackEnch = stack.getEnchantmentTagList(); + if (getSoulBoundID() >= 0 && stackEnch != null) + { + for (int i = 0; i < stackEnch.tagCount(); i++) + { + int id = stackEnch.getCompoundTagAt(i).getInteger("id"); + if (id == getSoulBoundID()) + return true; + } + } + return false; + } + + public static boolean isSoulBook(ItemStack book) + { + if (getSoulBoundID() >= 0 && book.hasTagCompound()) + { + NBTTagCompound bookData = book.stackTagCompound; + if (bookData.hasKey("StoredEnchantments")) + { + NBTTagList bookEnch = bookData.getTagList("StoredEnchantments", NBT.TAG_COMPOUND); + if (!bookEnch.getCompoundTagAt(1).getBoolean("id")) // only pure soulbook allowed + { + int id = bookEnch.getCompoundTagAt(0).getInteger("id"); + if (id == getSoulBoundID()) + return true; + } + } + } + return false; + } + +} \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/util/FluidUtils.java b/src/main/java/com/darkona/adventurebackpack/util/FluidUtils.java index 2b6a1713..28a50ad4 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/FluidUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/FluidUtils.java @@ -20,7 +20,7 @@ public static boolean isContainerForFluid(ItemStack container, Fluid fluid) { if ((data.fluid.getFluid().getID() == fluid.getID()) && (data.emptyContainer.getItem().equals(container.getItem()) - || data.filledContainer.getItem().equals(container.getItem()))) + || data.filledContainer.getItem().equals(container.getItem()))) { return true; } diff --git a/src/main/java/com/darkona/adventurebackpack/util/LogHelper.java b/src/main/java/com/darkona/adventurebackpack/util/LogHelper.java index 4bc2a987..c37f0312 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/LogHelper.java +++ b/src/main/java/com/darkona/adventurebackpack/util/LogHelper.java @@ -2,10 +2,10 @@ import org.apache.logging.log4j.Level; -import com.darkona.adventurebackpack.reference.ModInfo; - -import cpw.mods.fml.common.FMLLog; import net.minecraft.util.ChunkCoordinates; +import cpw.mods.fml.common.FMLLog; + +import com.darkona.adventurebackpack.reference.ModInfo; /** * Created by Darkona on 12/10/2014. diff --git a/src/main/java/com/darkona/adventurebackpack/util/Resources.java b/src/main/java/com/darkona/adventurebackpack/util/Resources.java index 03771ac5..e660408a 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Resources.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Resources.java @@ -1,12 +1,12 @@ package com.darkona.adventurebackpack.util; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; import com.darkona.adventurebackpack.reference.BackpackNames; import com.darkona.adventurebackpack.reference.ModInfo; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; - /** * Created on 10/10/2014 * diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index 3eef0db5..f485e2c9 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -2,16 +2,9 @@ import java.util.Calendar; -import com.darkona.adventurebackpack.config.ConfigHandler; - -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.relauncher.Side; import net.minecraft.block.Block; -import net.minecraft.enchantment.Enchantment; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; import net.minecraft.util.ChunkCoordinates; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; @@ -20,15 +13,16 @@ import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidRegistry; +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.relauncher.Side; /** * Created on 12/10/2014 - * @author Darkona * + * @author Darkona */ public class Utils { - public static float degreesToRadians(float degrees) { return degrees / 57.2957795f; @@ -56,7 +50,7 @@ public static int[] calculateEaster(int year) n = (h - m + r + 90) / 25, p = (h - m + r + n + 19) % 32; - return new int[] { n, p }; + return new int[]{n, p}; } public static String getHoliday() @@ -298,6 +292,7 @@ private static ChunkCoordinates checkCoordsForPlayer(IBlockAccess world, int ori * Gets you the nearest Empty Chunk Coordinates, free of charge! Looks in two dimensions and finds a block * that a: can have stuff placed on it and b: has space above it. * This is a spiral search, will begin at close range and move out. + * * @param world The world object. * @param origX Original X coordinate * @param origZ Original Z coordinate @@ -429,9 +424,10 @@ private static boolean areCoordinatesTheSame2D(int X1, int Z1, int X2, int Z2) /** * Seriously why doesn't Java's instanceof check for null? + * * @return true if the object is not null and is an instance of the supplied class. */ - public static boolean notNullAndInstanceOf(Object object, @SuppressWarnings("rawtypes") Class clazz) + public static boolean notNullAndInstanceOf(Object object, Class clazz) { return object != null && clazz.isInstance(object); } @@ -449,69 +445,4 @@ public static String getFirstWord(String text) } } - // -6 - not initialized - // -3 - disabled by config - // -2 - EnderIO not found - // -1 - enchantment not found - private static int soulBoundID = -6; - - public static int getSoulBoundID() - { - if (soulBoundID == -6) setSoulBoundID(); // initialize - return soulBoundID; - } - - private static void setSoulBoundID() - { - if (ConfigHandler.allowSoulBound) - { - if (ConfigHandler.IS_ENDERIO) - { - for (Enchantment ench : Enchantment.enchantmentsList) - { - if (ench != null && ench.getName().equals("enchantment.enderio.soulBound")) - { - soulBoundID = ench.effectId; - return; - } - } - soulBoundID = -1; - } else soulBoundID = -2; - } else soulBoundID = -3; - } - - public static boolean isSoulBounded(ItemStack stack) - { - int soulBound = getSoulBoundID(); - NBTTagList stackEnch = stack.getEnchantmentTagList(); - if (soulBound >= 0 && stackEnch != null) - { - for (int i = 0; i < stackEnch.tagCount(); i++) - { - int id = stackEnch.getCompoundTagAt(i).getInteger("id"); - if (id == soulBound) return true; - } - } - return false; - } - - public static boolean isSoulBook(ItemStack book) - { - int soulBound = getSoulBoundID(); - if (soulBound >= 0 && book.hasTagCompound()) - { - NBTTagCompound bookData = book.stackTagCompound; - if (bookData.hasKey("StoredEnchantments")) - { - NBTTagList bookEnch = bookData.getTagList("StoredEnchantments", net.minecraftforge.common.util.Constants.NBT.TAG_COMPOUND); - if (!bookEnch.getCompoundTagAt(1).getBoolean("id")) - { - int id = bookEnch.getCompoundTagAt(0).getInteger("id"); - if (id == soulBound) return true; - } - } - } - return false; - } - } diff --git a/src/main/java/com/darkona/adventurebackpack/util/Wearing.java b/src/main/java/com/darkona/adventurebackpack/util/Wearing.java index 6df093f7..b74f5e57 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Wearing.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Wearing.java @@ -1,5 +1,8 @@ package com.darkona.adventurebackpack.util; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + import com.darkona.adventurebackpack.inventory.IInventoryTanks; import com.darkona.adventurebackpack.inventory.InventoryBackpack; import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; @@ -13,9 +16,6 @@ import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.reference.BackpackNames; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - /** * Created on 11/10/2014 * diff --git a/src/main/java/com/jadarstudios/developercapes/DevCapes.java b/src/main/java/com/jadarstudios/developercapes/DevCapes.java deleted file mode 100644 index 5539eb08..00000000 --- a/src/main/java/com/jadarstudios/developercapes/DevCapes.java +++ /dev/null @@ -1,159 +0,0 @@ -/** - * DeveloperCapes by Jadar - * License: MIT License - * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) - * version 4.0.0.x - */ -package com.jadarstudios.developercapes; - -import com.jadarstudios.developercapes.cape.CapeConfig; -import com.jadarstudios.developercapes.cape.CapeConfigManager; -import net.minecraftforge.common.MinecraftForge; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import java.io.*; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLConnection; - -/** - * DeveloperCapes is a library for Minecraft. It allows developers to quickly add capes for players they specify. DevCapes uses Minecraft Forge. - * - * @author jadar - */ -public class DevCapes { - private static DevCapes instance; - - public static final Logger logger = LogManager.getLogger("DevCapes"); - - protected DevCapes() { - MinecraftForge.EVENT_BUS.register(new RenderEventHandler()); - } - - public static DevCapes getInstance() { - if (instance == null) { - instance = new DevCapes(); - } - return instance; - } - - /** - * InputStream.close() needs to be called on this after you're done! - * - * @return {@link InputStream} for the {@link URL} - */ - public InputStream getStreamForURL(URL url) { - InputStream is = null; - try { - URLConnection connection = url.openConnection(); - connection.setRequestProperty("User-Agent", System.getProperty("java.version")); - connection.connect(); - - is = connection.getInputStream(); - } catch (IOException e) { - e.printStackTrace(); - } - return is; - } - - /** - * InputStream.close() needs to be called on this after you're done! - * - * @return {@link InputStream} for the {@link File} - */ - public InputStream getStreamForFile(File file) { - InputStream is = null; - try { - is = new FileInputStream(file); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - return is; - } - - @Deprecated - /** - * DEPRECATED: Please use {@link #registerConfig(String jsonUrl)} instead.

- * Registers a config with DevCapes. - * - * @param jsonUrl - * The URL as a String that links to the Json file that you want - * to add - * @param identifier - * A unique Identifier, normally your mod id - * @return The id of the registered config - */ - public int registerConfig(String jsonURL, String identifier) { - return this.registerConfig(jsonURL); - } - - /** - * Registers a config with DevCapes. - * - * @param jsonUrl The URL as a String that links to the Json file that you want - * to add - * @return The id of the registered config - */ - public int registerConfig(String jsonUrl) { - int id = -1; - try { - URL url = new URL(jsonUrl); - id = this.registerConfig(url); - } catch (MalformedURLException e) { - e.printStackTrace(); - } - return id; - } - - @Deprecated - /** - * DEPRECATED: Please use {@link #registerConfig(URL url)} instead.

- * Registers a config with DevCapes. - * - * @param jsonUrl - * A {@link URL} that links to the Json file that you want to add - * @param identifier - * A unique Identifier, normally your mod id - * @return The id of the registered config - */ - public int registerConfig(URL url, String identifier) { - return this.registerConfig(url); - } - - /** - * Registers a config with DevCapes and returns the ID of the config. - * - * @param jsonUrl A {@link URL} that links to the Json file that you want to add - * @return The id of the registered config - */ - public int registerConfig(URL jsonUrl) { - int id = -1; - InputStream is = this.getStreamForURL(jsonUrl); - - if (is == null) { - DevCapes.logger.error(String.format("Unable to establish a connection to the server, %s", jsonUrl.getHost())); - return id; - } - - CapeConfig config = CapeConfigManager.getInstance().parse(is); - - try { - id = CapeConfigManager.getUniqueId(); - CapeConfigManager.getInstance().addConfig(id, config); - } catch (CapeConfigManager.InvalidCapeConfigIdException e) { - e.printStackTrace(); - } - - silentClose(is); - - return id; - } - - private static void silentClose(InputStream is) { - try { - is.close(); - } catch (IOException ignored) { - } - } -} \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/HDImageBuffer.java b/src/main/java/com/jadarstudios/developercapes/HDImageBuffer.java deleted file mode 100644 index 884c8ca7..00000000 --- a/src/main/java/com/jadarstudios/developercapes/HDImageBuffer.java +++ /dev/null @@ -1,41 +0,0 @@ -/** - * DeveloperCapes by Jadar - * License: MIT License - * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) - * version 3.3.0.0 - */ -package com.jadarstudios.developercapes; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.renderer.IImageBuffer; - -import java.awt.Graphics; -import java.awt.image.BufferedImage; - -/** - * This class is an implementation of {@link IImageBuffer} that allows capes to be in HD - * - * @author Jadar - */ -@SideOnly(Side.CLIENT) -public class HDImageBuffer implements IImageBuffer { - @Override - public BufferedImage parseUserSkin(final BufferedImage texture) { - if (texture == null) - return null; - int imageWidth = texture.getWidth(null) <= 64 ? 64 : texture.getWidth(null); - int imageHeight = texture.getHeight(null) <= 32 ? 32 : texture.getHeight(null); - - BufferedImage capeImage = new BufferedImage(imageWidth, imageHeight, 2); - - Graphics graphics = capeImage.getGraphics(); - graphics.drawImage(texture, 0, 0, null); - graphics.dispose(); - - return capeImage; - } - - @Override - public void func_152634_a() {} -} \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/RenderEventHandler.java b/src/main/java/com/jadarstudios/developercapes/RenderEventHandler.java deleted file mode 100644 index 4494c87e..00000000 --- a/src/main/java/com/jadarstudios/developercapes/RenderEventHandler.java +++ /dev/null @@ -1,39 +0,0 @@ -/** - * DeveloperCapes by Jadar - * License: MIT License - * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) - * version 4.0.0.x - */ -package com.jadarstudios.developercapes; - -import com.jadarstudios.developercapes.cape.ICape; -import com.jadarstudios.developercapes.user.User; -import com.jadarstudios.developercapes.user.UserManager; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import net.minecraft.client.entity.AbstractClientPlayer; -import net.minecraftforge.client.event.RenderPlayerEvent; - -/** - * This is not the class you are looking for. - * - * @author jadar - */ -public class RenderEventHandler { - - @SubscribeEvent - public void renderPlayer(RenderPlayerEvent.Specials.Pre event) { - AbstractClientPlayer player = (AbstractClientPlayer) event.entityPlayer; - - UserManager manager = UserManager.getInstance(); - User user = manager.getUser(player.getUniqueID().toString()); - if (user == null) return; - - ICape cape = user.capes.get(0); - if (cape == null) return; - - boolean flag = cape.isTextureLoaded(player); - if (!flag) { - cape.loadTexture(player); - } - } -} \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/cape/AbstractCape.java b/src/main/java/com/jadarstudios/developercapes/cape/AbstractCape.java deleted file mode 100644 index 075bc52d..00000000 --- a/src/main/java/com/jadarstudios/developercapes/cape/AbstractCape.java +++ /dev/null @@ -1,42 +0,0 @@ -/** - * DeveloperCapes by Jadar - * License: MIT License - * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) - * version 4.0.0.x - */ -package com.jadarstudios.developercapes.cape; - -import net.minecraft.client.renderer.texture.ITextureObject; -import net.minecraft.util.ResourceLocation; - -/** - * Abstract Implementation of ICape used within Dev. Capes - * - * @author jadar - */ -public abstract class AbstractCape implements ICape { - protected String name; - protected ITextureObject texture; - protected ResourceLocation location; - - public AbstractCape(String name) { - this.name = name; - } - - public AbstractCape() {} - - @Override - public String getName() { - return name; - } - - @Override - public ITextureObject getTexture() { - return this.texture; - } - - @Override - public ResourceLocation getLocation() { - return this.location; - } -} \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/cape/CapeConfig.java b/src/main/java/com/jadarstudios/developercapes/cape/CapeConfig.java deleted file mode 100644 index 345bb1b1..00000000 --- a/src/main/java/com/jadarstudios/developercapes/cape/CapeConfig.java +++ /dev/null @@ -1,27 +0,0 @@ -/** - * DeveloperCapes by Jadar - * License: MIT License - * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) - * version 4.0.0.x - */ -package com.jadarstudios.developercapes.cape; - -import com.jadarstudios.developercapes.user.Group; -import com.jadarstudios.developercapes.user.User; - -import java.util.HashMap; - -/** - * The players that need to be outfitted are stored here - * - * @author jadar - */ -public class CapeConfig { - public HashMap groups; - public HashMap users; - - public CapeConfig() { - groups = new HashMap(); - users = new HashMap(); - } -} \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/cape/CapeConfigManager.java b/src/main/java/com/jadarstudios/developercapes/cape/CapeConfigManager.java deleted file mode 100644 index d91bc7f0..00000000 --- a/src/main/java/com/jadarstudios/developercapes/cape/CapeConfigManager.java +++ /dev/null @@ -1,176 +0,0 @@ -/** - * DeveloperCapes by Jadar - * License: MIT License - * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) - * version 4.0.0.x - */ -package com.jadarstudios.developercapes.cape; - -import com.google.common.collect.HashBiMap; -import com.google.common.primitives.UnsignedBytes; -import com.google.gson.Gson; -import com.google.gson.JsonSyntaxException; -import com.jadarstudios.developercapes.DevCapes; -import com.jadarstudios.developercapes.user.Group; -import com.jadarstudios.developercapes.user.GroupManager; -import com.jadarstudios.developercapes.user.User; -import com.jadarstudios.developercapes.user.UserManager; -import org.apache.commons.lang3.ObjectUtils; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.BitSet; -import java.util.Map; - -/** - * All configs need a manager, this is it. - * - * @author jadar - */ -public class CapeConfigManager { - - protected static CapeConfigManager instance; - - protected static BitSet availableIds = new BitSet(256); - protected HashBiMap configs; - - static { - availableIds.clear(availableIds.size()); - } - - public CapeConfigManager() { - configs = HashBiMap.create(); - } - - public static CapeConfigManager getInstance() { - if (instance == null) { - instance = new CapeConfigManager(); - } - return instance; - } - - public void addConfig(int id, CapeConfig config) throws InvalidCapeConfigIdException { - int realId = claimId(id); - this.configs.put(realId, config); - addUsers(config.users); - addGroups(config.groups); - } - - protected void addUsers(Map users){ - try { - UserManager.getInstance().addUsers(users.values()); - } catch (Exception e) { - e.printStackTrace(); - } - } - - protected void addGroups(Map groups){ - try { - GroupManager.getInstance().addGroups(groups.values()); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public CapeConfig getConfig(int id) { - return this.configs.get(id); - } - - public int getIdForConfig(CapeConfig config) { - return this.configs.inverse().get(config); - } - - public static int getUniqueId() { - return availableIds.nextClearBit(1); - } - - public static int claimId(int id) throws InvalidCapeConfigIdException { - if(id <= 0){ - throw new InvalidCapeConfigIdException("The config ID must be a positive non-zero integer"); - } - try { - UnsignedBytes.checkedCast(id); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } - - boolean isRegistered = availableIds.get(id); - if (isRegistered) { - throw new InvalidCapeConfigIdException(String.format("The config ID %d is already claimed.", id)); - } - - availableIds.set(id); - return id; - } - - public CapeConfig parse(InputStream is) { - if (is == null) { - throw new NullPointerException("Can not parse a null input stream!"); - } - - CapeConfig instance = new CapeConfig(); - InputStreamReader isr = new InputStreamReader(is); - - try { - Map entries = new Gson().fromJson(isr, Map.class); - - for (Map.Entry entry : entries.entrySet()) { - final String nodeName = entry.getKey(); - final Object obj = entry.getValue(); - if (obj instanceof Map) { - parseGroup(instance, nodeName, (Map) obj); - } else if (obj instanceof String) { - parseUser(instance, nodeName, (String) obj); - } - } - } catch (JsonSyntaxException e) { - DevCapes.logger.error("CapeConfig could not be parsed because:"); - e.printStackTrace(); - } - - return instance; - } - - protected void parseGroup(CapeConfig config, String node, Map group) { - Group g = GroupManager.getInstance().parse(node, group); - if (g != null) { - config.groups.put(g.name, g); - } - } - - protected void parseUser(CapeConfig config, String node, String user) { - User u = UserManager.getInstance().parse(node, user); - if (u != null) { - config.users.put(node, u); - } - } - - /** - * DEPRECATED! Please use {@link com.jadarstudios.developercapes.cape.CapeConfigManager#parse(java.io.InputStream is)} - * This will be removed in the next major release. - */ - @Deprecated - public CapeConfig parseFromStream(InputStream is) { - return this.parse(is); - } - - public static class InvalidCapeConfigIdException extends Exception { - public InvalidCapeConfigIdException() { - super(); - } - - public InvalidCapeConfigIdException(String s) { - super(s); - } - - public InvalidCapeConfigIdException(Throwable cause) { - super(cause); - } - - public InvalidCapeConfigIdException(String message, Throwable cause) { - super(message, cause); - } - } -} \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/cape/CapeManager.java b/src/main/java/com/jadarstudios/developercapes/cape/CapeManager.java deleted file mode 100644 index d0800375..00000000 --- a/src/main/java/com/jadarstudios/developercapes/cape/CapeManager.java +++ /dev/null @@ -1,81 +0,0 @@ -/** - * DeveloperCapes by Jadar - * License: MIT License - * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) - * version 4.0.0.x - */ -package com.jadarstudios.developercapes.cape; - -import com.jadarstudios.developercapes.DevCapes; - -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Collection; -import java.util.HashMap; - -/** - * This manages all of the capes, be nice to it or you won't get one! - * - * @author jadar - */ -public class CapeManager { - - protected static CapeManager instance; - - private HashMap capes; - - public CapeManager() { - this.capes = new HashMap(); - } - - public static CapeManager getInstance() { - if (instance == null) { - instance = new CapeManager(); - } - return instance; - } - - public void addCape(ICape cape) { - if (!capes.containsValue(cape)) { - capes.put(cape.getName(), cape); - } - } - - public void addCapes(Collection capes) { - for (ICape c : capes) { - this.addCape(c); - } - } - - public ICape getCape(String capeName) { - return capes.get(capeName); - } - - public ICape newCape(String name) { - StaticCape cape = new StaticCape(name); - this.capes.put(name, cape); - return cape; - } - - public ICape parse(String name, Object object) { - ICape cape = null; - if(object instanceof String || object instanceof URL){ - cape = parse(name, object.toString()); - }else{ - DevCapes.logger.error(String.format("Cape, %s, could not be parsed because it is not in an accepted format!", object)); - } - return cape; - } - - protected ICape parse(String name, String url) { - ICape cape = null; - - try { - cape = new StaticCape(name, new URL(url)); - } catch (MalformedURLException e) { - DevCapes.logger.error(String.format("Are you crazy?? \"%s\" is not a valid URL!", url)); - e.printStackTrace(); - } - return cape; - } -} \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/cape/ICape.java b/src/main/java/com/jadarstudios/developercapes/cape/ICape.java deleted file mode 100644 index 79a65243..00000000 --- a/src/main/java/com/jadarstudios/developercapes/cape/ICape.java +++ /dev/null @@ -1,29 +0,0 @@ -/** - * DeveloperCapes by Jadar - * License: MIT License - * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) - * version 4.0.0.x - */ -package com.jadarstudios.developercapes.cape; - -import net.minecraft.client.entity.AbstractClientPlayer; -import net.minecraft.client.renderer.texture.ITextureObject; -import net.minecraft.util.ResourceLocation; - -/** - * Any class implementing this will be requested to act as a cape. - * - * @author jadar - */ -public interface ICape { - - public String getName(); - - public ITextureObject getTexture(); - - public ResourceLocation getLocation(); - - public void loadTexture(AbstractClientPlayer player); - - public boolean isTextureLoaded(AbstractClientPlayer player); -} \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/cape/StaticCape.java b/src/main/java/com/jadarstudios/developercapes/cape/StaticCape.java deleted file mode 100644 index 1844f952..00000000 --- a/src/main/java/com/jadarstudios/developercapes/cape/StaticCape.java +++ /dev/null @@ -1,60 +0,0 @@ -/** - * DeveloperCapes by Jadar - * License: MIT License - * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) - * version 4.0.0.x - */ -package com.jadarstudios.developercapes.cape; - -import com.jadarstudios.developercapes.HDImageBuffer; -import com.mojang.authlib.minecraft.MinecraftProfileTexture; -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.AbstractClientPlayer; -import net.minecraft.client.renderer.ThreadDownloadImageData; -import net.minecraft.util.ResourceLocation; - -import java.net.URL; - -/** - * Default Cape implementation - * - * @author jadar - */ -public class StaticCape extends AbstractCape { - - public StaticCape(String name, URL url) { - this.setName(name); - this.setURL(url); - } - - public StaticCape(String name) { - this(name, null); - } - - @Override - public void loadTexture(AbstractClientPlayer player) { - ResourceLocation location = this.getLocation(); - player.func_152121_a(MinecraftProfileTexture.Type.CAPE, location); - - Minecraft.getMinecraft().renderEngine.loadTexture(location, this.getTexture()); - } - - @Override - public boolean isTextureLoaded(AbstractClientPlayer player) { - ResourceLocation cape = player.getLocationCape(); - return cape != null; - } - - public void setURL(URL url) { - if (url == null) { - this.texture = null; - return; - } - this.texture = new ThreadDownloadImageData(null, url.toString(), null, new HDImageBuffer()); - } - - public void setName(String name) { - this.name = name; - this.location = new ResourceLocation("DevCapes/" + name); - } -} \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/user/Group.java b/src/main/java/com/jadarstudios/developercapes/user/Group.java deleted file mode 100644 index 220db855..00000000 --- a/src/main/java/com/jadarstudios/developercapes/user/Group.java +++ /dev/null @@ -1,61 +0,0 @@ -/** - * DeveloperCapes by Jadar - * License: MIT License - * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) - * version 4.0.0.x - */ -package com.jadarstudios.developercapes.user; - -import com.jadarstudios.developercapes.cape.ICape; - -import java.util.HashMap; -import java.util.Set; - -/** - * This represents a group of players that share a cape - * - * @author jadar - */ -public class Group { - - protected HashMap users; - protected ICape cape; - public final String name; - - public Group(String name) { - this.users = new HashMap(); - this.name = name; - } - - public void addUser(User user) { - if (!this.users.containsValue(user)) { - user.capes.add(this.cape); - this.users.put(user.userUUID, user); - } - } - - public void addUsers(Set users) { - for (User user : users) { - this.addUser(user); - } - } - - public void removeUser(User user) { - if (this.users.containsValue(user)) { - this.users.remove(user); - user.capes.remove(this.cape); - } - } - - public ICape getCape() { - return this.cape; - } - - public void setCape(ICape cape) { - for (User user : this.users.values()) { - user.capes.remove(this.cape); - } - - this.cape = cape; - } -} \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/user/GroupManager.java b/src/main/java/com/jadarstudios/developercapes/user/GroupManager.java deleted file mode 100644 index b513c73e..00000000 --- a/src/main/java/com/jadarstudios/developercapes/user/GroupManager.java +++ /dev/null @@ -1,93 +0,0 @@ -/** - * DeveloperCapes by Jadar - * License: MIT License - * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) - * version 4.0.0.x - */ -package com.jadarstudios.developercapes.user; - -import com.jadarstudios.developercapes.DevCapes; -import com.jadarstudios.developercapes.cape.CapeManager; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - -/** - * All groups have to be managed - * - * @author jadar - */ -public class GroupManager { - - protected static GroupManager instance; - - private HashMap groups; - - public GroupManager() { - this.groups = new HashMap(); - } - - public static GroupManager getInstance() { - if (instance == null) { - instance = new GroupManager(); - } - return instance; - } - - public void addGroup(Group group) { - groups.put(group.name, group); - - try { - UserManager.getInstance().addUsers(group.users.values()); - CapeManager.getInstance().addCape(group.cape); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public void addGroups(Collection groups) { - for (Group g : groups) { - GroupManager.getInstance().addGroup(g); - } - } - - public Group getGroup(String capeName) { - return groups.get(capeName); - } - - - public Group newGroup(String name) { - if (this.getGroup(name) != null) { - return this.getGroup(name); - } - Group group = new Group(name); - return group; - } - - public Group parse(String name, Map data) { - Group group = new Group(name); - - Object usersObj = data.get("users"); - Object capeUrlObj = data.get("capeUrl"); - - if (!(usersObj instanceof ArrayList) || !(capeUrlObj instanceof String)) { - DevCapes.logger.error(String.format("Group %s could not be parsed because it either is invalid or missing elements.", name)); - return null; - } - - ArrayList users = (ArrayList)usersObj; - String capeUrl = (String)capeUrlObj; - - group.cape = CapeManager.getInstance().parse(name, capeUrl); - - for (Object obj : users) { - User user = UserManager.getInstance().parse((String)obj, group.cape); - if (user != null) { - group.addUser(user); - } - } - return group; - } -} \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/user/User.java b/src/main/java/com/jadarstudios/developercapes/user/User.java deleted file mode 100644 index e72b135b..00000000 --- a/src/main/java/com/jadarstudios/developercapes/user/User.java +++ /dev/null @@ -1,28 +0,0 @@ -/** - * DeveloperCapes by Jadar - * License: MIT License - * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) - * version 4.0.0.x - */ -package com.jadarstudios.developercapes.user; - -import com.jadarstudios.developercapes.cape.ICape; - -import java.util.ArrayList; -import java.util.List; - -/** - * This player is getting their own cape - * - * @author jadar - */ -public class User { - - public List capes; - public final String userUUID; - - public User(String userUUID) { - this.userUUID = userUUID; - this.capes = new ArrayList(); - } -} \ No newline at end of file diff --git a/src/main/java/com/jadarstudios/developercapes/user/UserManager.java b/src/main/java/com/jadarstudios/developercapes/user/UserManager.java deleted file mode 100644 index 82b91c36..00000000 --- a/src/main/java/com/jadarstudios/developercapes/user/UserManager.java +++ /dev/null @@ -1,82 +0,0 @@ -/** - * DeveloperCapes by Jadar - * License: MIT License - * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE) - * version 4.0.0.x - */ -package com.jadarstudios.developercapes.user; - -import com.jadarstudios.developercapes.DevCapes; -import com.jadarstudios.developercapes.cape.CapeManager; -import com.jadarstudios.developercapes.cape.ICape; - -import java.util.Collection; -import java.util.HashMap; - -/** - * Users can not be trusted to put capes on by themselves - * - * @author jadar - */ -public class UserManager { - - protected static UserManager instance; - - protected HashMap users; - - public UserManager() { - this.users = new HashMap(); - } - - public static UserManager getInstance() { - if (instance == null) { - instance = new UserManager(); - } - return instance; - } - - public User getUser(String username) { - return this.users.get(username); - } - - public void addUser(User user) throws NullPointerException { - if (user == null || user.userUUID == null || user.userUUID.isEmpty()) { - throw new NullPointerException("Cannot add a null user!"); - } - - this.users.put(user.userUUID, user); - CapeManager.getInstance().addCapes(user.capes); - } - - public void addUsers(Collection users) throws NullPointerException { - for (User u : users) { - this.addUser(u); - } - } - - public User newUser(String username) { - User user = null; - if (this.users.containsKey(username)) { - user = this.getUser(username); - } else { - user = new User(username); - this.users.put(username, user); - } - - return user; - } - - public User parse(String user, Object cape) { - User userInstance = new User(user); - - ICape capeInstance = (cape instanceof ICape) ? (ICape)cape : CapeManager.getInstance().parse(user, cape.toString()); - - if (capeInstance != null) { - userInstance.capes.add(capeInstance); - } else { - DevCapes.logger.error(String.format("Error parsing cape, %s", cape.toString())); - } - - return userInstance; - } -} \ No newline at end of file diff --git a/src/main/java/copy/betterstorage/utils/ReflectionUtils.java b/src/main/java/copy/betterstorage/utils/ReflectionUtils.java deleted file mode 100644 index 852ebd90..00000000 --- a/src/main/java/copy/betterstorage/utils/ReflectionUtils.java +++ /dev/null @@ -1,199 +0,0 @@ -package copy.betterstorage.utils; - -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; - -/** - * Created on 26/12/2014 - * - * @author copygirl - */ -public class ReflectionUtils -{ - - private static Map cachedFields = new HashMap(); - - - private static Map cachedMethods = new HashMap(); - - private ReflectionUtils() - { - } - - - public static Field findField(@SuppressWarnings("rawtypes") Class clazz, String srgName, String mcpName) - { - try - { - for (String name : new String[]{srgName, mcpName}) - { - Cache fieldCache = new Cache(clazz, name); - Field field = cachedFields.get(fieldCache); - if (field == null) - { - try - { - field = clazz.getDeclaredField(name); - } catch (NoSuchFieldException ex) - { - continue; - } - if (field == null) continue; - field.setAccessible(true); - cachedFields.put(fieldCache, field); - } - return field; - } - } catch (SecurityException ex) - { - throw new RuntimeException(ex); - } - throw new RuntimeException(String.format("Could not find field '%s' for class %s", mcpName, clazz.getName())); - } - - public static void set(Class clazz, U instance, String srgName, String mcpName, V value) - { - try - { - findField(clazz, srgName, mcpName).set(instance, value); - } catch (IllegalArgumentException ex) - { - throw new RuntimeException(ex); - } catch (IllegalAccessException ex) - { - throw new RuntimeException(ex); - } - } - - @SuppressWarnings("unchecked") - public static V get(Class clazz, U instance, String srgName, String mcpName) - { - try - { - return (V) findField(clazz, srgName, mcpName).get(instance); - } catch (IllegalArgumentException ex) - { - throw new RuntimeException(ex); - } catch (IllegalAccessException ex) - { - throw new RuntimeException(ex); - } - } - - - @SuppressWarnings({ "rawtypes", "unchecked" }) - public static Method findMethod(Class clazz, String srgName, String mcpName, Class... parameterTypes) - { - try - { - for (String name : new String[]{srgName, mcpName}) - { - MethodCache methodCache = new MethodCache(clazz, name, parameterTypes); - Method method = cachedMethods.get(methodCache); - if (method == null) - { - try - { - method = clazz.getDeclaredMethod(name, parameterTypes); - } catch (NoSuchMethodException ex) - { - continue; - } - if (method == null) continue; - method.setAccessible(true); - cachedMethods.put(methodCache, method); - } - return method; - } - } catch (SecurityException ex) - { - throw new RuntimeException(ex); - } - throw new RuntimeException(String.format("Could not find method '%s' for class %s", mcpName, clazz.getName())); - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - public static V invoke(Class clazz, U instance, String srgName, String mcpName, Object... args) - { - Class[] parameterTypes = new Class[args.length / 2]; - Object[] parameters = new Object[args.length / 2]; - for (int i = 0; i < args.length / 2; i++) - { - parameterTypes[i] = (Class) args[i]; - parameters[i] = args[args.length / 2 + i]; - } - try - { - return (V) findMethod(clazz, srgName, mcpName, parameterTypes).invoke(instance, parameters); - } catch (IllegalAccessException ex) - { - throw new RuntimeException(ex); - } catch (IllegalArgumentException ex) - { - throw new RuntimeException(ex); - } catch (InvocationTargetException ex) - { - throw new RuntimeException(ex); - } - } - - - private static class Cache - { - @SuppressWarnings("rawtypes") - public final Class clazz; - public final String name; - - public Cache(@SuppressWarnings("rawtypes") Class clazz, String name) - { - this.clazz = clazz; - this.name = name; - } - - @Override - public boolean equals(Object obj) - { - if (!(obj instanceof Cache)) return false; - Cache cache = (Cache) obj; - return ((cache.clazz == clazz) && (cache.name.equals(name))); - } - - @Override - public int hashCode() - { - return (clazz.hashCode() ^ name.hashCode()); - } - } - - private static class MethodCache extends Cache - { - @SuppressWarnings("rawtypes") - public final Class[] types; - - @SuppressWarnings("rawtypes") - public MethodCache(Class clazz, String name, Class... parameterTypes) - { - super(clazz, name); - this.types = parameterTypes; - } - - @Override - public boolean equals(Object obj) - { - if (!(obj instanceof MethodCache)) return false; - MethodCache cache = (MethodCache) obj; - return (super.equals(cache) && Arrays.equals(cache.types, types)); - } - - @Override - public int hashCode() - { - return (super.hashCode() ^ Arrays.hashCode(types)); - } - } - -} diff --git a/src/main/resources/assets/adventurebackpack/lang/en_US.lang b/src/main/resources/assets/adventurebackpack/lang/en_US.lang index 29bf39d7..c7b60cf3 100644 --- a/src/main/resources/assets/adventurebackpack/lang/en_US.lang +++ b/src/main/resources/assets/adventurebackpack/lang/en_US.lang @@ -55,8 +55,8 @@ itemGroup.adventurebackpack=Adventure Backpack Mod ## Keybindings keys.adventureBackpack.category=Adventure Backpack -keys.adventureBackpack.openBackpackInventory=Open AdventureBackPack Key -keys.adventureBackpack.switchHoseTank=Toggle Action Key +keys.adventureBackpack.openBackpackInventory=Open AdventureBackpack +keys.adventureBackpack.switchHoseTank=Toggle Actions ## Fluids fluid.melonJuice=Melon Juice diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index cb099df1..d83c7f07 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -2,11 +2,9 @@ { "modid": "adventurebackpack", "name": "Adventure Backpack", - "dependencies": ["Buildcraft|Core","Railcraft"], - "useDependencyInformation" : true, "description": "Useful and pretty backpacks for Minecraft", "version": "${version}", - "mcversion": "1.7.10", + "mcversion": "${mcversion}", "url": "https://github.com/runescapejon/AdventureBackpack2/releases", "updateUrl": "", "authorList": [ @@ -20,6 +18,7 @@ ], "parent": "", "dependencies": [ + "CodeChickenLib" ] } ] \ No newline at end of file From 514abfe0af98553785574abce7b270f95cb0a142 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 28 Mar 2017 06:58:51 +0700 Subject: [PATCH 376/462] Polishing Tooltips --- .../adventurebackpack/AdventureBackpack.java | 19 +- .../block/BlockAdventureBackpack.java | 5 +- .../block/TileAdventureBackpack.java | 2 +- .../adventurebackpack/common/Constants.java | 12 +- .../config/ConfigHandler.java | 3 +- .../handlers/TooltipEventHandler.java | 242 ++++++++++++++++++ .../handlers/TooltipsHandler.java | 142 ---------- .../adventurebackpack/init/ModItems.java | 2 +- .../init/recipes/AbstractBackpackRecipe.java | 4 +- .../inventory/ContainerBackpack.java | 2 + .../inventory/ContainerCopter.java | 11 +- .../inventory/ContainerJetpack.java | 6 +- .../inventory/InventoryBackpack.java | 5 +- .../inventory/InventoryCoalJetpack.java | 2 +- .../inventory/InventoryCopterPack.java | 1 - .../adventurebackpack/inventory/SlotTool.java | 3 +- .../item/ItemAdventureBackpack.java | 1 - .../item/ItemCoalJetpack.java | 4 +- .../item/ItemCopterPack.java | 16 +- .../EquipUnequipBackWearablePacket.java | 2 +- .../adventurebackpack/util/BackpackUtils.java | 4 +- 21 files changed, 298 insertions(+), 190 deletions(-) create mode 100644 src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java delete mode 100644 src/main/java/com/darkona/adventurebackpack/handlers/TooltipsHandler.java diff --git a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java index e2db2314..43336a3c 100644 --- a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java @@ -2,6 +2,7 @@ import java.util.Calendar; +import net.minecraft.launchwrapper.Launch; import net.minecraftforge.common.MinecraftForge; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Loader; @@ -18,7 +19,7 @@ import com.darkona.adventurebackpack.handlers.GeneralEventHandler; import com.darkona.adventurebackpack.handlers.GuiHandler; import com.darkona.adventurebackpack.handlers.PlayerEventHandler; -import com.darkona.adventurebackpack.handlers.TooltipsHandler; +import com.darkona.adventurebackpack.handlers.TooltipEventHandler; import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.init.ModEntities; import com.darkona.adventurebackpack.init.ModFluids; @@ -55,7 +56,7 @@ public class AdventureBackpack PlayerEventHandler playerEventHandler; ClientEventHandler clientEventHandler; GeneralEventHandler generalEventHandler; - TooltipsHandler tooltipsHandler; + TooltipEventHandler tooltipEventHandler; GuiHandler guiHandler; @@ -84,12 +85,12 @@ public void preInit(FMLPreInitializationEvent event) playerEventHandler = new PlayerEventHandler(); generalEventHandler = new GeneralEventHandler(); clientEventHandler = new ClientEventHandler(); - tooltipsHandler = new TooltipsHandler(); + tooltipEventHandler = new TooltipEventHandler(); MinecraftForge.EVENT_BUS.register(generalEventHandler); MinecraftForge.EVENT_BUS.register(clientEventHandler); MinecraftForge.EVENT_BUS.register(playerEventHandler); - MinecraftForge.EVENT_BUS.register(tooltipsHandler); + MinecraftForge.EVENT_BUS.register(tooltipEventHandler); FMLCommonHandler.instance().bus().register(playerEventHandler); @@ -110,18 +111,18 @@ public void init(FMLInitializationEvent event) @Mod.EventHandler public void postInit(FMLPostInitializationEvent event) { + ConfigHandler.IS_DEVENV = (Boolean) Launch.blackboard.get("fml.deobfuscatedEnvironment"); + + if (ConfigHandler.IS_DEVENV) + LogHelper.info("Dev environment detected. All hail the creator"); + ConfigHandler.IS_BUILDCRAFT = Loader.isModLoaded("BuildCraft|Core"); ConfigHandler.IS_ENDERIO = Loader.isModLoaded("EnderIO"); if (ConfigHandler.IS_BUILDCRAFT) - { LogHelper.info("Buildcraft is present. Acting accordingly"); - } - if (ConfigHandler.IS_ENDERIO) - { LogHelper.info("EnderIO is present. Acting accordingly"); - } //ConditionalFluidEffect.init(); //TODO //ModItems.conditionalInit(); diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java index dc9d8896..6ae99174 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java @@ -226,11 +226,10 @@ public String getUnlocalizedName() return "blockAdventureBackpack"; } - private void setUnlocalizedName(String string) + /*private void setUnlocalizedName(String string) //care recursion { setUnlocalizedName("blockAdventureBackpack"); - - } + }*/ @Override @SideOnly(Side.CLIENT) diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index dda07748..352dbe01 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -565,7 +565,7 @@ public boolean equip(World world, EntityPlayer player, int x, int y, int z) ItemStack stacky = new ItemStack(ModItems.adventureBackpack, 1); transferToItemStack(stacky); removeSleepingBag(world); - if (BackpackUtils.equipWearable(stacky, player) != BackpackUtils.reasons.SUCCESFUL) + if (BackpackUtils.equipWearable(stacky, player) != BackpackUtils.reasons.SUCCESSFUL) { if (Wearing.isWearingWearable(player)) { diff --git a/src/main/java/com/darkona/adventurebackpack/common/Constants.java b/src/main/java/com/darkona/adventurebackpack/common/Constants.java index 57639ff5..9b04cdc1 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/Constants.java +++ b/src/main/java/com/darkona/adventurebackpack/common/Constants.java @@ -11,9 +11,11 @@ public class Constants { public static final int inventorySize = 45; + public static final int bucket = FluidContainerRegistry.BUCKET_VOLUME; // Inventory Special Slots private static final int endOfInventory = inventorySize - 7; + public static final int inventoryMainSize = endOfInventory + 1; public static final int upperTool = endOfInventory + 1; public static final int lowerTool = upperTool + 1; @@ -23,12 +25,18 @@ public class Constants public static final int bucketOutRight = bucketInRight + 1; // Tanks - public static final int bucket = FluidContainerRegistry.BUCKET_VOLUME; public static final int basicTankCapacity = bucket * 4; public static final int heroicTankCapacity = bucket * 12; public static final int advancedTankCapacity = bucket * 8; - public static final int jetpackWaterTankCapacity = bucket * 6; + + //IDEA add ghost slot(s) for properly handle stacks of fluid containers + + // Jetpack + public static final int jetpackFuel = 2; public static final int jetpackSteamTankCapacity = bucket * 12; + public static final int jetpackWaterTankCapacity = bucket * 6; + + // Copter public static final int copterTankCapacity = bucket * 6; } diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 67d09614..f21044b3 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -19,6 +19,7 @@ public class ConfigHandler //public static final String configVersion = "1.0.0"; public static Configuration config; + public static boolean IS_DEVENV = false; public static boolean IS_BUILDCRAFT = false; public static boolean IS_ENDERIO = false; @@ -118,7 +119,7 @@ private static void loadConfiguration() // Graphics typeTankRender = config.getInt("Tank Render Type", "graphics", 3, 1, 3, "1,2 or 3 for different rendering of fluids in the Backpack GUI"); enableToolsRender = config.getBoolean("Enable Tools Render", "graphics", true, "Enable rendering for tools in the backpack tool slots. May cause visual glitches with Gregtech tools"); - enableTooltips = config.getBoolean("Enable Tooltips", "graphics", true, "Enable tooltips?"); + enableTooltips = config.getBoolean("Enable Tooltips", "graphics", true, "Enable tooltips? Client side"); tanksHoveringText = config.getBoolean("Hovering Text", "graphics", false, "Show hovering text on fluid tanks?"); // Graphics.Status diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java new file mode 100644 index 00000000..1a4309af --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java @@ -0,0 +1,242 @@ +package com.darkona.adventurebackpack.handlers; + +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.common.util.Constants.NBT; +import net.minecraftforge.event.entity.player.ItemTooltipEvent; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.registry.GameData; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.item.ItemAdventureBackpack; +import com.darkona.adventurebackpack.item.ItemCoalJetpack; +import com.darkona.adventurebackpack.item.ItemCopterPack; + +/** + * Created by Ugachaga on 24.03.2017. + */ +public class TooltipEventHandler +{ + @SubscribeEvent + @SideOnly(Side.CLIENT) + public void wearableTooltips(ItemTooltipEvent event) + { + if (!ConfigHandler.enableTooltips) + return; + + String holdTheShift = String.format("%s%s", EnumChatFormatting.WHITE, EnumChatFormatting.ITALIC); + + if (event.itemStack.getItem() instanceof ItemAdventureBackpack) + { + FluidTank tank = new FluidTank(Constants.basicTankCapacity); + NBTTagCompound compound = event.itemStack.stackTagCompound; + NBTTagCompound backpackData = null; + if (compound != null && compound.hasKey("backpackData")) + backpackData = compound.getCompoundTag("backpackData"); + + if (ConfigHandler.IS_DEVENV && GuiScreen.isCtrlKeyDown()) //no nbt checks in dev, let 'em burn + { + tank.readFromNBT(backpackData.getCompoundTag("leftTank")); + event.toolTip.add(tank.getFluidAmount() == 0 ? "" : tank.getFluid().getUnlocalizedName()); + tank.readFromNBT(backpackData.getCompoundTag("rightTank")); + event.toolTip.add(tank.getFluidAmount() == 0 ? "" : tank.getFluid().getUnlocalizedName()); + } + + if (backpackData != null && GuiScreen.isShiftKeyDown()) + { + if (backpackData.hasKey("ABPItems")) + { + NBTTagList itemList = backpackData.getTagList("ABPItems", NBT.TAG_COMPOUND); + event.toolTip.add("Slots used: " + backpackTooltip(itemList)); + } + if (backpackData.hasKey("leftTank")) + { + tank.readFromNBT(backpackData.getCompoundTag("leftTank")); + event.toolTip.add("Left Tank: " + tankTooltip(tank, true)); + } + if (backpackData.hasKey("rightTank")) + { + tank.readFromNBT(backpackData.getCompoundTag("rightTank")); + event.toolTip.add("Right Tank: " + tankTooltip(tank, true)); + } + //TODO add cycling status (on_of), nightvision status (if any), keys + } else if (backpackData != null && backpackData.hasKey("ABPItems")) + { + event.toolTip.add(holdTheShift); + } + + } else if (event.itemStack.getItem() instanceof ItemCoalJetpack) + { + FluidTank waterTank = new FluidTank(Constants.jetpackWaterTankCapacity); + FluidTank steamTank = new FluidTank(Constants.jetpackSteamTankCapacity); + NBTTagCompound compound = event.itemStack.stackTagCompound; + NBTTagCompound jetpackData = null; + //FIXME why there is packs (jetpacks only?) w/o nbt? change spawn/register method [and delete all these checks] + if (compound != null && compound.hasKey("jetpackData")) + jetpackData = compound.getCompoundTag("jetpackData"); + else if (compound == null && ConfigHandler.IS_DEVENV) + event.toolTip.add(EnumChatFormatting.RED + "No NBT"); + + if (jetpackData != null && GuiScreen.isShiftKeyDown()) + { + //TODO add temperature, help note with: max height, keys + if (jetpackData.hasKey("inventory")) + { + NBTTagList itemList = jetpackData.getTagList("inventory", NBT.TAG_COMPOUND); + event.toolTip.add("Fuel: " + fuelTooltip(itemList, Constants.jetpackFuel)); + } + if (jetpackData.hasKey("waterTank")) + { + waterTank.readFromNBT(jetpackData.getCompoundTag("waterTank")); + event.toolTip.add("Left Tank: " + tankTooltip(waterTank, true)); + } + if (jetpackData.hasKey("steamTank")) + { + steamTank.readFromNBT(jetpackData.getCompoundTag("steamTank")); + // special case for steam, have to set displayed fluid name manually + String theSteam = steamTank.getFluidAmount() > 0 ? EnumChatFormatting.AQUA + "Steam" : ""; + event.toolTip.add("Right Tank: " + tankTooltip(steamTank, false) + theSteam); + } + } else if (jetpackData != null && jetpackData.hasKey("waterTank")) + { + event.toolTip.add(holdTheShift); + } + + } else if (event.itemStack.getItem() instanceof ItemCopterPack) + { + FluidTank fuelTank = new FluidTank(Constants.copterTankCapacity); + NBTTagCompound compound = event.itemStack.stackTagCompound; + if (compound != null && compound.hasKey("fuelTank")) + fuelTank.readFromNBT(compound.getCompoundTag("fuelTank")); + + if (compound != null && GuiScreen.isShiftKeyDown()) + { + //TODO add fuel consumption rate, help note with: max height, keys + event.toolTip.add("Fuel Tank: " + tankTooltip(fuelTank, true)); + } else if (compound != null) + { + event.toolTip.add(holdTheShift); + } + } + } + + private String backpackTooltip(NBTTagList itemList) + { + int itemCount = itemList.tagCount(); + boolean toolSlotU = false; + boolean toolSlotL = false; + for (int i = itemCount - 1; i >= 0; --i) + { + int slotAtI = itemList.getCompoundTagAt(i).getInteger("Slot"); + if (slotAtI < Constants.upperTool) + break; + else if (slotAtI == Constants.upperTool) + toolSlotU = true; + else if (slotAtI == Constants.lowerTool) + toolSlotL = true; + } + itemCount -= (toolSlotU ? 1 : 0) + (toolSlotL ? 1 : 0); + return toolSlotFormat(toolSlotU) + toolSlotFormat(toolSlotL) + " " + mainSlotsFormat(itemCount); + } + + private String toolSlotFormat(boolean isTool) + { + return (isTool ? EnumChatFormatting.WHITE/*GREEN*/ : EnumChatFormatting.DARK_GRAY) + "[]"; + } + + private String mainSlotsFormat(int slotsUsed) + { + String sFormatted = "" + slotsUsed; + if (slotsUsed == 0) + sFormatted = EnumChatFormatting.DARK_GRAY + sFormatted; + else if (slotsUsed == Constants.inventoryMainSize) + sFormatted = EnumChatFormatting.WHITE + sFormatted; + else + sFormatted = EnumChatFormatting.GRAY + sFormatted; + return sFormatted + "/" + Constants.inventoryMainSize; + } + + private String tankTooltip(FluidTank tank, boolean attachName) + { + String fluidAmount = fluidAmountFormat(tank.getFluidAmount(), tank.getCapacity()); + String fluidName = tank.getFluid() == null ? "" : attachName ? fluidNameFormat(tank.getFluid()) : " "; + return fluidAmount + (tank.getFluidAmount() > 0 ? "/" + tank.getCapacity() : "") + fluidName; + } + + private String fluidAmountFormat(int fluidAmount, int tankCapacity) + { + String aFormatted = "" + fluidAmount; + if (fluidAmount == tankCapacity) + aFormatted = EnumChatFormatting.WHITE + aFormatted; + else if (fluidAmount == 0) + aFormatted = String.format("%s%sEmpty", EnumChatFormatting.DARK_GRAY, EnumChatFormatting.ITALIC); + return aFormatted; + } + + private String fluidNameFormat(FluidStack fluid) + { + String fUnlocalized = fluid.getUnlocalizedName().toLowerCase(); + String fLocalized = fluid.getLocalizedName(); + String nFormatted = " "; + if (fUnlocalized.contains("lava") || fUnlocalized.contains("fire")) + nFormatted += EnumChatFormatting.RED; + else if (fUnlocalized.contains("water")) + nFormatted += EnumChatFormatting.BLUE; + else if (fUnlocalized.contains("oil")) + nFormatted += EnumChatFormatting.BLACK; + else if (fUnlocalized.contains("fuel")) + nFormatted += EnumChatFormatting.YELLOW; + else if (fUnlocalized.contains("milk")) + nFormatted += EnumChatFormatting.WHITE; + else if (fUnlocalized.contains("xpjuice")) + nFormatted += EnumChatFormatting.GREEN; + else + nFormatted += EnumChatFormatting.GRAY; + return nFormatted + fLocalized; + } + + private String fuelTooltip(NBTTagList itemList, int slot) + { + int fuelID, fuelMeta, fuelCount = fuelID = fuelMeta = 0; + for (int i = 0; i <= slot; i++) + { + int slotAtI = itemList.getCompoundTagAt(i).getInteger("Slot"); + if (slotAtI == slot) + { + fuelID = itemList.getCompoundTagAt(i).getInteger("id"); + fuelMeta = itemList.getCompoundTagAt(i).getInteger("Damage"); + fuelCount = itemList.getCompoundTagAt(i).getInteger("Count"); + break; + } + } + return stackDataFormat(fuelID, fuelMeta, fuelCount); + } + + private String stackDataFormat(int id, int meta, int count) + { + if (count == 0) + return String.format("%s%sEmpty", EnumChatFormatting.DARK_GRAY, EnumChatFormatting.ITALIC); + + String fStackData; + try + { + ItemStack fuelStack = new ItemStack(GameData.getItemRegistry().getObjectById(id)); + fuelStack.setItemDamage(meta); + fStackData = fuelStack.getDisplayName() + " (" + count + ")"; + } catch (Exception e) + { + fStackData = EnumChatFormatting.RED + "Error"; + //e.printStackTrace(); + } + return fStackData; + } + +} diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipsHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipsHandler.java deleted file mode 100644 index 7a3fc878..00000000 --- a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipsHandler.java +++ /dev/null @@ -1,142 +0,0 @@ -package com.darkona.adventurebackpack.handlers; - -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.EnumChatFormatting; -import net.minecraftforge.common.util.Constants.NBT; -import net.minecraftforge.event.entity.player.ItemTooltipEvent; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidTank; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.item.ItemAdventureBackpack; -import com.darkona.adventurebackpack.item.ItemCoalJetpack; -import com.darkona.adventurebackpack.item.ItemCopterPack; - -/** - * Created by Ugachaga on 24.03.2017. - */ -public class TooltipsHandler -{ - @SubscribeEvent - @SideOnly(Side.CLIENT) - public void toolTips(ItemTooltipEvent event) - { - if (!ConfigHandler.enableTooltips) - return; - - String holdTheShift = String.format("%s%s", EnumChatFormatting.WHITE, EnumChatFormatting.ITALIC); - - if (event.itemStack.getItem() instanceof ItemAdventureBackpack) - { - FluidTank tank = new FluidTank(Constants.basicTankCapacity); - NBTTagCompound compound = event.itemStack.stackTagCompound; - NBTTagCompound backpackData = null; - if (compound != null && compound.hasKey("backpackData")) - backpackData = compound.getCompoundTag("backpackData"); - - if (backpackData != null && GuiScreen.isShiftKeyDown()) - { - if (backpackData.hasKey("ABPItems")) - { - int itemCount = backpackData.getTagList("ABPItems", NBT.TAG_COMPOUND).tagCount(); - event.toolTip.add("Slots used: " + itemCount + "/41"); //TODO format, add toolslots info - } - if (backpackData.hasKey("leftTank")) - { - tank.readFromNBT(backpackData.getCompoundTag("leftTank")); - event.toolTip.add("Left Tank: " + tankToolTip(tank)); - } - if (backpackData.hasKey("rightTank")) - { - tank.readFromNBT(backpackData.getCompoundTag("rightTank")); - event.toolTip.add("Right Tank: " + tankToolTip(tank)); - } - } else if (backpackData != null && backpackData.hasKey("ABPItems")) - { - event.toolTip.add(holdTheShift); - } - } else if (event.itemStack.getItem() instanceof ItemCoalJetpack) - { - FluidTank waterTank = new FluidTank(Constants.jetpackWaterTankCapacity); - FluidTank steamTank = new FluidTank(Constants.jetpackSteamTankCapacity); - NBTTagCompound compound = event.itemStack.stackTagCompound; - NBTTagCompound jetpackData = null; - if (compound != null && compound.hasKey("jetpackData")) - jetpackData = compound.getCompoundTag("jetpackData"); - - if (jetpackData != null && GuiScreen.isShiftKeyDown()) - { - if (jetpackData.hasKey("waterTank")) - { - waterTank.readFromNBT(jetpackData.getCompoundTag("waterTank")); - event.toolTip.add("Left Tank: " + tankToolTip(waterTank)); - } - if (jetpackData.hasKey("steamTank")) - { - steamTank.readFromNBT(jetpackData.getCompoundTag("steamTank")); - event.toolTip.add("Right Tank: " + tankToolTip(steamTank)); //TODO water->steam - } - //TODO add temperature, fuel, max height, keys maybe? - } else if (jetpackData != null && jetpackData.hasKey("waterTank")) - { - event.toolTip.add(holdTheShift); - } - } else if (event.itemStack.getItem() instanceof ItemCopterPack) - { - FluidTank fuelTank = new FluidTank(Constants.copterTankCapacity); - NBTTagCompound compound = event.itemStack.stackTagCompound; - if (compound != null && compound.hasKey("fuelTank")) - fuelTank.readFromNBT(compound.getCompoundTag("fuelTank")); - - if (GuiScreen.isShiftKeyDown()) - { - //TODO add max height, keys maybe?, - event.toolTip.add("Fuel Tank: " + tankToolTip(fuelTank)); - } else - { - event.toolTip.add(holdTheShift); - } - } - } - - private String tankToolTip(FluidTank tank) - { - String fluidAmount = amountFormat(tank.getFluidAmount(), tank.getCapacity()); - String fluidName = tank.getFluid() == null ? "" : fluidFormat(tank.getFluid()); - return fluidAmount + (tank.getFluidAmount() > 0 ? "/" + tank.getCapacity() : "") + fluidName; - } - - private String amountFormat(Integer fluidAmount, int tankCapacity) - { - String amountFormatted = fluidAmount.toString(); - if (fluidAmount == tankCapacity) - amountFormatted = EnumChatFormatting.WHITE + amountFormatted; - else if (fluidAmount == 0) - amountFormatted = EnumChatFormatting.ITALIC + "Empty"; - return amountFormatted; - } - - private String fluidFormat(FluidStack fluid) - { - String fluidUnlocName = fluid.getUnlocalizedName().toLowerCase(); - String fluidLocName = fluid.getLocalizedName(); - String fluidFormat = " "; - if (fluidUnlocName.contains("lava") || fluidUnlocName.contains("fire")) - fluidFormat += EnumChatFormatting.RED; - else if (fluidUnlocName.contains("water")) - fluidFormat += EnumChatFormatting.BLUE; - else if (fluidUnlocName.contains("oil")) - fluidFormat += EnumChatFormatting.BLACK; - else if (fluidUnlocName.contains("fuel")) - fluidFormat += EnumChatFormatting.YELLOW; - else if (fluidUnlocName.contains("milk")) - fluidFormat += EnumChatFormatting.WHITE; - return fluidFormat + fluidLocName; - } - -} diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModItems.java b/src/main/java/com/darkona/adventurebackpack/init/ModItems.java index 5cf28f6d..2236394f 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModItems.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModItems.java @@ -46,7 +46,7 @@ public static void init() GameRegistry.registerItem(adventurePants, "adventurePants"); GameRegistry.registerItem(pistonBoots, "pistonBoots"); GameRegistry.registerItem(copterPack, "copterPack"); - GameRegistry.registerItem(coalJetpack, "CoalJetpack"); //TODO rename to coalJetpack + GameRegistry.registerItem(coalJetpack, "CoalJetpack"); //TODO rename to coalJetpack. will affect saved games GameRegistry.registerItem(adventureBackpack, "adventureBackpack"); GameRegistry.registerItem(component, "backpackComponent"); GameRegistry.registerItem(hose, "backpackHose"); diff --git a/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipe.java b/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipe.java index da8ae4e5..cb911a13 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipe.java +++ b/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipe.java @@ -19,10 +19,10 @@ * * @author Darkona */ -public class AbstractBackpackRecipe implements IRecipe +class AbstractBackpackRecipe implements IRecipe { - final BackpackRecipes br = new BackpackRecipes(); + private final BackpackRecipes br = new BackpackRecipes(); private ItemStack result; private ItemStack[] recipe; diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 691cbcc7..40dffc9d 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -45,6 +45,8 @@ public class ContainerBackpack extends Container implements IWearableContainer BUCKET_LEFT = TOOL_END + 1, BUCKET_RIGHT = BUCKET_LEFT + 2; + //IDEA redesign container layout/craft slots behavior, so it will be rectangular and compatible with invTweaks. this also makes more slots available cuz craft ones will not drop content on close + public ContainerBackpack(EntityPlayer player, IInventoryAdventureBackpack backpack, byte source) { this.player = player; diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java index 9cc3e757..f4e5274a 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java @@ -13,22 +13,21 @@ */ public class ContainerCopter extends Container implements IWearableContainer { - - public InventoryCopterPack inventory; + InventoryCopterPack inventory; + EntityPlayer player; private final int PLAYER_HOT_START = 0; private final int PLAYER_HOT_END = PLAYER_HOT_START + 8; private final int PLAYER_INV_START = PLAYER_HOT_END + 1; @SuppressWarnings("FieldCanBeLocal") private final int PLAYER_INV_END = PLAYER_INV_START + 26; - EntityPlayer player; boolean wearing; - public ContainerCopter(EntityPlayer player, InventoryCopterPack copterPack, boolean wearing) + public ContainerCopter(EntityPlayer player, InventoryCopterPack copter, boolean wearing) { - this.inventory = copterPack; + this.player = player; + inventory = copter; makeSlots(player.inventory); inventory.openInventory(); - this.player = player; this.wearing = wearing; } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java index dc17807b..fb86aeb9 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java @@ -22,12 +22,12 @@ public class ContainerJetpack extends Container implements IWearableContainer private final int PLAYER_INV_END = PLAYER_INV_START + 26; boolean wearing; - public ContainerJetpack(EntityPlayer player, InventoryCoalJetpack inventory, boolean wearing) + public ContainerJetpack(EntityPlayer player, InventoryCoalJetpack jetpack, boolean wearing) { this.player = player; - this.inventory = inventory; + inventory = jetpack; makeSlots(player.inventory); - this.inventory.openInventory(); + inventory.openInventory(); this.wearing = wearing; } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index 794f361f..c9fc404e 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -323,7 +323,6 @@ public int getInventoryStackLimit() @Override public void markDirty() { - saveToNBT(containerStack.stackTagCompound); } @@ -342,10 +341,10 @@ public void openInventory() @Override public void closeInventory() { - /* if(Utils.inServer()) + /*if(Utils.inServer()) {*/ saveToNBT(containerStack.stackTagCompound); - // } + //} } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index 7cd92211..355b97c1 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -43,7 +43,7 @@ public class InventoryCoalJetpack implements IInventoryTanks public InventoryCoalJetpack(final ItemStack jetpack) { - this.containerStack = jetpack; + containerStack = jetpack; if (!containerStack.hasTagCompound()) { containerStack.stackTagCompound = new NBTTagCompound(); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java index 8fb98149..1b877f6f 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java @@ -33,7 +33,6 @@ public InventoryCopterPack(ItemStack copterPack) copterPack.stackTagCompound = new NBTTagCompound(); saveToNBT(copterPack.stackTagCompound); } - openInventory(); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java index 736a2d6c..c4a99901 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java @@ -59,8 +59,7 @@ public static boolean isValidTool(ItemStack stack) if (name.equals("gt.metatool.01")) { //0 = sword, 170 = turbines - if (stack.getItemDamage() == 0 || stack.getItemDamage() > 169) return false; - return true; + return !(stack.getItemDamage() == 0 || stack.getItemDamage() > 169); } //Charged baterries and such if (name.startsWith("gt.metaitem")) return false; diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 2f26385e..a791a59c 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -124,7 +124,6 @@ public String getItemStackDisplayName(ItemStack stack) @Override public void onCreated(ItemStack stack, World par2World, EntityPlayer par3EntityPlayer) { - super.onCreated(stack, par2World, par3EntityPlayer); BackpackNames.setBackpackColorNameFromDamage(stack, stack.getItemDamage()); } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index 39406e1c..bdfeab16 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -32,7 +32,6 @@ */ public class ItemCoalJetpack extends ItemAB implements IBackWearableItem { - public static byte OFF_MODE = 0; public static byte NORMAL_MODE = 1; @@ -251,8 +250,9 @@ private void runWater(InventoryCoalJetpack inv, World world, EntityPlayer player inv.setTemperature(temperature); } - public static void elevate(EntityPlayer player) + private static void elevate(EntityPlayer player) { + //TODO rework formulas, add height restriction, maybe configurable if (player.motionY <= 0.32 && player.posY < 100) { player.motionY += 0.1; diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java index b906d443..2e862853 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java @@ -37,6 +37,9 @@ */ public class ItemCopterPack extends ItemAB implements IBackWearableItem { + public static byte OFF_MODE = 0; + public static byte NORMAL_MODE = 1; + public static byte HOVER_MODE = 2; public ItemCopterPack() { @@ -46,10 +49,6 @@ public ItemCopterPack() setMaxStackSize(1); } - public static byte OFF_MODE = 0; - public static byte NORMAL_MODE = 1; - public static byte HOVER_MODE = 2; - @Override public int getItemEnchantability() { @@ -144,10 +143,13 @@ public String getArmorTexture(ItemStack stack, Entity entity, int slot, String t return modelTexture; } - public static void elevate(EntityPlayer player, ItemStack copter) + private static void elevate(EntityPlayer player, ItemStack copter) { - if (player.posY < 256) player.motionY = Math.max(player.motionY, 0.18); - if (player.posY > 256) player.motionY = 0.18 - ((player.posY % 256) / 256); + //TODO rework formulas, add height restriction, maybe configurable + if (player.posY < 256) + player.motionY = Math.max(player.motionY, 0.18); + if (player.posY > 256) + player.motionY = 0.18 - ((player.posY % 256) / 256); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java b/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java index a7103c5e..53348c31 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java @@ -38,7 +38,7 @@ public Message onMessage(Message message, MessageContext ctx) } else */ if (Wearing.isHoldingWearable(player) && !Wearing.isWearingWearable(player)) { - if (BackpackUtils.equipWearable(player.getCurrentEquippedItem(), player) == BackpackUtils.reasons.SUCCESFUL) + if (BackpackUtils.equipWearable(player.getCurrentEquippedItem(), player) == BackpackUtils.reasons.SUCCESSFUL) { player.inventory.setInventorySlotContents(player.inventory.currentItem, null); player.inventoryContainer.detectAndSendChanges(); diff --git a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java index 6c5d02c8..c6303c51 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java @@ -23,7 +23,7 @@ public class BackpackUtils public enum reasons { - SUCCESFUL, ALREADY_EQUIPPED + SUCCESSFUL, ALREADY_EQUIPPED } public static reasons equipWearable(ItemStack backpack, EntityPlayer player) @@ -38,7 +38,7 @@ public static reasons equipWearable(ItemStack backpack, EntityPlayer player) WearableEvent event = new WearableEvent.EquipWearableEvent(player, prop.getWearable()); MinecraftForge.EVENT_BUS.post(event); BackpackProperty.sync(player); - return reasons.SUCCESFUL; + return reasons.SUCCESSFUL; } else { return reasons.ALREADY_EQUIPPED; From f36a2f0f7f49779a370652f7da584ab327441078 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 29 Mar 2017 09:30:13 +0700 Subject: [PATCH 377/462] NBT --- .../block/TileAdventureBackpack.java | 103 ++++++++------- .../adventurebackpack/common/Constants.java | 17 ++- .../handlers/GeneralEventHandler.java | 15 +-- .../handlers/TooltipEventHandler.java | 110 ++++++++-------- .../inventory/InventoryBackpack.java | 118 +++++++++--------- .../inventory/InventoryCoalJetpack.java | 118 +++++++++--------- .../inventory/InventoryCopterPack.java | 18 +-- .../item/ItemAdventureBackpack.java | 15 +-- .../item/ItemCoalJetpack.java | 23 ++++ .../item/ItemCopterPack.java | 16 +++ .../reference/BackpackNames.java | 26 ++-- .../adventurebackpack/util/BackpackUtils.java | 16 ++- .../darkona/adventurebackpack/util/Utils.java | 35 ++++++ 13 files changed, 349 insertions(+), 281 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 352dbe01..3e5211ff 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -14,6 +14,7 @@ import net.minecraft.util.ChatComponentTranslation; import net.minecraft.world.EnumSkyBlock; import net.minecraft.world.World; +import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidTank; @@ -33,10 +34,20 @@ */ public class TileAdventureBackpack extends TileEntity implements IInventoryAdventureBackpack { + private static final String compoundTag = Constants.compoundTag; - public ItemStack[] inventory; + private static final String inventoryName = Constants.inventoryName; + public ItemStack[] inventory = new ItemStack[Constants.inventorySize]; + + private static final String leftTankName = Constants.leftTankName; + private static final String rightTankName = Constants.rightTankName; + private FluidTank leftTank = new FluidTank(Constants.basicTankCapacity); + private FluidTank rightTank = new FluidTank(Constants.basicTankCapacity); + + /*public ItemStack[] inventory; private FluidTank leftTank; - private FluidTank rightTank; + private FluidTank rightTank;*/ + public boolean sleepingBagDeployed; private boolean special; private int sbdir; @@ -83,9 +94,9 @@ public void setExtendedProperties(NBTTagCompound extendedProperties) public TileAdventureBackpack() { - leftTank = new FluidTank(Constants.basicTankCapacity); + /*leftTank = new FluidTank(Constants.basicTankCapacity); //TODO checkit rightTank = new FluidTank(Constants.basicTankCapacity); - inventory = new ItemStack[Constants.inventorySize]; + inventory = new ItemStack[Constants.inventorySize];*/ sleepingBagDeployed = false; setColorName("Standard"); luminosity = 0; @@ -251,13 +262,13 @@ public void readFromNBT(NBTTagCompound compound) @Override public void writeToNBT(NBTTagCompound compound) { - saveToNBT(compound); compound.setBoolean("sleepingbag", sleepingBagDeployed); compound.setInteger("sbx", sbx); compound.setInteger("sby", sby); compound.setInteger("sbz", sbz); compound.setInteger("lumen", luminosity); compound.setInteger("sbdir", sbdir); + saveToNBT(compound); super.writeToNBT(compound); } @@ -265,36 +276,34 @@ public void writeToNBT(NBTTagCompound compound) public void loadFromNBT(NBTTagCompound compound) { if (compound.hasKey("ench")) - ench = compound.getTagList("ench", net.minecraftforge.common.util.Constants.NBT.TAG_COMPOUND); - if (compound.hasKey("backpackData")) + ench = compound.getTagList("ench", NBT.TAG_COMPOUND); + + NBTTagCompound backpackTag = compound.getCompoundTag(compoundTag); + NBTTagList items = backpackTag.getTagList(inventoryName, NBT.TAG_COMPOUND); + for (int i = 0; i < items.tagCount(); i++) { - NBTTagCompound backpackData = compound.getCompoundTag("backpackData"); - NBTTagList items = backpackData.getTagList("ABPItems", net.minecraftforge.common.util.Constants.NBT.TAG_COMPOUND); - for (int i = 0; i < items.tagCount(); i++) + NBTTagCompound item = items.getCompoundTagAt(i); + byte slot = item.getByte("Slot"); + if (slot >= 0 && slot < inventory.length) { - NBTTagCompound item = items.getCompoundTagAt(i); - byte slot = item.getByte("Slot"); - if (slot >= 0 && slot < inventory.length) - { - inventory[slot] = ItemStack.loadItemStackFromNBT(item); - } + inventory[slot] = ItemStack.loadItemStackFromNBT(item); } - leftTank.readFromNBT(backpackData.getCompoundTag("leftTank")); - rightTank.readFromNBT(backpackData.getCompoundTag("rightTank")); - colorName = backpackData.getString("colorName"); - lastTime = backpackData.getInteger("lastTime"); - special = backpackData.getBoolean("special"); - extendedProperties = backpackData.getCompoundTag("extended"); - disableCycling = backpackData.getBoolean("disableCycling"); - disableNVision = backpackData.getBoolean("disableNVision"); } + leftTank.readFromNBT(backpackTag.getCompoundTag(leftTankName)); + rightTank.readFromNBT(backpackTag.getCompoundTag(rightTankName)); + colorName = backpackTag.getString("colorName"); + lastTime = backpackTag.getInteger("lastTime"); + special = backpackTag.getBoolean("special"); + extendedProperties = backpackTag.getCompoundTag("extended"); + disableCycling = backpackTag.getBoolean("disableCycling"); + disableNVision = backpackTag.getBoolean("disableNVision"); } @Override public void saveToNBT(NBTTagCompound compound) { if (ench != null) compound.setTag("ench", ench); - NBTTagCompound backpackData = new NBTTagCompound(); + NBTTagCompound backpackTag = new NBTTagCompound(); NBTTagList items = new NBTTagList(); for (int i = 0; i < inventory.length; i++) { @@ -307,17 +316,17 @@ public void saveToNBT(NBTTagCompound compound) items.appendTag(item); } } - backpackData.setTag("ABPItems", items); - backpackData.setString("colorName", colorName); - backpackData.setInteger("lastTime", lastTime); - backpackData.setBoolean("special", BackpackAbilities.hasAbility(colorName)); - backpackData.setTag("extended", extendedProperties); - backpackData.setTag("rightTank", rightTank.writeToNBT(new NBTTagCompound())); - backpackData.setTag("leftTank", leftTank.writeToNBT(new NBTTagCompound())); - backpackData.setBoolean("disableCycling", disableCycling); - backpackData.setBoolean("disableNVision", disableNVision); + backpackTag.setTag(inventoryName, items); + backpackTag.setString("colorName", colorName); + backpackTag.setInteger("lastTime", lastTime); + backpackTag.setBoolean("special", BackpackAbilities.hasAbility(colorName)); + backpackTag.setTag("extended", extendedProperties); + backpackTag.setTag(rightTankName, rightTank.writeToNBT(new NBTTagCompound())); + backpackTag.setTag(leftTankName, leftTank.writeToNBT(new NBTTagCompound())); + backpackTag.setBoolean("disableCycling", disableCycling); + backpackTag.setBoolean("disableNVision", disableNVision); - compound.setTag("backpackData", backpackData); + compound.setTag(compoundTag, backpackTag); } @Override @@ -515,28 +524,18 @@ public void updateTankSlots(FluidTank tank, int slotIn) @Override public void saveTanks(NBTTagCompound compound) { - NBTTagCompound backpackData; - if (compound.hasKey("backpackData")) - { - backpackData = compound.getCompoundTag("backpackData"); - } else - { - backpackData = new NBTTagCompound(); - } - backpackData.setTag("rightTank", rightTank.writeToNBT(new NBTTagCompound())); - backpackData.setTag("leftTank", leftTank.writeToNBT(new NBTTagCompound())); - compound.setTag("backpackData", backpackData); + NBTTagCompound backpackTag = compound.getCompoundTag(compoundTag); + backpackTag.setTag(rightTankName, rightTank.writeToNBT(new NBTTagCompound())); + backpackTag.setTag(leftTankName, leftTank.writeToNBT(new NBTTagCompound())); + compound.setTag(compoundTag, backpackTag); } @Override public void loadTanks(NBTTagCompound compound) { - if (compound.hasKey("backpackData")) - { - NBTTagCompound backpackData = compound.getCompoundTag("backpackData"); - leftTank.readFromNBT(backpackData.getCompoundTag("leftTank")); - rightTank.readFromNBT(backpackData.getCompoundTag("rightTank")); - } + NBTTagCompound backpackTag = compound.getCompoundTag(compoundTag); + leftTank.readFromNBT(backpackTag.getCompoundTag(leftTankName)); + rightTank.readFromNBT(backpackTag.getCompoundTag(rightTankName)); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/common/Constants.java b/src/main/java/com/darkona/adventurebackpack/common/Constants.java index 9b04cdc1..7699b1cd 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/Constants.java +++ b/src/main/java/com/darkona/adventurebackpack/common/Constants.java @@ -9,13 +9,16 @@ */ public class Constants { + public static final int bucket = FluidContainerRegistry.BUCKET_VOLUME; public static final int inventorySize = 45; - public static final int bucket = FluidContainerRegistry.BUCKET_VOLUME; + public static final String compoundTag = "backpackData"; + public static final String inventoryName = "ABPItems"; // Inventory Special Slots private static final int endOfInventory = inventorySize - 7; public static final int inventoryMainSize = endOfInventory + 1; + public static final int upperTool = endOfInventory + 1; public static final int lowerTool = upperTool + 1; @@ -25,18 +28,26 @@ public class Constants public static final int bucketOutRight = bucketInRight + 1; // Tanks + public static final String rightTankName = "rightTank"; + public static final String leftTankName = "leftTank"; public static final int basicTankCapacity = bucket * 4; + public static final int advancedTankCapacity = bucket * 8; // upgrade system? public static final int heroicTankCapacity = bucket * 12; - public static final int advancedTankCapacity = bucket * 8; //IDEA add ghost slot(s) for properly handle stacks of fluid containers // Jetpack - public static final int jetpackFuel = 2; + public static final int jetpackInventorySize = 3; + public static final int jetpackFuelSlot = 2; + public static final String jetpackCompoundTag = "jetpackData"; + public static final String jetpackInventoryName = "inventory"; + public static final String jetpackSteamTankName = "steamTank"; + public static final String jetpackWaterTankName = "waterTank"; public static final int jetpackSteamTankCapacity = bucket * 12; public static final int jetpackWaterTankCapacity = bucket * 6; // Copter + public static final String copterTankName = "fuelTank"; public static final int copterTankCapacity = bucket * 6; } diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java index cea660a1..c139e440 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java @@ -10,7 +10,6 @@ import net.minecraft.item.ItemAppleGold; import net.minecraft.item.ItemPotion; import net.minecraft.util.ChatComponentText; -import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.event.entity.EntityJoinWorldEvent; import net.minecraftforge.event.entity.EntityStruckByLightningEvent; import net.minecraftforge.event.entity.player.ArrowLooseEvent; @@ -22,7 +21,6 @@ import com.darkona.adventurebackpack.common.ServerActions; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.entity.ai.EntityAIHorseFollowOwner; -import com.darkona.adventurebackpack.events.WearableEvent; import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.inventory.InventoryBackpack; @@ -57,14 +55,7 @@ public void eatGoldenApple(PlayerUseItemEvent.Finish event) inv.dirtyTime(); if (!player.worldObj.isRemote) { - String nyanString = EnumChatFormatting.RED + - "N" + EnumChatFormatting.GOLD + - "Y" + EnumChatFormatting.YELLOW + - "A" + EnumChatFormatting.GREEN + - "N" + EnumChatFormatting.AQUA + - "C" + EnumChatFormatting.BLUE + - "A" + EnumChatFormatting.DARK_PURPLE + - "T"; + String nyanString = Utils.makeItRainbow("NYANCAT"); player.addChatComponentMessage(new ChatComponentText(nyanString)); ModNetwork.sendToNearby(new EntitySoundPacket.Message(EntitySoundPacket.NYAN_SOUND, player), player); } @@ -160,11 +151,11 @@ public void makeHorsesFollowOwner(EntityJoinWorldEvent event) } } - @SubscribeEvent + /*@SubscribeEvent public void backpackUnequipped(WearableEvent.UnequipWearableEvent event) { - } + }*/ /* @SubscribeEvent public void listFluids(FluidRegistry.FluidRegisterEvent event) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java index 1a4309af..c132af8e 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java @@ -27,6 +27,7 @@ public class TooltipEventHandler { @SubscribeEvent @SideOnly(Side.CLIENT) + @SuppressWarnings("unused") public void wearableTooltips(ItemTooltipEvent event) { if (!ConfigHandler.enableTooltips) @@ -38,37 +39,28 @@ public void wearableTooltips(ItemTooltipEvent event) { FluidTank tank = new FluidTank(Constants.basicTankCapacity); NBTTagCompound compound = event.itemStack.stackTagCompound; - NBTTagCompound backpackData = null; - if (compound != null && compound.hasKey("backpackData")) - backpackData = compound.getCompoundTag("backpackData"); + NBTTagCompound backpackTag = compound.getCompoundTag(Constants.compoundTag); - if (ConfigHandler.IS_DEVENV && GuiScreen.isCtrlKeyDown()) //no nbt checks in dev, let 'em burn + if (ConfigHandler.IS_DEVENV && GuiScreen.isCtrlKeyDown()) { - tank.readFromNBT(backpackData.getCompoundTag("leftTank")); + tank.readFromNBT(backpackTag.getCompoundTag(Constants.leftTankName)); event.toolTip.add(tank.getFluidAmount() == 0 ? "" : tank.getFluid().getUnlocalizedName()); - tank.readFromNBT(backpackData.getCompoundTag("rightTank")); + tank.readFromNBT(backpackTag.getCompoundTag(Constants.rightTankName)); event.toolTip.add(tank.getFluidAmount() == 0 ? "" : tank.getFluid().getUnlocalizedName()); } - if (backpackData != null && GuiScreen.isShiftKeyDown()) + if (GuiScreen.isShiftKeyDown()) { - if (backpackData.hasKey("ABPItems")) - { - NBTTagList itemList = backpackData.getTagList("ABPItems", NBT.TAG_COMPOUND); - event.toolTip.add("Slots used: " + backpackTooltip(itemList)); - } - if (backpackData.hasKey("leftTank")) - { - tank.readFromNBT(backpackData.getCompoundTag("leftTank")); - event.toolTip.add("Left Tank: " + tankTooltip(tank, true)); - } - if (backpackData.hasKey("rightTank")) - { - tank.readFromNBT(backpackData.getCompoundTag("rightTank")); - event.toolTip.add("Right Tank: " + tankTooltip(tank, true)); - } //TODO add cycling status (on_of), nightvision status (if any), keys - } else if (backpackData != null && backpackData.hasKey("ABPItems")) + NBTTagList itemList = backpackTag.getTagList(Constants.inventoryName, NBT.TAG_COMPOUND); + event.toolTip.add("Slots used: " + backpackTooltip(itemList)); + + tank.readFromNBT(backpackTag.getCompoundTag(Constants.leftTankName)); + event.toolTip.add("Left Tank: " + tankTooltip(tank, true)); + + tank.readFromNBT(backpackTag.getCompoundTag(Constants.rightTankName)); + event.toolTip.add("Right Tank: " + tankTooltip(tank, true)); + } else { event.toolTip.add(holdTheShift); } @@ -78,34 +70,22 @@ public void wearableTooltips(ItemTooltipEvent event) FluidTank waterTank = new FluidTank(Constants.jetpackWaterTankCapacity); FluidTank steamTank = new FluidTank(Constants.jetpackSteamTankCapacity); NBTTagCompound compound = event.itemStack.stackTagCompound; - NBTTagCompound jetpackData = null; - //FIXME why there is packs (jetpacks only?) w/o nbt? change spawn/register method [and delete all these checks] - if (compound != null && compound.hasKey("jetpackData")) - jetpackData = compound.getCompoundTag("jetpackData"); - else if (compound == null && ConfigHandler.IS_DEVENV) - event.toolTip.add(EnumChatFormatting.RED + "No NBT"); - - if (jetpackData != null && GuiScreen.isShiftKeyDown()) + NBTTagCompound jetpackTag = compound.getCompoundTag(Constants.jetpackCompoundTag); + + if (GuiScreen.isShiftKeyDown()) { //TODO add temperature, help note with: max height, keys - if (jetpackData.hasKey("inventory")) - { - NBTTagList itemList = jetpackData.getTagList("inventory", NBT.TAG_COMPOUND); - event.toolTip.add("Fuel: " + fuelTooltip(itemList, Constants.jetpackFuel)); - } - if (jetpackData.hasKey("waterTank")) - { - waterTank.readFromNBT(jetpackData.getCompoundTag("waterTank")); - event.toolTip.add("Left Tank: " + tankTooltip(waterTank, true)); - } - if (jetpackData.hasKey("steamTank")) - { - steamTank.readFromNBT(jetpackData.getCompoundTag("steamTank")); - // special case for steam, have to set displayed fluid name manually - String theSteam = steamTank.getFluidAmount() > 0 ? EnumChatFormatting.AQUA + "Steam" : ""; - event.toolTip.add("Right Tank: " + tankTooltip(steamTank, false) + theSteam); - } - } else if (jetpackData != null && jetpackData.hasKey("waterTank")) + NBTTagList itemList = jetpackTag.getTagList(Constants.jetpackInventoryName, NBT.TAG_COMPOUND); + event.toolTip.add("Fuel: " + fuelTooltip(itemList, Constants.jetpackFuelSlot)); + + waterTank.readFromNBT(jetpackTag.getCompoundTag(Constants.jetpackWaterTankName)); + event.toolTip.add("Left Tank: " + tankTooltip(waterTank, true)); + + steamTank.readFromNBT(jetpackTag.getCompoundTag(Constants.jetpackSteamTankName)); + // special case for steam, have to set displayed fluid name manually + String theSteam = steamTank.getFluidAmount() > 0 ? EnumChatFormatting.AQUA + "Steam" : ""; + event.toolTip.add("Right Tank: " + tankTooltip(steamTank, false) + theSteam); + } else { event.toolTip.add(holdTheShift); } @@ -114,14 +94,12 @@ else if (compound == null && ConfigHandler.IS_DEVENV) { FluidTank fuelTank = new FluidTank(Constants.copterTankCapacity); NBTTagCompound compound = event.itemStack.stackTagCompound; - if (compound != null && compound.hasKey("fuelTank")) - fuelTank.readFromNBT(compound.getCompoundTag("fuelTank")); - - if (compound != null && GuiScreen.isShiftKeyDown()) + fuelTank.readFromNBT(compound.getCompoundTag(Constants.copterTankName)); + if (GuiScreen.isShiftKeyDown()) { //TODO add fuel consumption rate, help note with: max height, keys event.toolTip.add("Fuel Tank: " + tankTooltip(fuelTank, true)); - } else if (compound != null) + } else { event.toolTip.add(holdTheShift); } @@ -154,7 +132,7 @@ private String toolSlotFormat(boolean isTool) private String mainSlotsFormat(int slotsUsed) { - String sFormatted = "" + slotsUsed; + String sFormatted = String.valueOf(slotsUsed); if (slotsUsed == 0) sFormatted = EnumChatFormatting.DARK_GRAY + sFormatted; else if (slotsUsed == Constants.inventoryMainSize) @@ -173,11 +151,11 @@ private String tankTooltip(FluidTank tank, boolean attachName) private String fluidAmountFormat(int fluidAmount, int tankCapacity) { - String aFormatted = "" + fluidAmount; + String aFormatted = String.valueOf(fluidAmount); if (fluidAmount == tankCapacity) aFormatted = EnumChatFormatting.WHITE + aFormatted; else if (fluidAmount == 0) - aFormatted = String.format("%s%sEmpty", EnumChatFormatting.DARK_GRAY, EnumChatFormatting.ITALIC); + aFormatted = emptyFormat(); return aFormatted; } @@ -223,14 +201,13 @@ private String fuelTooltip(NBTTagList itemList, int slot) private String stackDataFormat(int id, int meta, int count) { if (count == 0) - return String.format("%s%sEmpty", EnumChatFormatting.DARK_GRAY, EnumChatFormatting.ITALIC); + return emptyFormat(); String fStackData; try { - ItemStack fuelStack = new ItemStack(GameData.getItemRegistry().getObjectById(id)); - fuelStack.setItemDamage(meta); - fStackData = fuelStack.getDisplayName() + " (" + count + ")"; + ItemStack fuelStack = new ItemStack(GameData.getItemRegistry().getObjectById(id), 0, meta); + fStackData = fuelStack.getDisplayName() + " (" + stackSizeFormat(fuelStack, count) + ")"; } catch (Exception e) { fStackData = EnumChatFormatting.RED + "Error"; @@ -239,4 +216,15 @@ private String stackDataFormat(int id, int meta, int count) return fStackData; } + private String stackSizeFormat(ItemStack stack, int count) + { + String sCount = String.valueOf(count); + return stack.getMaxStackSize() == count ? EnumChatFormatting.WHITE + sCount + EnumChatFormatting.GRAY : sCount; + } + + private String emptyFormat() + { + return String.format("%s%sEmpty", EnumChatFormatting.DARK_GRAY, EnumChatFormatting.ITALIC); + } + } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index c9fc404e..404715d1 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -7,6 +7,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidTank; @@ -24,27 +25,32 @@ */ public class InventoryBackpack implements IInventoryAdventureBackpack { + private static final String compoundTag = Constants.compoundTag; + + private static final String inventoryName = Constants.inventoryName; public ItemStack[] inventory = new ItemStack[Constants.inventorySize]; + + private static final String leftTankName = Constants.leftTankName; + private static final String rightTankName = Constants.rightTankName; private FluidTank leftTank = new FluidTank(Constants.basicTankCapacity); private FluidTank rightTank = new FluidTank(Constants.basicTankCapacity); + private static final boolean OFF = false; + + private static final boolean ON = true; + private boolean disableNVision = OFF; + private boolean disableCycling = OFF; + + private ItemStack containerStack; public ItemStack getContainerStack() { return containerStack; } - public void setContainerStack(ItemStack containerStack) { this.containerStack = containerStack; } - public static final boolean OFF = false; - public static final boolean ON = true; - - private boolean disableNVision = OFF; - private boolean disableCycling = OFF; - - private ItemStack containerStack; private String colorName = "Standard"; private int lastTime = 0; private boolean special = false; @@ -53,12 +59,12 @@ public void setContainerStack(ItemStack containerStack) public InventoryBackpack(ItemStack backpack) { containerStack = backpack; - if (!backpack.hasTagCompound()) + /*if (!backpack.hasTagCompound()) //TODO checkit { backpack.stackTagCompound = new NBTTagCompound(); saveToNBT(backpack.stackTagCompound); - } - loadFromNBT(backpack.stackTagCompound); + }*/ + openInventory(); } @Override @@ -124,15 +130,15 @@ public boolean isSpecial() @Override public void saveTanks(NBTTagCompound compound) { - compound.setTag("rightTank", rightTank.writeToNBT(new NBTTagCompound())); - compound.setTag("leftTank", leftTank.writeToNBT(new NBTTagCompound())); + compound.setTag(rightTankName, rightTank.writeToNBT(new NBTTagCompound())); + compound.setTag(leftTankName, leftTank.writeToNBT(new NBTTagCompound())); } @Override public void loadTanks(NBTTagCompound compound) { - leftTank.readFromNBT(compound.getCompoundTag("leftTank")); - rightTank.readFromNBT(compound.getCompoundTag("rightTank")); + leftTank.readFromNBT(compound.getCompoundTag(leftTankName)); + rightTank.readFromNBT(compound.getCompoundTag(rightTankName)); } @Override @@ -227,37 +233,34 @@ public boolean updateTankSlots() @Override public void loadFromNBT(NBTTagCompound compound) { - if (compound.hasKey("backpackData")) + if (compound == null) return; //this need for NEI trying to render tile.backpack and comes here w/o nbt + + NBTTagCompound backpackTag = compound.getCompoundTag(compoundTag); + NBTTagList items = backpackTag.getTagList(inventoryName, NBT.TAG_COMPOUND); + for (int i = 0; i < items.tagCount(); i++) { - NBTTagCompound backpackData = compound.getCompoundTag("backpackData"); - NBTTagList items = backpackData.getTagList("ABPItems", net.minecraftforge.common.util.Constants.NBT.TAG_COMPOUND); - for (int i = 0; i < items.tagCount(); i++) + NBTTagCompound item = items.getCompoundTagAt(i); + byte slot = item.getByte("Slot"); + if (slot >= 0 && slot < inventory.length) { - NBTTagCompound item = items.getCompoundTagAt(i); - byte slot = item.getByte("Slot"); - if (slot >= 0 && slot < inventory.length) - { - inventory[slot] = ItemStack.loadItemStackFromNBT(item); - } + inventory[slot] = ItemStack.loadItemStackFromNBT(item); } - - leftTank.readFromNBT(backpackData.getCompoundTag("leftTank")); - rightTank.readFromNBT(backpackData.getCompoundTag("rightTank")); - colorName = backpackData.getString("colorName"); - lastTime = backpackData.getInteger("lastTime"); - special = backpackData.getBoolean("special"); - extendedProperties = backpackData.getCompoundTag("extendedProperties"); - disableCycling = backpackData.getBoolean("disableCycling"); - disableNVision = backpackData.getBoolean("disableNVision"); } + + leftTank.readFromNBT(backpackTag.getCompoundTag(leftTankName)); + rightTank.readFromNBT(backpackTag.getCompoundTag(rightTankName)); + colorName = backpackTag.getString("colorName"); + lastTime = backpackTag.getInteger("lastTime"); + special = backpackTag.getBoolean("special"); + extendedProperties = backpackTag.getCompoundTag("extendedProperties"); + disableCycling = backpackTag.getBoolean("disableCycling"); + disableNVision = backpackTag.getBoolean("disableNVision"); } @Override public void saveToNBT(NBTTagCompound compound) { - // if(Utils.inServer()) - // { - NBTTagCompound backpackData = new NBTTagCompound(); + NBTTagCompound backpackTag = new NBTTagCompound(); NBTTagList items = new NBTTagList(); for (int i = 0; i < inventory.length; i++) { @@ -270,19 +273,18 @@ public void saveToNBT(NBTTagCompound compound) items.appendTag(item); } } - backpackData.removeTag("ABPItems"); - backpackData.setTag("ABPItems", items); - backpackData.setString("colorName", colorName); - backpackData.setInteger("lastTime", lastTime); - backpackData.setBoolean("special", BackpackAbilities.hasAbility(colorName)); - backpackData.setTag("extendedProperties", extendedProperties); - backpackData.setTag("rightTank", rightTank.writeToNBT(new NBTTagCompound())); - backpackData.setTag("leftTank", leftTank.writeToNBT(new NBTTagCompound())); - backpackData.setBoolean("disableCycling", disableCycling); - backpackData.setBoolean("disableNVision", disableNVision); - - compound.setTag("backpackData", backpackData); - //} + backpackTag.removeTag(inventoryName); + backpackTag.setTag(inventoryName, items); + backpackTag.setString("colorName", colorName); + backpackTag.setInteger("lastTime", lastTime); + backpackTag.setBoolean("special", BackpackAbilities.hasAbility(colorName)); + backpackTag.setTag("extendedProperties", extendedProperties); + backpackTag.setTag(rightTankName, rightTank.writeToNBT(new NBTTagCompound())); + backpackTag.setTag(leftTankName, leftTank.writeToNBT(new NBTTagCompound())); + backpackTag.setBoolean("disableCycling", disableCycling); + backpackTag.setBoolean("disableNVision", disableNVision); + + compound.setTag(compoundTag, backpackTag); } @Override @@ -341,7 +343,7 @@ public void openInventory() @Override public void closeInventory() { - /*if(Utils.inServer()) + /*if(Utils.inServer()) //TODO side? {*/ saveToNBT(containerStack.stackTagCompound); //} @@ -377,21 +379,21 @@ public ItemStack getStackInSlot(int slot) @Override public void dirtyTanks() { - containerStack.stackTagCompound.getCompoundTag("backpackData").setTag("leftTank", leftTank.writeToNBT(new NBTTagCompound())); - containerStack.stackTagCompound.getCompoundTag("backpackData").setTag("rightTank", rightTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag(compoundTag).setTag(leftTankName, leftTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag(compoundTag).setTag(rightTankName, rightTank.writeToNBT(new NBTTagCompound())); } @Override public void dirtyTime() { - containerStack.stackTagCompound.getCompoundTag("backpackData").setInteger("lastTime", lastTime); + containerStack.stackTagCompound.getCompoundTag(compoundTag).setInteger("lastTime", lastTime); } @Override public void dirtyExtended() { - containerStack.stackTagCompound.getCompoundTag("backpackData").removeTag("extendedProperties"); - containerStack.stackTagCompound.getCompoundTag("backpackData").setTag("extendedProperties", extendedProperties); + containerStack.stackTagCompound.getCompoundTag(compoundTag).removeTag("extendedProperties"); + containerStack.stackTagCompound.getCompoundTag(compoundTag).setTag("extendedProperties", extendedProperties); } @Override @@ -413,8 +415,8 @@ public void dirtyInventory() items.appendTag(item); } } - containerStack.stackTagCompound.getCompoundTag("backpackData").removeTag("ABPItems"); - containerStack.stackTagCompound.getCompoundTag("backpackData").setTag("ABPItems", items); + containerStack.stackTagCompound.getCompoundTag(compoundTag).removeTag(inventoryName); + containerStack.stackTagCompound.getCompoundTag(compoundTag).setTag(inventoryName, items); } public boolean hasBlock(Block block) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index 355b97c1..8681f04d 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -20,13 +20,21 @@ */ public class InventoryCoalJetpack implements IInventoryTanks { - public static final boolean OFF = false; - public static final boolean ON = true; + private static final String compoundTag = Constants.jetpackCompoundTag; + + private static final String inventoryName = Constants.jetpackInventoryName; + private ItemStack[] inventory = new ItemStack[Constants.jetpackInventorySize]; + + private static final String waterTankName = Constants.jetpackWaterTankName; + private static final String steamTankName = Constants.jetpackSteamTankName; private FluidTank waterTank = new FluidTank(Constants.jetpackWaterTankCapacity); private FluidTank steamTank = new FluidTank(Constants.jetpackSteamTankCapacity); - private ItemStack[] inventory = new ItemStack[3]; - private int temperature = 25; + + private static final boolean OFF = false; + private static final boolean ON = true; private boolean status = OFF; + + private int temperature = 25; private int burnTicks = 0; private ItemStack containerStack; private long systemTime = 0; @@ -44,11 +52,11 @@ public class InventoryCoalJetpack implements IInventoryTanks public InventoryCoalJetpack(final ItemStack jetpack) { containerStack = jetpack; - if (!containerStack.hasTagCompound()) + /*if (!containerStack.hasTagCompound()) //TODO checkit { containerStack.stackTagCompound = new NBTTagCompound(); closeInventory(); - } + }*/ openInventory(); } @@ -71,29 +79,26 @@ public boolean updateTankSlots() @Override public void loadFromNBT(NBTTagCompound compound) { - if (compound.hasKey("jetpackData")) + NBTTagCompound jetpackTag = compound.getCompoundTag(compoundTag); + waterTank.readFromNBT(jetpackTag.getCompoundTag(waterTankName)); + steamTank.readFromNBT(jetpackTag.getCompoundTag(steamTankName)); + temperature = jetpackTag.getInteger("temperature"); + status = jetpackTag.getBoolean("status"); + burnTicks = jetpackTag.getInteger("burnTicks"); + coolTicks = jetpackTag.getInteger("coolTicks"); + systemTime = jetpackTag.getLong("systemTime"); + inUse = jetpackTag.getBoolean("inUse"); + boiling = jetpackTag.getBoolean("boiling"); + leaking = jetpackTag.getBoolean("leaking"); + currentItemBurnTime = jetpackTag.getInteger("currentBurn"); + NBTTagList items = jetpackTag.getTagList(inventoryName, NBT.TAG_COMPOUND); + for (int i = 0; i < items.tagCount(); i++) { - NBTTagCompound jetpackData = compound.getCompoundTag("jetpackData"); - waterTank.readFromNBT(jetpackData.getCompoundTag("waterTank")); - steamTank.readFromNBT(jetpackData.getCompoundTag("steamTank")); - temperature = jetpackData.getInteger("temperature"); - status = jetpackData.getBoolean("status"); - burnTicks = jetpackData.getInteger("burnTicks"); - coolTicks = jetpackData.getInteger("coolTicks"); - systemTime = jetpackData.getLong("systemTime"); - inUse = jetpackData.getBoolean("inUse"); - boiling = jetpackData.getBoolean("boiling"); - leaking = jetpackData.getBoolean("leaking"); - currentItemBurnTime = jetpackData.getInteger("currentBurn"); - NBTTagList items = jetpackData.getTagList("inventory", NBT.TAG_COMPOUND); - for (int i = 0; i < items.tagCount(); i++) + NBTTagCompound item = items.getCompoundTagAt(i); + byte slot = item.getByte("Slot"); + if (slot >= 0 && slot < inventory.length) { - NBTTagCompound item = items.getCompoundTagAt(i); - byte slot = item.getByte("Slot"); - if (slot >= 0 && slot < inventory.length) - { - inventory[slot] = ItemStack.loadItemStackFromNBT(item); - } + inventory[slot] = ItemStack.loadItemStackFromNBT(item); } } } @@ -101,26 +106,18 @@ public void loadFromNBT(NBTTagCompound compound) @Override public void saveToNBT(NBTTagCompound compound) { - NBTTagCompound jetpackData; - if (compound.hasKey("jetpackData")) - { - jetpackData = compound.getCompoundTag("jetpackData"); - } else - { - jetpackData = new NBTTagCompound(); - } - - jetpackData.setTag("waterTank", waterTank.writeToNBT(new NBTTagCompound())); - jetpackData.setTag("steamTank", steamTank.writeToNBT(new NBTTagCompound())); - jetpackData.setInteger("temperature", temperature); - jetpackData.setBoolean("status", status); - jetpackData.setInteger("burnTicks", burnTicks); - jetpackData.setInteger("coolTicks", coolTicks); - jetpackData.setLong("systemTime", systemTime); - jetpackData.setBoolean("inUse", inUse); - jetpackData.setBoolean("boiling", boiling); - jetpackData.setBoolean("leaking", leaking); - jetpackData.setInteger("currentBurn", currentItemBurnTime); + NBTTagCompound jetpackTag = compound.getCompoundTag(compoundTag); + jetpackTag.setTag(waterTankName, waterTank.writeToNBT(new NBTTagCompound())); + jetpackTag.setTag(steamTankName, steamTank.writeToNBT(new NBTTagCompound())); + jetpackTag.setInteger("temperature", temperature); + jetpackTag.setBoolean("status", status); + jetpackTag.setInteger("burnTicks", burnTicks); + jetpackTag.setInteger("coolTicks", coolTicks); + jetpackTag.setLong("systemTime", systemTime); + jetpackTag.setBoolean("inUse", inUse); + jetpackTag.setBoolean("boiling", boiling); + jetpackTag.setBoolean("leaking", leaking); + jetpackTag.setInteger("currentBurn", currentItemBurnTime); NBTTagList items = new NBTTagList(); for (int i = 0; i < inventory.length; i++) { @@ -133,8 +130,8 @@ public void saveToNBT(NBTTagCompound compound) items.appendTag(item); } } - jetpackData.setTag("inventory", items); - compound.setTag("jetpackData", jetpackData); + jetpackTag.setTag(inventoryName, items); + compound.setTag(compoundTag, jetpackTag); } @Override @@ -159,25 +156,25 @@ public void dirtyInventory() items.appendTag(item); } } - containerStack.stackTagCompound.getCompoundTag("jetpackData").setTag("inventory", items); + containerStack.stackTagCompound.getCompoundTag(compoundTag).setTag(inventoryName, items); } @Override public void dirtyTanks() { - containerStack.stackTagCompound.getCompoundTag("jetPackData").setTag("waterTank", waterTank.writeToNBT(new NBTTagCompound())); - containerStack.stackTagCompound.getCompoundTag("jetPackData").setTag("steamTank", steamTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag(compoundTag).setTag(waterTankName, waterTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag(compoundTag).setTag(steamTankName, steamTank.writeToNBT(new NBTTagCompound())); } public void dirtyBoiler() { - NBTTagCompound jetpackData = containerStack.stackTagCompound.getCompoundTag("jetPackData"); - jetpackData.setBoolean("boiling", boiling); - jetpackData.setBoolean("leaking", leaking); - jetpackData.setInteger("temperature", temperature); - jetpackData.setInteger("burnTicks", burnTicks); - jetpackData.setInteger("coolTicks", coolTicks); - jetpackData.setInteger("currentBurn", currentItemBurnTime); + NBTTagCompound jetpackTag = containerStack.stackTagCompound.getCompoundTag(compoundTag); + jetpackTag.setBoolean("boiling", boiling); + jetpackTag.setBoolean("leaking", leaking); + jetpackTag.setInteger("temperature", temperature); + jetpackTag.setInteger("burnTicks", burnTicks); + jetpackTag.setInteger("coolTicks", coolTicks); + jetpackTag.setInteger("currentBurn", currentItemBurnTime); } public int consumeFuel() @@ -219,8 +216,7 @@ public ItemStack decrStackSizeNoSave(int slot, int amount) { if (inventory[slot].stackSize > amount) { - ItemStack result = inventory[slot].splitStack(amount); - return result; + return inventory[slot].splitStack(amount); } ItemStack stack = inventory[slot]; setInventorySlotContentsNoSave(slot, null); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java index 1b877f6f..2f5ceb64 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java @@ -18,8 +18,10 @@ */ public class InventoryCopterPack implements IInventoryTanks { - private ItemStack containerStack; + private static final String fuelTankName = Constants.copterTankName; public FluidTank fuelTank = new FluidTank(Constants.copterTankCapacity); + + private ItemStack containerStack; public int tickCounter = 0; public byte status = ItemCopterPack.OFF_MODE; private ItemStack[] inventory = new ItemStack[2]; @@ -28,11 +30,11 @@ public InventoryCopterPack(ItemStack copterPack) { status = ItemCopterPack.OFF_MODE; containerStack = copterPack; - if (!copterPack.hasTagCompound()) + /*if (!copterPack.hasTagCompound()) //TODO checkit { copterPack.stackTagCompound = new NBTTagCompound(); saveToNBT(copterPack.stackTagCompound); - } + }*/ openInventory(); } @@ -128,7 +130,7 @@ public int getInventoryStackLimit() @Override public void markDirty() { - containerStack.stackTagCompound.setTag("fuelTank", fuelTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.setTag(fuelTankName, fuelTank.writeToNBT(new NBTTagCompound())); containerStack.stackTagCompound.setByte("status", status); containerStack.stackTagCompound.setInteger("tickCounter", this.tickCounter); } @@ -136,7 +138,7 @@ public void markDirty() @Override public void dirtyTanks() { - containerStack.stackTagCompound.setTag("fuelTank", fuelTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.setTag(fuelTankName, fuelTank.writeToNBT(new NBTTagCompound())); } @Override @@ -170,7 +172,7 @@ public void closeInventory() public void closeInventoryNoStatus() { - containerStack.stackTagCompound.setTag("fuelTank", this.fuelTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.setTag(fuelTankName, this.fuelTank.writeToNBT(new NBTTagCompound())); containerStack.stackTagCompound.setInteger("tickCounter", this.tickCounter); } @@ -244,7 +246,7 @@ public boolean updateTankSlots() @Override public void loadFromNBT(NBTTagCompound compound) { - fuelTank.readFromNBT(compound.getCompoundTag("fuelTank")); + fuelTank.readFromNBT(compound.getCompoundTag(fuelTankName)); status = compound.getByte("status"); tickCounter = compound.getInteger("tickCounter"); } @@ -252,7 +254,7 @@ public void loadFromNBT(NBTTagCompound compound) @Override public void saveToNBT(NBTTagCompound compound) { - compound.setTag("fuelTank", fuelTank.writeToNBT(new NBTTagCompound())); + compound.setTag(fuelTankName, fuelTank.writeToNBT(new NBTTagCompound())); compound.setByte("status", status); compound.setInteger("tickCounter", this.tickCounter); } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index a791a59c..0a0ea26c 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -261,13 +261,14 @@ public String getArmorTexture(ItemStack stack, Entity entity, int slot, String t @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4) { - NBTTagCompound backpackData = BackpackUtils.getBackpackData(stack); - if (backpackData != null) + NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(stack); + if (backpackTag.hasKey("colorName")) { - if (backpackData.hasKey("colorName")) - { - list.add(backpackData.getString("colorName")); - } + //TODO MORE! + if (backpackTag.getString("colorName").equals("Rainbow")) + list.add(Utils.makeItRainbow("Rainbow")); + else + list.add(backpackTag.getString("colorName")); } } @@ -282,7 +283,7 @@ public void getSubItems(Item item, CreativeTabs par2CreativeTabs, List subItems) bp.setItemDamage(i); NBTTagCompound c = new NBTTagCompound(); c.setString("colorName", BackpackNames.backpackNames[i]); - BackpackUtils.setBackpackData(bp, c); + BackpackUtils.setBackpackTag(bp, c); subItems.add(bp); } } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index bdfeab16..ca14d39a 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -1,11 +1,16 @@ package com.darkona.adventurebackpack.item; +import java.util.List; + import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelBiped; +import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import net.minecraftforge.common.BiomeDictionary; @@ -14,6 +19,7 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.inventory.ContainerJetpack; import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; @@ -43,6 +49,23 @@ public ItemCoalJetpack() setMaxStackSize(1); } + @Override + @SuppressWarnings("unchecked") + public void getSubItems(Item item, CreativeTabs tab, List list) + { + ItemStack iStack = new ItemStack(item, 1, 0); + NBTTagCompound compound = new NBTTagCompound(); + iStack.setTagCompound(compound); + + NBTTagCompound jetpackTag = new NBTTagCompound(); + //jetpackTag.setTag(Constants.jetpackWaterTankName, new FluidTank(Constants.jetpackWaterTankCapacity).writeToNBT(new NBTTagCompound())); + //jetpackTag.setTag(Constants.jetpackSteamTankName, new FluidTank(Constants.jetpackSteamTankCapacity).writeToNBT(new NBTTagCompound())); + //jetpackTag.setTag(Constants.jetpackInventoryName, new NBTTagList()); + compound.setTag(Constants.jetpackCompoundTag, jetpackTag); + + list.add(iStack); + } + @Override public int getItemEnchantability() { diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java index 2e862853..027f0d77 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java @@ -4,21 +4,25 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelBiped; +import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; +import net.minecraftforge.fluids.FluidTank; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import com.darkona.adventurebackpack.client.models.ModelCopterPack; +import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.inventory.ContainerCopter; import com.darkona.adventurebackpack.inventory.InventoryCopterPack; @@ -49,6 +53,18 @@ public ItemCopterPack() setMaxStackSize(1); } + @Override + @SuppressWarnings("unchecked") + public void getSubItems(Item item, CreativeTabs tab, List list) + { + ItemStack iStack = new ItemStack(item, 1, 0); + NBTTagCompound compound = new NBTTagCompound(); + iStack.setTagCompound(compound); + compound.setTag(Constants.copterTankName, new FluidTank(Constants.copterTankCapacity).writeToNBT(new NBTTagCompound())); + + list.add(iStack); + } + @Override public int getItemEnchantability() { diff --git a/src/main/java/com/darkona/adventurebackpack/reference/BackpackNames.java b/src/main/java/com/darkona/adventurebackpack/reference/BackpackNames.java index 7860d51d..6023c11e 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/BackpackNames.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/BackpackNames.java @@ -100,11 +100,11 @@ public static ItemStack setBackpackColorNameFromDamage(ItemStack backpack, int d if (backpack == null) return null; if (!(backpack.getItem() instanceof ItemAdventureBackpack)) return null; - NBTTagCompound backpackData = BackpackUtils.getBackpackData(backpack) != null ? BackpackUtils.getBackpackData(backpack) : new NBTTagCompound(); + NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(backpack) != null ? BackpackUtils.getBackpackTag(backpack) : new NBTTagCompound(); backpack.setItemDamage(damage); - assert backpackData != null; - backpackData.setString("colorName", backpackNames[damage]); - BackpackUtils.setBackpackData(backpack, backpackData); + assert backpackTag != null; + backpackTag.setString("colorName", backpackNames[damage]); + BackpackUtils.setBackpackTag(backpack, backpackTag); return backpack; } @@ -125,23 +125,23 @@ public static String getBackpackColorName(TileAdventureBackpack te) public static String getBackpackColorName(ItemStack backpack) { if (backpack == null) return ""; - NBTTagCompound backpackData = BackpackUtils.getBackpackData(backpack) != null ? BackpackUtils.getBackpackData(backpack) : new NBTTagCompound(); - assert backpackData != null; - if (backpackData.getString("colorName").isEmpty()) + NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(backpack) != null ? BackpackUtils.getBackpackTag(backpack) : new NBTTagCompound(); + assert backpackTag != null; + if (backpackTag.getString("colorName").isEmpty()) { - backpackData.setString("colorName", "Standard"); + backpackTag.setString("colorName", "Standard"); } - return backpackData.getString("colorName"); + return backpackTag.getString("colorName"); } public static void setBackpackColorName(ItemStack backpack, String newName) { if (backpack != null) { - NBTTagCompound backpackData = BackpackUtils.getBackpackData(backpack) != null ? BackpackUtils.getBackpackData(backpack) : new NBTTagCompound(); - assert backpackData != null; - backpackData.setString("colorName", newName); - BackpackUtils.setBackpackData(backpack, backpackData); + NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(backpack) != null ? BackpackUtils.getBackpackTag(backpack) : new NBTTagCompound(); + assert backpackTag != null; + backpackTag.setString("colorName", newName); + BackpackUtils.setBackpackTag(backpack, backpackTag); } } } diff --git a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java index c6303c51..727b5431 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java @@ -9,6 +9,7 @@ import net.minecraft.util.ChatComponentTranslation; import net.minecraftforge.common.MinecraftForge; +import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.events.WearableEvent; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; @@ -51,19 +52,22 @@ public static void unequipWearable(EntityPlayer player) timer.schedule(unequipTask, 200); } - public static NBTTagCompound getBackpackData(ItemStack backpack) + public static NBTTagCompound getBackpackTag(ItemStack backpack) { - if (backpack.hasTagCompound() && backpack.stackTagCompound.hasKey("backpackData")) + if (backpack.hasTagCompound() && backpack.stackTagCompound.hasKey(Constants.compoundTag)) { - return backpack.stackTagCompound.getCompoundTag("backpackData"); + return backpack.stackTagCompound.getCompoundTag(Constants.compoundTag); } return null; } - public static void setBackpackData(ItemStack stack, NBTTagCompound compound) + public static void setBackpackTag(ItemStack stack, NBTTagCompound compound) { - if (!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); - stack.stackTagCompound.setTag("backpackData", compound); + if (!stack.hasTagCompound()) + { + stack.stackTagCompound = new NBTTagCompound(); + } + stack.stackTagCompound.setTag(Constants.compoundTag, compound); } private static class DelayUnequipTask extends TimerTask diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index f485e2c9..c48caf5b 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -6,6 +6,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.ChunkCoordinates; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; @@ -445,4 +446,38 @@ public static String getFirstWord(String text) } } + public static String makeItRainbow(String theString) + { + StringBuilder everyHunterWannaKnowWherePheasantSits = new StringBuilder(); + for (int i = 0; i < theString.length(); i++) + { + char charAtI = theString.charAt(i); + switch (i % 7) + { + case 0: + everyHunterWannaKnowWherePheasantSits.append(EnumChatFormatting.RED).append(charAtI); + break; + case 1: + everyHunterWannaKnowWherePheasantSits.append(EnumChatFormatting.GOLD).append(charAtI); + break; + case 2: + everyHunterWannaKnowWherePheasantSits.append(EnumChatFormatting.YELLOW).append(charAtI); + break; + case 3: + everyHunterWannaKnowWherePheasantSits.append(EnumChatFormatting.GREEN).append(charAtI); + break; + case 4: + everyHunterWannaKnowWherePheasantSits.append(EnumChatFormatting.AQUA).append(charAtI); + break; + case 5: + everyHunterWannaKnowWherePheasantSits.append(EnumChatFormatting.BLUE).append(charAtI); + break; + case 6: + everyHunterWannaKnowWherePheasantSits.append(EnumChatFormatting.DARK_PURPLE).append(charAtI); + break; + } + } + return everyHunterWannaKnowWherePheasantSits.toString(); + } + } From 025ba2b5b8488f9d67fa0f46451365d25f8d57af Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 29 Mar 2017 18:55:28 +0700 Subject: [PATCH 378/462] Added keys for backpacks tooltips --- .../block/TileAdventureBackpack.java | 82 +++++------- .../client/gui/GuiOverlay.java | 4 +- .../adventurebackpack/client/gui/GuiTank.java | 2 +- .../client/models/ModelBackpackArmor.java | 4 +- .../client/models/ModelBackpackBlock.java | 4 +- .../adventurebackpack/common/Constants.java | 60 +++++---- .../common/ServerActions.java | 20 +-- .../handlers/KeybindHandler.java | 5 +- .../handlers/TooltipEventHandler.java | 126 ++++++++++++------ .../adventurebackpack/init/ModItems.java | 2 +- .../inventory/ContainerBackpack.java | 22 +-- .../inventory/ContainerJetpack.java | 8 +- .../inventory/InventoryActions.java | 2 +- .../inventory/InventoryBackpack.java | 84 ++++++------ .../inventory/InventoryCoalJetpack.java | 70 +++++----- .../inventory/InventoryCopterPack.java | 20 ++- .../item/ItemCoalJetpack.java | 14 +- .../item/ItemCopterPack.java | 2 +- .../adventurebackpack/item/ItemHose.java | 29 ++-- .../adventurebackpack/util/BackpackUtils.java | 6 +- .../assets/adventurebackpack/lang/en_US.lang | 2 +- .../textures/items/CoalJetpack.png | Bin 343 -> 0 bytes .../textures/models/CoalJetpack.png | Bin 2441 -> 0 bytes 23 files changed, 305 insertions(+), 263 deletions(-) delete mode 100644 src/main/resources/assets/adventurebackpack/textures/items/CoalJetpack.png delete mode 100644 src/main/resources/assets/adventurebackpack/textures/models/CoalJetpack.png diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 3e5211ff..11a1fe71 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -29,24 +29,19 @@ import com.darkona.adventurebackpack.util.BackpackUtils; import com.darkona.adventurebackpack.util.Wearing; +import static com.darkona.adventurebackpack.common.Constants.COMPOUND_TAG; +import static com.darkona.adventurebackpack.common.Constants.INVENTORY; +import static com.darkona.adventurebackpack.common.Constants.LEFT_TANK; +import static com.darkona.adventurebackpack.common.Constants.RIGHT_TANK; + /** * Created by Darkona on 12/10/2014. */ public class TileAdventureBackpack extends TileEntity implements IInventoryAdventureBackpack { - private static final String compoundTag = Constants.compoundTag; - - private static final String inventoryName = Constants.inventoryName; - public ItemStack[] inventory = new ItemStack[Constants.inventorySize]; - - private static final String leftTankName = Constants.leftTankName; - private static final String rightTankName = Constants.rightTankName; - private FluidTank leftTank = new FluidTank(Constants.basicTankCapacity); - private FluidTank rightTank = new FluidTank(Constants.basicTankCapacity); - - /*public ItemStack[] inventory; - private FluidTank leftTank; - private FluidTank rightTank;*/ + public ItemStack[] inventory = new ItemStack[Constants.INVENTORY_SIZE]; + private FluidTank leftTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); + private FluidTank rightTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); public boolean sleepingBagDeployed; private boolean special; @@ -63,6 +58,16 @@ public class TileAdventureBackpack extends TileEntity implements IInventoryAdven private boolean disableCycling; private boolean disableNVision; + public TileAdventureBackpack() + { + sleepingBagDeployed = false; + setColorName("Standard"); + luminosity = 0; + lastTime = 0; + checkTime = 0; + extendedProperties = new NBTTagCompound(); + } + public int getLuminosity() { return luminosity; @@ -92,19 +97,6 @@ public void setExtendedProperties(NBTTagCompound extendedProperties) this.extendedProperties = extendedProperties; } - public TileAdventureBackpack() - { - /*leftTank = new FluidTank(Constants.basicTankCapacity); //TODO checkit - rightTank = new FluidTank(Constants.basicTankCapacity); - inventory = new ItemStack[Constants.inventorySize];*/ - sleepingBagDeployed = false; - setColorName("Standard"); - luminosity = 0; - lastTime = 0; - checkTime = 0; - extendedProperties = new NBTTagCompound(); - } - public boolean deploySleepingBag(EntityPlayer player, World world, int x, int y, int z, int meta) { if (world.isRemote) return false; @@ -278,8 +270,8 @@ public void loadFromNBT(NBTTagCompound compound) if (compound.hasKey("ench")) ench = compound.getTagList("ench", NBT.TAG_COMPOUND); - NBTTagCompound backpackTag = compound.getCompoundTag(compoundTag); - NBTTagList items = backpackTag.getTagList(inventoryName, NBT.TAG_COMPOUND); + NBTTagCompound backpackTag = compound.getCompoundTag(COMPOUND_TAG); + NBTTagList items = backpackTag.getTagList(INVENTORY, NBT.TAG_COMPOUND); for (int i = 0; i < items.tagCount(); i++) { NBTTagCompound item = items.getCompoundTagAt(i); @@ -289,8 +281,8 @@ public void loadFromNBT(NBTTagCompound compound) inventory[slot] = ItemStack.loadItemStackFromNBT(item); } } - leftTank.readFromNBT(backpackTag.getCompoundTag(leftTankName)); - rightTank.readFromNBT(backpackTag.getCompoundTag(rightTankName)); + leftTank.readFromNBT(backpackTag.getCompoundTag(LEFT_TANK)); + rightTank.readFromNBT(backpackTag.getCompoundTag(RIGHT_TANK)); colorName = backpackTag.getString("colorName"); lastTime = backpackTag.getInteger("lastTime"); special = backpackTag.getBoolean("special"); @@ -316,17 +308,17 @@ public void saveToNBT(NBTTagCompound compound) items.appendTag(item); } } - backpackTag.setTag(inventoryName, items); + backpackTag.setTag(INVENTORY, items); backpackTag.setString("colorName", colorName); backpackTag.setInteger("lastTime", lastTime); backpackTag.setBoolean("special", BackpackAbilities.hasAbility(colorName)); backpackTag.setTag("extended", extendedProperties); - backpackTag.setTag(rightTankName, rightTank.writeToNBT(new NBTTagCompound())); - backpackTag.setTag(leftTankName, leftTank.writeToNBT(new NBTTagCompound())); + backpackTag.setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); + backpackTag.setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); backpackTag.setBoolean("disableCycling", disableCycling); backpackTag.setBoolean("disableNVision", disableNVision); - compound.setTag(compoundTag, backpackTag); + compound.setTag(COMPOUND_TAG, backpackTag); } @Override @@ -385,7 +377,7 @@ public ItemStack decrStackSize(int i, int count) @Override public ItemStack getStackInSlotOnClosing(int slot) { - if (slot == Constants.bucketInLeft || slot == Constants.bucketInRight || slot == Constants.bucketOutLeft || slot == Constants.bucketOutRight) + if (slot == Constants.BUCKET_IN_LEFT || slot == Constants.BUCKET_IN_RIGHT || slot == Constants.BUCKET_OUT_LEFT || slot == Constants.BUCKET_OUT_RIGHT) { return inventory[slot]; } @@ -409,12 +401,12 @@ public void markDirty() { for (int i = 0; i < inventory.length; i++) { - if (i == Constants.bucketInLeft && inventory[i] != null) + if (i == Constants.BUCKET_IN_LEFT && inventory[i] != null) { updateTankSlots(getLeftTank(), i); } - if (i == Constants.bucketInRight && inventory[i] != null) + if (i == Constants.BUCKET_IN_RIGHT && inventory[i] != null) { updateTankSlots(getRightTank(), i); } @@ -524,18 +516,18 @@ public void updateTankSlots(FluidTank tank, int slotIn) @Override public void saveTanks(NBTTagCompound compound) { - NBTTagCompound backpackTag = compound.getCompoundTag(compoundTag); - backpackTag.setTag(rightTankName, rightTank.writeToNBT(new NBTTagCompound())); - backpackTag.setTag(leftTankName, leftTank.writeToNBT(new NBTTagCompound())); - compound.setTag(compoundTag, backpackTag); + NBTTagCompound backpackTag = compound.getCompoundTag(COMPOUND_TAG); + backpackTag.setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); + backpackTag.setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); + compound.setTag(COMPOUND_TAG, backpackTag); } @Override public void loadTanks(NBTTagCompound compound) { - NBTTagCompound backpackTag = compound.getCompoundTag(compoundTag); - leftTank.readFromNBT(backpackTag.getCompoundTag(leftTankName)); - rightTank.readFromNBT(backpackTag.getCompoundTag(rightTankName)); + NBTTagCompound backpackTag = compound.getCompoundTag(COMPOUND_TAG); + leftTank.readFromNBT(backpackTag.getCompoundTag(LEFT_TANK)); + rightTank.readFromNBT(backpackTag.getCompoundTag(RIGHT_TANK)); } @Override @@ -550,7 +542,7 @@ public ItemStack getParentItemStack() return null; } - private ItemStack transferToItemStack(ItemStack stack) + private ItemStack transferToItemStack(ItemStack stack) //TODO usage? { NBTTagCompound compound = new NBTTagCompound(); saveToNBT(compound); diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java index 6b343fff..2f4c3806 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java @@ -182,8 +182,8 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) GL11.glScalef(0.5f, 0.5f, 0.5f); if (ConfigHandler.enableToolsRender) { - drawItemStack(inv.getStackInSlot(Constants.upperTool), 0, 0); - drawItemStack(inv.getStackInSlot(Constants.lowerTool), 0, 16); + drawItemStack(inv.getStackInSlot(Constants.UPPER_TOOL), 0, 0); + drawItemStack(inv.getStackInSlot(Constants.LOWER_TOOL), 0, 16); } GL11.glPopMatrix(); RenderHelper.disableStandardItemLighting(); diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiTank.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiTank.java index 82ffafc6..f2c6f111 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiTank.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiTank.java @@ -59,7 +59,7 @@ public List getTankTooltip() { FluidStack fluid = tank.getFluid(); String fluidName = (fluid != null) ? fluid.getLocalizedName() : "None"; - String fluidAmount = (fluid != null) ? fluid.amount + "/" + Constants.basicTankCapacity : "Empty"; + String fluidAmount = (fluid != null) ? fluid.amount + "/" + Constants.BASIC_TANK_CAPACITY : "Empty"; ArrayList tankTips = new ArrayList(); tankTips.add(fluidName); tankTips.add(fluidAmount); diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java index 23ece2f6..37d3fcf2 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java @@ -261,8 +261,8 @@ private void renderBackpack(Float scale) if (ConfigHandler.enableToolsRender) { - lowerTool.stack = backpack.getStackInSlot(Constants.lowerTool); - upperTool.stack = backpack.getStackInSlot(Constants.upperTool); + lowerTool.stack = backpack.getStackInSlot(Constants.LOWER_TOOL); + upperTool.stack = backpack.getStackInSlot(Constants.UPPER_TOOL); } if (color.equals("Quartz") || color.equals("Slime") || color.equals("Snow")) diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java index 7d207b83..df950850 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java @@ -347,7 +347,7 @@ private void renderFluidsInTanks(FluidTank tankLeft, FluidTank tankRight, float Cuboid6 left = new Cuboid6(minX, minY, minZ, maxX, maxY, maxZ); //Thanks Chickenbones! - RenderUtils.renderFluidCuboid(tankLeft.getFluid(), left.add(victor), ((1.0F * tankLeft.getFluidAmount()) / (1.0F * Constants.basicTankCapacity)), 0.2); + RenderUtils.renderFluidCuboid(tankLeft.getFluid(), left.add(victor), ((1.0F * tankLeft.getFluidAmount()) / (1.0F * Constants.BASIC_TANK_CAPACITY)), 0.2); } if (tankRight != null && tankRight.getFluid() != null && tankRight.getFluid().getFluid().getIcon() != null) @@ -365,7 +365,7 @@ private void renderFluidsInTanks(FluidTank tankLeft, FluidTank tankRight, float CCRenderState.useNormals = true; Cuboid6 right = new Cuboid6(minX, minY, minZ, maxX, maxY, maxZ); - RenderUtils.renderFluidCuboid(tankRight.getFluid(), right.add(victor), ((1.0F * tankRight.getFluidAmount()) / (1.0F * Constants.basicTankCapacity)), 0.2); + RenderUtils.renderFluidCuboid(tankRight.getFluid(), right.add(victor), ((1.0F * tankRight.getFluidAmount()) / (1.0F * Constants.BASIC_TANK_CAPACITY)), 0.2); } } diff --git a/src/main/java/com/darkona/adventurebackpack/common/Constants.java b/src/main/java/com/darkona/adventurebackpack/common/Constants.java index 7699b1cd..806f9dac 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/Constants.java +++ b/src/main/java/com/darkona/adventurebackpack/common/Constants.java @@ -9,45 +9,51 @@ */ public class Constants { - public static final int bucket = FluidContainerRegistry.BUCKET_VOLUME; + public static final int BUCKET = FluidContainerRegistry.BUCKET_VOLUME; - public static final int inventorySize = 45; - public static final String compoundTag = "backpackData"; - public static final String inventoryName = "ABPItems"; + public static final int INVENTORY_SIZE = 45; + public static final String COMPOUND_TAG = "backpackData"; + public static final String INVENTORY = "ABPItems"; // Inventory Special Slots - private static final int endOfInventory = inventorySize - 7; - public static final int inventoryMainSize = endOfInventory + 1; + private static final int END_OF_INVENTORY = INVENTORY_SIZE - 7; + public static final int INVENTORY_MAIN_SIZE = END_OF_INVENTORY + 1; - public static final int upperTool = endOfInventory + 1; - public static final int lowerTool = upperTool + 1; + public static final int UPPER_TOOL = END_OF_INVENTORY + 1; + public static final int LOWER_TOOL = UPPER_TOOL + 1; - public static final int bucketInLeft = lowerTool + 1; - public static final int bucketOutLeft = bucketInLeft + 1; - public static final int bucketInRight = bucketOutLeft + 1; - public static final int bucketOutRight = bucketInRight + 1; + public static final int BUCKET_IN_LEFT = LOWER_TOOL + 1; + public static final int BUCKET_OUT_LEFT = BUCKET_IN_LEFT + 1; + public static final int BUCKET_IN_RIGHT = BUCKET_OUT_LEFT + 1; + public static final int BUCKET_OUT_RIGHT = BUCKET_IN_RIGHT + 1; // Tanks - public static final String rightTankName = "rightTank"; - public static final String leftTankName = "leftTank"; - public static final int basicTankCapacity = bucket * 4; - public static final int advancedTankCapacity = bucket * 8; // upgrade system? - public static final int heroicTankCapacity = bucket * 12; + public static final String RIGHT_TANK = "rightTank"; + public static final String LEFT_TANK = "leftTank"; + public static final int BASIC_TANK_CAPACITY = BUCKET * 4; + public static final int ADVANCED_TANK_CAPACITY = BUCKET * 8; // upgrade system? + public static final int HEROIC_TANK_CAPACITY = BUCKET * 12; //IDEA add ghost slot(s) for properly handle stacks of fluid containers // Jetpack - public static final int jetpackInventorySize = 3; - public static final int jetpackFuelSlot = 2; - public static final String jetpackCompoundTag = "jetpackData"; - public static final String jetpackInventoryName = "inventory"; - public static final String jetpackSteamTankName = "steamTank"; - public static final String jetpackWaterTankName = "waterTank"; - public static final int jetpackSteamTankCapacity = bucket * 12; - public static final int jetpackWaterTankCapacity = bucket * 6; + public static final int JETPACK_INVENTORY_SIZE = 3; + public static final int JETPACK_BUCKET_IN = 0; + public static final int JETPACK_BUCKET_OUT = 1; + public static final int JETPACK_FUEL_SLOT = 2; + public static final String JETPACK_COMPOUND_TAG = "jetpackData"; + public static final String JETPACK_INVENTORY = "inventory"; + public static final String JETPACK_STEAM_TANK = "steamTank"; + public static final String JETPACK_WATER_TANK = "waterTank"; + public static final int JETPACK_STEAM_CAPACITY = BUCKET * 12; + public static final int JETPACK_WATER_CAPACITY = BUCKET * 6; // Copter - public static final String copterTankName = "fuelTank"; - public static final int copterTankCapacity = bucket * 6; + public static final String COPTER_FUEL_TANK = "fuelTank"; + public static final int COPTER_FUEL_CAPACITY = BUCKET * 6; + + + // + public static final String[] NIGHTVISION_BACKPACKS = {"Bat", "Squid", "Dragon"}; } diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index 800f67fd..e917d881 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -30,6 +30,10 @@ import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Wearing; +import static com.darkona.adventurebackpack.common.Constants.BUCKET; +import static com.darkona.adventurebackpack.common.Constants.LOWER_TOOL; +import static com.darkona.adventurebackpack.common.Constants.UPPER_TOOL; + /** * Created on 23/12/2014 * @@ -67,16 +71,16 @@ public static void cycleTool(EntityPlayer player, int direction, int slot) { if (direction < 0) { - player.inventory.mainInventory[slot] = backpack.getStackInSlot(Constants.upperTool); - backpack.setInventorySlotContentsNoSave(Constants.upperTool, backpack.getStackInSlot(Constants.lowerTool)); - backpack.setInventorySlotContentsNoSave(Constants.lowerTool, current); + player.inventory.mainInventory[slot] = backpack.getStackInSlot(UPPER_TOOL); + backpack.setInventorySlotContentsNoSave(UPPER_TOOL, backpack.getStackInSlot(LOWER_TOOL)); + backpack.setInventorySlotContentsNoSave(LOWER_TOOL, current); } else { if (direction > 0) { - player.inventory.mainInventory[slot] = backpack.getStackInSlot(Constants.lowerTool); - backpack.setInventorySlotContentsNoSave(Constants.lowerTool, backpack.getStackInSlot(Constants.upperTool)); - backpack.setInventorySlotContentsNoSave(Constants.upperTool, current); + player.inventory.mainInventory[slot] = backpack.getStackInSlot(LOWER_TOOL); + backpack.setInventorySlotContentsNoSave(LOWER_TOOL, backpack.getStackInSlot(UPPER_TOOL)); + backpack.setInventorySlotContentsNoSave(UPPER_TOOL, current); } } } @@ -99,9 +103,9 @@ public static void cycleTool(EntityPlayer player, int direction, int slot) */ public static boolean setFluidEffect(World world, EntityPlayer player, FluidTank tank) { - FluidStack drained = tank.drain(Constants.bucket, false); + FluidStack drained = tank.drain(BUCKET, false); boolean done = false; - if (drained != null && drained.amount >= Constants.bucket && FluidEffectRegistry.hasFluidEffect(drained.getFluid())) + if (drained != null && drained.amount >= BUCKET && FluidEffectRegistry.hasFluidEffect(drained.getFluid())) { done = FluidEffectRegistry.executeFluidEffectsForFluid(drained.getFluid(), player, world); } diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java index e2dbcf04..9cec8e3a 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java @@ -5,6 +5,7 @@ import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.InputEvent; +import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.common.ServerActions; import com.darkona.adventurebackpack.config.Keybindings; import com.darkona.adventurebackpack.entity.EntityFriendlySpider; @@ -43,8 +44,6 @@ private static Key getPressedKeyBinding() return Key.UNKNOWN; } - private static final String[] NIGHTVISION_BACKPACKS = {"Bat", "Squid", "Dragon"}; - @SubscribeEvent public void handleKeyInputEvent(InputEvent.KeyInputEvent event) { @@ -93,7 +92,7 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) { if (player.isSneaking()) { - for (String valid : NIGHTVISION_BACKPACKS) + for (String valid : Constants.NIGHTVISION_BACKPACKS) { if (Wearing.getBackpackInv(player, true).getColorName().equals(valid)) { diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java index c132af8e..5665d3ad 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java @@ -1,6 +1,7 @@ package com.darkona.adventurebackpack.handlers; import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.settings.GameSettings; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; @@ -16,12 +17,15 @@ import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.config.Keybindings; import com.darkona.adventurebackpack.item.ItemAdventureBackpack; import com.darkona.adventurebackpack.item.ItemCoalJetpack; import com.darkona.adventurebackpack.item.ItemCopterPack; /** - * Created by Ugachaga on 24.03.2017. + * Created on 24.03.2017 + * + * @author Ugachaga */ public class TooltipEventHandler { @@ -33,92 +37,119 @@ public void wearableTooltips(ItemTooltipEvent event) if (!ConfigHandler.enableTooltips) return; - String holdTheShift = String.format("%s%s", EnumChatFormatting.WHITE, EnumChatFormatting.ITALIC); - if (event.itemStack.getItem() instanceof ItemAdventureBackpack) { - FluidTank tank = new FluidTank(Constants.basicTankCapacity); + FluidTank tank = new FluidTank(Constants.BASIC_TANK_CAPACITY); NBTTagCompound compound = event.itemStack.stackTagCompound; - NBTTagCompound backpackTag = compound.getCompoundTag(Constants.compoundTag); + NBTTagCompound backpackTag = compound.getCompoundTag(Constants.COMPOUND_TAG); - if (ConfigHandler.IS_DEVENV && GuiScreen.isCtrlKeyDown()) + /*if (ConfigHandler.IS_DEVENV && GuiScreen.isCtrlKeyDown()) { - tank.readFromNBT(backpackTag.getCompoundTag(Constants.leftTankName)); + tank.readFromNBT(backpackTag.getCompoundTag(Constants.LEFT_TANK)); event.toolTip.add(tank.getFluidAmount() == 0 ? "" : tank.getFluid().getUnlocalizedName()); - tank.readFromNBT(backpackTag.getCompoundTag(Constants.rightTankName)); + tank.readFromNBT(backpackTag.getCompoundTag(Constants.RIGHT_TANK)); event.toolTip.add(tank.getFluidAmount() == 0 ? "" : tank.getFluid().getUnlocalizedName()); - } + }*/ if (GuiScreen.isShiftKeyDown()) { - //TODO add cycling status (on_of), nightvision status (if any), keys - NBTTagList itemList = backpackTag.getTagList(Constants.inventoryName, NBT.TAG_COMPOUND); + NBTTagList itemList = backpackTag.getTagList(Constants.INVENTORY, NBT.TAG_COMPOUND); event.toolTip.add("Slots used: " + backpackTooltip(itemList)); - tank.readFromNBT(backpackTag.getCompoundTag(Constants.leftTankName)); + tank.readFromNBT(backpackTag.getCompoundTag(Constants.LEFT_TANK)); event.toolTip.add("Left Tank: " + tankTooltip(tank, true)); - tank.readFromNBT(backpackTag.getCompoundTag(Constants.rightTankName)); + tank.readFromNBT(backpackTag.getCompoundTag(Constants.RIGHT_TANK)); event.toolTip.add("Right Tank: " + tankTooltip(tank, true)); - } else + + if (!GuiScreen.isCtrlKeyDown()) + event.toolTip.add(holdThe(false)); + + } else if (!GuiScreen.isCtrlKeyDown()) { - event.toolTip.add(holdTheShift); + event.toolTip.add(holdThe(true)); + } + + if (GuiScreen.isCtrlKeyDown()) + { + String actionKey = GameSettings.getKeyDisplayString(Keybindings.toggleActions.getKeyCode()); + boolean cycling = !backpackTag.getBoolean("disableCycling"); + event.toolTip.add("Tool Cycling: " + switchTooltip(cycling, true)); + event.toolTip.add("Press '" + actionKey + "' while wearing"); + event.toolTip.add("backpack, for turn cycling " + switchTooltip(!cycling, false)); + + String color = backpackTag.getString("colorName"); + for (String valid : Constants.NIGHTVISION_BACKPACKS) + { + if (color.equals(valid)) + { + boolean vision = !backpackTag.getBoolean("disableNVision"); + event.toolTip.add("Night Vision: " + switchTooltip(vision, true)); + event.toolTip.add("Press Shift+'" + actionKey + "' while wearing"); + event.toolTip.add("backpack, for turn nightvision " + switchTooltip(!vision, false)); + } + } } } else if (event.itemStack.getItem() instanceof ItemCoalJetpack) { - FluidTank waterTank = new FluidTank(Constants.jetpackWaterTankCapacity); - FluidTank steamTank = new FluidTank(Constants.jetpackSteamTankCapacity); + FluidTank waterTank = new FluidTank(Constants.JETPACK_WATER_CAPACITY); + FluidTank steamTank = new FluidTank(Constants.JETPACK_STEAM_CAPACITY); NBTTagCompound compound = event.itemStack.stackTagCompound; - NBTTagCompound jetpackTag = compound.getCompoundTag(Constants.jetpackCompoundTag); + NBTTagCompound jetpackTag = compound.getCompoundTag(Constants.JETPACK_COMPOUND_TAG); if (GuiScreen.isShiftKeyDown()) { //TODO add temperature, help note with: max height, keys - NBTTagList itemList = jetpackTag.getTagList(Constants.jetpackInventoryName, NBT.TAG_COMPOUND); - event.toolTip.add("Fuel: " + fuelTooltip(itemList, Constants.jetpackFuelSlot)); + NBTTagList itemList = jetpackTag.getTagList(Constants.JETPACK_INVENTORY, NBT.TAG_COMPOUND); + event.toolTip.add("Fuel: " + slotStackTooltip(itemList, Constants.JETPACK_FUEL_SLOT)); - waterTank.readFromNBT(jetpackTag.getCompoundTag(Constants.jetpackWaterTankName)); + waterTank.readFromNBT(jetpackTag.getCompoundTag(Constants.JETPACK_WATER_TANK)); event.toolTip.add("Left Tank: " + tankTooltip(waterTank, true)); - steamTank.readFromNBT(jetpackTag.getCompoundTag(Constants.jetpackSteamTankName)); + steamTank.readFromNBT(jetpackTag.getCompoundTag(Constants.JETPACK_STEAM_TANK)); // special case for steam, have to set displayed fluid name manually String theSteam = steamTank.getFluidAmount() > 0 ? EnumChatFormatting.AQUA + "Steam" : ""; event.toolTip.add("Right Tank: " + tankTooltip(steamTank, false) + theSteam); } else { - event.toolTip.add(holdTheShift); + event.toolTip.add(holdThe(true)); } } else if (event.itemStack.getItem() instanceof ItemCopterPack) { - FluidTank fuelTank = new FluidTank(Constants.copterTankCapacity); + FluidTank fuelTank = new FluidTank(Constants.COPTER_FUEL_CAPACITY); NBTTagCompound compound = event.itemStack.stackTagCompound; - fuelTank.readFromNBT(compound.getCompoundTag(Constants.copterTankName)); + fuelTank.readFromNBT(compound.getCompoundTag(Constants.COPTER_FUEL_TANK)); if (GuiScreen.isShiftKeyDown()) { //TODO add fuel consumption rate, help note with: max height, keys event.toolTip.add("Fuel Tank: " + tankTooltip(fuelTank, true)); } else { - event.toolTip.add(holdTheShift); + event.toolTip.add(holdThe(true)); } } } + private String holdThe(boolean button) + { + return EnumChatFormatting.WHITE + "" + EnumChatFormatting.ITALIC + (button ? "" : ""); + } + private String backpackTooltip(NBTTagList itemList) { int itemCount = itemList.tagCount(); boolean toolSlotU = false; boolean toolSlotL = false; - for (int i = itemCount - 1; i >= 0; --i) + for (int i = itemCount - 1; i >= 0; i--) { int slotAtI = itemList.getCompoundTagAt(i).getInteger("Slot"); - if (slotAtI < Constants.upperTool) + if (slotAtI < Constants.UPPER_TOOL) break; - else if (slotAtI == Constants.upperTool) + else if (slotAtI == Constants.UPPER_TOOL) toolSlotU = true; - else if (slotAtI == Constants.lowerTool) + else if (slotAtI == Constants.LOWER_TOOL) toolSlotL = true; } itemCount -= (toolSlotU ? 1 : 0) + (toolSlotL ? 1 : 0); @@ -135,11 +166,11 @@ private String mainSlotsFormat(int slotsUsed) String sFormatted = String.valueOf(slotsUsed); if (slotsUsed == 0) sFormatted = EnumChatFormatting.DARK_GRAY + sFormatted; - else if (slotsUsed == Constants.inventoryMainSize) + else if (slotsUsed == Constants.INVENTORY_MAIN_SIZE) sFormatted = EnumChatFormatting.WHITE + sFormatted; else sFormatted = EnumChatFormatting.GRAY + sFormatted; - return sFormatted + "/" + Constants.inventoryMainSize; + return sFormatted + "/" + Constants.INVENTORY_MAIN_SIZE; } private String tankTooltip(FluidTank tank, boolean attachName) @@ -181,21 +212,32 @@ else if (fUnlocalized.contains("xpjuice")) return nFormatted + fLocalized; } - private String fuelTooltip(NBTTagList itemList, int slot) + private String switchTooltip(boolean status, boolean doFormat) + { + return doFormat ? formatSwitch(status) : status ? "ON" : "OFF"; + } + + private String formatSwitch(boolean status) + { + String sFormatted = status ? EnumChatFormatting.WHITE + "ON" : EnumChatFormatting.DARK_GRAY + "OFF"; + return "[" + sFormatted + EnumChatFormatting.GRAY + "]"; + } + + private String slotStackTooltip(NBTTagList itemList, int slot) { - int fuelID, fuelMeta, fuelCount = fuelID = fuelMeta = 0; + int slotID, slotMeta, slotCount = slotID = slotMeta = 0; for (int i = 0; i <= slot; i++) { int slotAtI = itemList.getCompoundTagAt(i).getInteger("Slot"); if (slotAtI == slot) { - fuelID = itemList.getCompoundTagAt(i).getInteger("id"); - fuelMeta = itemList.getCompoundTagAt(i).getInteger("Damage"); - fuelCount = itemList.getCompoundTagAt(i).getInteger("Count"); + slotID = itemList.getCompoundTagAt(i).getInteger("id"); + slotMeta = itemList.getCompoundTagAt(i).getInteger("Damage"); + slotCount = itemList.getCompoundTagAt(i).getInteger("Count"); break; } } - return stackDataFormat(fuelID, fuelMeta, fuelCount); + return stackDataFormat(slotID, slotMeta, slotCount); } private String stackDataFormat(int id, int meta, int count) @@ -203,17 +245,17 @@ private String stackDataFormat(int id, int meta, int count) if (count == 0) return emptyFormat(); - String fStackData; + String dFormatted; try { ItemStack fuelStack = new ItemStack(GameData.getItemRegistry().getObjectById(id), 0, meta); - fStackData = fuelStack.getDisplayName() + " (" + stackSizeFormat(fuelStack, count) + ")"; + dFormatted = fuelStack.getDisplayName() + " (" + stackSizeFormat(fuelStack, count) + ")"; } catch (Exception e) { - fStackData = EnumChatFormatting.RED + "Error"; + dFormatted = EnumChatFormatting.RED + "Error"; //e.printStackTrace(); } - return fStackData; + return dFormatted; } private String stackSizeFormat(ItemStack stack, int count) diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModItems.java b/src/main/java/com/darkona/adventurebackpack/init/ModItems.java index 2236394f..1742f7f7 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModItems.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModItems.java @@ -46,7 +46,7 @@ public static void init() GameRegistry.registerItem(adventurePants, "adventurePants"); GameRegistry.registerItem(pistonBoots, "pistonBoots"); GameRegistry.registerItem(copterPack, "copterPack"); - GameRegistry.registerItem(coalJetpack, "CoalJetpack"); //TODO rename to coalJetpack. will affect saved games + GameRegistry.registerItem(coalJetpack, "coalJetpack"); GameRegistry.registerItem(adventureBackpack, "adventureBackpack"); GameRegistry.registerItem(component, "backpackComponent"); GameRegistry.registerItem(hose, "backpackHose"); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 40dffc9d..ece9eb16 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -12,9 +12,15 @@ import net.minecraft.item.crafting.CraftingManager; import net.minecraftforge.fluids.FluidTank; -import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; +import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_LEFT; +import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_RIGHT; +import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_LEFT; +import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_RIGHT; +import static com.darkona.adventurebackpack.common.Constants.LOWER_TOOL; +import static com.darkona.adventurebackpack.common.Constants.UPPER_TOOL; + /** * Created on 12/10/2014 * @@ -33,7 +39,7 @@ public class ContainerBackpack extends Container implements IWearableContainer EntityPlayer player; @SuppressWarnings("FieldCanBeLocal") - private final int + private final int //TODO constants to constants PLAYER_HOT_START = 0, PLAYER_HOT_END = PLAYER_HOT_START + 8, PLAYER_INV_START = PLAYER_HOT_END + 1, @@ -117,20 +123,20 @@ private void makeSlots(InventoryPlayer invPlayer) } //Upper Tool Slot - addSlotToContainer(new SlotTool(inventory, Constants.upperTool, 44, 79));// Upper Tool 16 + addSlotToContainer(new SlotTool(inventory, UPPER_TOOL, 44, 79));// Upper Tool 16 //Lower Tool slot - addSlotToContainer(new SlotTool(inventory, Constants.lowerTool, 44, 97));// Lower Tool 17 + addSlotToContainer(new SlotTool(inventory, LOWER_TOOL, 44, 97));// Lower Tool 17 //Bucket Slots // bucket in left 18 - addSlotToContainer(new SlotFluid(inventory, Constants.bucketInLeft, 6, 7)); + addSlotToContainer(new SlotFluid(inventory, BUCKET_IN_LEFT, 6, 7)); // bucket out left 19 - addSlotToContainer(new SlotFluid(inventory, Constants.bucketOutLeft, 6, 37)); + addSlotToContainer(new SlotFluid(inventory, BUCKET_OUT_LEFT, 6, 37)); // bucket in right 20 - addSlotToContainer(new SlotFluid(inventory, Constants.bucketInRight, 226, 7)); + addSlotToContainer(new SlotFluid(inventory, BUCKET_IN_RIGHT, 226, 7)); // bucket out right 21 - addSlotToContainer(new SlotFluid(inventory, Constants.bucketOutRight, 226, 37)); + addSlotToContainer(new SlotFluid(inventory, BUCKET_OUT_RIGHT, 226, 37)); //Craft Matrix startX = 152; diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java index fb86aeb9..9bbd7a36 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java @@ -6,6 +6,8 @@ import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; +import com.darkona.adventurebackpack.common.Constants; + /** * Created on 15/01/2015 * @@ -60,11 +62,11 @@ private void makeSlots(InventoryPlayer invPlayer) //Bucket Slots // bucket in - addSlotToContainer(new SlotFluid(inventory, InventoryCoalJetpack.BUCKET_IN_SLOT, 30, 22)); + addSlotToContainer(new SlotFluid(inventory, Constants.JETPACK_BUCKET_IN, 30, 22)); // bucket out - addSlotToContainer(new SlotFluid(inventory, InventoryCoalJetpack.BUCKET_OUT_SLOT, 30, 52)); + addSlotToContainer(new SlotFluid(inventory, Constants.JETPACK_BUCKET_OUT, 30, 52)); // fuel - addSlotToContainer(new SlotFuel(inventory, InventoryCoalJetpack.FUEL_SLOT, 77, 64)); + addSlotToContainer(new SlotFuel(inventory, Constants.JETPACK_FUEL_SLOT, 77, 64)); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java index 4f6e15f3..ec8a4efd 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java @@ -122,7 +122,7 @@ public static boolean transferContainerTank(IInventoryTanks inventory, FluidTank public static void consumeItemInInventory(IInventory backpack, Item item) { int i = -1; - for (int j = 0; j < Constants.inventorySize - 7; ++j) + for (int j = 0; j < Constants.INVENTORY_SIZE - 7; ++j) { if (backpack.getStackInSlot(j) != null && backpack.getStackInSlot(j).getItem() == item) { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index 404715d1..38080f53 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -18,6 +18,17 @@ import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; import com.darkona.adventurebackpack.item.ItemAdventureBackpack; +import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_LEFT; +import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_RIGHT; +import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_LEFT; +import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_RIGHT; +import static com.darkona.adventurebackpack.common.Constants.COMPOUND_TAG; +import static com.darkona.adventurebackpack.common.Constants.INVENTORY; +import static com.darkona.adventurebackpack.common.Constants.LEFT_TANK; +import static com.darkona.adventurebackpack.common.Constants.LOWER_TOOL; +import static com.darkona.adventurebackpack.common.Constants.RIGHT_TANK; +import static com.darkona.adventurebackpack.common.Constants.UPPER_TOOL; + /** * Created on 12/10/2014 * @@ -25,31 +36,25 @@ */ public class InventoryBackpack implements IInventoryAdventureBackpack { - private static final String compoundTag = Constants.compoundTag; - - private static final String inventoryName = Constants.inventoryName; - public ItemStack[] inventory = new ItemStack[Constants.inventorySize]; - - private static final String leftTankName = Constants.leftTankName; - private static final String rightTankName = Constants.rightTankName; - private FluidTank leftTank = new FluidTank(Constants.basicTankCapacity); - private FluidTank rightTank = new FluidTank(Constants.basicTankCapacity); + public ItemStack[] inventory = new ItemStack[Constants.INVENTORY_SIZE]; + private FluidTank leftTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); + private FluidTank rightTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); private static final boolean OFF = false; - private static final boolean ON = true; private boolean disableNVision = OFF; private boolean disableCycling = OFF; private ItemStack containerStack; - public ItemStack getContainerStack() + + /*public ItemStack getContainerStack() { return containerStack; } public void setContainerStack(ItemStack containerStack) { this.containerStack = containerStack; - } + }*/ private String colorName = "Standard"; private int lastTime = 0; @@ -59,11 +64,6 @@ public void setContainerStack(ItemStack containerStack) public InventoryBackpack(ItemStack backpack) { containerStack = backpack; - /*if (!backpack.hasTagCompound()) //TODO checkit - { - backpack.stackTagCompound = new NBTTagCompound(); - saveToNBT(backpack.stackTagCompound); - }*/ openInventory(); } @@ -130,15 +130,15 @@ public boolean isSpecial() @Override public void saveTanks(NBTTagCompound compound) { - compound.setTag(rightTankName, rightTank.writeToNBT(new NBTTagCompound())); - compound.setTag(leftTankName, leftTank.writeToNBT(new NBTTagCompound())); + compound.setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); + compound.setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); } @Override public void loadTanks(NBTTagCompound compound) { - leftTank.readFromNBT(compound.getCompoundTag(leftTankName)); - rightTank.readFromNBT(compound.getCompoundTag(rightTankName)); + leftTank.readFromNBT(compound.getCompoundTag(LEFT_TANK)); + rightTank.readFromNBT(compound.getCompoundTag(RIGHT_TANK)); } @Override @@ -226,8 +226,8 @@ public ItemStack decrStackSizeNoSave(int slot, int quantity) @Override public boolean updateTankSlots() { - return InventoryActions.transferContainerTank(this, getLeftTank(), Constants.bucketInLeft) || - InventoryActions.transferContainerTank(this, getRightTank(), Constants.bucketInRight); + return InventoryActions.transferContainerTank(this, getLeftTank(), BUCKET_IN_LEFT) || + InventoryActions.transferContainerTank(this, getRightTank(), BUCKET_IN_RIGHT); } @Override @@ -235,8 +235,8 @@ public void loadFromNBT(NBTTagCompound compound) { if (compound == null) return; //this need for NEI trying to render tile.backpack and comes here w/o nbt - NBTTagCompound backpackTag = compound.getCompoundTag(compoundTag); - NBTTagList items = backpackTag.getTagList(inventoryName, NBT.TAG_COMPOUND); + NBTTagCompound backpackTag = compound.getCompoundTag(COMPOUND_TAG); + NBTTagList items = backpackTag.getTagList(INVENTORY, NBT.TAG_COMPOUND); for (int i = 0; i < items.tagCount(); i++) { NBTTagCompound item = items.getCompoundTagAt(i); @@ -247,8 +247,8 @@ public void loadFromNBT(NBTTagCompound compound) } } - leftTank.readFromNBT(backpackTag.getCompoundTag(leftTankName)); - rightTank.readFromNBT(backpackTag.getCompoundTag(rightTankName)); + leftTank.readFromNBT(backpackTag.getCompoundTag(LEFT_TANK)); + rightTank.readFromNBT(backpackTag.getCompoundTag(RIGHT_TANK)); colorName = backpackTag.getString("colorName"); lastTime = backpackTag.getInteger("lastTime"); special = backpackTag.getBoolean("special"); @@ -273,18 +273,18 @@ public void saveToNBT(NBTTagCompound compound) items.appendTag(item); } } - backpackTag.removeTag(inventoryName); - backpackTag.setTag(inventoryName, items); + backpackTag.removeTag(INVENTORY); + backpackTag.setTag(INVENTORY, items); backpackTag.setString("colorName", colorName); backpackTag.setInteger("lastTime", lastTime); backpackTag.setBoolean("special", BackpackAbilities.hasAbility(colorName)); backpackTag.setTag("extendedProperties", extendedProperties); - backpackTag.setTag(rightTankName, rightTank.writeToNBT(new NBTTagCompound())); - backpackTag.setTag(leftTankName, leftTank.writeToNBT(new NBTTagCompound())); + backpackTag.setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); + backpackTag.setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); backpackTag.setBoolean("disableCycling", disableCycling); backpackTag.setBoolean("disableNVision", disableNVision); - compound.setTag(compoundTag, backpackTag); + compound.setTag(COMPOUND_TAG, backpackTag); } @Override @@ -297,7 +297,7 @@ public FluidTank[] getTanksArray() @Override public ItemStack getStackInSlotOnClosing(int slot) { - if (slot == Constants.bucketInLeft || slot == Constants.bucketInRight || slot == Constants.bucketOutLeft || slot == Constants.bucketOutRight) + if (slot == BUCKET_IN_LEFT || slot == BUCKET_IN_RIGHT || slot == BUCKET_OUT_LEFT || slot == BUCKET_OUT_RIGHT) { return inventory[slot]; } @@ -356,12 +356,12 @@ public boolean isItemValidForSlot(int slot, ItemStack stack) { return false; } - if (slot == Constants.bucketInRight || slot == Constants.bucketInLeft) + if (slot == BUCKET_IN_RIGHT || slot == BUCKET_IN_LEFT) { return FluidContainerRegistry.isContainer(stack); } - return !(slot == Constants.upperTool || slot == Constants.lowerTool) || SlotTool.isValidTool(stack); + return !(slot == UPPER_TOOL || slot == LOWER_TOOL) || SlotTool.isValidTool(stack); } @Override @@ -379,21 +379,21 @@ public ItemStack getStackInSlot(int slot) @Override public void dirtyTanks() { - containerStack.stackTagCompound.getCompoundTag(compoundTag).setTag(leftTankName, leftTank.writeToNBT(new NBTTagCompound())); - containerStack.stackTagCompound.getCompoundTag(compoundTag).setTag(rightTankName, rightTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); } @Override public void dirtyTime() { - containerStack.stackTagCompound.getCompoundTag(compoundTag).setInteger("lastTime", lastTime); + containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).setInteger("lastTime", lastTime); } @Override public void dirtyExtended() { - containerStack.stackTagCompound.getCompoundTag(compoundTag).removeTag("extendedProperties"); - containerStack.stackTagCompound.getCompoundTag(compoundTag).setTag("extendedProperties", extendedProperties); + containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).removeTag("extendedProperties"); + containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).setTag("extendedProperties", extendedProperties); } @Override @@ -415,8 +415,8 @@ public void dirtyInventory() items.appendTag(item); } } - containerStack.stackTagCompound.getCompoundTag(compoundTag).removeTag(inventoryName); - containerStack.stackTagCompound.getCompoundTag(compoundTag).setTag(inventoryName, items); + containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).removeTag(INVENTORY); + containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).setTag(INVENTORY, items); } public boolean hasBlock(Block block) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index 8681f04d..419a18f2 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -13,6 +13,13 @@ import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.util.FluidUtils; +import static com.darkona.adventurebackpack.common.Constants.JETPACK_BUCKET_IN; +import static com.darkona.adventurebackpack.common.Constants.JETPACK_COMPOUND_TAG; +import static com.darkona.adventurebackpack.common.Constants.JETPACK_FUEL_SLOT; +import static com.darkona.adventurebackpack.common.Constants.JETPACK_INVENTORY; +import static com.darkona.adventurebackpack.common.Constants.JETPACK_STEAM_TANK; +import static com.darkona.adventurebackpack.common.Constants.JETPACK_WATER_TANK; + /** * Created on 15/01/2015 * @@ -20,15 +27,10 @@ */ public class InventoryCoalJetpack implements IInventoryTanks { - private static final String compoundTag = Constants.jetpackCompoundTag; - - private static final String inventoryName = Constants.jetpackInventoryName; - private ItemStack[] inventory = new ItemStack[Constants.jetpackInventorySize]; - private static final String waterTankName = Constants.jetpackWaterTankName; - private static final String steamTankName = Constants.jetpackSteamTankName; - private FluidTank waterTank = new FluidTank(Constants.jetpackWaterTankCapacity); - private FluidTank steamTank = new FluidTank(Constants.jetpackSteamTankCapacity); + private ItemStack[] inventory = new ItemStack[Constants.JETPACK_INVENTORY_SIZE]; + private FluidTank waterTank = new FluidTank(Constants.JETPACK_WATER_CAPACITY); + private FluidTank steamTank = new FluidTank(Constants.JETPACK_STEAM_CAPACITY); private static final boolean OFF = false; private static final boolean ON = true; @@ -44,19 +46,11 @@ public class InventoryCoalJetpack implements IInventoryTanks public int currentItemBurnTime = 0; public static final int MAX_TEMPERATURE = 200; - public static final int BUCKET_IN_SLOT = 0; - public static final int BUCKET_OUT_SLOT = 1; - public static final int FUEL_SLOT = 2; private int coolTicks = 5000; public InventoryCoalJetpack(final ItemStack jetpack) { containerStack = jetpack; - /*if (!containerStack.hasTagCompound()) //TODO checkit - { - containerStack.stackTagCompound = new NBTTagCompound(); - closeInventory(); - }*/ openInventory(); } @@ -79,9 +73,9 @@ public boolean updateTankSlots() @Override public void loadFromNBT(NBTTagCompound compound) { - NBTTagCompound jetpackTag = compound.getCompoundTag(compoundTag); - waterTank.readFromNBT(jetpackTag.getCompoundTag(waterTankName)); - steamTank.readFromNBT(jetpackTag.getCompoundTag(steamTankName)); + NBTTagCompound jetpackTag = compound.getCompoundTag(JETPACK_COMPOUND_TAG); + waterTank.readFromNBT(jetpackTag.getCompoundTag(JETPACK_WATER_TANK)); + steamTank.readFromNBT(jetpackTag.getCompoundTag(JETPACK_STEAM_TANK)); temperature = jetpackTag.getInteger("temperature"); status = jetpackTag.getBoolean("status"); burnTicks = jetpackTag.getInteger("burnTicks"); @@ -91,7 +85,7 @@ public void loadFromNBT(NBTTagCompound compound) boiling = jetpackTag.getBoolean("boiling"); leaking = jetpackTag.getBoolean("leaking"); currentItemBurnTime = jetpackTag.getInteger("currentBurn"); - NBTTagList items = jetpackTag.getTagList(inventoryName, NBT.TAG_COMPOUND); + NBTTagList items = jetpackTag.getTagList(JETPACK_INVENTORY, NBT.TAG_COMPOUND); for (int i = 0; i < items.tagCount(); i++) { NBTTagCompound item = items.getCompoundTagAt(i); @@ -106,9 +100,9 @@ public void loadFromNBT(NBTTagCompound compound) @Override public void saveToNBT(NBTTagCompound compound) { - NBTTagCompound jetpackTag = compound.getCompoundTag(compoundTag); - jetpackTag.setTag(waterTankName, waterTank.writeToNBT(new NBTTagCompound())); - jetpackTag.setTag(steamTankName, steamTank.writeToNBT(new NBTTagCompound())); + NBTTagCompound jetpackTag = compound.getCompoundTag(JETPACK_COMPOUND_TAG); + jetpackTag.setTag(JETPACK_WATER_TANK, waterTank.writeToNBT(new NBTTagCompound())); + jetpackTag.setTag(JETPACK_STEAM_TANK, steamTank.writeToNBT(new NBTTagCompound())); jetpackTag.setInteger("temperature", temperature); jetpackTag.setBoolean("status", status); jetpackTag.setInteger("burnTicks", burnTicks); @@ -130,8 +124,8 @@ public void saveToNBT(NBTTagCompound compound) items.appendTag(item); } } - jetpackTag.setTag(inventoryName, items); - compound.setTag(compoundTag, jetpackTag); + jetpackTag.setTag(JETPACK_INVENTORY, items); + compound.setTag(JETPACK_COMPOUND_TAG, jetpackTag); } @Override @@ -156,19 +150,19 @@ public void dirtyInventory() items.appendTag(item); } } - containerStack.stackTagCompound.getCompoundTag(compoundTag).setTag(inventoryName, items); + containerStack.stackTagCompound.getCompoundTag(JETPACK_COMPOUND_TAG).setTag(JETPACK_INVENTORY, items); } @Override public void dirtyTanks() { - containerStack.stackTagCompound.getCompoundTag(compoundTag).setTag(waterTankName, waterTank.writeToNBT(new NBTTagCompound())); - containerStack.stackTagCompound.getCompoundTag(compoundTag).setTag(steamTankName, steamTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag(JETPACK_COMPOUND_TAG).setTag(JETPACK_WATER_TANK, waterTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag(JETPACK_COMPOUND_TAG).setTag(JETPACK_STEAM_TANK, steamTank.writeToNBT(new NBTTagCompound())); } public void dirtyBoiler() { - NBTTagCompound jetpackTag = containerStack.stackTagCompound.getCompoundTag(compoundTag); + NBTTagCompound jetpackTag = containerStack.stackTagCompound.getCompoundTag(JETPACK_COMPOUND_TAG); jetpackTag.setBoolean("boiling", boiling); jetpackTag.setBoolean("leaking", leaking); jetpackTag.setInteger("temperature", temperature); @@ -180,13 +174,13 @@ public void dirtyBoiler() public int consumeFuel() { int result = 0; - if (isFuel(inventory[FUEL_SLOT])) + if (isFuel(inventory[JETPACK_FUEL_SLOT])) { - result = TileEntityFurnace.getItemBurnTime(inventory[FUEL_SLOT]); - --inventory[FUEL_SLOT].stackSize; - if (inventory[FUEL_SLOT].stackSize == 0) + result = TileEntityFurnace.getItemBurnTime(inventory[JETPACK_FUEL_SLOT]); + --inventory[JETPACK_FUEL_SLOT].stackSize; + if (inventory[JETPACK_FUEL_SLOT].stackSize == 0) { - inventory[FUEL_SLOT] = inventory[FUEL_SLOT].getItem().getContainerItem(inventory[FUEL_SLOT]); + inventory[JETPACK_FUEL_SLOT] = inventory[JETPACK_FUEL_SLOT].getItem().getContainerItem(inventory[JETPACK_FUEL_SLOT]); } dirtyInventory(); } @@ -246,7 +240,7 @@ public ItemStack decrStackSize(int slot, int quantity) { if (itemstack.stackSize <= quantity) { - if (slot == FUEL_SLOT) + if (slot == JETPACK_FUEL_SLOT) { setInventorySlotContents(slot, itemstack.getItem().getContainerItem(itemstack)); } else @@ -275,7 +269,7 @@ public void setInventorySlotContents(int slot, ItemStack stack) { stack.stackSize = getInventoryStackLimit(); } - if (slot < FUEL_SLOT) onInventoryChanged(); + if (slot < JETPACK_FUEL_SLOT) onInventoryChanged(); dirtyInventory(); } @@ -344,9 +338,9 @@ public void closeInventory() @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { - if (slot == BUCKET_IN_SLOT) + if (slot == JETPACK_BUCKET_IN) return SlotFluid.isContainer(stack) && FluidUtils.isContainerForFluid(stack, FluidRegistry.WATER); - if (slot == FUEL_SLOT) + if (slot == JETPACK_FUEL_SLOT) return TileEntityFurnace.isItemFuel(stack); return false; } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java index 2f5ceb64..708e5998 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java @@ -11,6 +11,8 @@ import com.darkona.adventurebackpack.reference.GeneralReference; import com.darkona.adventurebackpack.util.FluidUtils; +import static com.darkona.adventurebackpack.common.Constants.COPTER_FUEL_TANK; + /** * Created on 02/01/2015 * @@ -18,8 +20,7 @@ */ public class InventoryCopterPack implements IInventoryTanks { - private static final String fuelTankName = Constants.copterTankName; - public FluidTank fuelTank = new FluidTank(Constants.copterTankCapacity); + public FluidTank fuelTank = new FluidTank(Constants.COPTER_FUEL_CAPACITY); private ItemStack containerStack; public int tickCounter = 0; @@ -30,11 +31,6 @@ public InventoryCopterPack(ItemStack copterPack) { status = ItemCopterPack.OFF_MODE; containerStack = copterPack; - /*if (!copterPack.hasTagCompound()) //TODO checkit - { - copterPack.stackTagCompound = new NBTTagCompound(); - saveToNBT(copterPack.stackTagCompound); - }*/ openInventory(); } @@ -130,7 +126,7 @@ public int getInventoryStackLimit() @Override public void markDirty() { - containerStack.stackTagCompound.setTag(fuelTankName, fuelTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.setTag(COPTER_FUEL_TANK, fuelTank.writeToNBT(new NBTTagCompound())); containerStack.stackTagCompound.setByte("status", status); containerStack.stackTagCompound.setInteger("tickCounter", this.tickCounter); } @@ -138,7 +134,7 @@ public void markDirty() @Override public void dirtyTanks() { - containerStack.stackTagCompound.setTag(fuelTankName, fuelTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.setTag(COPTER_FUEL_TANK, fuelTank.writeToNBT(new NBTTagCompound())); } @Override @@ -172,7 +168,7 @@ public void closeInventory() public void closeInventoryNoStatus() { - containerStack.stackTagCompound.setTag(fuelTankName, this.fuelTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.setTag(COPTER_FUEL_TANK, this.fuelTank.writeToNBT(new NBTTagCompound())); containerStack.stackTagCompound.setInteger("tickCounter", this.tickCounter); } @@ -246,7 +242,7 @@ public boolean updateTankSlots() @Override public void loadFromNBT(NBTTagCompound compound) { - fuelTank.readFromNBT(compound.getCompoundTag(fuelTankName)); + fuelTank.readFromNBT(compound.getCompoundTag(COPTER_FUEL_TANK)); status = compound.getByte("status"); tickCounter = compound.getInteger("tickCounter"); } @@ -254,7 +250,7 @@ public void loadFromNBT(NBTTagCompound compound) @Override public void saveToNBT(NBTTagCompound compound) { - compound.setTag(fuelTankName, fuelTank.writeToNBT(new NBTTagCompound())); + compound.setTag(COPTER_FUEL_TANK, fuelTank.writeToNBT(new NBTTagCompound())); compound.setByte("status", status); compound.setInteger("tickCounter", this.tickCounter); } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index ca14d39a..8c37b7aa 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -44,7 +44,7 @@ public class ItemCoalJetpack extends ItemAB implements IBackWearableItem public ItemCoalJetpack() { super(); - setUnlocalizedName("CoalJetpack"); + setUnlocalizedName("coalJetpack"); setFull3D(); setMaxStackSize(1); } @@ -58,10 +58,10 @@ public void getSubItems(Item item, CreativeTabs tab, List list) iStack.setTagCompound(compound); NBTTagCompound jetpackTag = new NBTTagCompound(); - //jetpackTag.setTag(Constants.jetpackWaterTankName, new FluidTank(Constants.jetpackWaterTankCapacity).writeToNBT(new NBTTagCompound())); - //jetpackTag.setTag(Constants.jetpackSteamTankName, new FluidTank(Constants.jetpackSteamTankCapacity).writeToNBT(new NBTTagCompound())); - //jetpackTag.setTag(Constants.jetpackInventoryName, new NBTTagList()); - compound.setTag(Constants.jetpackCompoundTag, jetpackTag); + //jetpackTag.setTag(Constants.JETPACK_WATER_TANK, new FluidTank(Constants.JETPACK_WATER_CAPACITY).writeToNBT(new NBTTagCompound())); + //jetpackTag.setTag(Constants.JETPACK_STEAM_TANK, new FluidTank(Constants.JETPACK_STEAM_CAPACITY).writeToNBT(new NBTTagCompound())); + //jetpackTag.setTag(Constants.JETPACK_INVENTORY, new NBTTagList()); + compound.setTag(Constants.JETPACK_COMPOUND_TAG, jetpackTag); list.add(iStack); } @@ -334,7 +334,7 @@ public ModelBiped getWearableModel(ItemStack wearable) public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) { String modelTexture; - modelTexture = Resources.modelTextures("CoalJetpack").toString(); + modelTexture = Resources.modelTextures("coalJetpack").toString(); return modelTexture; } @@ -343,6 +343,6 @@ public String getArmorTexture(ItemStack stack, Entity entity, int slot, String t @SideOnly(Side.CLIENT) public ResourceLocation getWearableTexture(ItemStack wearable) { - return Resources.modelTextures("CoalJetpack"); + return Resources.modelTextures("coalJetpack"); } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java index 027f0d77..70585731 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java @@ -60,7 +60,7 @@ public void getSubItems(Item item, CreativeTabs tab, List list) ItemStack iStack = new ItemStack(item, 1, 0); NBTTagCompound compound = new NBTTagCompound(); iStack.setTagCompound(compound); - compound.setTag(Constants.copterTankName, new FluidTank(Constants.copterTankCapacity).writeToNBT(new NBTTagCompound())); + compound.setTag(Constants.COPTER_FUEL_TANK, new FluidTank(Constants.COPTER_FUEL_CAPACITY).writeToNBT(new NBTTagCompound())); list.add(iStack); } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java b/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java index 00b1b615..15860464 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java @@ -26,7 +26,6 @@ import cpw.mods.fml.relauncher.SideOnly; import com.darkona.adventurebackpack.CreativeTabAB; -import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.common.ServerActions; import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; import com.darkona.adventurebackpack.init.ModFluids; @@ -35,6 +34,8 @@ import com.darkona.adventurebackpack.util.Utils; import com.darkona.adventurebackpack.util.Wearing; +import static com.darkona.adventurebackpack.common.Constants.BUCKET; + /** * Created by Darkona on 12/10/2014. */ @@ -204,7 +205,7 @@ public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int { case HOSE_SUCK_MODE: - accepted = tank.fill(exTank.drain(ForgeDirection.UNKNOWN, Constants.bucket, false), false); + accepted = tank.fill(exTank.drain(ForgeDirection.UNKNOWN, BUCKET, false), false); if (accepted > 0) { tank.fill(exTank.drain(ForgeDirection.UNKNOWN, accepted, true), true); @@ -216,7 +217,7 @@ public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int case HOSE_SPILL_MODE: - accepted = exTank.fill(ForgeDirection.UNKNOWN, tank.drain(Constants.bucket, false), false); + accepted = exTank.fill(ForgeDirection.UNKNOWN, tank.drain(BUCKET, false), false); if (accepted > 0) { exTank.fill(ForgeDirection.UNKNOWN, tank.drain(accepted, true), true); @@ -273,7 +274,7 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla Fluid fluidBlock = FluidRegistry.lookupFluidForBlock(world.getBlock(mop.blockX, mop.blockY, mop.blockZ)); if (fluidBlock != null) { - FluidStack fluid = new FluidStack(fluidBlock, Constants.bucket); + FluidStack fluid = new FluidStack(fluidBlock, BUCKET); if (tank.getFluid() == null || tank.getFluid().containsFluid(fluid)) { int accepted = tank.fill(fluid, false); @@ -335,7 +336,7 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla /* IN HELL DIMENSION No, I won't let you put water in the nether. You freak*/ if (world.provider.isHellWorld && fluid.getFluid() == FluidRegistry.WATER) { - tank.drain(Constants.bucket, true); + tank.drain(BUCKET, true); world.playSoundEffect(x + 0.5F, y + 0.5F, z + 0.5F, "random.fizz", 0.5F, 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F); for (int l = 0; l < 12; ++l) { @@ -344,8 +345,8 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla } else { /* NOT IN HELL DIMENSION. */ - FluidStack drainedFluid = tank.drain(Constants.bucket, false); - if (drainedFluid != null && drainedFluid.amount >= Constants.bucket) + FluidStack drainedFluid = tank.drain(BUCKET, false); + if (drainedFluid != null && drainedFluid.amount >= BUCKET) { if (!world.isRemote && flag && !material.isLiquid()) { @@ -356,17 +357,17 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla { if (world.setBlock(x, y, z, Blocks.flowing_water, 0, 3)) { - tank.drain(Constants.bucket, true); + tank.drain(BUCKET, true); } } else if (fluid.getFluid().getBlock() == Blocks.lava) { if (world.setBlock(x, y, z, Blocks.flowing_lava, 0, 3)) { - tank.drain(Constants.bucket, true); + tank.drain(BUCKET, true); } } else if (world.setBlock(x, y, z, fluid.getFluid().getBlock(), 0, 3)) { - tank.drain(Constants.bucket, true); + tank.drain(BUCKET, true); } } } @@ -377,7 +378,7 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla } break; case HOSE_DRINK_MODE: - if (tank.getFluid() != null && tank.getFluidAmount() >= Constants.bucket) + if (tank.getFluid() != null && tank.getFluidAmount() >= BUCKET) { if (FluidEffectRegistry.hasFluidEffect(tank.getFluid().getFluid())) { @@ -424,7 +425,7 @@ public ItemStack onEaten(ItemStack hose, World world, EntityPlayer player) { if (ServerActions.setFluidEffect(world, player, backpackTank)) { - backpackTank.drain(Constants.bucket, true); + backpackTank.drain(BUCKET, true); inv.dirtyTanks(); } } @@ -449,7 +450,7 @@ public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, En { FluidTank tank = getHoseTank(stack) == 0 ? inventory.getLeftTank() : inventory.getRightTank(); - tank.fill(new FluidStack(ModFluids.milk, Constants.bucket), true); + tank.fill(new FluidStack(ModFluids.milk, BUCKET), true); inventory.dirtyTanks(); ((EntityCow) entity).faceEntity(player, 0.1f, 0.1f); @@ -458,7 +459,7 @@ public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, En if (entity instanceof EntityMooshroom) { FluidTank tank = getHoseTank(stack) == 0 ? inventory.getLeftTank() : inventory.getRightTank(); - tank.fill(new FluidStack(ModFluids.mushroomStew, Constants.bucket), true); + tank.fill(new FluidStack(ModFluids.mushroomStew, BUCKET), true); inventory.dirtyTanks(); ((EntityMooshroom) entity).faceEntity(player, 0.1f, 0.1f); diff --git a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java index 727b5431..eae685d5 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java @@ -54,9 +54,9 @@ public static void unequipWearable(EntityPlayer player) public static NBTTagCompound getBackpackTag(ItemStack backpack) { - if (backpack.hasTagCompound() && backpack.stackTagCompound.hasKey(Constants.compoundTag)) + if (backpack.hasTagCompound() && backpack.stackTagCompound.hasKey(Constants.COMPOUND_TAG)) { - return backpack.stackTagCompound.getCompoundTag(Constants.compoundTag); + return backpack.stackTagCompound.getCompoundTag(Constants.COMPOUND_TAG); } return null; } @@ -67,7 +67,7 @@ public static void setBackpackTag(ItemStack stack, NBTTagCompound compound) { stack.stackTagCompound = new NBTTagCompound(); } - stack.stackTagCompound.setTag(Constants.compoundTag, compound); + stack.stackTagCompound.setTag(Constants.COMPOUND_TAG, compound); } private static class DelayUnequipTask extends TimerTask diff --git a/src/main/resources/assets/adventurebackpack/lang/en_US.lang b/src/main/resources/assets/adventurebackpack/lang/en_US.lang index c7b60cf3..ab6bff24 100644 --- a/src/main/resources/assets/adventurebackpack/lang/en_US.lang +++ b/src/main/resources/assets/adventurebackpack/lang/en_US.lang @@ -33,7 +33,7 @@ item.adventurebackpack:hoseUseless.name=Hose: Useless / No Backpack ## Wearables item.adventurebackpack:adventureBackpack.name=Adventure Backpack item.adventurebackpack:copterPack.name=Copter Pack -item.adventurebackpack:CoalJetpack.name=Coal Jetpack +item.adventurebackpack:coalJetpack.name=Coal Jetpack ## Armor item.adventurebackpack:adventureHat.name=Adventurer's Fedora diff --git a/src/main/resources/assets/adventurebackpack/textures/items/CoalJetpack.png b/src/main/resources/assets/adventurebackpack/textures/items/CoalJetpack.png deleted file mode 100644 index 25344f1b675fd5f0a6f2e05e0c7de4be89721e4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE({MC7BFzInXLQ-6yYrJ zh%9Dc;1&j9Muu5)B!GhKC7!;n?DrY@`2?B%ehcaX3O(_3aSX9Iotz-?sX=h&U@a;l#89N97H8=nO2^L92 zK~!ko)tOst9Mu`ee{rPu9XB|Uv2aVE_ES^|C8%u_0+Ff)uw0?^rHU#A z^{En~y!4Uw!4eNhP)jYSc}SrIDo~q>Sh%>6LP9N!9UJ1{Z0tBTUhj2gXXf-_J(Jyy z9lSsY{H4*JIdjh0Ip6tz*O34ciG*MSPd)V%mFNsE0nk(*CYd#;3+k+_XV|+Z#>sz8 z^Ui-}q{=yuJo1Qe90veNk`O{*+cp5Isv^rWLI_@e{q z64`8)U@(Yn+hs5LWl&R7LvL>{0J1EjC`#Gp4a3-S?$p#&@h||40*Fk8Kp?>G&ITk& z!nSR1G55N%m?~T3(G!2-(G$h?i?7AXo>`XVZCclL^7%ZLWl>jG2S7TVMwaETBmmPi zaara#4whwAy@m>KZ6!;**^dx{#=06lTS|L0DW%Mg<`D0m&(RgDWBh*$WV6|_#SR@h zBvPpqs;c7i`A`&vY&MIks+gupAP~TD97@L=I&?^6vsnUx0B^kUMpf#NN~Or>^PUjO zHm0g&_l990gz(0u)9IT6uq{(O=MZ-!pHny zj_C!PBR|^3sdwk-?QZl8i7d-#nuZX9-p&R-`sBtf3gup8i}UBt7gfN% zeoROdkef$6fy~a%3V>a^c6og@KWh@|&H$2MMhZ);{^rxWF2I3-0ajO6(RH0fB0+t9 zJ?-u70L;wH(A3m~qA1w5O*Wflb#;}7h6ZM5XN$qy;)VS}ZVVzd)*+l7Z-PP^T}kAL?S^v9w(hn)85|B;NTz~9Ub`ne%jjF zSX*18tE-E6JdWS*XYbyB(h_+qbs1CfvSAByz{q!7ZlD&dy@nHYZM;VE_L8q|<3H#kVXAAq3;& znf{#7+nCR*0VQy{?+qT)Ned^SyEd};@^`*!#`)^M@Byo{!4NRmV(65+`wpY*(wTWfsjrI(0Cqg=gu6-km> z#bRGb^HR6d)6=tM`%bUn;{N;ZClm^yswzj09Ko_I-hJ;qE&~0)MPO)X2!PSiQ4~d? zudk1{-+p^*6{y7V=;qLB Date: Wed, 29 Mar 2017 18:56:45 +0700 Subject: [PATCH 379/462] Renamed CoalJetpack (for the glory of order!) --- .../items/{steamJetpack.png => coalJetpack.png} | Bin .../models/{steamJetpack.png => coalJetpack.png} | Bin 2 files changed, 0 insertions(+), 0 deletions(-) rename src/main/resources/assets/adventurebackpack/textures/items/{steamJetpack.png => coalJetpack.png} (100%) rename src/main/resources/assets/adventurebackpack/textures/models/{steamJetpack.png => coalJetpack.png} (100%) diff --git a/src/main/resources/assets/adventurebackpack/textures/items/steamJetpack.png b/src/main/resources/assets/adventurebackpack/textures/items/coalJetpack.png similarity index 100% rename from src/main/resources/assets/adventurebackpack/textures/items/steamJetpack.png rename to src/main/resources/assets/adventurebackpack/textures/items/coalJetpack.png diff --git a/src/main/resources/assets/adventurebackpack/textures/models/steamJetpack.png b/src/main/resources/assets/adventurebackpack/textures/models/coalJetpack.png similarity index 100% rename from src/main/resources/assets/adventurebackpack/textures/models/steamJetpack.png rename to src/main/resources/assets/adventurebackpack/textures/models/coalJetpack.png From 8df3e2dae19c45848c528f16dc24fad664777fb4 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 30 Mar 2017 11:22:52 +0700 Subject: [PATCH 380/462] todos --- .../block/TileAdventureBackpack.java | 14 +++++++++----- .../handlers/TooltipEventHandler.java | 4 ++-- .../inventory/ContainerBackpack.java | 2 +- .../inventory/ContainerCopter.java | 2 +- .../inventory/ContainerJetpack.java | 2 +- 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 11a1fe71..2337a9ee 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -29,6 +29,10 @@ import com.darkona.adventurebackpack.util.BackpackUtils; import com.darkona.adventurebackpack.util.Wearing; +import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_LEFT; +import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_RIGHT; +import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_LEFT; +import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_RIGHT; import static com.darkona.adventurebackpack.common.Constants.COMPOUND_TAG; import static com.darkona.adventurebackpack.common.Constants.INVENTORY; import static com.darkona.adventurebackpack.common.Constants.LEFT_TANK; @@ -341,7 +345,7 @@ public void closeInventory() } @Override - public boolean isItemValidForSlot(int slot, ItemStack stack) + public boolean isItemValidForSlot(int slot, ItemStack stack) //TODO what is it for? what do slot numbers means? { if (stack.getItem() instanceof ItemAdventureBackpack || Block.getBlockFromItem(stack.getItem()) instanceof BlockAdventureBackpack) { @@ -377,7 +381,7 @@ public ItemStack decrStackSize(int i, int count) @Override public ItemStack getStackInSlotOnClosing(int slot) { - if (slot == Constants.BUCKET_IN_LEFT || slot == Constants.BUCKET_IN_RIGHT || slot == Constants.BUCKET_OUT_LEFT || slot == Constants.BUCKET_OUT_RIGHT) + if (slot == BUCKET_IN_LEFT || slot == BUCKET_IN_RIGHT || slot == BUCKET_OUT_LEFT || slot == BUCKET_OUT_RIGHT) { return inventory[slot]; } @@ -401,12 +405,12 @@ public void markDirty() { for (int i = 0; i < inventory.length; i++) { - if (i == Constants.BUCKET_IN_LEFT && inventory[i] != null) + if (i == BUCKET_IN_LEFT && inventory[i] != null) { updateTankSlots(getLeftTank(), i); } - if (i == Constants.BUCKET_IN_RIGHT && inventory[i] != null) + if (i == BUCKET_IN_RIGHT && inventory[i] != null) { updateTankSlots(getRightTank(), i); } @@ -542,7 +546,7 @@ public ItemStack getParentItemStack() return null; } - private ItemStack transferToItemStack(ItemStack stack) //TODO usage? + private ItemStack transferToItemStack(ItemStack stack) { NBTTagCompound compound = new NBTTagCompound(); saveToNBT(compound); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java index 5665d3ad..cc92a766 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java @@ -214,10 +214,10 @@ else if (fUnlocalized.contains("xpjuice")) private String switchTooltip(boolean status, boolean doFormat) { - return doFormat ? formatSwitch(status) : status ? "ON" : "OFF"; + return doFormat ? switchFormat(status) : status ? "ON" : "OFF"; } - private String formatSwitch(boolean status) + private String switchFormat(boolean status) { String sFormatted = status ? EnumChatFormatting.WHITE + "ON" : EnumChatFormatting.DARK_GRAY + "OFF"; return "[" + sFormatted + EnumChatFormatting.GRAY + "]"; diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index ece9eb16..4944c74c 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -336,7 +336,7 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) int maxAmount = leftTank.getCapacity(); int leftAmount = leftTank.getFluidAmount(); int rightAmount = rightTank.getFluidAmount(); - String leftFluid = SlotFluid.getFluidName(leftTank); + String leftFluid = SlotFluid.getFluidName(leftTank); //TODO name->id String rightFluid = SlotFluid.getFluidName(rightTank); int containerCapacity = SlotFluid.getCapacity(stack); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java index f4e5274a..cb464a7d 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java @@ -15,7 +15,7 @@ public class ContainerCopter extends Container implements IWearableContainer { InventoryCopterPack inventory; EntityPlayer player; - private final int PLAYER_HOT_START = 0; + private final int PLAYER_HOT_START = 0; //TODO constants to constants private final int PLAYER_HOT_END = PLAYER_HOT_START + 8; private final int PLAYER_INV_START = PLAYER_HOT_END + 1; @SuppressWarnings("FieldCanBeLocal") diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java index 9bbd7a36..e10d7a1a 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java @@ -17,7 +17,7 @@ public class ContainerJetpack extends Container implements IWearableContainer { InventoryCoalJetpack inventory; EntityPlayer player; - private final int PLAYER_HOT_START = 0; + private final int PLAYER_HOT_START = 0; //TODO constants to constants private final int PLAYER_HOT_END = PLAYER_HOT_START + 8; private final int PLAYER_INV_START = PLAYER_HOT_END + 1; @SuppressWarnings("FieldCanBeLocal") From 0b9d5fa56feaa9c53be0cfb98d0f6ee86f3d8a6a Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Fri, 31 Mar 2017 10:36:40 +0700 Subject: [PATCH 381/462] Fixed Automation logic for tile.backpack --- build.gradle | 5 ----- .../block/TileAdventureBackpack.java | 18 +++++++----------- .../adventurebackpack/common/Constants.java | 4 ++-- .../handlers/TooltipEventHandler.java | 7 +++---- .../inventory/InventoryActions.java | 6 +++--- .../inventory/InventoryBackpack.java | 16 +--------------- .../inventory/InventoryCoalJetpack.java | 5 ----- 7 files changed, 16 insertions(+), 45 deletions(-) diff --git a/build.gradle b/build.gradle index 54034ae8..aedd6a79 100644 --- a/build.gradle +++ b/build.gradle @@ -53,11 +53,6 @@ processResources { } } -task sourceJar(type: Jar) { - from sourceSets.main.allSource - classifier = 'sources' -} - if (JavaVersion.current().isJava8Compatible()) { allprojects { tasks.withType(Javadoc) { diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 2337a9ee..53e9eaf5 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -15,7 +15,6 @@ import net.minecraft.world.EnumSkyBlock; import net.minecraft.world.World; import net.minecraftforge.common.util.Constants.NBT; -import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidTank; import com.darkona.adventurebackpack.common.BackpackAbilities; @@ -24,8 +23,8 @@ import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.inventory.InventoryActions; +import com.darkona.adventurebackpack.inventory.SlotBackpack; import com.darkona.adventurebackpack.inventory.SlotTool; -import com.darkona.adventurebackpack.item.ItemAdventureBackpack; import com.darkona.adventurebackpack.util.BackpackUtils; import com.darkona.adventurebackpack.util.Wearing; @@ -36,7 +35,9 @@ import static com.darkona.adventurebackpack.common.Constants.COMPOUND_TAG; import static com.darkona.adventurebackpack.common.Constants.INVENTORY; import static com.darkona.adventurebackpack.common.Constants.LEFT_TANK; +import static com.darkona.adventurebackpack.common.Constants.LOWER_TOOL; import static com.darkona.adventurebackpack.common.Constants.RIGHT_TANK; +import static com.darkona.adventurebackpack.common.Constants.UPPER_TOOL; /** * Created by Darkona on 12/10/2014. @@ -345,18 +346,13 @@ public void closeInventory() } @Override - public boolean isItemValidForSlot(int slot, ItemStack stack) //TODO what is it for? what do slot numbers means? + public boolean isItemValidForSlot(int slot, ItemStack stack) { - if (stack.getItem() instanceof ItemAdventureBackpack || Block.getBlockFromItem(stack.getItem()) instanceof BlockAdventureBackpack) + if (slot <= Constants.END_OF_INVENTORY) { - return false; + return SlotBackpack.isValidItem(stack); } - if (slot == 6 || slot == 8) - { - return FluidContainerRegistry.isContainer(stack); - } - - return !(slot == 0 || slot == 3) || SlotTool.isValidTool(stack); + return (slot == UPPER_TOOL || slot == LOWER_TOOL) && SlotTool.isValidTool(stack); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/common/Constants.java b/src/main/java/com/darkona/adventurebackpack/common/Constants.java index 806f9dac..dc846234 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/Constants.java +++ b/src/main/java/com/darkona/adventurebackpack/common/Constants.java @@ -16,8 +16,8 @@ public class Constants public static final String INVENTORY = "ABPItems"; // Inventory Special Slots - private static final int END_OF_INVENTORY = INVENTORY_SIZE - 7; - public static final int INVENTORY_MAIN_SIZE = END_OF_INVENTORY + 1; + public static final int END_OF_INVENTORY = INVENTORY_SIZE - 7; // 0 included + public static final int INVENTORY_MAIN_SIZE = END_OF_INVENTORY + 1; // 0 excluded public static final int UPPER_TOOL = END_OF_INVENTORY + 1; public static final int LOWER_TOOL = UPPER_TOOL + 1; diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java index cc92a766..38e0da51 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java @@ -248,8 +248,8 @@ private String stackDataFormat(int id, int meta, int count) String dFormatted; try { - ItemStack fuelStack = new ItemStack(GameData.getItemRegistry().getObjectById(id), 0, meta); - dFormatted = fuelStack.getDisplayName() + " (" + stackSizeFormat(fuelStack, count) + ")"; + ItemStack iStack = new ItemStack(GameData.getItemRegistry().getObjectById(id), 0, meta); + dFormatted = iStack.getDisplayName() + " (" + stackSizeFormat(iStack, count) + ")"; } catch (Exception e) { dFormatted = EnumChatFormatting.RED + "Error"; @@ -260,8 +260,7 @@ private String stackDataFormat(int id, int meta, int count) private String stackSizeFormat(ItemStack stack, int count) { - String sCount = String.valueOf(count); - return stack.getMaxStackSize() == count ? EnumChatFormatting.WHITE + sCount + EnumChatFormatting.GRAY : sCount; + return stack.getMaxStackSize() == count ? EnumChatFormatting.WHITE + "" + count + EnumChatFormatting.GRAY : "" + count; } private String emptyFormat() diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java index ec8a4efd..7d133464 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java @@ -122,7 +122,7 @@ public static boolean transferContainerTank(IInventoryTanks inventory, FluidTank public static void consumeItemInInventory(IInventory backpack, Item item) { int i = -1; - for (int j = 0; j < Constants.INVENTORY_SIZE - 7; ++j) + for (int j = 0; j < Constants.END_OF_INVENTORY; ++j) { if (backpack.getStackInSlot(j) != null && backpack.getStackInSlot(j).getItem() == item) { @@ -155,8 +155,8 @@ public static boolean hasBlockItem(IInventoryAdventureBackpack backpack, Block i ItemStack[] inventory = backpack.getInventory(); for (int i = 0; i < inventory.length; i++) { - if (inventory[i] != null && - inventory[i].getItem().equals(Item.getItemFromBlock(item))) + if (inventory[i] != null + && inventory[i].getItem().equals(Item.getItemFromBlock(item))) { return true; } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index 38080f53..3ce16c5a 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -8,15 +8,12 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraftforge.common.util.Constants.NBT; -import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidTank; -import com.darkona.adventurebackpack.block.BlockAdventureBackpack; import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.common.BackpackAbilities; import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; -import com.darkona.adventurebackpack.item.ItemAdventureBackpack; import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_LEFT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_RIGHT; @@ -25,9 +22,7 @@ import static com.darkona.adventurebackpack.common.Constants.COMPOUND_TAG; import static com.darkona.adventurebackpack.common.Constants.INVENTORY; import static com.darkona.adventurebackpack.common.Constants.LEFT_TANK; -import static com.darkona.adventurebackpack.common.Constants.LOWER_TOOL; import static com.darkona.adventurebackpack.common.Constants.RIGHT_TANK; -import static com.darkona.adventurebackpack.common.Constants.UPPER_TOOL; /** * Created on 12/10/2014 @@ -352,16 +347,7 @@ public void closeInventory() @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { - if (stack.getItem() instanceof ItemAdventureBackpack || Block.getBlockFromItem(stack.getItem()) instanceof BlockAdventureBackpack) - { - return false; - } - if (slot == BUCKET_IN_RIGHT || slot == BUCKET_IN_LEFT) - { - return FluidContainerRegistry.isContainer(stack); - } - - return !(slot == UPPER_TOOL || slot == LOWER_TOOL) || SlotTool.isValidTool(stack); + return false; } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index 419a18f2..4111c212 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -13,7 +13,6 @@ import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.util.FluidUtils; -import static com.darkona.adventurebackpack.common.Constants.JETPACK_BUCKET_IN; import static com.darkona.adventurebackpack.common.Constants.JETPACK_COMPOUND_TAG; import static com.darkona.adventurebackpack.common.Constants.JETPACK_FUEL_SLOT; import static com.darkona.adventurebackpack.common.Constants.JETPACK_INVENTORY; @@ -338,10 +337,6 @@ public void closeInventory() @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { - if (slot == JETPACK_BUCKET_IN) - return SlotFluid.isContainer(stack) && FluidUtils.isContainerForFluid(stack, FluidRegistry.WATER); - if (slot == JETPACK_FUEL_SLOT) - return TileEntityFurnace.isItemFuel(stack); return false; } From 956d3db141a0a3859839f9588739f429e08e60e8 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sat, 1 Apr 2017 09:08:30 +0700 Subject: [PATCH 382/462] Limited max flying height for Jetpack (185) and Copter (250) --- .../handlers/TooltipEventHandler.java | 2 +- .../item/ItemAdventureBackpack.java | 28 +++++++++++++++---- .../item/ItemCoalJetpack.java | 18 ++++++------ .../item/ItemCopterPack.java | 9 +++--- .../adventurebackpack/proxy/CommonProxy.java | 3 -- 5 files changed, 38 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java index 38e0da51..eb640c4e 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java @@ -134,7 +134,7 @@ public void wearableTooltips(ItemTooltipEvent event) private String holdThe(boolean button) { - return EnumChatFormatting.WHITE + "" + EnumChatFormatting.ITALIC + (button ? "" : ""); + return EnumChatFormatting.WHITE + "" + EnumChatFormatting.ITALIC + (button ? "" : ""); } private String backpackTooltip(NBTTagList itemList) diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 0a0ea26c..8a45ee5d 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -13,6 +13,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ChunkCoordinates; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; @@ -264,11 +265,28 @@ public void addInformation(ItemStack stack, EntityPlayer player, List list, bool NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(stack); if (backpackTag.hasKey("colorName")) { - //TODO MORE! - if (backpackTag.getString("colorName").equals("Rainbow")) - list.add(Utils.makeItRainbow("Rainbow")); - else - list.add(backpackTag.getString("colorName")); + String color = backpackTag.getString("colorName"); + switch (color) + { + case "Bat": + list.add(EnumChatFormatting.DARK_PURPLE + color); + break; + case "Dragon": + list.add(EnumChatFormatting.RED + color); + break; + case "Pigman": + list.add(EnumChatFormatting.LIGHT_PURPLE + color); + break; + case "Rainbow": + list.add(Utils.makeItRainbow(color)); + break; + case "Squid": + list.add(EnumChatFormatting.AQUA + color); + break; + default: + list.add(backpackTag.getString("colorName")); + break; + } } } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index 8c37b7aa..60c94e20 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -275,15 +275,15 @@ private void runWater(InventoryCoalJetpack inv, World world, EntityPlayer player private static void elevate(EntityPlayer player) { - //TODO rework formulas, add height restriction, maybe configurable - if (player.motionY <= 0.32 && player.posY < 100) - { - player.motionY += 0.1; - } else - { - if (player.posY < 256) player.motionY = Math.max(player.motionY, 0.32); - if (player.posY > 256) player.motionY = 0.32 - ((player.posY % 256) / 256); - } + if (player.posY < 135) + if (player.motionY <= 0.32) + player.motionY += 0.1; + else + player.motionY = Math.max(player.motionY, 0.32); + else if (player.posY < 185) + player.motionY = 0.32 - (player.posY - 135) / 160; + else if (player.posY >= 185) + player.motionY += 0; } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java index 70585731..9af46601 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java @@ -161,11 +161,12 @@ public String getArmorTexture(ItemStack stack, Entity entity, int slot, String t private static void elevate(EntityPlayer player, ItemStack copter) { - //TODO rework formulas, add height restriction, maybe configurable - if (player.posY < 256) + if (player.posY < 100) player.motionY = Math.max(player.motionY, 0.18); - if (player.posY > 256) - player.motionY = 0.18 - ((player.posY % 256) / 256); + else if (player.posY < 250) + player.motionY = 0.18 - (player.posY - 100) / 1000; + else if (player.posY >= 250) + player.motionY += 0; } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java index 8466805d..688324d9 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java @@ -29,7 +29,4 @@ public void setPlayer(EntityPlayerMP player) this.player = player; } - public void cape() - { - } } \ No newline at end of file From fc703224a793448501788ab21f02ab6c911b966c Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 3 Apr 2017 12:45:22 +0700 Subject: [PATCH 383/462] Forbid automation in forbidden dims --- build.gradle | 3 + .../block/BlockAdventureBackpack.java | 10 +--- .../block/TileAdventureBackpack.java | 55 ++++++++++++++++++- .../common/ServerActions.java | 7 +-- .../item/ItemAdventureBackpack.java | 9 ++- .../adventurebackpack/network/GUIPacket.java | 8 +-- .../darkona/adventurebackpack/util/Utils.java | 15 +++++ 7 files changed, 81 insertions(+), 26 deletions(-) diff --git a/build.gradle b/build.gradle index aedd6a79..5e054f27 100644 --- a/build.gradle +++ b/build.gradle @@ -14,6 +14,9 @@ archivesBaseName = "adventurebackpack" version = "${minecraft_version}-${mod_version}beta${buildnumber}" +sourceCompatibility = 1.7 +targetCompatibility = 1.7 + minecraft { version = "${minecraft_version}-${forge_version}" runDir = "eclipse" diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java index 6ae99174..68c36001 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java @@ -31,7 +31,6 @@ import com.darkona.adventurebackpack.AdventureBackpack; import com.darkona.adventurebackpack.client.Icons; -import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.handlers.GuiHandler; import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.reference.BackpackNames; @@ -272,15 +271,8 @@ public boolean canConnectRedstone(IBlockAccess world, int x, int y, int z, int s @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if (!world.isRemote) + if (!world.isRemote && Utils.isDimensionAllowed(player.worldObj.provider.dimensionId)) { - Integer currentDimID = player.worldObj.provider.dimensionId; - for (String id : ConfigHandler.forbiddenDimensions) - { - if (id.equals(currentDimID.toString())) - return false; - } - FMLNetworkHandler.openGui(player, AdventureBackpack.instance, GuiHandler.BACKPACK_TILE, world, x, y, z); return true; } diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 53e9eaf5..00302f50 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -3,6 +3,7 @@ import net.minecraft.block.Block; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -26,6 +27,7 @@ import com.darkona.adventurebackpack.inventory.SlotBackpack; import com.darkona.adventurebackpack.inventory.SlotTool; import com.darkona.adventurebackpack.util.BackpackUtils; +import com.darkona.adventurebackpack.util.Utils; import com.darkona.adventurebackpack.util.Wearing; import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_LEFT; @@ -42,7 +44,7 @@ /** * Created by Darkona on 12/10/2014. */ -public class TileAdventureBackpack extends TileEntity implements IInventoryAdventureBackpack +public class TileAdventureBackpack extends TileEntity implements IInventoryAdventureBackpack, ISidedInventory { public ItemStack[] inventory = new ItemStack[Constants.INVENTORY_SIZE]; private FluidTank leftTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); @@ -299,7 +301,9 @@ public void loadFromNBT(NBTTagCompound compound) @Override public void saveToNBT(NBTTagCompound compound) { - if (ench != null) compound.setTag("ench", ench); + if (ench != null) + compound.setTag("ench", ench); + NBTTagCompound backpackTag = new NBTTagCompound(); NBTTagList items = new NBTTagList(); for (int i = 0; i < inventory.length; i++) @@ -387,7 +391,6 @@ public ItemStack getStackInSlotOnClosing(int slot) @Override public void setInventorySlotContents(int i, ItemStack itemstack) { - inventory[i] = itemstack; if (itemstack != null && itemstack.stackSize > getInventoryStackLimit()) { @@ -628,4 +631,50 @@ public void dirtyInventory() { } + + /** + * Returns an array containing the indices of the slots that can be accessed by automation on the given side of this + * block. + */ + @Override + public int[] getAccessibleSlotsFromSide(int side) + { + if (Utils.isDimensionAllowed(this.worldObj.provider.dimensionId)) + { + return SLOTS; + } + return null; + } + + private static final int[] SLOTS = createSlotArray(0, Constants.INVENTORY_MAIN_SIZE); + + private static int[] createSlotArray(int first, int count) + { + int[] slots = new int[count]; + for (int i = first; i < first + count; i++) + { + slots[i - first] = i; + } + return slots; + } + + /** + * Returns true if automation can insert the given item in the given slot from the given side. Args: Slot, item, + * side + */ + @Override + public boolean canInsertItem(int slot, ItemStack item, int side) + { + return true; + } + + /** + * Returns true if automation can extract the given item in the given slot from the given side. Args: Slot, item, + * side + */ + @Override + public boolean canExtractItem(int slot, ItemStack item, int side) + { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index e917d881..d6a61e81 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -28,6 +28,7 @@ import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; import com.darkona.adventurebackpack.reference.BackpackNames; import com.darkona.adventurebackpack.util.LogHelper; +import com.darkona.adventurebackpack.util.Utils; import com.darkona.adventurebackpack.util.Wearing; import static com.darkona.adventurebackpack.common.Constants.BUCKET; @@ -55,11 +56,9 @@ public class ServerActions //Using @Sir-Will dupe fixed public static void cycleTool(EntityPlayer player, int direction, int slot) { - Integer currentDimID = player.worldObj.provider.dimensionId; - for (String id : ConfigHandler.forbiddenDimensions) + if (!Utils.isDimensionAllowed(player.worldObj.provider.dimensionId)) { - if (id.equals(currentDimID.toString())) - return; + return; } try diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 8a45ee5d..05dca656 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -49,7 +49,6 @@ */ public class ItemAdventureBackpack extends ItemAB implements IBackWearableItem { - public ItemAdventureBackpack() { super(); @@ -272,19 +271,19 @@ public void addInformation(ItemStack stack, EntityPlayer player, List list, bool list.add(EnumChatFormatting.DARK_PURPLE + color); break; case "Dragon": - list.add(EnumChatFormatting.RED + color); + list.add(EnumChatFormatting.LIGHT_PURPLE + color); break; case "Pigman": - list.add(EnumChatFormatting.LIGHT_PURPLE + color); + list.add(EnumChatFormatting.RED + color); break; case "Rainbow": list.add(Utils.makeItRainbow(color)); break; case "Squid": - list.add(EnumChatFormatting.AQUA + color); + list.add(EnumChatFormatting.DARK_AQUA + color); break; default: - list.add(backpackTag.getString("colorName")); + list.add(color); break; } } diff --git a/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java b/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java index 3c815aa1..045484ba 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java @@ -11,9 +11,9 @@ import com.darkona.adventurebackpack.AdventureBackpack; import com.darkona.adventurebackpack.block.TileAdventureBackpack; -import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.handlers.GuiHandler; import com.darkona.adventurebackpack.inventory.ContainerBackpack; +import com.darkona.adventurebackpack.util.Utils; import com.darkona.adventurebackpack.util.Wearing; /** @@ -85,11 +85,9 @@ public IMessage onMessage(GUImessage message, MessageContext ctx) } if (message.type == BACKPACK_GUI) { - Integer currentDimID = player.worldObj.provider.dimensionId; - for (String id : ConfigHandler.forbiddenDimensions) + if (!Utils.isDimensionAllowed(player.worldObj.provider.dimensionId)) { - if (id.equals(currentDimID.toString())) - return null; + return null; } if (message.from == FROM_KEYBIND) diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index c48caf5b..117ddfed 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -17,6 +17,8 @@ import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; +import com.darkona.adventurebackpack.config.ConfigHandler; + /** * Created on 12/10/2014 * @@ -480,4 +482,17 @@ public static String makeItRainbow(String theString) return everyHunterWannaKnowWherePheasantSits.toString(); } + public static boolean isDimensionAllowed (int dimensionID) + { + String currentDimID = String.valueOf(dimensionID); + for (String forbiddenID : ConfigHandler.forbiddenDimensions) + { + if (currentDimID.equals(forbiddenID)) + { + return false; + } + } + return true; + } + } From 5a6a2bcbab790e71d3e377692a207cfd70c78da7 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 4 Apr 2017 15:11:00 +0700 Subject: [PATCH 384/462] Tooltips complete --- .../block/TileAdventureBackpack.java | 8 ++- .../handlers/TooltipEventHandler.java | 54 ++++++++++++++++--- .../inventory/InventoryBackpack.java | 3 -- .../reference/GeneralReference.java | 2 +- 4 files changed, 51 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 00302f50..dd18c5c0 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -659,18 +659,16 @@ private static int[] createSlotArray(int first, int count) } /** - * Returns true if automation can insert the given item in the given slot from the given side. Args: Slot, item, - * side + * Returns true if automation can insert the given item in the given slot from the given side. */ @Override public boolean canInsertItem(int slot, ItemStack item, int side) { - return true; + return this.isItemValidForSlot(slot, item); } /** - * Returns true if automation can extract the given item in the given slot from the given side. Args: Slot, item, - * side + * Returns true if automation can extract the given item in the given slot from the given side. */ @Override public boolean canExtractItem(int slot, ItemStack item, int side) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java index eb640c4e..6e7ddfd0 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java @@ -21,6 +21,7 @@ import com.darkona.adventurebackpack.item.ItemAdventureBackpack; import com.darkona.adventurebackpack.item.ItemCoalJetpack; import com.darkona.adventurebackpack.item.ItemCopterPack; +import com.darkona.adventurebackpack.reference.GeneralReference; /** * Created on 24.03.2017 @@ -75,7 +76,7 @@ public void wearableTooltips(ItemTooltipEvent event) String actionKey = GameSettings.getKeyDisplayString(Keybindings.toggleActions.getKeyCode()); boolean cycling = !backpackTag.getBoolean("disableCycling"); event.toolTip.add("Tool Cycling: " + switchTooltip(cycling, true)); - event.toolTip.add("Press '" + actionKey + "' while wearing"); + event.toolTip.add("Press '" + whiteFormat(actionKey) + "' while wearing"); event.toolTip.add("backpack, for turn cycling " + switchTooltip(!cycling, false)); String color = backpackTag.getString("colorName"); @@ -85,7 +86,7 @@ public void wearableTooltips(ItemTooltipEvent event) { boolean vision = !backpackTag.getBoolean("disableNVision"); event.toolTip.add("Night Vision: " + switchTooltip(vision, true)); - event.toolTip.add("Press Shift+'" + actionKey + "' while wearing"); + event.toolTip.add("Press Shift+'" + whiteFormat(actionKey) + "' while wearing"); event.toolTip.add("backpack, for turn nightvision " + switchTooltip(!vision, false)); } } @@ -100,7 +101,6 @@ public void wearableTooltips(ItemTooltipEvent event) if (GuiScreen.isShiftKeyDown()) { - //TODO add temperature, help note with: max height, keys NBTTagList itemList = jetpackTag.getTagList(Constants.JETPACK_INVENTORY, NBT.TAG_COMPOUND); event.toolTip.add("Fuel: " + slotStackTooltip(itemList, Constants.JETPACK_FUEL_SLOT)); @@ -111,24 +111,50 @@ public void wearableTooltips(ItemTooltipEvent event) // special case for steam, have to set displayed fluid name manually String theSteam = steamTank.getFluidAmount() > 0 ? EnumChatFormatting.AQUA + "Steam" : ""; event.toolTip.add("Right Tank: " + tankTooltip(steamTank, false) + theSteam); - } else + + if (!GuiScreen.isCtrlKeyDown()) + event.toolTip.add(holdThe(false)); + + } else if (!GuiScreen.isCtrlKeyDown()) { event.toolTip.add(holdThe(true)); } + if (GuiScreen.isCtrlKeyDown()) + { + String actionKey = GameSettings.getKeyDisplayString(Keybindings.toggleActions.getKeyCode()); + event.toolTip.add("Maximum altitude: " + whiteFormat("185") + " meters"); + event.toolTip.add("Press Shift+'" + whiteFormat(actionKey) + "' while wearing"); + event.toolTip.add("jetpack, for turn it ON"); + } + } else if (event.itemStack.getItem() instanceof ItemCopterPack) { FluidTank fuelTank = new FluidTank(Constants.COPTER_FUEL_CAPACITY); NBTTagCompound compound = event.itemStack.stackTagCompound; - fuelTank.readFromNBT(compound.getCompoundTag(Constants.COPTER_FUEL_TANK)); if (GuiScreen.isShiftKeyDown()) { - //TODO add fuel consumption rate, help note with: max height, keys + fuelTank.readFromNBT(compound.getCompoundTag(Constants.COPTER_FUEL_TANK)); event.toolTip.add("Fuel Tank: " + tankTooltip(fuelTank, true)); - } else + event.toolTip.add("Fuel comsuption rate: " + fuelConsumptionTooltip(fuelTank)); + + if (!GuiScreen.isCtrlKeyDown()) + event.toolTip.add(holdThe(false)); + + } else if (!GuiScreen.isCtrlKeyDown()) { event.toolTip.add(holdThe(true)); } + + if (GuiScreen.isCtrlKeyDown()) + { + String actionKey = GameSettings.getKeyDisplayString(Keybindings.toggleActions.getKeyCode()); + event.toolTip.add("Maximum altitude: " + whiteFormat("250") + " meters"); + event.toolTip.add("Press Shift+'" + whiteFormat(actionKey) + "' while wearing"); + event.toolTip.add("copterpack, for turn it ON"); + event.toolTip.add("Press '" + whiteFormat(actionKey) + "' during flight to"); + event.toolTip.add("switch hover mode"); + } } } @@ -263,6 +289,20 @@ private String stackSizeFormat(ItemStack stack, int count) return stack.getMaxStackSize() == count ? EnumChatFormatting.WHITE + "" + count + EnumChatFormatting.GRAY : "" + count; } + private String fuelConsumptionTooltip(FluidTank fTank) + { + if (fTank.getFluidAmount() > 0 && GeneralReference.isValidFuel(fTank.getFluid().getFluid())) + { + return String.format("x%.2f", GeneralReference.liquidFuels.get(fTank.getFluid().getFluid().getName())); + } + return EnumChatFormatting.DARK_GRAY + "-"; + } + + private String whiteFormat(String theString) + { + return EnumChatFormatting.WHITE + theString + EnumChatFormatting.GRAY; + } + private String emptyFormat() { return String.format("%s%sEmpty", EnumChatFormatting.DARK_GRAY, EnumChatFormatting.ITALIC); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index 3ce16c5a..16a85049 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -338,10 +338,7 @@ public void openInventory() @Override public void closeInventory() { - /*if(Utils.inServer()) //TODO side? - {*/ saveToNBT(containerStack.stackTagCompound); - //} } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java index 161e21e5..947386b3 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java @@ -19,7 +19,7 @@ public static void init() { liquidFuels.put("biofuel", ConfigHandler.fuelRateBioFuel); liquidFuels.put("bioethanol", ConfigHandler.fuelRateBioEthanol); - liquidFuels.put("coal", ConfigHandler.fuelRateCoal); //TODO liquid coal? o_O + liquidFuels.put("coal", ConfigHandler.fuelRateCoal); //liquid coal? o_O liquidFuels.put("creosote", ConfigHandler.fuelRateCreosote); liquidFuels.put("fuel", ConfigHandler.fuelRateFuel); liquidFuels.put("lava", ConfigHandler.fuelRateLava); From 3e6964323956938d0e9389664ff20a786a4a6075 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sun, 9 Apr 2017 15:34:10 +0700 Subject: [PATCH 385/462] Fixed a bit of weirdness with stacks of fluid containers Removed restrictions for container types Reworked mergeItemStack logic, added support for SlotStackLimit Added more fuel types for Copter (oils, diesels, fuels) Added Fullness (durability) bar and config for it, disabled by default --- .../block/TileAdventureBackpack.java | 2 +- .../client/gui/GuiAdvBackpack.java | 2 +- .../client/models/ModelBackpackBlock.java | 2 +- .../config/ConfigHandler.java | 13 +- .../handlers/TooltipEventHandler.java | 8 +- .../inventory/ContainerBackpack.java | 353 +++++++++--------- .../inventory/ContainerCopter.java | 83 ++-- .../inventory/ContainerJetpack.java | 66 ++-- .../IInventoryAdventureBackpack.java | 3 +- .../inventory/InventoryActions.java | 35 +- .../inventory/InventoryBackpack.java | 192 +++++----- .../inventory/InventoryCoalJetpack.java | 60 ++- .../inventory/InventoryCopterPack.java | 53 ++- .../inventory/SlotBackpack.java | 1 - .../inventory/SlotFluid.java | 86 ++--- .../adventurebackpack/inventory/SlotFuel.java | 2 +- .../item/ItemAdventureBackpack.java | 35 +- .../network/CowAbilityPacket.java | 4 +- .../adventurebackpack/network/GUIPacket.java | 2 +- .../reference/GeneralReference.java | 13 +- .../adventurebackpack/util/Resources.java | 2 +- 21 files changed, 499 insertions(+), 518 deletions(-) rename src/main/java/com/darkona/adventurebackpack/{common => inventory}/IInventoryAdventureBackpack.java (89%) diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index dd18c5c0..2129ed36 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -20,9 +20,9 @@ import com.darkona.adventurebackpack.common.BackpackAbilities; import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.init.ModItems; +import com.darkona.adventurebackpack.inventory.IInventoryAdventureBackpack; import com.darkona.adventurebackpack.inventory.InventoryActions; import com.darkona.adventurebackpack.inventory.SlotBackpack; import com.darkona.adventurebackpack.inventory.SlotTool; diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index 17e25e62..9c69910b 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -9,11 +9,11 @@ import cpw.mods.fml.relauncher.SideOnly; import com.darkona.adventurebackpack.block.TileAdventureBackpack; -import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.config.Keybindings; import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.inventory.ContainerBackpack; +import com.darkona.adventurebackpack.inventory.IInventoryAdventureBackpack; import com.darkona.adventurebackpack.inventory.InventoryBackpack; import com.darkona.adventurebackpack.network.EquipUnequipBackWearablePacket; import com.darkona.adventurebackpack.network.SleepingBagPacket; diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java index df950850..48210d27 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java @@ -12,7 +12,7 @@ import codechicken.lib.vec.Vector3; import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; +import com.darkona.adventurebackpack.inventory.IInventoryAdventureBackpack; /** * Created on 17/12/2014 diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index f21044b3..610bdcef 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -31,6 +31,7 @@ public class ConfigHandler public static boolean enableToolsCycling = true; public static boolean fixLead = true; + public static boolean enableFullnessBar = false; public static boolean enableToolsRender = true; public static boolean enableTooltips = true; public static int typeTankRender = 2; @@ -66,8 +67,10 @@ public class ConfigHandler public static float fuelRateCoal = 2.0f; public static float fuelRateCreosote = 7.0f; public static float fuelRateFuel = 1.0f; + public static float fuelRateFuelLight = 0.6f; + public static float fuelRateFuelHeavy = 0.7f; + public static float fuelRateFuelNitro = 0.5f; public static float fuelRateLava = 5.0f; - public static float fuelRateNitroFuel = 0.5f; public static float fuelRateOil = 3.0f; public static boolean consumeDragonEgg = false; @@ -118,6 +121,7 @@ private static void loadConfiguration() // Graphics typeTankRender = config.getInt("Tank Render Type", "graphics", 3, 1, 3, "1,2 or 3 for different rendering of fluids in the Backpack GUI"); + enableFullnessBar = config.getBoolean("Enable Fullness Bar", "graphics", false, "Enable durability bar showing fullness of backpacks inventory"); enableToolsRender = config.getBoolean("Enable Tools Render", "graphics", true, "Enable rendering for tools in the backpack tool slots. May cause visual glitches with Gregtech tools"); enableTooltips = config.getBoolean("Enable Tooltips", "graphics", true, "Enable tooltips? Client side"); tanksHoveringText = config.getBoolean("Hovering Text", "graphics", false, "Show hovering text on fluid tanks?"); @@ -156,10 +160,13 @@ private static void loadConfiguration() fuelRateBioEthanol = config.getFloat("BioEthanol", "items.fuel", 1.5f, 0.05f, 20.0f, "BioEthanol consumption rate"); fuelRateCoal = config.getFloat("Coal", "items.fuel", 2.0f, 0.05f, 20.0f, "Coal consumption rate"); fuelRateCreosote = config.getFloat("Creosote", "items.fuel", 7.0f, 0.05f, 20.0f, "Creosote consumption rate"); - fuelRateFuel = config.getFloat("Fuel", "items.fuel", 1.0f, 0.05f, 20.0f, "Fuel consumption rate"); + fuelRateFuel = config.getFloat("Fuel", "items.fuel", 1.0f, 0.05f, 20.0f, "Fuel / rocket fuel consumption rate"); + fuelRateFuelLight = config.getFloat("FuelLight", "items.fuel", 1.0f, 0.05f, 20.0f, "Light Fuel consumption rate"); + fuelRateFuelHeavy = config.getFloat("FuelHeavy", "items.fuel", 1.0f, 0.05f, 20.0f, "Heavy Fuel consumption rate"); + fuelRateFuelNitro = config.getFloat("FuelNitro", "items.fuel", 0.5f, 0.05f, 20.0f, "Nitro Fuel consumption rate"); fuelRateLava = config.getFloat("Lava", "items.fuel", 5.0f, 0.05f, 20.0f, "Lava consumption rate"); - fuelRateNitroFuel = config.getFloat("NitroFuel", "items.fuel", 0.5f, 0.05f, 20.0f, "NitroFuel consumption rate"); fuelRateOil = config.getFloat("Oil", "items.fuel", 3.0f, 0.05f, 20.0f, "Oil consumption rate");*/ + //TODO set default values, change copter fuel usage to float compatible // Items.Recipes consumeDragonEgg = config.getBoolean("Consume Dragon Egg", "items.recipes", false, "Consume Dragon Egg when Dragon backpack crafted?"); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java index 6e7ddfd0..430bb1e4 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java @@ -48,8 +48,10 @@ public void wearableTooltips(ItemTooltipEvent event) { tank.readFromNBT(backpackTag.getCompoundTag(Constants.LEFT_TANK)); event.toolTip.add(tank.getFluidAmount() == 0 ? "" : tank.getFluid().getUnlocalizedName()); + event.toolTip.add(tank.getFluidAmount() == 0 ? "" : tank.getFluid().getFluid().getName()); tank.readFromNBT(backpackTag.getCompoundTag(Constants.RIGHT_TANK)); event.toolTip.add(tank.getFluidAmount() == 0 ? "" : tank.getFluid().getUnlocalizedName()); + event.toolTip.add(tank.getFluidAmount() == 0 ? "" : tank.getFluid().getFluid().getName()); }*/ if (GuiScreen.isShiftKeyDown()) @@ -136,7 +138,7 @@ public void wearableTooltips(ItemTooltipEvent event) { fuelTank.readFromNBT(compound.getCompoundTag(Constants.COPTER_FUEL_TANK)); event.toolTip.add("Fuel Tank: " + tankTooltip(fuelTank, true)); - event.toolTip.add("Fuel comsuption rate: " + fuelConsumptionTooltip(fuelTank)); + event.toolTip.add("Fuel consumption rate: " + fuelConsumptionTooltip(fuelTank)); if (!GuiScreen.isCtrlKeyDown()) event.toolTip.add(holdThe(false)); @@ -226,8 +228,8 @@ private String fluidNameFormat(FluidStack fluid) else if (fUnlocalized.contains("water")) nFormatted += EnumChatFormatting.BLUE; else if (fUnlocalized.contains("oil")) - nFormatted += EnumChatFormatting.BLACK; - else if (fUnlocalized.contains("fuel")) + nFormatted += EnumChatFormatting.DARK_GRAY; + else if (fUnlocalized.contains("fuel") || fUnlocalized.contains("creosote")) nFormatted += EnumChatFormatting.YELLOW; else if (fUnlocalized.contains("milk")) nFormatted += EnumChatFormatting.WHITE; diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 4944c74c..974fab88 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -12,8 +12,6 @@ import net.minecraft.item.crafting.CraftingManager; import net.minecraftforge.fluids.FluidTank; -import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; - import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_LEFT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_RIGHT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_LEFT; @@ -29,15 +27,9 @@ public class ContainerBackpack extends Container implements IWearableContainer { - public IInventoryAdventureBackpack inventory; - public static byte SOURCE_TILE = 0; - public static byte SOURCE_WEARING = 1; - public static byte SOURCE_HOLDING = 2; - public byte source; - public InventoryCrafting craftMatrix = new InventoryCrafting(this, 3, 3); - public IInventory craftResult = new InventoryCraftResult(); - EntityPlayer player; - + public static final byte SOURCE_TILE = 0; + public static final byte SOURCE_WEARING = 1; + public static final byte SOURCE_HOLDING = 2; @SuppressWarnings("FieldCanBeLocal") private final int //TODO constants to constants PLAYER_HOT_START = 0, @@ -50,6 +42,11 @@ public class ContainerBackpack extends Container implements IWearableContainer TOOL_END = TOOL_START + 1, BUCKET_LEFT = TOOL_END + 1, BUCKET_RIGHT = BUCKET_LEFT + 2; + private IInventoryAdventureBackpack inventory; + private byte source; + private InventoryCrafting craftMatrix = new InventoryCrafting(this, 3, 3); + private IInventory craftResult = new InventoryCraftResult(); + private EntityPlayer player; //IDEA redesign container layout/craft slots behavior, so it will be rectangular and compatible with invTweaks. this also makes more slots available cuz craft ones will not drop content on close @@ -153,152 +150,14 @@ private void makeSlots(InventoryPlayer invPlayer) this.onCraftMatrixChanged(craftMatrix); } + /** + * Looks for changes made in the container, sends them to every listener. + */ @Override - public boolean canInteractWith(EntityPlayer player) - { - return inventory.isUseableByPlayer(player); - } - - @Override - public void onCraftMatrixChanged(IInventory par1IInventory) - { - craftResult.setInventorySlotContents(0, CraftingManager.getInstance().findMatchingRecipe(craftMatrix, player.worldObj)); - } - - @Override - public void onContainerClosed(EntityPlayer player) - { - super.onContainerClosed(player); - if (source == SOURCE_WEARING) - { - this.crafters.remove(player); - } - if (!player.worldObj.isRemote) - { - for (int i = 0; i < inventory.getSizeInventory(); i++) - { - ItemStack itemstack = this.inventory.getStackInSlotOnClosing(i); - if (itemstack != null) - { - inventory.setInventorySlotContents(i, null); - player.dropPlayerItemWithRandomChoice(itemstack, false); - } - } - - for (int i = 0; i < 9; i++) - { - ItemStack itemstack = this.craftMatrix.getStackInSlotOnClosing(i); - - if (itemstack != null) - { - player.dropPlayerItemWithRandomChoice(itemstack, false); - } - } - } - } - - @Override - public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) - { - if (slot >= 0 && getSlot(slot) != null && getSlot(slot).getStack() == player.getHeldItem() && source == SOURCE_HOLDING) - { - return null; - } - return super.slotClick(slot, button, flag, player); - } - - @Override - protected boolean mergeItemStack(ItemStack stack, int minSlot, int maxSlot, boolean direction) - { - boolean changesMade = false; - int slotInit = minSlot; - - if (direction) - { - slotInit = maxSlot - 1; - } - - Slot slot; - ItemStack newItemStack; - - if (stack.isStackable()) - { - while (stack.stackSize > 0 && (!direction && slotInit < maxSlot || direction && slotInit >= minSlot)) - { - slot = (Slot) this.inventorySlots.get(slotInit); - newItemStack = slot.getStack(); - - if (newItemStack != null && newItemStack.getItem() == stack.getItem() && (!stack.getHasSubtypes() || stack.getItemDamage() == newItemStack.getItemDamage()) && ItemStack.areItemStackTagsEqual(stack, newItemStack)) - { - - int newStackSize = newItemStack.stackSize + stack.stackSize; - - if (newStackSize <= stack.getMaxStackSize()) - { - stack.stackSize = 0; - newItemStack.stackSize = newStackSize; - slot.onSlotChanged(); - changesMade = true; - } else if (newItemStack.stackSize < stack.getMaxStackSize()) - { - stack.stackSize -= stack.getMaxStackSize() - newItemStack.stackSize; - newItemStack.stackSize = stack.getMaxStackSize(); - slot.onSlotChanged(); - changesMade = true; - } - } - - if (direction) - { - --slotInit; - } else - { - ++slotInit; - } - } - } - - if (stack.stackSize > 0) - { - if (direction) - { - slotInit = maxSlot - 1; - } else - { - slotInit = minSlot; - } - - while (!direction && slotInit < maxSlot || direction && slotInit >= minSlot) - { - slot = (Slot) this.inventorySlots.get(slotInit); - newItemStack = slot.getStack(); - - if (newItemStack == null) - { - slot.putStack(stack.copy()); - slot.onSlotChanged(); - stack.stackSize = 0; - changesMade = true; - break; - } - - if (direction) - { - --slotInit; - } else - { - ++slotInit; - } - } - } - - return changesMade; - } - - @Override - public Slot getSlotFromInventory(IInventory inv, int slot) + public void detectAndSendChanges() { - return super.getSlotFromInventory(inv, slot); + refresh(); + super.detectAndSendChanges(); } @Override @@ -329,39 +188,55 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) return null; } } - } else if (SlotFluid.isContainer(stack) && SlotFluid.isValidContainer(stack)) + + } else if (SlotFluid.isContainer(stack)) { FluidTank leftTank = inventory.getLeftTank(); FluidTank rightTank = inventory.getRightTank(); int maxAmount = leftTank.getCapacity(); int leftAmount = leftTank.getFluidAmount(); int rightAmount = rightTank.getFluidAmount(); - String leftFluid = SlotFluid.getFluidName(leftTank); //TODO name->id - String rightFluid = SlotFluid.getFluidName(rightTank); + int leftFluid = SlotFluid.getFluidID(leftTank); + int rightFluid = SlotFluid.getFluidID(rightTank); int containerCapacity = SlotFluid.getCapacity(stack); - String containerFluid = SlotFluid.getFluidName(stack); + int containerFluid = SlotFluid.getFluidID(stack); if (SlotFluid.isFilled(stack)) { if (leftAmount == 0) { - if (rightAmount > 0 && (rightAmount + containerCapacity <= maxAmount) && rightFluid.equals(containerFluid)) + if (rightAmount > 0 && (rightAmount + containerCapacity <= maxAmount) && rightFluid == containerFluid) { - mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false); + if (!mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false)) + { + return null; + } } else { - mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false); + if (!mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false)) + { + return null; + } } - } else if ((leftAmount + containerCapacity <= maxAmount) && leftFluid.equals(containerFluid)) + } else if ((leftAmount + containerCapacity <= maxAmount) && leftFluid == containerFluid) { - mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false); - } else if (rightAmount == 0 || (rightAmount + containerCapacity <= maxAmount) && rightFluid.equals(containerFluid)) + if (!mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false)) + { + return null; + } + } else if (rightAmount == 0 || (rightAmount + containerCapacity <= maxAmount) && rightFluid == containerFluid) { - mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false); + if (!mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false)) + { + return null; + } } else if (SlotBackpack.isValidItem(stack)) { - mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false); + if (!mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false)) + { + return null; + } } } else if (SlotFluid.isEmpty(stack)) { @@ -369,14 +244,23 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) { if (rightAmount != 0) { - mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false); + if (!mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false)) + { + return null; + } } else if (SlotBackpack.isValidItem(stack)) { - mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false); + if (!mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false)) + { + return null; + } } } else { - mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false); + if (!mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false)) + { + return null; + } } } @@ -405,14 +289,131 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) return result; } - /** - * Looks for changes made in the container, sends them to every listener. - */ @Override - public void detectAndSendChanges() + public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) { - refresh(); - super.detectAndSendChanges(); + if (slot >= 0 && getSlot(slot) != null && getSlot(slot).getStack() == player.getHeldItem() && source == SOURCE_HOLDING) + { + return null; + } + return super.slotClick(slot, button, flag, player); + } + + @Override + public void onContainerClosed(EntityPlayer player) + { + super.onContainerClosed(player); + if (source == SOURCE_WEARING) + { + this.crafters.remove(player); //TODO crafters + } + if (!player.worldObj.isRemote) + { + for (int i = 0; i < inventory.getSizeInventory(); i++) + { + ItemStack itemstack = this.inventory.getStackInSlotOnClosing(i); + if (itemstack != null) + { + inventory.setInventorySlotContents(i, null); + player.dropPlayerItemWithRandomChoice(itemstack, false); + } + } + + for (int i = 0; i < 9; i++) + { + ItemStack itemstack = this.craftMatrix.getStackInSlotOnClosing(i); + + if (itemstack != null) + { + player.dropPlayerItemWithRandomChoice(itemstack, false); + } + } + } + } + + @Override + public void onCraftMatrixChanged(IInventory par1IInventory) + { + craftResult.setInventorySlotContents(0, CraftingManager.getInstance().findMatchingRecipe(craftMatrix, player.worldObj)); + } + + @Override + public boolean canInteractWith(EntityPlayer player) + { + return inventory.isUseableByPlayer(player); + } + + @Override + protected boolean mergeItemStack(ItemStack initStack, int minSlotID, int maxSlotID, boolean backward) + { + boolean changesMade = false; + int activeSlotID = (backward ? maxSlotID - 1 : minSlotID); + Slot activeSlot; + ItemStack activeStack; + + if (initStack.isStackable()) + { + while (initStack.stackSize > 0 && (!backward && activeSlotID < maxSlotID || backward && activeSlotID >= minSlotID)) + { + activeSlot = (Slot) this.inventorySlots.get(activeSlotID); + activeStack = activeSlot.getStack(); + + if (activeStack != null && activeStack.getItem() == initStack.getItem() + && (!initStack.getHasSubtypes() || initStack.getItemDamage() == activeStack.getItemDamage()) + && ItemStack.areItemStackTagsEqual(initStack, activeStack)) + { + int mergedSize = activeStack.stackSize + initStack.stackSize; + int maxStackSize = Math.min(initStack.getMaxStackSize(), activeSlot.getSlotStackLimit()); + + if (mergedSize <= maxStackSize) + { + initStack.stackSize = 0; + activeStack.stackSize = mergedSize; + activeSlot.onSlotChanged(); + changesMade = true; + } else if (activeStack.stackSize < maxStackSize && activeSlot instanceof SlotBackpack) + { + initStack.stackSize -= maxStackSize - activeStack.stackSize; + activeStack.stackSize = maxStackSize; + activeSlot.onSlotChanged(); + changesMade = true; + } + } + activeSlotID += (backward ? -1 : 1); + } + } + + if (initStack.stackSize > 0) + { + activeSlotID = (backward ? maxSlotID - 1 : minSlotID); + + while (!backward && activeSlotID < maxSlotID || backward && activeSlotID >= minSlotID) + { + activeSlot = (Slot) this.inventorySlots.get(activeSlotID); + activeStack = activeSlot.getStack(); + + if (activeStack == null /*&& activeSlot.isItemValid(initStack)*/) + { + ItemStack copyStack = initStack.copy(); + int mergedSize = copyStack.stackSize = Math.min(copyStack.stackSize, activeSlot.getSlotStackLimit()); + + activeSlot.putStack(copyStack); + activeSlot.onSlotChanged(); + if (mergedSize >= initStack.stackSize) + { + initStack.stackSize = 0; + } else + { + initStack.stackSize -= mergedSize; + } + changesMade = true; + break; + } + activeSlotID += (backward ? -1 : 1); + } + } + + return changesMade; } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java index cb464a7d..7c583ab8 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java @@ -13,14 +13,14 @@ */ public class ContainerCopter extends Container implements IWearableContainer { - InventoryCopterPack inventory; - EntityPlayer player; private final int PLAYER_HOT_START = 0; //TODO constants to constants private final int PLAYER_HOT_END = PLAYER_HOT_START + 8; private final int PLAYER_INV_START = PLAYER_HOT_END + 1; @SuppressWarnings("FieldCanBeLocal") private final int PLAYER_INV_END = PLAYER_INV_START + 26; - boolean wearing; + InventoryCopterPack inventory; + private EntityPlayer player; + private boolean wearing; public ContainerCopter(EntityPlayer player, InventoryCopterPack copter, boolean wearing) { @@ -55,7 +55,6 @@ private void bindPlayerInventory(InventoryPlayer invPlayer) private void makeSlots(InventoryPlayer invPlayer) { - bindPlayerInventory(invPlayer); int slot = 0; //Bucket Slots @@ -66,41 +65,10 @@ private void makeSlots(InventoryPlayer invPlayer) } @Override - public boolean canInteractWith(EntityPlayer p_75145_1_) - { - return true; - } - - @Override - public void onContainerClosed(EntityPlayer player) - { - super.onContainerClosed(player); - if (wearing) - { - this.crafters.remove(player); - } - if (!player.worldObj.isRemote) - { - for (int i = 0; i < inventory.getSizeInventory(); i++) - { - ItemStack itemstack = this.inventory.getStackInSlotOnClosing(i); - if (itemstack != null) - { - inventory.setInventorySlotContents(i, null); - player.dropPlayerItemWithRandomChoice(itemstack, false); - } - } - } - } - - @Override - public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) + public void detectAndSendChanges() { - if (slot >= 0 && getSlot(slot) != null && getSlot(slot).getStack() == player.getHeldItem() && !wearing) - { - return null; - } - return super.slotClick(slot, button, flag, player); + refresh(); + super.detectAndSendChanges(); } @Override @@ -122,7 +90,7 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) } if (i < 36) { - if (SlotFluid.isContainer(stack) && SlotFluid.isValidContainer(stack)) + if (SlotFluid.isContainer(stack)) { int COPTER_INV_START = PLAYER_INV_END + 1; if (!mergeItemStack(stack, COPTER_INV_START, COPTER_INV_START + 1, false)) @@ -150,10 +118,41 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) } @Override - public void detectAndSendChanges() + public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) { - refresh(); - super.detectAndSendChanges(); + if (slot >= 0 && getSlot(slot) != null && getSlot(slot).getStack() == player.getHeldItem() && !wearing) + { + return null; + } + return super.slotClick(slot, button, flag, player); + } + + @Override + public void onContainerClosed(EntityPlayer player) + { + super.onContainerClosed(player); + if (wearing) + { + this.crafters.remove(player); + } + if (!player.worldObj.isRemote) + { + for (int i = 0; i < inventory.getSizeInventory(); i++) + { + ItemStack itemstack = this.inventory.getStackInSlotOnClosing(i); + if (itemstack != null) + { + inventory.setInventorySlotContents(i, null); + player.dropPlayerItemWithRandomChoice(itemstack, false); + } + } + } + } + + @Override + public boolean canInteractWith(EntityPlayer p_75145_1_) + { + return true; } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java index e10d7a1a..65985693 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java @@ -15,14 +15,14 @@ */ public class ContainerJetpack extends Container implements IWearableContainer { - InventoryCoalJetpack inventory; - EntityPlayer player; private final int PLAYER_HOT_START = 0; //TODO constants to constants private final int PLAYER_HOT_END = PLAYER_HOT_START + 8; private final int PLAYER_INV_START = PLAYER_HOT_END + 1; @SuppressWarnings("FieldCanBeLocal") private final int PLAYER_INV_END = PLAYER_INV_START + 26; - boolean wearing; + InventoryCoalJetpack inventory; + private EntityPlayer player; + private boolean wearing; public ContainerJetpack(EntityPlayer player, InventoryCoalJetpack jetpack, boolean wearing) { @@ -70,12 +70,6 @@ private void makeSlots(InventoryPlayer invPlayer) } - @Override - public boolean canInteractWith(EntityPlayer p_75145_1_) - { - return true; - } - @Override public void detectAndSendChanges() { @@ -89,28 +83,6 @@ public void detectAndSendChanges() } } - @Override - public void onContainerClosed(EntityPlayer player) - { - super.onContainerClosed(player); - if (wearing) - { - this.crafters.remove(player); - } - if (!player.worldObj.isRemote) - { - for (int i = 0; i < 3; i++) - { - ItemStack itemstack = this.inventory.getStackInSlotOnClosing(i); - if (itemstack != null) - { - inventory.setInventorySlotContents(i, null); - player.dropPlayerItemWithRandomChoice(itemstack, false); - } - } - } - } - @Override public ItemStack transferStackInSlot(EntityPlayer player, int i) { @@ -131,12 +103,12 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) } if (i < 36) { - if (SlotFluid.isContainer(stack) && SlotFluid.isValidContainer(stack)) + if (SlotFluid.isContainer(stack)) { int JETPACK_INV_START = PLAYER_INV_END + 1; if (!mergeItemStack(stack, JETPACK_INV_START, JETPACK_INV_START + 1, false)) { - + return null; } } else if (inventory.isFuel(stack) && !SlotFluid.isContainer(stack)) { @@ -165,6 +137,34 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) return result; } + @Override + public void onContainerClosed(EntityPlayer player) + { + super.onContainerClosed(player); + if (wearing) + { + this.crafters.remove(player); + } + if (!player.worldObj.isRemote) + { + for (int i = 0; i < 3; i++) + { + ItemStack itemstack = this.inventory.getStackInSlotOnClosing(i); + if (itemstack != null) + { + inventory.setInventorySlotContents(i, null); + player.dropPlayerItemWithRandomChoice(itemstack, false); + } + } + } + } + + @Override + public boolean canInteractWith(EntityPlayer p_75145_1_) + { + return true; + } + @Override public void refresh() { diff --git a/src/main/java/com/darkona/adventurebackpack/common/IInventoryAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java similarity index 89% rename from src/main/java/com/darkona/adventurebackpack/common/IInventoryAdventureBackpack.java rename to src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java index 3d389c4a..1b3a9359 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/IInventoryAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java @@ -1,4 +1,4 @@ -package com.darkona.adventurebackpack.common; +package com.darkona.adventurebackpack.inventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -6,7 +6,6 @@ import net.minecraftforge.fluids.FluidTank; import com.darkona.adventurebackpack.block.TileAdventureBackpack; -import com.darkona.adventurebackpack.inventory.IInventoryTanks; /** * Created by Darkona on 12/10/2014. diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java index 7d133464..e0cce79d 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java @@ -9,7 +9,6 @@ import net.minecraftforge.fluids.FluidTank; import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; import com.darkona.adventurebackpack.util.FluidUtils; /** @@ -19,7 +18,6 @@ */ public class InventoryActions { - /** * What a complicated mess. I hated every minute of coding this. * This code takes a fluid container item. If its filled, it empties it out into a tank. @@ -41,38 +39,30 @@ public static boolean transferContainerTank(IInventoryTanks inventory, FluidTank int slotOut = slotIn + 1; //CONTAINER ===========> TANK - //if (!SlotFluid.isEmpty(stackIn)) if (FluidContainerRegistry.isFilledContainer(stackIn)) { //See if the tank can accept moar fluid. int fill = tank.fill(FluidContainerRegistry.getFluidForFilledItem(stackIn), false); - if (fill > 0)//If can accept the fluid + if (fill > 0) //If can accept the fluid { //Get the empty container for the input, if there's any. ItemStack stackOut = FluidContainerRegistry.drainFluidContainer(stackIn); if (inventory.getStackInSlot(slotOut) == null || stackOut == null) { - tank.fill(FluidContainerRegistry.getFluidForFilledItem(stackIn), true); - //inventory.dirtyTanks(); inventory.decrStackSizeNoSave(slotIn, 1); inventory.setInventorySlotContentsNoSave(slotOut, stackOut); - //inventory.dirtyInventory(); return true; - } else if (inventory.getStackInSlot(slotOut).getItem() == stackOut.getItem()) - //} else if (inventory.getStackInSlot(slotOut).getItem().equals(stackOut.getItem())) + } else if (inventory.getStackInSlot(slotOut).getItem().equals(stackOut.getItem())) { int maxStack = inventory.getStackInSlot(slotOut).getMaxStackSize(); if (maxStack > 1 && (inventory.getStackInSlot(slotOut).stackSize + 1) <= maxStack) { - tank.fill(FluidContainerRegistry.getFluidForFilledItem(stackIn), true); - //inventory.dirtyTanks(); inventory.decrStackSizeNoSave(slotIn, 1); inventory.getStackInSlot(slotOut).stackSize++; - //inventory.dirtyInventory(); return true; } } @@ -81,7 +71,7 @@ public static boolean transferContainerTank(IInventoryTanks inventory, FluidTank //TANK =====> CONTAINER - if (tank.getFluid() != null && tank.getFluidAmount() > 0 && FluidUtils.isEmptyContainerForFluid(stackIn, tank.getFluid().getFluid())) + else if (tank.getFluid() != null && tank.getFluidAmount() > 0 && FluidUtils.isEmptyContainerForFluid(stackIn, tank.getFluid().getFluid())) { //How much fluid can this container hold. int amount = FluidContainerRegistry.getContainerCapacity(tank.getFluid(), stackIn); @@ -92,25 +82,20 @@ public static boolean transferContainerTank(IInventoryTanks inventory, FluidTank if (drain.amount == amount) { - if (inventory.getStackInSlot(slotOut) == null) + if (inventory.getStackInSlot(slotOut) == null || stackOut == null) { tank.drain(amount, true); - //inventory.dirtyTanks(); inventory.decrStackSizeNoSave(slotIn, 1); inventory.setInventorySlotContentsNoSave(slotOut, stackOut); - //inventory.dirtyInventory(); return true; - } else if (stackOut != null && stackOut.getItem() != null // ??! - && stackOut.getItem() == inventory.getStackInSlot(slotOut).getItem()) + } else if (stackOut.getItem().equals(inventory.getStackInSlot(slotOut).getItem())) { int maxStack = inventory.getStackInSlot(slotOut).getMaxStackSize(); if (maxStack > 1 && (inventory.getStackInSlot(slotOut).stackSize + 1) <= maxStack) { tank.drain(amount, true); - //inventory.dirtyTanks(); inventory.decrStackSizeNoSave(slotIn, 1); inventory.getStackInSlot(slotOut).stackSize++; - //inventory.dirtyInventory(); return true; } } @@ -139,10 +124,9 @@ public static void consumeItemInInventory(IInventory backpack, Item item) public static boolean hasItem(IInventoryAdventureBackpack backpack, Item item) { ItemStack[] inventory = backpack.getInventory(); - for (int i = 0; i < inventory.length; i++) + for (ItemStack slotStack : inventory) { - if (inventory[i] != null && - inventory[i].getItem().equals(item)) + if (slotStack != null && slotStack.getItem().equals(item)) { return true; } @@ -153,10 +137,9 @@ public static boolean hasItem(IInventoryAdventureBackpack backpack, Item item) public static boolean hasBlockItem(IInventoryAdventureBackpack backpack, Block item) { ItemStack[] inventory = backpack.getInventory(); - for (int i = 0; i < inventory.length; i++) + for (ItemStack slotStack : inventory) { - if (inventory[i] != null - && inventory[i].getItem().equals(Item.getItemFromBlock(item))) + if (slotStack != null && slotStack.getItem().equals(Item.getItemFromBlock(item))) { return true; } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index 16a85049..c1535f28 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -13,7 +13,6 @@ import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.common.BackpackAbilities; import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_LEFT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_RIGHT; @@ -32,29 +31,15 @@ public class InventoryBackpack implements IInventoryAdventureBackpack { public ItemStack[] inventory = new ItemStack[Constants.INVENTORY_SIZE]; + public NBTTagCompound extendedProperties = new NBTTagCompound(); private FluidTank leftTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); private FluidTank rightTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); - - private static final boolean OFF = false; - private static final boolean ON = true; - private boolean disableNVision = OFF; - private boolean disableCycling = OFF; - + private boolean disableNVision = false; + private boolean disableCycling = false; private ItemStack containerStack; - - /*public ItemStack getContainerStack() - { - return containerStack; - } - public void setContainerStack(ItemStack containerStack) - { - this.containerStack = containerStack; - }*/ - private String colorName = "Standard"; private int lastTime = 0; private boolean special = false; - public NBTTagCompound extendedProperties = new NBTTagCompound(); public InventoryBackpack(ItemStack backpack) { @@ -62,6 +47,16 @@ public InventoryBackpack(ItemStack backpack) openInventory(); } + public ItemStack getContainerStack() + { + return containerStack; + } + + public void setContainerStack(ItemStack containerStack) + { + this.containerStack = containerStack; + } + @Override public FluidTank getLeftTank() { @@ -162,15 +157,16 @@ public void setLastTime(int time) } @Override - public void setInventorySlotContents(int slot, ItemStack stack) + public void dirtyTime() { - if (slot > inventory.length) return; - inventory[slot] = stack; - if (stack != null && stack.stackSize > this.getInventoryStackLimit()) - { - stack.stackSize = this.getInventoryStackLimit(); - } - dirtyInventory(); + containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).setInteger("lastTime", lastTime); + } + + @Override + public void dirtyExtended() + { + containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).removeTag("extendedProperties"); + containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).setTag("extendedProperties", extendedProperties); } @Override @@ -184,23 +180,6 @@ public void setInventorySlotContentsNoSave(int slot, ItemStack stack) } } - @Override - public ItemStack decrStackSize(int slot, int quantity) - { - ItemStack itemstack = getStackInSlot(slot); - if (itemstack != null) - { - if (itemstack.stackSize <= quantity) - { - setInventorySlotContents(slot, null); - } else - { - itemstack = itemstack.splitStack(quantity); - } - } - return itemstack; - } - @Override public ItemStack decrStackSizeNoSave(int slot, int quantity) { @@ -221,8 +200,8 @@ public ItemStack decrStackSizeNoSave(int slot, int quantity) @Override public boolean updateTankSlots() { - return InventoryActions.transferContainerTank(this, getLeftTank(), BUCKET_IN_LEFT) || - InventoryActions.transferContainerTank(this, getRightTank(), BUCKET_IN_RIGHT); + return InventoryActions.transferContainerTank(this, getLeftTank(), BUCKET_IN_LEFT) + || InventoryActions.transferContainerTank(this, getRightTank(), BUCKET_IN_RIGHT); } @Override @@ -241,7 +220,6 @@ public void loadFromNBT(NBTTagCompound compound) inventory[slot] = ItemStack.loadItemStackFromNBT(item); } } - leftTank.readFromNBT(backpackTag.getCompoundTag(LEFT_TANK)); rightTank.readFromNBT(backpackTag.getCompoundTag(RIGHT_TANK)); colorName = backpackTag.getString("colorName"); @@ -270,12 +248,12 @@ public void saveToNBT(NBTTagCompound compound) } backpackTag.removeTag(INVENTORY); backpackTag.setTag(INVENTORY, items); + backpackTag.setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); + backpackTag.setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); backpackTag.setString("colorName", colorName); backpackTag.setInteger("lastTime", lastTime); backpackTag.setBoolean("special", BackpackAbilities.hasAbility(colorName)); backpackTag.setTag("extendedProperties", extendedProperties); - backpackTag.setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); - backpackTag.setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); backpackTag.setBoolean("disableCycling", disableCycling); backpackTag.setBoolean("disableNVision", disableNVision); @@ -290,116 +268,132 @@ public FluidTank[] getTanksArray() } @Override - public ItemStack getStackInSlotOnClosing(int slot) + public void dirtyInventory() { - if (slot == BUCKET_IN_LEFT || slot == BUCKET_IN_RIGHT || slot == BUCKET_OUT_LEFT || slot == BUCKET_OUT_RIGHT) + if (updateTankSlots()) { - return inventory[slot]; + dirtyTanks(); } - return null; + NBTTagList items = new NBTTagList(); + for (int i = 0; i < inventory.length; i++) + { + ItemStack stack = inventory[i]; + if (stack != null) + { + NBTTagCompound item = new NBTTagCompound(); + item.setByte("Slot", (byte) i); + stack.writeToNBT(item); + items.appendTag(item); + } + } + containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).removeTag(INVENTORY); + containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).setTag(INVENTORY, items); } @Override - public String getInventoryName() + public void dirtyTanks() { - return "Adventure Backpack"; + containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); } @Override - public boolean hasCustomInventoryName() + public int getSizeInventory() { - return true; + return inventory.length; } @Override - public int getInventoryStackLimit() + public ItemStack getStackInSlot(int slot) { - return 64; + return inventory[slot]; } @Override - public void markDirty() + public ItemStack decrStackSize(int slot, int quantity) { - saveToNBT(containerStack.stackTagCompound); + ItemStack itemstack = getStackInSlot(slot); + if (itemstack != null) + { + if (itemstack.stackSize <= quantity) + { + setInventorySlotContents(slot, null); + } else + { + itemstack = itemstack.splitStack(quantity); + } + } + return itemstack; } @Override - public boolean isUseableByPlayer(EntityPlayer player) + public ItemStack getStackInSlotOnClosing(int slot) { - return true; + if (slot == BUCKET_IN_LEFT || slot == BUCKET_IN_RIGHT || slot == BUCKET_OUT_LEFT || slot == BUCKET_OUT_RIGHT) + { + return inventory[slot]; + } + return null; } @Override - public void openInventory() + public void setInventorySlotContents(int slot, ItemStack stack) { - loadFromNBT(containerStack.stackTagCompound); + if (slot > inventory.length) return; + inventory[slot] = stack; + if (stack != null && stack.stackSize > this.getInventoryStackLimit()) + { + stack.stackSize = this.getInventoryStackLimit(); + } + dirtyInventory(); } @Override - public void closeInventory() + public String getInventoryName() { - saveToNBT(containerStack.stackTagCompound); + return "Adventure Backpack"; } @Override - public boolean isItemValidForSlot(int slot, ItemStack stack) + public boolean hasCustomInventoryName() { - return false; + return true; } @Override - public int getSizeInventory() + public int getInventoryStackLimit() { - return inventory.length; + return 64; } @Override - public ItemStack getStackInSlot(int slot) + public void markDirty() { - return inventory[slot]; + saveToNBT(containerStack.stackTagCompound); } @Override - public void dirtyTanks() + public boolean isUseableByPlayer(EntityPlayer player) { - containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); - containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); + return true; } @Override - public void dirtyTime() + public void openInventory() { - containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).setInteger("lastTime", lastTime); + loadFromNBT(containerStack.stackTagCompound); } @Override - public void dirtyExtended() + public void closeInventory() { - containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).removeTag("extendedProperties"); - containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).setTag("extendedProperties", extendedProperties); + saveToNBT(containerStack.stackTagCompound); } @Override - public void dirtyInventory() + public boolean isItemValidForSlot(int slot, ItemStack stack) { - if (updateTankSlots()) - { - dirtyTanks(); - } - NBTTagList items = new NBTTagList(); - for (int i = 0; i < inventory.length; i++) - { - ItemStack stack = inventory[i]; - if (stack != null) - { - NBTTagCompound item = new NBTTagCompound(); - item.setByte("Slot", (byte) i); - stack.writeToNBT(item); - items.appendTag(item); - } - } - containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).removeTag(INVENTORY); - containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).setTag(INVENTORY, items); + return false; } public boolean hasBlock(Block block) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index 4111c212..7b45a589 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -26,15 +26,12 @@ */ public class InventoryCoalJetpack implements IInventoryTanks { - + public static final int MAX_TEMPERATURE = 200; + public int currentItemBurnTime = 0; private ItemStack[] inventory = new ItemStack[Constants.JETPACK_INVENTORY_SIZE]; private FluidTank waterTank = new FluidTank(Constants.JETPACK_WATER_CAPACITY); private FluidTank steamTank = new FluidTank(Constants.JETPACK_STEAM_CAPACITY); - - private static final boolean OFF = false; - private static final boolean ON = true; - private boolean status = OFF; - + private boolean status = false; private int temperature = 25; private int burnTicks = 0; private ItemStack containerStack; @@ -42,9 +39,6 @@ public class InventoryCoalJetpack implements IInventoryTanks private boolean boiling = false; private boolean leaking = false; private boolean inUse = false; - public int currentItemBurnTime = 0; - - public static final int MAX_TEMPERATURE = 200; private int coolTicks = 5000; public InventoryCoalJetpack(final ItemStack jetpack) @@ -186,7 +180,7 @@ public int consumeFuel() return result; } - public boolean isFuel(ItemStack stack) + boolean isFuel(ItemStack stack) { return TileEntityFurnace.isItemFuel(stack); } @@ -273,25 +267,6 @@ public void setInventorySlotContents(int slot, ItemStack stack) } - public void onInventoryChanged() - { - for (int i = 0; i < inventory.length; i++) - { - if (i == 0) - { - ItemStack container = getStackInSlot(i); - if (FluidContainerRegistry.isFilledContainer(container) && FluidUtils.isContainerForFluid(container, FluidRegistry.WATER)) - { - InventoryActions.transferContainerTank(this, waterTank, i); - } else if (FluidContainerRegistry.isEmptyContainer(container) && waterTank.getFluid() != null && FluidUtils.isContainerForFluid(container, FluidRegistry.WATER)) - { - InventoryActions.transferContainerTank(this, waterTank, i); - } - } - } - markDirty(); - } - @Override public String getInventoryName() { @@ -340,6 +315,25 @@ public boolean isItemValidForSlot(int slot, ItemStack stack) return false; } + public void onInventoryChanged() + { + for (int i = 0; i < inventory.length; i++) + { + if (i == 0) + { + ItemStack container = getStackInSlot(i); + if (FluidContainerRegistry.isFilledContainer(container) && FluidUtils.isContainerForFluid(container, FluidRegistry.WATER)) + { + InventoryActions.transferContainerTank(this, waterTank, i); + } else if (FluidContainerRegistry.isEmptyContainer(container) && waterTank.getFluid() != null && FluidUtils.isContainerForFluid(container, FluidRegistry.WATER)) + { + InventoryActions.transferContainerTank(this, waterTank, i); + } + } + } + markDirty(); + } + public ItemStack getParentItemStack() { return containerStack; @@ -461,14 +455,14 @@ public void setCoolTicks(int coolTicks) this.coolTicks = coolTicks; } - public void setContainerStack(ItemStack containerStack) + public ItemStack getContainerStack() { - this.containerStack = containerStack; + return containerStack; } - public ItemStack getContainerStack() + public void setContainerStack(ItemStack containerStack) { - return containerStack; + this.containerStack = containerStack; } public void calculateLostTime() diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java index 708e5998..a22ddb57 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java @@ -21,10 +21,9 @@ public class InventoryCopterPack implements IInventoryTanks { public FluidTank fuelTank = new FluidTank(Constants.COPTER_FUEL_CAPACITY); - - private ItemStack containerStack; public int tickCounter = 0; - public byte status = ItemCopterPack.OFF_MODE; + private byte status = ItemCopterPack.OFF_MODE; + private ItemStack containerStack; private ItemStack[] inventory = new ItemStack[2]; public InventoryCopterPack(ItemStack copterPack) @@ -131,23 +130,6 @@ public void markDirty() containerStack.stackTagCompound.setInteger("tickCounter", this.tickCounter); } - @Override - public void dirtyTanks() - { - containerStack.stackTagCompound.setTag(COPTER_FUEL_TANK, fuelTank.writeToNBT(new NBTTagCompound())); - } - - @Override - public void dirtyInventory() - { - - } - - public void dirtyCounter() - { - containerStack.stackTagCompound.setInteger("tickCounter", this.tickCounter); - } - @Override public boolean isUseableByPlayer(EntityPlayer player) { @@ -166,16 +148,21 @@ public void closeInventory() saveToNBT(containerStack.stackTagCompound); } - public void closeInventoryNoStatus() + @Override + public boolean isItemValidForSlot(int i, ItemStack stack) + { + return false; + } + + public void dirtyCounter() { - containerStack.stackTagCompound.setTag(COPTER_FUEL_TANK, this.fuelTank.writeToNBT(new NBTTagCompound())); containerStack.stackTagCompound.setInteger("tickCounter", this.tickCounter); } - @Override - public boolean isItemValidForSlot(int i, ItemStack stack) + public void closeInventoryNoStatus() { - return false; + containerStack.stackTagCompound.setTag(COPTER_FUEL_TANK, this.fuelTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.setInteger("tickCounter", this.tickCounter); } public void onInventoryChanged() @@ -233,6 +220,11 @@ public byte getStatus() return status; } + public void setStatus(byte status) + { + this.status = status; + } + @Override public boolean updateTankSlots() { @@ -262,9 +254,16 @@ public FluidTank[] getTanksArray() return tanks; } - public void setStatus(byte status) + @Override + public void dirtyInventory() { - this.status = status; + + } + + @Override + public void dirtyTanks() + { + containerStack.stackTagCompound.setTag(COPTER_FUEL_TANK, fuelTank.writeToNBT(new NBTTagCompound())); } public void dirtyStatus() diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java index 8544c579..b52662a6 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java @@ -4,7 +4,6 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; import com.darkona.adventurebackpack.config.ConfigHandler; /** diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java index 337a4bf2..ce755855 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java @@ -1,11 +1,11 @@ package com.darkona.adventurebackpack.inventory; import net.minecraft.inventory.IInventory; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidTank; +import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.util.Utils; /** @@ -15,81 +15,64 @@ */ public class SlotFluid extends SlotAdventureBackpack { - private static final String[] VALID_CONTAINER_NAMES = {"bucket"}; - - private static final String[] VALID_CONTAINER_IDS = {"minecraft:milk_bucket"}; - - private static final String[] INVALID_CONTAINER_NAMES = {"cell"}; - - public SlotFluid(IInventory inventory, int id, int x, int y) + SlotFluid(IInventory inventory, int id, int x, int y) { super(inventory, id, x, y); } - public static boolean isEmpty(ItemStack stack) + static boolean isContainer(ItemStack stack) { - return (stack != null && FluidContainerRegistry.isEmptyContainer(stack)); + return FluidContainerRegistry.isContainer(stack); } - public static boolean isFilled(ItemStack stack) + static boolean isEmpty(ItemStack stack) { - return (stack != null && FluidContainerRegistry.isFilledContainer(stack)); + return FluidContainerRegistry.isEmptyContainer(stack); } - public static String getFluidName(ItemStack stack) + static boolean isFilled(ItemStack stack) { - if (stack == null || isEmpty(stack)) return ""; - return FluidContainerRegistry.getFluidForFilledItem(stack).getUnlocalizedName(); + return FluidContainerRegistry.isFilledContainer(stack); } - public static String getFluidName(FluidTank stack) + static String getFluidName(ItemStack stack) { - if (stack != null && stack.getFluidAmount() != 0) - { - return stack.getFluid().getUnlocalizedName(); - } - return ""; + if (stack == null || isEmpty(stack)) + return ""; + return FluidContainerRegistry.getFluidForFilledItem(stack).getFluid().getName(); } - public static int getCapacity(ItemStack stack) + static String getFluidName(FluidTank tank) { - return FluidContainerRegistry.getContainerCapacity(stack); + if (tank == null || tank.getFluidAmount() <= 0) + return ""; + return tank.getFluid().getFluid().getName(); } - public static boolean isContainer(ItemStack stack) + static int getFluidID(ItemStack stack) { - return (stack != null && FluidContainerRegistry.isContainer(stack)); + if (stack == null || isEmpty(stack)) + return -1; + return FluidContainerRegistry.getFluidForFilledItem(stack).getFluid().getID(); } - @Override - public boolean isItemValid(ItemStack stack) + static int getFluidID(FluidTank tank) { - return (stack != null && FluidContainerRegistry.isContainer(stack) && isValidContainer(stack)); + if (tank == null || tank.getFluidAmount() <= 0) + return -1; + return tank.getFluid().getFluid().getID(); } - public static boolean isValidContainer(ItemStack stack) + static int getCapacity(ItemStack stack) { + //TODO if bottle and water... -> 1000 + return FluidContainerRegistry.getContainerCapacity(stack); + } - if (stack != null && stack.getMaxStackSize() <= 16) - { - Item itemCurrent = stack.getItem(); - String nameCurrent = itemCurrent.getUnlocalizedName().toLowerCase(); - - for (String toolName : VALID_CONTAINER_NAMES) - { - if (nameCurrent.contains(toolName)) return true; - } - for (String toolID : VALID_CONTAINER_IDS) - { - if (Item.itemRegistry.getNameForObject(itemCurrent).equals(toolID)) return true; - } - - for (String toolName : INVALID_CONTAINER_NAMES) - { - if (nameCurrent.contains(toolName)) return false; - } - } - return false; + @Override + public boolean isItemValid(ItemStack stack) + { + return (stack != null && isContainer(stack)); //TODO universal fluid cells support } @Override @@ -106,9 +89,10 @@ public void onSlotChanged() } @Override - public void putStack(ItemStack par1ItemStack) + public int getSlotStackLimit() { - super.putStack(par1ItemStack); + return Constants.BASIC_TANK_CAPACITY / Constants.BUCKET; //TODO change for jet/copter + //return this.inventory.getInventoryStackLimit(); } } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java index cad65d13..a5895963 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java @@ -19,6 +19,6 @@ public SlotFuel(IInventory inventory, int id, int x, int y) @Override public boolean isItemValid(ItemStack stack) { - return (stack != null) && TileEntityFurnace.isItemFuel(stack) && !SlotFluid.isContainer(stack); //fuel slot accept only solid fuel + return (stack != null && TileEntityFurnace.isItemFuel(stack) && !SlotFluid.isContainer(stack)); //fuel slot accept only solid fuel } } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 05dca656..7dc47f06 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -12,12 +12,14 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; import net.minecraft.util.ChunkCoordinates; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.common.util.ForgeDirection; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -27,6 +29,7 @@ import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.client.models.ModelBackpackArmor; import com.darkona.adventurebackpack.common.BackpackAbilities; +import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.events.WearableEvent; import com.darkona.adventurebackpack.init.ModBlocks; @@ -79,9 +82,6 @@ public boolean isBookEnchantable(ItemStack stack, ItemStack book) /** * Return whether this item is repairable in an anvil. - * - * @param p_82789_1_ - * @param p_82789_2_ */ @Override public boolean getIsRepairable(ItemStack p_82789_1_, ItemStack p_82789_2_) @@ -91,34 +91,43 @@ public boolean getIsRepairable(ItemStack p_82789_1_, ItemStack p_82789_2_) /** * Determines if the durability bar should be rendered for this item. - * Defaults to vanilla stack.isDamaged behavior. - * But modders can use this for any data they wish. - * - * @param stack The current Item Stack - * @return True if it should render the 'durability' bar. */ @Override public boolean showDurabilityBar(ItemStack stack) { - return false; + return ConfigHandler.enableFullnessBar && getItemCount(stack) > 0; } /** * Queries the percentage of the 'Durability' bar that should be drawn. - * - * @param stack The current ItemStack * @return 1.0 for 100% 0 for 0% */ @Override public double getDurabilityForDisplay(ItemStack stack) { - return 1; + return (float) getItemCount(stack)/Constants.INVENTORY_MAIN_SIZE; + } + + private int getItemCount(ItemStack backpack) + { + NBTTagCompound backpackTag = backpack.stackTagCompound.getCompoundTag(Constants.COMPOUND_TAG); + NBTTagList itemList = backpackTag.getTagList(Constants.INVENTORY, NBT.TAG_COMPOUND); + int itemCount = itemList.tagCount(); + for (int i = itemCount - 1; i >= 0; i--) + { + int slotAtI = itemList.getCompoundTagAt(i).getInteger("Slot"); + if (slotAtI < Constants.UPPER_TOOL) + break; + else if (slotAtI == Constants.UPPER_TOOL || slotAtI == Constants.LOWER_TOOL) + itemCount--; + } + return itemCount; } @Override public String getItemStackDisplayName(ItemStack stack) { - return "Adventure Backpack";// + stack.getTagCompound().getString("colorName"); + return "Adventure Backpack"; } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/network/CowAbilityPacket.java b/src/main/java/com/darkona/adventurebackpack/network/CowAbilityPacket.java index 59a5b2bc..9fb2c1c9 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/CowAbilityPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/CowAbilityPacket.java @@ -12,7 +12,7 @@ import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; +import com.darkona.adventurebackpack.inventory.IInventoryAdventureBackpack; import com.darkona.adventurebackpack.inventory.ContainerBackpack; /** @@ -36,7 +36,7 @@ public IMessage onMessage(CowAbilityMessage message, MessageContext ctx) { ContainerBackpack cont = ((ContainerBackpack) player.openContainer); cont.detectAndSendChanges(); - IInventoryAdventureBackpack inv = cont.inventory; + IInventoryAdventureBackpack inv = cont.getInventoryBackpack(); switch (message.action) { case CONSUME_WHEAT: diff --git a/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java b/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java index 045484ba..ad626788 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java @@ -110,7 +110,7 @@ public IMessage onMessage(GUImessage message, MessageContext ctx) { if (player.openContainer instanceof ContainerBackpack) { - TileAdventureBackpack te = (TileAdventureBackpack) ((ContainerBackpack) player.openContainer).inventory; + TileAdventureBackpack te = (TileAdventureBackpack) ((ContainerBackpack) player.openContainer).getInventoryBackpack(); FMLNetworkHandler.openGui(player, AdventureBackpack.instance, GuiHandler.BACKPACK_TILE, world, te.xCoord, te.yCoord, te.zCoord); return null; } diff --git a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java index 947386b3..accf9aa6 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java @@ -23,8 +23,19 @@ public static void init() liquidFuels.put("creosote", ConfigHandler.fuelRateCreosote); liquidFuels.put("fuel", ConfigHandler.fuelRateFuel); liquidFuels.put("lava", ConfigHandler.fuelRateLava); - liquidFuels.put("nitrofuel", ConfigHandler.fuelRateNitroFuel); + liquidFuels.put("liquid_light_oil", ConfigHandler.fuelRateOil); + liquidFuels.put("liquid_medium_oil", ConfigHandler.fuelRateOil); + liquidFuels.put("liquid_heavy_oil", ConfigHandler.fuelRateOil); + liquidFuels.put("liquid_light_fuel", ConfigHandler.fuelRateFuelLight); + liquidFuels.put("liquid_heavy_fuel", ConfigHandler.fuelRateFuelLight); + liquidFuels.put("nitrofuel", ConfigHandler.fuelRateFuelNitro); liquidFuels.put("oil", ConfigHandler.fuelRateOil); + liquidFuels.put("rocket_fuel", ConfigHandler.fuelRateFuel); + + //liquidFuels.put("liquid_sulfuriclight_fuel", ConfigHandler.fuelRateFuel); + //liquidFuels.put("liquid_cracked_light_fuel", ConfigHandler.fuelRateFuel); + //liquidFuels.put("liquid_sulfuricheavy_fuel", ConfigHandler.fuelRateFuel); + //liquidFuels.put("liquid_cracked_heavy_fuel", ConfigHandler.fuelRateFuel); } public static boolean isValidFuel(Fluid fluid) diff --git a/src/main/java/com/darkona/adventurebackpack/util/Resources.java b/src/main/java/com/darkona/adventurebackpack/util/Resources.java index e660408a..c7080dba 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Resources.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Resources.java @@ -3,7 +3,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; -import com.darkona.adventurebackpack.common.IInventoryAdventureBackpack; +import com.darkona.adventurebackpack.inventory.IInventoryAdventureBackpack; import com.darkona.adventurebackpack.reference.BackpackNames; import com.darkona.adventurebackpack.reference.ModInfo; From 26df8ae30ac997f39a81f756a2560ddc82e53a19 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 10 Apr 2017 16:55:21 +0700 Subject: [PATCH 386/462] Fixed weirdness with fluid stacks More inventory work --- .../block/BlockAdventureBackpack.java | 29 +---- .../block/TileAdventureBackpack.java | 13 ++- .../adventurebackpack/common/Constants.java | 3 + .../inventory/ContainerAdventureBackpack.java | 85 ++++++++++++++ .../inventory/ContainerBackpack.java | 105 +++--------------- .../inventory/ContainerCopter.java | 58 ++++++++-- .../inventory/ContainerJetpack.java | 84 ++++++++++---- .../inventory/InventoryActions.java | 8 +- .../inventory/InventoryBackpack.java | 18 +-- .../inventory/InventoryCoalJetpack.java | 42 +++---- .../inventory/InventoryCopterPack.java | 44 +++----- .../inventory/SlotAdventureBackpack.java | 4 +- .../inventory/SlotBackpack.java | 9 +- .../inventory/SlotFluid.java | 29 ++++- .../inventory/SlotFluidFuel.java | 43 +++++++ .../inventory/SlotFluidWater.java | 54 +++++++++ .../adventurebackpack/inventory/SlotFuel.java | 9 +- .../adventurebackpack/inventory/SlotTool.java | 2 +- .../item/ItemCoalJetpack.java | 16 +-- .../item/ItemCopterPack.java | 4 +- 20 files changed, 412 insertions(+), 247 deletions(-) create mode 100644 src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java create mode 100644 src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidFuel.java create mode 100644 src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidWater.java diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java index 68c36001..89509953 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java @@ -55,12 +55,6 @@ public BlockAdventureBackpack() /** * Pretty effects for the bookshelf ;) - * - * @param world - * @param x - * @param y - * @param z - * @param random */ @Override @SideOnly(Side.CLIENT) @@ -181,12 +175,6 @@ public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity e /** * Called when a player hits the block. Args: world, x, y, z, player - * - * @param p_149699_1_ - * @param p_149699_2_ - * @param p_149699_3_ - * @param p_149699_4_ - * @param p_149699_5_ */ @Override public void onBlockClicked(World p_149699_1_, int p_149699_2_, int p_149699_3_, int p_149699_4_, EntityPlayer p_149699_5_) @@ -195,17 +183,7 @@ public void onBlockClicked(World p_149699_1_, int p_149699_2_, int p_149699_3_, } /** - * Called when a block is placed using its ItemBlock. Args: World, X, Y, Z, side, hitX, hitY, hitZ, block metadata - * - * @param world - * @param x - * @param y - * @param z - * @param side - * @param hitX - * @param hitY - * @param hitZ - * @param meta + * Called when a block is placed using its ItemBlock. */ @Override public int onBlockPlaced(World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int meta) @@ -225,11 +203,6 @@ public String getUnlocalizedName() return "blockAdventureBackpack"; } - /*private void setUnlocalizedName(String string) //care recursion - { - setUnlocalizedName("blockAdventureBackpack"); - }*/ - @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 2129ed36..bb76215d 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -50,14 +50,14 @@ public class TileAdventureBackpack extends TileEntity implements IInventoryAdven private FluidTank leftTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); private FluidTank rightTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); - public boolean sleepingBagDeployed; + private boolean sleepingBagDeployed; private boolean special; private int sbdir; private int sbx; private int sby; private int sbz; - private int checkTime = 0; private String colorName; + private int checkTime = 0; private int lastTime; private int luminosity; private NBTTagCompound extendedProperties; @@ -513,7 +513,7 @@ public void updateEntity() public void updateTankSlots(FluidTank tank, int slotIn) { - InventoryActions.transferContainerTank(this, tank, slotIn); + updateTankSlots(); //TODO remove method } @Override @@ -606,7 +606,12 @@ public boolean drop(World world, EntityPlayer player, int x, int y, int z) @Override public boolean updateTankSlots() { - return false; + boolean result = false; + while (InventoryActions.transferContainerTank(this, getLeftTank(), BUCKET_IN_LEFT)) + result = true; + while (InventoryActions.transferContainerTank(this, getRightTank(), BUCKET_IN_RIGHT)) + result = true; + return result; } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/common/Constants.java b/src/main/java/com/darkona/adventurebackpack/common/Constants.java index dc846234..ba74ad15 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/Constants.java +++ b/src/main/java/com/darkona/adventurebackpack/common/Constants.java @@ -49,6 +49,9 @@ public class Constants public static final int JETPACK_WATER_CAPACITY = BUCKET * 6; // Copter + public static final int COPTER_INVENTORY_SIZE = 2; + public static final int COPTER_BUCKET_IN = 0; + public static final int COPTER_BUCKET_OUT = 1; public static final String COPTER_FUEL_TANK = "fuelTank"; public static final int COPTER_FUEL_CAPACITY = BUCKET * 6; diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java new file mode 100644 index 00000000..6d5777d1 --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java @@ -0,0 +1,85 @@ +package com.darkona.adventurebackpack.inventory; + +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +/** + * Created on 10.04.2017 + * + * @author Ugachaga + */ +abstract class ContainerAdventureBackpack extends Container +{ + @Override + protected boolean mergeItemStack(ItemStack initStack, int minIndex, int maxIndex, boolean backward) + { + boolean changesMade = false; + int activeIndex = (backward ? maxIndex - 1 : minIndex); + Slot activeSlot; + ItemStack activeStack; + + if (initStack.isStackable()) + { + while (initStack.stackSize > 0 && (!backward && activeIndex < maxIndex || backward && activeIndex >= minIndex)) + { + activeSlot = (Slot) this.inventorySlots.get(activeIndex); + activeStack = activeSlot.getStack(); + + if (activeStack != null && activeStack.getItem() == initStack.getItem() + && (!initStack.getHasSubtypes() || initStack.getItemDamage() == activeStack.getItemDamage()) + && ItemStack.areItemStackTagsEqual(initStack, activeStack)) + { + int mergedSize = activeStack.stackSize + initStack.stackSize; + int maxStackSize = Math.min(initStack.getMaxStackSize(), activeSlot.getSlotStackLimit()); + + if (mergedSize <= maxStackSize) + { + initStack.stackSize = 0; + activeStack.stackSize = mergedSize; + activeSlot.onSlotChanged(); + changesMade = true; + } else if (activeStack.stackSize < maxStackSize && !(activeSlot instanceof SlotFluid)) + { + initStack.stackSize -= maxStackSize - activeStack.stackSize; + activeStack.stackSize = maxStackSize; + activeSlot.onSlotChanged(); + changesMade = true; + } + } + activeIndex += (backward ? -1 : 1); + } + } + + if (initStack.stackSize > 0) + { + activeIndex = (backward ? maxIndex - 1 : minIndex); + + while (!backward && activeIndex < maxIndex || backward && activeIndex >= minIndex) + { + activeSlot = (Slot) this.inventorySlots.get(activeIndex); + activeStack = activeSlot.getStack(); + + if (activeStack == null /*&& activeSlot.isItemValid(initStack)*/) + { + ItemStack copyStack = initStack.copy(); + int mergedSize = copyStack.stackSize = Math.min(copyStack.stackSize, activeSlot.getSlotStackLimit()); + + activeSlot.putStack(copyStack); + if (mergedSize >= initStack.stackSize) + { + initStack.stackSize = 0; + } else + { + initStack.stackSize -= mergedSize; + } + changesMade = true; + break; + } + activeIndex += (backward ? -1 : 1); + } + } + + return changesMade; + } +} diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 974fab88..99976ea7 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -2,7 +2,6 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.InventoryCraftResult; import net.minecraft.inventory.InventoryCrafting; @@ -24,7 +23,7 @@ * * @author Darkona */ -public class ContainerBackpack extends Container implements IWearableContainer +public class ContainerBackpack extends ContainerAdventureBackpack implements IWearableContainer { public static final byte SOURCE_TILE = 0; @@ -161,23 +160,24 @@ public void detectAndSendChanges() } @Override - public ItemStack transferStackInSlot(EntityPlayer player, int i) + public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) { - if (source == SOURCE_WEARING) refresh(); - Slot slot = getSlot(i); + if (source == SOURCE_WEARING) refresh(); //TODO + Slot slot = getSlot(fromSlot); ItemStack result = null; + if (slot != null && slot.getHasStack()) { ItemStack stack = slot.getStack(); result = stack.copy(); - if (i >= 36) + if (fromSlot >= 36) { if (!mergeItemStack(stack, PLAYER_HOT_START, PLAYER_INV_END + 1, false)) { return null; } } - if (i < 36) + if (fromSlot < 36) { if (SlotTool.isValidTool(stack)) { @@ -191,6 +191,9 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) } else if (SlotFluid.isContainer(stack)) { + ItemStack rightOutStack = getSlot(BUCKET_RIGHT + 1).getStack(); + ItemStack leftOutStack = getSlot(BUCKET_LEFT + 1).getStack(); + FluidTank leftTank = inventory.getLeftTank(); FluidTank rightTank = inventory.getRightTank(); int maxAmount = leftTank.getCapacity(); @@ -212,7 +215,7 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) { return null; } - } else + } else if (leftOutStack == null) { if (!mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false)) { @@ -231,7 +234,7 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) { return null; } - } else if (SlotBackpack.isValidItem(stack)) + } else if (leftOutStack == null && rightOutStack == null && SlotBackpack.isValidItem(stack)) { if (!mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false)) { @@ -242,20 +245,20 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) { if (leftAmount == 0) { - if (rightAmount != 0) + if (rightAmount != 0 && rightOutStack == null) { if (!mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false)) { return null; } - } else if (SlotBackpack.isValidItem(stack)) + } else if (leftOutStack == null && rightOutStack == null && SlotBackpack.isValidItem(stack)) { if (!mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false)) { return null; } } - } else + } else if (leftOutStack == null) { if (!mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false)) { @@ -305,7 +308,7 @@ public void onContainerClosed(EntityPlayer player) super.onContainerClosed(player); if (source == SOURCE_WEARING) { - this.crafters.remove(player); //TODO crafters + this.crafters.remove(player); } if (!player.worldObj.isRemote) { @@ -318,8 +321,7 @@ public void onContainerClosed(EntityPlayer player) player.dropPlayerItemWithRandomChoice(itemstack, false); } } - - for (int i = 0; i < 9; i++) + for (int i = 0; i < 9; i++) //TODO crafters { ItemStack itemstack = this.craftMatrix.getStackInSlotOnClosing(i); @@ -343,79 +345,6 @@ public boolean canInteractWith(EntityPlayer player) return inventory.isUseableByPlayer(player); } - @Override - protected boolean mergeItemStack(ItemStack initStack, int minSlotID, int maxSlotID, boolean backward) - { - boolean changesMade = false; - int activeSlotID = (backward ? maxSlotID - 1 : minSlotID); - Slot activeSlot; - ItemStack activeStack; - - if (initStack.isStackable()) - { - while (initStack.stackSize > 0 && (!backward && activeSlotID < maxSlotID || backward && activeSlotID >= minSlotID)) - { - activeSlot = (Slot) this.inventorySlots.get(activeSlotID); - activeStack = activeSlot.getStack(); - - if (activeStack != null && activeStack.getItem() == initStack.getItem() - && (!initStack.getHasSubtypes() || initStack.getItemDamage() == activeStack.getItemDamage()) - && ItemStack.areItemStackTagsEqual(initStack, activeStack)) - { - int mergedSize = activeStack.stackSize + initStack.stackSize; - int maxStackSize = Math.min(initStack.getMaxStackSize(), activeSlot.getSlotStackLimit()); - - if (mergedSize <= maxStackSize) - { - initStack.stackSize = 0; - activeStack.stackSize = mergedSize; - activeSlot.onSlotChanged(); - changesMade = true; - } else if (activeStack.stackSize < maxStackSize && activeSlot instanceof SlotBackpack) - { - initStack.stackSize -= maxStackSize - activeStack.stackSize; - activeStack.stackSize = maxStackSize; - activeSlot.onSlotChanged(); - changesMade = true; - } - } - activeSlotID += (backward ? -1 : 1); - } - } - - if (initStack.stackSize > 0) - { - activeSlotID = (backward ? maxSlotID - 1 : minSlotID); - - while (!backward && activeSlotID < maxSlotID || backward && activeSlotID >= minSlotID) - { - activeSlot = (Slot) this.inventorySlots.get(activeSlotID); - activeStack = activeSlot.getStack(); - - if (activeStack == null /*&& activeSlot.isItemValid(initStack)*/) - { - ItemStack copyStack = initStack.copy(); - int mergedSize = copyStack.stackSize = Math.min(copyStack.stackSize, activeSlot.getSlotStackLimit()); - - activeSlot.putStack(copyStack); - activeSlot.onSlotChanged(); - if (mergedSize >= initStack.stackSize) - { - initStack.stackSize = 0; - } else - { - initStack.stackSize -= mergedSize; - } - changesMade = true; - break; - } - activeSlotID += (backward ? -1 : 1); - } - } - - return changesMade; - } - @Override public void refresh() { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java index 7c583ab8..f9ac23fa 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java @@ -2,22 +2,26 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidTank; + +import static com.darkona.adventurebackpack.common.Constants.COPTER_BUCKET_IN; +import static com.darkona.adventurebackpack.common.Constants.COPTER_BUCKET_OUT; /** * Created on 03/01/2015 * * @author Darkona */ -public class ContainerCopter extends Container implements IWearableContainer +public class ContainerCopter extends ContainerAdventureBackpack implements IWearableContainer { private final int PLAYER_HOT_START = 0; //TODO constants to constants private final int PLAYER_HOT_END = PLAYER_HOT_START + 8; private final int PLAYER_INV_START = PLAYER_HOT_END + 1; @SuppressWarnings("FieldCanBeLocal") private final int PLAYER_INV_END = PLAYER_INV_START + 26; + private final int COPTER_INV_START = PLAYER_INV_END + 1; InventoryCopterPack inventory; private EntityPlayer player; private boolean wearing; @@ -59,9 +63,9 @@ private void makeSlots(InventoryPlayer invPlayer) int slot = 0; //Bucket Slots // bucket in - addSlotToContainer(new SlotFluid(inventory, slot++, 44, 23)); + addSlotToContainer(new SlotFluidFuel(inventory, COPTER_BUCKET_IN, 44, 23)); // bucket out - addSlotToContainer(new SlotFluid(inventory, slot++, 44, 53)); + addSlotToContainer(new SlotFluidFuel(inventory, COPTER_BUCKET_OUT, 44, 53)); } @Override @@ -72,30 +76,62 @@ public void detectAndSendChanges() } @Override - public ItemStack transferStackInSlot(EntityPlayer player, int i) + public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) { - Slot slot = getSlot(i); + Slot slot = getSlot(fromSlot); ItemStack result = null; if (slot != null && slot.getHasStack()) { ItemStack stack = slot.getStack(); result = stack.copy(); - if (i >= 36) + if (fromSlot >= 36) { if (!mergeItemStack(stack, PLAYER_HOT_START, PLAYER_INV_END + 1, false)) { return null; } } - if (i < 36) + if (fromSlot < 36) { if (SlotFluid.isContainer(stack)) { - int COPTER_INV_START = PLAYER_INV_END + 1; - if (!mergeItemStack(stack, COPTER_INV_START, COPTER_INV_START + 1, false)) + ItemStack outStack = getSlot(COPTER_INV_START + 1).getStack(); + + FluidTank fuelTank = inventory.getFuelTank(); + int maxAmount = fuelTank.getCapacity(); + int tankAmount = fuelTank.getFluidAmount(); + int tankFluid = SlotFluid.getFluidID(fuelTank); + + int containerCapacity = SlotFluid.getCapacity(stack); + int containerFluid = SlotFluid.getFluidID(stack); + + if (SlotFluid.isFilled(stack)) + { + if ((outStack == null || (SlotFluid.isEmptyBucket(outStack) && SlotFluid.isBucket(stack))) + && SlotFluidFuel.isValidItem(stack)) + { + if ((tankAmount == 0 || (tankAmount > 0 && tankFluid == containerFluid)) + && tankAmount + containerCapacity <= maxAmount) + { + if (!mergeItemStack(stack, COPTER_INV_START, COPTER_INV_START + 1, false)) + { + return null; + } + } + } + } else if (SlotFluid.isEmpty(stack)) { - return null; + if (outStack == null && SlotFluidFuel.isValidItem(stack)) + { + if (tankAmount != 0 && tankAmount + containerCapacity <= maxAmount) + { + if (!mergeItemStack(stack, COPTER_INV_START, COPTER_INV_START + 1, false)) + { + return null; + } + } + } } } } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java index 65985693..239d7ba0 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java @@ -2,9 +2,9 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidTank; import com.darkona.adventurebackpack.common.Constants; @@ -13,13 +13,15 @@ * * @author Darkona */ -public class ContainerJetpack extends Container implements IWearableContainer +public class ContainerJetpack extends ContainerAdventureBackpack implements IWearableContainer { private final int PLAYER_HOT_START = 0; //TODO constants to constants private final int PLAYER_HOT_END = PLAYER_HOT_START + 8; private final int PLAYER_INV_START = PLAYER_HOT_END + 1; @SuppressWarnings("FieldCanBeLocal") private final int PLAYER_INV_END = PLAYER_INV_START + 26; + private final int JETPACK_INV_START = PLAYER_INV_END + 1; + private final int JETPACK_FUEL_START = PLAYER_INV_END + 3; InventoryCoalJetpack inventory; private EntityPlayer player; private boolean wearing; @@ -62,9 +64,9 @@ private void makeSlots(InventoryPlayer invPlayer) //Bucket Slots // bucket in - addSlotToContainer(new SlotFluid(inventory, Constants.JETPACK_BUCKET_IN, 30, 22)); + addSlotToContainer(new SlotFluidWater(inventory, Constants.JETPACK_BUCKET_IN, 30, 22)); // bucket out - addSlotToContainer(new SlotFluid(inventory, Constants.JETPACK_BUCKET_OUT, 30, 52)); + addSlotToContainer(new SlotFluidWater(inventory, Constants.JETPACK_BUCKET_OUT, 30, 52)); // fuel addSlotToContainer(new SlotFuel(inventory, Constants.JETPACK_FUEL_SLOT, 77, 64)); @@ -73,47 +75,73 @@ private void makeSlots(InventoryPlayer invPlayer) @Override public void detectAndSendChanges() { - if (wearing) - { - refresh(); - super.detectAndSendChanges(); - } else - { - super.detectAndSendChanges(); - } + refresh(); + super.detectAndSendChanges(); } @Override - public ItemStack transferStackInSlot(EntityPlayer player, int i) + public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) { refresh(); - Slot slot = getSlot(i); + Slot slot = getSlot(fromSlot); ItemStack result = null; if (slot != null && slot.getHasStack()) { ItemStack stack = slot.getStack(); result = stack.copy(); - if (i >= 36) + if (fromSlot >= 36) { if (!mergeItemStack(stack, PLAYER_HOT_START, PLAYER_INV_END + 1, false)) { return null; } } - if (i < 36) + if (fromSlot < 36) { if (SlotFluid.isContainer(stack)) { - int JETPACK_INV_START = PLAYER_INV_END + 1; - if (!mergeItemStack(stack, JETPACK_INV_START, JETPACK_INV_START + 1, false)) + ItemStack outStack = getSlot(JETPACK_INV_START + 1).getStack(); + + FluidTank waterTank = inventory.getWaterTank(); + int maxAmount = waterTank.getCapacity(); + int tankAmount = waterTank.getFluidAmount(); + int tankFluid = SlotFluid.getFluidID(waterTank); + + int containerCapacity = SlotFluid.getCapacity(stack); + int containerFluid = SlotFluid.getFluidID(stack); + + if (SlotFluid.isFilled(stack)) { - return null; + if ((outStack == null || (SlotFluid.isEmptyBucket(outStack) && SlotFluid.isBucket(stack))) + && SlotFluidWater.isValidItem(stack)) + { + if ((tankAmount == 0 || (tankAmount > 0 && tankFluid == containerFluid)) + && tankAmount + containerCapacity <= maxAmount) + { + if (!mergeItemStack(stack, JETPACK_INV_START, JETPACK_INV_START + 1, false)) + { + return null; + } + } + } + } else if (SlotFluid.isEmpty(stack)) + { + if (outStack == null && SlotFluidWater.isValidItem(stack)) + { + if (tankAmount != 0 && tankAmount + containerCapacity <= maxAmount) + { + if (!mergeItemStack(stack, JETPACK_INV_START, JETPACK_INV_START + 1, false)) + { + return null; + } + } + } } - } else if (inventory.isFuel(stack) && !SlotFluid.isContainer(stack)) + + } else if (SlotFuel.isValidItem(stack)) { - int JETPACK_FUEL_START = PLAYER_INV_END + 3; - if (inventory.isFuel(stack) && !mergeItemStack(stack, JETPACK_FUEL_START, JETPACK_FUEL_START + 1, false)) + if (!mergeItemStack(stack, JETPACK_FUEL_START, JETPACK_FUEL_START + 1, false)) { return null; } @@ -137,6 +165,16 @@ public ItemStack transferStackInSlot(EntityPlayer player, int i) return result; } + @Override + public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) + { + if (slot >= 0 && getSlot(slot) != null && getSlot(slot).getStack() == player.getHeldItem() && !wearing) + { + return null; + } + return super.slotClick(slot, button, flag, player); + } + @Override public void onContainerClosed(EntityPlayer player) { @@ -147,7 +185,7 @@ public void onContainerClosed(EntityPlayer player) } if (!player.worldObj.isRemote) { - for (int i = 0; i < 3; i++) + for (int i = 0; i < inventory.getSizeInventory(); i++) { ItemStack itemstack = this.inventory.getStackInSlotOnClosing(i); if (itemstack != null) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java index e0cce79d..7e91a99a 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java @@ -38,7 +38,7 @@ public static boolean transferContainerTank(IInventoryTanks inventory, FluidTank //Set slot out for whatever number the output slot should be. int slotOut = slotIn + 1; - //CONTAINER ===========> TANK + //CONTAINER ===========> TANK //TODO сheck if container fluid amount exceeds tank free space if (FluidContainerRegistry.isFilledContainer(stackIn)) { //See if the tank can accept moar fluid. @@ -55,7 +55,8 @@ public static boolean transferContainerTank(IInventoryTanks inventory, FluidTank inventory.decrStackSizeNoSave(slotIn, 1); inventory.setInventorySlotContentsNoSave(slotOut, stackOut); return true; - } else if (inventory.getStackInSlot(slotOut).getItem().equals(stackOut.getItem())) + } else if (inventory.getStackInSlot(slotOut).getItem().equals(stackOut.getItem()) + && stackOut.getItemDamage() == inventory.getStackInSlot(slotOut).getItemDamage()) { int maxStack = inventory.getStackInSlot(slotOut).getMaxStackSize(); if (maxStack > 1 && (inventory.getStackInSlot(slotOut).stackSize + 1) <= maxStack) @@ -88,7 +89,8 @@ else if (tank.getFluid() != null && tank.getFluidAmount() > 0 && FluidUtils.isEm inventory.decrStackSizeNoSave(slotIn, 1); inventory.setInventorySlotContentsNoSave(slotOut, stackOut); return true; - } else if (stackOut.getItem().equals(inventory.getStackInSlot(slotOut).getItem())) + } else if (stackOut.getItem().equals(inventory.getStackInSlot(slotOut).getItem()) + && stackOut.getItemDamage() == inventory.getStackInSlot(slotOut).getItemDamage()) { int maxStack = inventory.getStackInSlot(slotOut).getMaxStackSize(); if (maxStack > 1 && (inventory.getStackInSlot(slotOut).stackSize + 1) <= maxStack) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index c1535f28..0eee1456 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -30,8 +30,8 @@ */ public class InventoryBackpack implements IInventoryAdventureBackpack { - public ItemStack[] inventory = new ItemStack[Constants.INVENTORY_SIZE]; public NBTTagCompound extendedProperties = new NBTTagCompound(); + private ItemStack[] inventory = new ItemStack[Constants.INVENTORY_SIZE]; private FluidTank leftTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); private FluidTank rightTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); private boolean disableNVision = false; @@ -41,6 +41,7 @@ public class InventoryBackpack implements IInventoryAdventureBackpack private int lastTime = 0; private boolean special = false; + //TODO is inventory saved while GUI is open? can we sync it in realtime like tanks *sometimes* does? related to jetpack boiling while GIU open? public InventoryBackpack(ItemStack backpack) { containerStack = backpack; @@ -200,8 +201,12 @@ public ItemStack decrStackSizeNoSave(int slot, int quantity) @Override public boolean updateTankSlots() { - return InventoryActions.transferContainerTank(this, getLeftTank(), BUCKET_IN_LEFT) - || InventoryActions.transferContainerTank(this, getRightTank(), BUCKET_IN_RIGHT); + boolean result = false; + while (InventoryActions.transferContainerTank(this, getLeftTank(), BUCKET_IN_LEFT)) + result = true; + while (InventoryActions.transferContainerTank(this, getRightTank(), BUCKET_IN_RIGHT)) + result = true; + return result; } @Override @@ -263,8 +268,7 @@ public void saveToNBT(NBTTagCompound compound) @Override public FluidTank[] getTanksArray() { - FluidTank[] array = {leftTank, rightTank}; - return array; + return new FluidTank[]{leftTank, rightTank}; } @Override @@ -341,9 +345,9 @@ public void setInventorySlotContents(int slot, ItemStack stack) { if (slot > inventory.length) return; inventory[slot] = stack; - if (stack != null && stack.stackSize > this.getInventoryStackLimit()) + if (stack != null && stack.stackSize > getInventoryStackLimit()) { - stack.stackSize = this.getInventoryStackLimit(); + stack.stackSize = getInventoryStackLimit(); } dirtyInventory(); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index 7b45a589..269a081f 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -6,13 +6,12 @@ import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntityFurnace; import net.minecraftforge.common.util.Constants.NBT; -import net.minecraftforge.fluids.FluidContainerRegistry; -import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidTank; import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.util.FluidUtils; +import static com.darkona.adventurebackpack.common.Constants.JETPACK_BUCKET_IN; +import static com.darkona.adventurebackpack.common.Constants.JETPACK_BUCKET_OUT; import static com.darkona.adventurebackpack.common.Constants.JETPACK_COMPOUND_TAG; import static com.darkona.adventurebackpack.common.Constants.JETPACK_FUEL_SLOT; import static com.darkona.adventurebackpack.common.Constants.JETPACK_INVENTORY; @@ -41,6 +40,8 @@ public class InventoryCoalJetpack implements IInventoryTanks private boolean inUse = false; private int coolTicks = 5000; + //TODO if GUI is open while temp is going up, temp will drop to zero at 90C. just sync issue? + //TODO boiling sound work sometimes, and then it override leaking sound. check it public InventoryCoalJetpack(final ItemStack jetpack) { containerStack = jetpack; @@ -60,7 +61,10 @@ public int getBurnTimeRemainingScaled(int scale) @Override public boolean updateTankSlots() { - return false; + boolean result = false; + while (InventoryActions.transferContainerTank(this, getWaterTank(), JETPACK_BUCKET_IN)) + result = true; + return result; } @Override @@ -124,13 +128,16 @@ public void saveToNBT(NBTTagCompound compound) @Override public FluidTank[] getTanksArray() { - FluidTank[] tanks = {waterTank, steamTank}; - return tanks; + return new FluidTank[]{waterTank, steamTank}; } @Override public void dirtyInventory() { + if (updateTankSlots()) + { + dirtyTanks(); + } NBTTagList items = new NBTTagList(); for (int i = 0; i < inventory.length; i++) { @@ -251,7 +258,7 @@ public ItemStack decrStackSize(int slot, int quantity) @Override public ItemStack getStackInSlotOnClosing(int i) { - return (i == 0 || i == 1) ? inventory[i] : null; + return (i == JETPACK_BUCKET_IN || i == JETPACK_BUCKET_OUT) ? inventory[i] : null; } @Override @@ -262,9 +269,7 @@ public void setInventorySlotContents(int slot, ItemStack stack) { stack.stackSize = getInventoryStackLimit(); } - if (slot < JETPACK_FUEL_SLOT) onInventoryChanged(); dirtyInventory(); - } @Override @@ -315,25 +320,6 @@ public boolean isItemValidForSlot(int slot, ItemStack stack) return false; } - public void onInventoryChanged() - { - for (int i = 0; i < inventory.length; i++) - { - if (i == 0) - { - ItemStack container = getStackInSlot(i); - if (FluidContainerRegistry.isFilledContainer(container) && FluidUtils.isContainerForFluid(container, FluidRegistry.WATER)) - { - InventoryActions.transferContainerTank(this, waterTank, i); - } else if (FluidContainerRegistry.isEmptyContainer(container) && waterTank.getFluid() != null && FluidUtils.isContainerForFluid(container, FluidRegistry.WATER)) - { - InventoryActions.transferContainerTank(this, waterTank, i); - } - } - } - markDirty(); - } - public ItemStack getParentItemStack() { return containerStack; diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java index a22ddb57..83c6e50e 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java @@ -3,15 +3,15 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidTank; import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.item.ItemCopterPack; -import com.darkona.adventurebackpack.reference.GeneralReference; -import com.darkona.adventurebackpack.util.FluidUtils; +import static com.darkona.adventurebackpack.common.Constants.COPTER_BUCKET_IN; +import static com.darkona.adventurebackpack.common.Constants.COPTER_BUCKET_OUT; import static com.darkona.adventurebackpack.common.Constants.COPTER_FUEL_TANK; +import static com.darkona.adventurebackpack.common.Constants.COPTER_INVENTORY_SIZE; /** * Created on 02/01/2015 @@ -24,11 +24,12 @@ public class InventoryCopterPack implements IInventoryTanks public int tickCounter = 0; private byte status = ItemCopterPack.OFF_MODE; private ItemStack containerStack; - private ItemStack[] inventory = new ItemStack[2]; + private ItemStack[] inventory = new ItemStack[COPTER_INVENTORY_SIZE]; + //TODO copter sound doesn't init at login (status init, so you can keep flying) public InventoryCopterPack(ItemStack copterPack) { - status = ItemCopterPack.OFF_MODE; + //status = ItemCopterPack.OFF_MODE; containerStack = copterPack; openInventory(); } @@ -82,7 +83,7 @@ public ItemStack decrStackSize(int slot, int quantity) @Override public ItemStack getStackInSlotOnClosing(int i) { - return inventory[i]; + return (i == COPTER_BUCKET_IN || i == COPTER_BUCKET_OUT) ? inventory[i] : null; } @Override @@ -93,14 +94,6 @@ public void setInventorySlotContents(int slot, ItemStack stack) { stack.stackSize = getInventoryStackLimit(); } - if (FluidContainerRegistry.isFilledContainer(stack) && GeneralReference.isValidFuel(FluidContainerRegistry.getFluidForFilledItem(stack).getFluid())) - { - InventoryActions.transferContainerTank(this, fuelTank, 0); - } else if (FluidContainerRegistry.isEmptyContainer(stack) && fuelTank.getFluid() != null && FluidUtils.isContainerForFluid(stack, fuelTank.getFluid().getFluid())) - { - InventoryActions.transferContainerTank(this, fuelTank, 0); - } - dirtyTanks(); dirtyInventory(); } @@ -165,13 +158,6 @@ public void closeInventoryNoStatus() containerStack.stackTagCompound.setInteger("tickCounter", this.tickCounter); } - public void onInventoryChanged() - { - ItemStack container = getStackInSlot(0); - - closeInventory(); - } - @Override public void setInventorySlotContentsNoSave(int slot, ItemStack stack) { @@ -190,8 +176,7 @@ public ItemStack decrStackSizeNoSave(int slot, int amount) { if (inventory[slot].stackSize > amount) { - ItemStack result = inventory[slot].splitStack(amount); - return result; + return inventory[slot].splitStack(amount); } ItemStack stack = inventory[slot]; setInventorySlotContentsNoSave(slot, null); @@ -228,7 +213,10 @@ public void setStatus(byte status) @Override public boolean updateTankSlots() { - return false; + boolean result = false; + while (InventoryActions.transferContainerTank(this, getFuelTank(), COPTER_BUCKET_IN)) + result = true; + return result; } @Override @@ -250,14 +238,16 @@ public void saveToNBT(NBTTagCompound compound) @Override public FluidTank[] getTanksArray() { - FluidTank[] tanks = {fuelTank}; - return tanks; + return new FluidTank[]{fuelTank}; } @Override public void dirtyInventory() { - + if (updateTankSlots()) + { + dirtyTanks(); + } } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotAdventureBackpack.java index 80ba4735..87209d6d 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotAdventureBackpack.java @@ -8,9 +8,9 @@ * * @author Darkona */ -public abstract class SlotAdventureBackpack extends Slot +abstract class SlotAdventureBackpack extends Slot { - public SlotAdventureBackpack(IInventory p_i1824_1_, int p_i1824_2_, int p_i1824_3_, int p_i1824_4_) + SlotAdventureBackpack(IInventory p_i1824_1_, int p_i1824_2_, int p_i1824_3_, int p_i1824_4_) //TODO whats the point? { super(p_i1824_1_, p_i1824_2_, p_i1824_3_, p_i1824_4_); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java index b52662a6..3a97afa2 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java @@ -1,6 +1,5 @@ package com.darkona.adventurebackpack.inventory; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -31,7 +30,7 @@ public class SlotBackpack extends SlotAdventureBackpack // Project Red Exploration Backpacks "mrtjp.projectred.exploration.ItemBackpack",}; - public SlotBackpack(IInventoryAdventureBackpack inventory, int id, int x, int y) + SlotBackpack(IInventoryAdventureBackpack inventory, int id, int x, int y) { super(inventory, id, x, y); } @@ -74,10 +73,4 @@ public boolean isItemValid(ItemStack stack) return isValidItem(stack); } - @Override - public void onPickupFromSlot(EntityPlayer p_82870_1_, ItemStack p_82870_2_) - { - super.onPickupFromSlot(p_82870_1_, p_82870_2_); - } - } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java index ce755855..982d45ac 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java @@ -2,6 +2,7 @@ import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidTank; @@ -35,6 +36,21 @@ static boolean isFilled(ItemStack stack) return FluidContainerRegistry.isFilledContainer(stack); } + static boolean isBucket(ItemStack stack) + { + return FluidContainerRegistry.isBucket(stack); + } + + static boolean isEmptyBucket(ItemStack stack) + { + return FluidContainerRegistry.isBucket(stack) && isEmpty(stack); + } + + static boolean isFilledBucket(ItemStack stack) + { + return FluidContainerRegistry.isBucket(stack) && isFilled(stack); + } + static String getFluidName(ItemStack stack) { if (stack == null || isEmpty(stack)) @@ -63,16 +79,22 @@ static int getFluidID(FluidTank tank) return tank.getFluid().getFluid().getID(); } + static Fluid getFluid(ItemStack stack) + { + if (stack == null || isEmpty(stack)) + return null; + return FluidContainerRegistry.getFluidForFilledItem(stack).getFluid(); + } + static int getCapacity(ItemStack stack) { - //TODO if bottle and water... -> 1000 return FluidContainerRegistry.getContainerCapacity(stack); } @Override public boolean isItemValid(ItemStack stack) { - return (stack != null && isContainer(stack)); //TODO universal fluid cells support + return stack != null && isContainer(stack); } @Override @@ -91,8 +113,7 @@ public void onSlotChanged() @Override public int getSlotStackLimit() { - return Constants.BASIC_TANK_CAPACITY / Constants.BUCKET; //TODO change for jet/copter - //return this.inventory.getInventoryStackLimit(); + return Constants.BASIC_TANK_CAPACITY / Constants.BUCKET; } } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidFuel.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidFuel.java new file mode 100644 index 00000000..4233bbcd --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidFuel.java @@ -0,0 +1,43 @@ +package com.darkona.adventurebackpack.inventory; + +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; + +import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.reference.GeneralReference; + +/** + * Created on 10.04.2017 + * + * @author Ugachaga + */ +public class SlotFluidFuel extends SlotFluid +{ + SlotFluidFuel(IInventory inventory, int id, int x, int y) + { + super(inventory, id, x, y); + } + + private static boolean isValidContainer(ItemStack stack) + { + return isEmpty(stack) || (isFilled(stack) && GeneralReference.isValidFuel(getFluid(stack))); + } + + static boolean isValidItem(ItemStack stack) + { + return isContainer(stack) && isValidContainer(stack); + } + + @Override + public boolean isItemValid(ItemStack stack) + { + return stack != null && isValidItem(stack); + } + + @Override + public int getSlotStackLimit() + { + return Constants.COPTER_FUEL_CAPACITY / Constants.BUCKET; + } + +} diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidWater.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidWater.java new file mode 100644 index 00000000..0b90b783 --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidWater.java @@ -0,0 +1,54 @@ +package com.darkona.adventurebackpack.inventory; + +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidRegistry; + +import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.util.FluidUtils; + +/** + * Created on 10.04.2017 + * + * @author Ugachaga + */ +public class SlotFluidWater extends SlotFluid +{ + SlotFluidWater(IInventory inventory, int id, int x, int y) + { + super(inventory, id, x, y); + } + + private static boolean isContainerForWater(ItemStack stack) + { + return FluidUtils.isContainerForFluid(stack, FluidRegistry.WATER); + } + private static boolean isContainerWithWater(ItemStack stack) + { + return isFilled(stack) && FluidContainerRegistry.getFluidForFilledItem(stack).getFluid().getName().contains("water"); + } + + private static boolean isValidContainer(ItemStack stack) + { + return isContainerForWater(stack) && (isEmpty(stack) || isContainerWithWater(stack)); + } + + static boolean isValidItem(ItemStack stack) + { + return isContainer(stack) && isValidContainer(stack); + } + + @Override + public boolean isItemValid(ItemStack stack) + { + return stack != null && isValidItem(stack); + } + + @Override + public int getSlotStackLimit() + { + return Constants.JETPACK_WATER_CAPACITY / Constants.BUCKET; + } + +} diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java index a5895963..c7d05951 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java @@ -11,14 +11,19 @@ */ public class SlotFuel extends SlotAdventureBackpack { - public SlotFuel(IInventory inventory, int id, int x, int y) + SlotFuel(IInventory inventory, int id, int x, int y) { super(inventory, id, x, y); } + static boolean isValidItem(ItemStack stack) + { + return TileEntityFurnace.isItemFuel(stack) && !SlotFluid.isContainer(stack); //fuel slot accept only solid fuel + } + @Override public boolean isItemValid(ItemStack stack) { - return (stack != null && TileEntityFurnace.isItemFuel(stack) && !SlotFluid.isContainer(stack)); //fuel slot accept only solid fuel + return stack != null && isValidItem(stack); } } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java index c4a99901..a0b622bf 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java @@ -19,7 +19,7 @@ */ public class SlotTool extends SlotAdventureBackpack { - public SlotTool(IInventory inventory, int id, int x, int y) + SlotTool(IInventory inventory, int id, int x, int y) { super(inventory, id, x, y); } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index 60c94e20..a32a072f 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -162,7 +162,7 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) runFirebox(inv); } runHeater(inv, world, player); - runWater(inv, world, player); + runBoiler(inv, world, player); inv.dirtyBoiler(); //Suction @@ -214,17 +214,17 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) inv.closeInventory(); } - private void runWater(InventoryCoalJetpack inv, World world, EntityPlayer player) + private void runBoiler(InventoryCoalJetpack inv, World world, EntityPlayer player) { int temperature = inv.getTemperature(); boolean mustSSSSS = !inv.isLeaking(); boolean mustBlublub = !inv.isBoiling(); - boolean Water = inv.isBoiling(); + boolean boiling = inv.isBoiling(); boolean leaking = inv.isLeaking(); if (temperature >= 100 && inv.getWaterTank().getFluidAmount() > 0) { - if (!Water) Water = true; + if (!boiling) boiling = true; if (!world.isRemote && mustBlublub) { @@ -232,13 +232,13 @@ private void runWater(InventoryCoalJetpack inv, World world, EntityPlayer player } } else { - if (Water) + if (boiling) { - Water = false; + boiling = false; } } - if (Water) + if (boiling) { if (inv.getSteamTank().getFluidAmount() < inv.getSteamTank().getCapacity()) { @@ -268,7 +268,7 @@ private void runWater(InventoryCoalJetpack inv, World world, EntityPlayer player } } } - inv.setBoiling(Water); + inv.setBoiling(boiling); inv.setLeaking(leaking); inv.setTemperature(temperature); } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java index 9af46601..214d8193 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java @@ -17,12 +17,10 @@ import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; -import net.minecraftforge.fluids.FluidTank; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import com.darkona.adventurebackpack.client.models.ModelCopterPack; -import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.inventory.ContainerCopter; import com.darkona.adventurebackpack.inventory.InventoryCopterPack; @@ -60,7 +58,7 @@ public void getSubItems(Item item, CreativeTabs tab, List list) ItemStack iStack = new ItemStack(item, 1, 0); NBTTagCompound compound = new NBTTagCompound(); iStack.setTagCompound(compound); - compound.setTag(Constants.COPTER_FUEL_TANK, new FluidTank(Constants.COPTER_FUEL_CAPACITY).writeToNBT(new NBTTagCompound())); + //compound.setTag(Constants.COPTER_FUEL_TANK, new FluidTank(Constants.COPTER_FUEL_CAPACITY).writeToNBT(new NBTTagCompound())); list.add(iStack); } From 442dfc9fbc05b3ff1dea31d28bf4ca1a0a447d42 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 11 Apr 2017 19:00:13 +0700 Subject: [PATCH 387/462] Added fuel consume rates config Added Temperature (durability) bar --- .../client/gui/GuiAdvBackpack.java | 2 +- .../client/gui/GuiCoalJetpack.java | 3 +- .../adventurebackpack/common/Constants.java | 6 +- .../config/ConfigHandler.java | 23 +- .../inventory/ContainerCopter.java | 1 - .../inventory/ContainerJetpack.java | 3 - .../inventory/InventoryBackpack.java | 18 +- .../inventory/InventoryCoalJetpack.java | 13 +- .../inventory/InventoryCopterPack.java | 7 +- .../item/ItemAdventureBackpack.java | 319 +++++++++--------- .../item/ItemCoalJetpack.java | 205 +++++------ .../item/ItemCopterPack.java | 209 ++++++------ .../reference/GeneralReference.java | 12 +- 13 files changed, 407 insertions(+), 414 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index 9c69910b..1f89dbec 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -154,7 +154,7 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) GL11.glDisable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_BLEND); - /*if (!ConfigHandler.HOVERING_TEXT_TANKS) + /*if (!ConfigHandler.tanksHoveringText); { GL11.glPushMatrix(); //GL11.glTranslatef(8f,64f,0f); diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java index 4874a897..a495b5de 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java @@ -7,6 +7,7 @@ import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidTank; +import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.config.Keybindings; import com.darkona.adventurebackpack.init.ModNetwork; @@ -98,7 +99,7 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) this.drawTexturedModalRect(78, 48 + 12 - i1, 176, 12 - i1, 14, i1 + 1); } - int H = Math.round(((float) 72 / (float) InventoryCoalJetpack.MAX_TEMPERATURE) * (float) inventory.getTemperature()); + int H = Math.round(((float) 72 / (float) Constants.JETPACK_MAX_TEMPERATURE) * (float) inventory.getTemperature()); drawTexturedModalRect(139, 8 + (72 - H), 40, 167 + (72 - H), 5, H); GL11.glDisable(GL11.GL_BLEND); diff --git a/src/main/java/com/darkona/adventurebackpack/common/Constants.java b/src/main/java/com/darkona/adventurebackpack/common/Constants.java index ba74ad15..10de6e37 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/Constants.java +++ b/src/main/java/com/darkona/adventurebackpack/common/Constants.java @@ -34,13 +34,12 @@ public class Constants public static final int ADVANCED_TANK_CAPACITY = BUCKET * 8; // upgrade system? public static final int HEROIC_TANK_CAPACITY = BUCKET * 12; - //IDEA add ghost slot(s) for properly handle stacks of fluid containers - // Jetpack public static final int JETPACK_INVENTORY_SIZE = 3; public static final int JETPACK_BUCKET_IN = 0; public static final int JETPACK_BUCKET_OUT = 1; public static final int JETPACK_FUEL_SLOT = 2; + public static final String JETPACK_COMPOUND_TAG = "jetpackData"; public static final String JETPACK_INVENTORY = "inventory"; public static final String JETPACK_STEAM_TANK = "steamTank"; @@ -48,10 +47,13 @@ public class Constants public static final int JETPACK_STEAM_CAPACITY = BUCKET * 12; public static final int JETPACK_WATER_CAPACITY = BUCKET * 6; + public static final int JETPACK_MAX_TEMPERATURE = 200; + // Copter public static final int COPTER_INVENTORY_SIZE = 2; public static final int COPTER_BUCKET_IN = 0; public static final int COPTER_BUCKET_OUT = 1; + public static final String COPTER_FUEL_TANK = "fuelTank"; public static final int COPTER_FUEL_CAPACITY = BUCKET * 6; diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 610bdcef..1124f981 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -32,6 +32,7 @@ public class ConfigHandler public static boolean fixLead = true; public static boolean enableFullnessBar = false; + public static boolean enableTemperatureBar = false; public static boolean enableToolsRender = true; public static boolean enableTooltips = true; public static int typeTankRender = 2; @@ -64,12 +65,11 @@ public class ConfigHandler public static float fuelRateBioFuel = 1.0f; public static float fuelRateBioEthanol = 1.5f; - public static float fuelRateCoal = 2.0f; public static float fuelRateCreosote = 7.0f; - public static float fuelRateFuel = 1.0f; - public static float fuelRateFuelLight = 0.6f; - public static float fuelRateFuelHeavy = 0.7f; - public static float fuelRateFuelNitro = 0.5f; + public static float fuelRateFuel = 0.8f; + public static float fuelRateFuelLight = 1.0f; + public static float fuelRateFuelHeavy = 1.3f; + public static float fuelRateFuelNitro = 0.4f; public static float fuelRateLava = 5.0f; public static float fuelRateOil = 3.0f; @@ -122,6 +122,7 @@ private static void loadConfiguration() // Graphics typeTankRender = config.getInt("Tank Render Type", "graphics", 3, 1, 3, "1,2 or 3 for different rendering of fluids in the Backpack GUI"); enableFullnessBar = config.getBoolean("Enable Fullness Bar", "graphics", false, "Enable durability bar showing fullness of backpacks inventory"); + enableTemperatureBar = config.getBoolean("Enable Temperature Bar", "graphics", false, "Enable durability bar showing temperature of jetpack"); enableToolsRender = config.getBoolean("Enable Tools Render", "graphics", true, "Enable rendering for tools in the backpack tool slots. May cause visual glitches with Gregtech tools"); enableTooltips = config.getBoolean("Enable Tooltips", "graphics", true, "Enable tooltips? Client side"); tanksHoveringText = config.getBoolean("Hovering Text", "graphics", false, "Show hovering text on fluid tanks?"); @@ -156,17 +157,15 @@ private static void loadConfiguration() nameUnlocalized = config.getStringList("By Internal Name", "items.disallowed", nameDefault, "Disallow items by internal (unlocalized) name. Not case sensitive. Example: tile.dirt"); // Items.Fuel - /*fuelRateBioFuel = config.getFloat("BioFuel", "items.fuel", 1.0f, 0.05f, 20.0f, "BioFuel consumption rate"); + fuelRateBioFuel = config.getFloat("BioFuel", "items.fuel", 1.0f, 0.05f, 20.0f, "BioFuel consumption rate"); fuelRateBioEthanol = config.getFloat("BioEthanol", "items.fuel", 1.5f, 0.05f, 20.0f, "BioEthanol consumption rate"); - fuelRateCoal = config.getFloat("Coal", "items.fuel", 2.0f, 0.05f, 20.0f, "Coal consumption rate"); fuelRateCreosote = config.getFloat("Creosote", "items.fuel", 7.0f, 0.05f, 20.0f, "Creosote consumption rate"); - fuelRateFuel = config.getFloat("Fuel", "items.fuel", 1.0f, 0.05f, 20.0f, "Fuel / rocket fuel consumption rate"); + fuelRateFuel = config.getFloat("Fuel", "items.fuel", 0.8f, 0.05f, 20.0f, "Fuel / rocket fuel consumption rate"); fuelRateFuelLight = config.getFloat("FuelLight", "items.fuel", 1.0f, 0.05f, 20.0f, "Light Fuel consumption rate"); - fuelRateFuelHeavy = config.getFloat("FuelHeavy", "items.fuel", 1.0f, 0.05f, 20.0f, "Heavy Fuel consumption rate"); - fuelRateFuelNitro = config.getFloat("FuelNitro", "items.fuel", 0.5f, 0.05f, 20.0f, "Nitro Fuel consumption rate"); + fuelRateFuelHeavy = config.getFloat("FuelHeavy", "items.fuel", 1.3f, 0.05f, 20.0f, "Heavy Fuel consumption rate"); + fuelRateFuelNitro = config.getFloat("FuelNitro", "items.fuel", 0.4f, 0.05f, 20.0f, "Nitro Fuel consumption rate"); fuelRateLava = config.getFloat("Lava", "items.fuel", 5.0f, 0.05f, 20.0f, "Lava consumption rate"); - fuelRateOil = config.getFloat("Oil", "items.fuel", 3.0f, 0.05f, 20.0f, "Oil consumption rate");*/ - //TODO set default values, change copter fuel usage to float compatible + fuelRateOil = config.getFloat("Oil", "items.fuel", 3.0f, 0.05f, 20.0f, "Oil consumption rate"); // Items.Recipes consumeDragonEgg = config.getBoolean("Consume Dragon Egg", "items.recipes", false, "Consume Dragon Egg when Dragon backpack crafted?"); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java index f9ac23fa..85b7db78 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java @@ -60,7 +60,6 @@ private void bindPlayerInventory(InventoryPlayer invPlayer) private void makeSlots(InventoryPlayer invPlayer) { bindPlayerInventory(invPlayer); - int slot = 0; //Bucket Slots // bucket in addSlotToContainer(new SlotFluidFuel(inventory, COPTER_BUCKET_IN, 44, 23)); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java index 239d7ba0..d5d096ff 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java @@ -59,9 +59,7 @@ private void bindPlayerInventory(InventoryPlayer invPlayer) private void makeSlots(InventoryPlayer invPlayer) { - bindPlayerInventory(invPlayer); - //Bucket Slots // bucket in addSlotToContainer(new SlotFluidWater(inventory, Constants.JETPACK_BUCKET_IN, 30, 22)); @@ -69,7 +67,6 @@ private void makeSlots(InventoryPlayer invPlayer) addSlotToContainer(new SlotFluidWater(inventory, Constants.JETPACK_BUCKET_OUT, 30, 52)); // fuel addSlotToContainer(new SlotFuel(inventory, Constants.JETPACK_FUEL_SLOT, 77, 64)); - } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index 0eee1456..031e17d9 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -31,15 +31,17 @@ public class InventoryBackpack implements IInventoryAdventureBackpack { public NBTTagCompound extendedProperties = new NBTTagCompound(); + private ItemStack[] inventory = new ItemStack[Constants.INVENTORY_SIZE]; private FluidTank leftTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); private FluidTank rightTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); + private boolean disableNVision = false; private boolean disableCycling = false; - private ItemStack containerStack; - private String colorName = "Standard"; - private int lastTime = 0; private boolean special = false; + private int lastTime = 0; + private String colorName = "Standard"; + private ItemStack containerStack; //TODO is inventory saved while GUI is open? can we sync it in realtime like tanks *sometimes* does? related to jetpack boiling while GIU open? public InventoryBackpack(ItemStack backpack) @@ -48,16 +50,6 @@ public InventoryBackpack(ItemStack backpack) openInventory(); } - public ItemStack getContainerStack() - { - return containerStack; - } - - public void setContainerStack(ItemStack containerStack) - { - this.containerStack = containerStack; - } - @Override public FluidTank getLeftTank() { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index 269a081f..0dcb1fc8 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -25,20 +25,21 @@ */ public class InventoryCoalJetpack implements IInventoryTanks { - public static final int MAX_TEMPERATURE = 200; public int currentItemBurnTime = 0; + private ItemStack[] inventory = new ItemStack[Constants.JETPACK_INVENTORY_SIZE]; private FluidTank waterTank = new FluidTank(Constants.JETPACK_WATER_CAPACITY); private FluidTank steamTank = new FluidTank(Constants.JETPACK_STEAM_CAPACITY); + + private boolean boiling = false; + private boolean inUse = false; + private boolean leaking = false; private boolean status = false; private int temperature = 25; private int burnTicks = 0; - private ItemStack containerStack; - private long systemTime = 0; - private boolean boiling = false; - private boolean leaking = false; - private boolean inUse = false; private int coolTicks = 5000; + private long systemTime = 0; + private ItemStack containerStack; //TODO if GUI is open while temp is going up, temp will drop to zero at 90C. just sync issue? //TODO boiling sound work sometimes, and then it override leaking sound. check it diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java index 83c6e50e..84209499 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java @@ -20,16 +20,17 @@ */ public class InventoryCopterPack implements IInventoryTanks { - public FluidTank fuelTank = new FluidTank(Constants.COPTER_FUEL_CAPACITY); public int tickCounter = 0; + + private FluidTank fuelTank = new FluidTank(Constants.COPTER_FUEL_CAPACITY); + private ItemStack[] inventory = new ItemStack[COPTER_INVENTORY_SIZE]; + private byte status = ItemCopterPack.OFF_MODE; private ItemStack containerStack; - private ItemStack[] inventory = new ItemStack[COPTER_INVENTORY_SIZE]; //TODO copter sound doesn't init at login (status init, so you can keep flying) public InventoryCopterPack(ItemStack copterPack) { - //status = ItemCopterPack.OFF_MODE; containerStack = copterPack; openInventory(); } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 7dc47f06..712d165a 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -65,79 +65,135 @@ public static Item getItemFromBlock(Block block) return block instanceof BlockAdventureBackpack ? ModItems.adventureBackpack : null; } - /** - * Return the enchantability factor of the item, most of the timeInSeconds is based on material. - */ @Override - public int getItemEnchantability() + @SuppressWarnings({"unchecked", "rawtypes"}) + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs par2CreativeTabs, List subItems) { - return 0; + for (int i = 0; i < BackpackNames.backpackNames.length; i++) + { + ItemStack bp = new ItemStack(this, 1, 0); + bp.setItemDamage(i); + NBTTagCompound c = new NBTTagCompound(); + c.setString("colorName", BackpackNames.backpackNames[i]); + BackpackUtils.setBackpackTag(bp, c); + subItems.add(bp); + } } @Override - public boolean isBookEnchantable(ItemStack stack, ItemStack book) + @SuppressWarnings({"rawtypes", "unchecked"}) + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4) { - return EnchUtils.isSoulBook(book); + NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(stack); + if (backpackTag.hasKey("colorName")) + { + String color = backpackTag.getString("colorName"); + switch (color) + { + case "Bat": + list.add(EnumChatFormatting.DARK_PURPLE + color); + break; + case "Dragon": + list.add(EnumChatFormatting.LIGHT_PURPLE + color); + break; + case "Pigman": + list.add(EnumChatFormatting.RED + color); + break; + case "Rainbow": + list.add(Utils.makeItRainbow(color)); + break; + case "Squid": + list.add(EnumChatFormatting.DARK_AQUA + color); + break; + default: + list.add(color); + break; + } + } } - /** - * Return whether this item is repairable in an anvil. - */ @Override - public boolean getIsRepairable(ItemStack p_82789_1_, ItemStack p_82789_2_) + public void onCreated(ItemStack stack, World par2World, EntityPlayer par3EntityPlayer) { - return false; + super.onCreated(stack, par2World, par3EntityPlayer); + BackpackNames.setBackpackColorNameFromDamage(stack, stack.getItemDamage()); } - /** - * Determines if the durability bar should be rendered for this item. - */ @Override - public boolean showDurabilityBar(ItemStack stack) + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) { - return ConfigHandler.enableFullnessBar && getItemCount(stack) > 0; + return player.canPlayerEdit(x, y, z, side, stack) && placeBackpack(stack, player, world, x, y, z, side, true); } - /** - * Queries the percentage of the 'Durability' bar that should be drawn. - * @return 1.0 for 100% 0 for 0% - */ @Override - public double getDurabilityForDisplay(ItemStack stack) + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - return (float) getItemCount(stack)/Constants.INVENTORY_MAIN_SIZE; + MovingObjectPosition mop = getMovingObjectPositionFromPlayer(world, player, true); + if (mop == null || mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY) + { + if (world.isRemote) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); + } + } + return stack; } - private int getItemCount(ItemStack backpack) + @Override + public boolean onDroppedByPlayer(ItemStack stack, EntityPlayer player) { - NBTTagCompound backpackTag = backpack.stackTagCompound.getCompoundTag(Constants.COMPOUND_TAG); - NBTTagList itemList = backpackTag.getTagList(Constants.INVENTORY, NBT.TAG_COMPOUND); - int itemCount = itemList.tagCount(); - for (int i = itemCount - 1; i >= 0; i--) + if (stack != null && player instanceof EntityPlayerMP && player.openContainer instanceof ContainerBackpack) { - int slotAtI = itemList.getCompoundTagAt(i).getInteger("Slot"); - if (slotAtI < Constants.UPPER_TOOL) - break; - else if (slotAtI == Constants.UPPER_TOOL || slotAtI == Constants.LOWER_TOOL) - itemCount--; + player.closeScreen(); } - return itemCount; + return super.onDroppedByPlayer(stack, player); } @Override - public String getItemStackDisplayName(ItemStack stack) + public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) { - return "Adventure Backpack"; + if (world.isRemote || !ConfigHandler.backpackDeathPlace || EnchUtils.isSoulBounded(stack) + || player.getEntityWorld().getGameRules().getGameRuleBooleanValue("keepInventory")) + { + return; + } + + if (!tryPlace(world, player, stack)) + { + player.dropPlayerItemWithRandomChoice(stack, false); + } + + BackpackProperty.get(player).setWearable(null); } - @Override - public void onCreated(ItemStack stack, World par2World, EntityPlayer par3EntityPlayer) + private boolean tryPlace(World world, EntityPlayer player, ItemStack backpack) { - super.onCreated(stack, par2World, par3EntityPlayer); - BackpackNames.setBackpackColorNameFromDamage(stack, stack.getItemDamage()); + int X = (int) player.posX; + if (player.posX < 0) X--; + int Z = (int) player.posZ; + if (player.posZ < 0) Z--; + int Y = (int) player.posY; + if (Y < 1) Y = 1; + + int positions[] = {0, -1, 1, -2, 2, -3, 3, -4, 4, -5, 5, -6, 6}; + + for (int shiftY : positions) + { + if (Y + shiftY >= 1) + { + ChunkCoordinates spawn = Utils.getNearestEmptyChunkCoordinatesSpiral(world, X, Z, X, Y + shiftY, Z, 6, true, 1, (byte) 0, false); + if (spawn != null) + { + return placeBackpack(backpack, player, world, spawn.posX, spawn.posY, spawn.posZ, ForgeDirection.UP.ordinal(), false); + } + } + } + return false; } - public boolean placeBackpack(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, boolean from) + private boolean placeBackpack(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, boolean from) { if (stack.stackSize == 0 || !player.canPlayerEdit(x, y, z, side, stack)) return false; if (!stack.hasTagCompound()) stack.setTagCompound(new NBTTagCompound()); @@ -208,39 +264,59 @@ public boolean placeBackpack(ItemStack stack, EntityPlayer player, World world, } @Override - public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) + public void onEquipped(World world, EntityPlayer player, ItemStack stack) { - return player.canPlayerEdit(x, y, z, side, stack) && placeBackpack(stack, player, world, x, y, z, side, true); + } @Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) + public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) { - MovingObjectPosition mop = getMovingObjectPositionFromPlayer(world, player, true); - if (mop == null || mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY) + + if (!ConfigHandler.backpackAbilities) return; + if (world == null || player == null || stack == null) return; + + if (BackpackAbilities.hasAbility(BackpackNames.getBackpackColorName(stack))) { - if (world.isRemote) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); - } + BackpackAbilities.backpackAbilities.executeAbility(player, world, stack); } - return stack; } @Override - public boolean isDamageable() + public void onUnequipped(World world, EntityPlayer player, ItemStack stack) { - return false; + if (BackpackAbilities.hasRemoval(BackpackNames.getBackpackColorName(stack))) + { + BackpackAbilities.backpackAbilities.executeRemoval(player, world, stack); + } } @Override - public boolean onDroppedByPlayer(ItemStack stack, EntityPlayer player) + public double getDurabilityForDisplay(ItemStack stack) { - if (stack != null && player instanceof EntityPlayerMP && player.openContainer instanceof ContainerBackpack) + return (float) getItemCount(stack) / Constants.INVENTORY_MAIN_SIZE; + } + + private int getItemCount(ItemStack backpack) + { + NBTTagCompound backpackTag = backpack.stackTagCompound.getCompoundTag(Constants.COMPOUND_TAG); + NBTTagList itemList = backpackTag.getTagList(Constants.INVENTORY, NBT.TAG_COMPOUND); + int itemCount = itemList.tagCount(); + for (int i = itemCount - 1; i >= 0; i--) { - player.closeScreen(); + int slotAtI = itemList.getCompoundTagAt(i).getInteger("Slot"); + if (slotAtI < Constants.UPPER_TOOL) + break; + else if (slotAtI == Constants.UPPER_TOOL || slotAtI == Constants.LOWER_TOOL) + itemCount--; } - return super.onDroppedByPlayer(stack, player); + return itemCount; + } + + @Override + public boolean showDurabilityBar(ItemStack stack) + { + return ConfigHandler.enableFullnessBar && getItemCount(stack) > 0; } @SideOnly(Side.CLIENT) @@ -266,145 +342,56 @@ public String getArmorTexture(ItemStack stack, Entity entity, int slot, String t } @Override - @SuppressWarnings({"rawtypes", "unchecked"}) @SideOnly(Side.CLIENT) - public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4) + public ModelBiped getWearableModel(ItemStack wearable) { - NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(stack); - if (backpackTag.hasKey("colorName")) - { - String color = backpackTag.getString("colorName"); - switch (color) - { - case "Bat": - list.add(EnumChatFormatting.DARK_PURPLE + color); - break; - case "Dragon": - list.add(EnumChatFormatting.LIGHT_PURPLE + color); - break; - case "Pigman": - list.add(EnumChatFormatting.RED + color); - break; - case "Rainbow": - list.add(Utils.makeItRainbow(color)); - break; - case "Squid": - list.add(EnumChatFormatting.DARK_AQUA + color); - break; - default: - list.add(color); - break; - } - } + return ClientProxy.modelAdventureBackpack.setWearable(wearable); } @Override - @SuppressWarnings({"unchecked", "rawtypes"}) @SideOnly(Side.CLIENT) - public void getSubItems(Item item, CreativeTabs par2CreativeTabs, List subItems) - { - for (int i = 0; i < BackpackNames.backpackNames.length; i++) - { - ItemStack bp = new ItemStack(this, 1, 0); - bp.setItemDamage(i); - NBTTagCompound c = new NBTTagCompound(); - c.setString("colorName", BackpackNames.backpackNames[i]); - BackpackUtils.setBackpackTag(bp, c); - subItems.add(bp); - } - } - - @Override - public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) + public ResourceLocation getWearableTexture(ItemStack wearable) { - if (!ConfigHandler.backpackAbilities) return; - if (world == null || player == null || stack == null) return; - - if (BackpackAbilities.hasAbility(BackpackNames.getBackpackColorName(stack))) - { - BackpackAbilities.backpackAbilities.executeAbility(player, world, stack); - } - } + ResourceLocation modelTexture; - @Override - public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) - { - if (world.isRemote || !ConfigHandler.backpackDeathPlace || EnchUtils.isSoulBounded(stack) - || player.getEntityWorld().getGameRules().getGameRuleBooleanValue("keepInventory")) + if (BackpackNames.getBackpackColorName(wearable).equals("Standard")) { - return; - } - - if (!tryPlace(world, player, stack)) + modelTexture = Resources.backpackTextureFromString(AdventureBackpack.instance.Holiday); + } else { - player.dropPlayerItemWithRandomChoice(stack, false); + modelTexture = Resources.backpackTextureFromString(BackpackNames.getBackpackColorName(wearable)); } - - BackpackProperty.get(player).setWearable(null); + return modelTexture; } - private boolean tryPlace(World world, EntityPlayer player, ItemStack backpack) + @Override + public String getItemStackDisplayName(ItemStack stack) { - int X = (int) player.posX; - if (player.posX < 0) X--; - int Z = (int) player.posZ; - if (player.posZ < 0) Z--; - int Y = (int) player.posY; - if (Y < 1) Y = 1; - - int positions[] = {0, -1, 1, -2, 2, -3, 3, -4, 4, -5, 5, -6, 6}; - - for (int shiftY : positions) - { - if (Y + shiftY >= 1) - { - ChunkCoordinates spawn = Utils.getNearestEmptyChunkCoordinatesSpiral(world, X, Z, X, Y + shiftY, Z, 6, true, 1, (byte) 0, false); - if (spawn != null) - { - return placeBackpack(backpack, player, world, spawn.posX, spawn.posY, spawn.posZ, ForgeDirection.UP.ordinal(), false); - } - } - } - return false; + return "Adventure Backpack"; } @Override - public void onEquipped(World world, EntityPlayer player, ItemStack stack) + public boolean getIsRepairable(ItemStack p_82789_1_, ItemStack p_82789_2_) { - + return false; } @Override - public void onUnequipped(World world, EntityPlayer player, ItemStack stack) + public int getItemEnchantability() { - if (BackpackAbilities.hasRemoval(BackpackNames.getBackpackColorName(stack))) - { - BackpackAbilities.backpackAbilities.executeRemoval(player, world, stack); - } + return 0; } @Override - @SideOnly(Side.CLIENT) - public ModelBiped getWearableModel(ItemStack wearable) + public boolean isBookEnchantable(ItemStack stack, ItemStack book) { - return ClientProxy.modelAdventureBackpack.setWearable(wearable); + return EnchUtils.isSoulBook(book); } @Override - @SideOnly(Side.CLIENT) - public ResourceLocation getWearableTexture(ItemStack wearable) + public boolean isDamageable() { - - ResourceLocation modelTexture; - - if (BackpackNames.getBackpackColorName(wearable).equals("Standard")) - { - modelTexture = Resources.backpackTextureFromString(AdventureBackpack.instance.Holiday); - } else - { - modelTexture = Resources.backpackTextureFromString(BackpackNames.getBackpackColorName(wearable)); - } - return modelTexture; + return false; } } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index a32a072f..8275ebd2 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -20,6 +20,7 @@ import cpw.mods.fml.relauncher.SideOnly; import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.inventory.ContainerJetpack; import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; @@ -38,9 +39,6 @@ */ public class ItemCoalJetpack extends ItemAB implements IBackWearableItem { - public static byte OFF_MODE = 0; - public static byte NORMAL_MODE = 1; - public ItemCoalJetpack() { super(); @@ -66,18 +64,6 @@ public void getSubItems(Item item, CreativeTabs tab, List list) list.add(iStack); } - @Override - public int getItemEnchantability() - { - return 0; - } - - @Override - public boolean isBookEnchantable(ItemStack stack, ItemStack book) - { - return EnchUtils.isSoulBook(book); - } - @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { @@ -88,64 +74,12 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla return stack; } - private void runFirebox(InventoryCoalJetpack inv) - { - if (inv.getBurnTicks() <= 0) - { - inv.setBurnTicks(inv.consumeFuel()); - inv.currentItemBurnTime = inv.getBurnTicks(); - } - inv.dirtyInventory(); - } - - private void runHeater(InventoryCoalJetpack inv, World world, EntityPlayer player) - { - int temperature = inv.getTemperature(); - int burnTicks = inv.getBurnTicks() - 1; - int coolTicks = inv.getCoolTicks() - 1; - - if (burnTicks > 0) - { - if (temperature < InventoryCoalJetpack.MAX_TEMPERATURE) - { - if (burnTicks % inv.getIncreasingFactor() == 0) - { - ++temperature; - coolTicks = coolTicks < 5000 ? coolTicks + 100 : coolTicks; - } - } - } else if (burnTicks <= 0) - { - inv.currentItemBurnTime = 0; - if (coolTicks % inv.getDecreasingFactor() == 0) - { - temperature = (temperature - 1 >= getBiomeMinTemp(player, world)) ? temperature - 1 : 0; - } - } - inv.setTemperature(temperature); - inv.setCoolTicks(coolTicks); - inv.setBurnTicks(burnTicks <= 0 ? 0 : burnTicks); - } - - private int getBiomeMinTemp(EntityPlayer player, World world) + @Override + public void onEquipped(World world, EntityPlayer player, ItemStack stack) { - BiomeDictionary.Type[] thisBiomeTypes = BiomeDictionary.getTypesForBiome(world.getBiomeGenForCoords((int) player.posX, (int) player.posZ)); - for (BiomeDictionary.Type type : thisBiomeTypes) - { - if (type == BiomeDictionary.Type.COLD || type == BiomeDictionary.Type.SNOWY) - { - return 0; - } - if (type == BiomeDictionary.Type.HOT || type == BiomeDictionary.Type.BEACH) - { - return 30; - } - if (type == BiomeDictionary.Type.NETHER) - { - return 40; - } - } - return 25; + InventoryCoalJetpack inv = new InventoryCoalJetpack(stack); + inv.calculateLostTime(); + if (inv.getTemperature() == 0) inv.setTemperature(getBiomeMinTemp(player, world)); } @Override @@ -214,6 +148,19 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) inv.closeInventory(); } + private static void elevate(EntityPlayer player) + { + if (player.posY < 135) + if (player.motionY <= 0.32) + player.motionY += 0.1; + else + player.motionY = Math.max(player.motionY, 0.32); + else if (player.posY < 185) + player.motionY = 0.32 - (player.posY - 135) / 160; + else if (player.posY >= 185) + player.motionY += 0; + } + private void runBoiler(InventoryCoalJetpack inv, World world, EntityPlayer player) { int temperature = inv.getTemperature(); @@ -273,31 +220,43 @@ private void runBoiler(InventoryCoalJetpack inv, World world, EntityPlayer playe inv.setTemperature(temperature); } - private static void elevate(EntityPlayer player) + private void runFirebox(InventoryCoalJetpack inv) { - if (player.posY < 135) - if (player.motionY <= 0.32) - player.motionY += 0.1; - else - player.motionY = Math.max(player.motionY, 0.32); - else if (player.posY < 185) - player.motionY = 0.32 - (player.posY - 135) / 160; - else if (player.posY >= 185) - player.motionY += 0; + if (inv.getBurnTicks() <= 0) + { + inv.setBurnTicks(inv.consumeFuel()); + inv.currentItemBurnTime = inv.getBurnTicks(); + } + inv.dirtyInventory(); } - @Override - public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) + private void runHeater(InventoryCoalJetpack inv, World world, EntityPlayer player) { - onUnequipped(world, player, stack); - } + int temperature = inv.getTemperature(); + int burnTicks = inv.getBurnTicks() - 1; + int coolTicks = inv.getCoolTicks() - 1; - @Override - public void onEquipped(World world, EntityPlayer player, ItemStack stack) - { - InventoryCoalJetpack inv = new InventoryCoalJetpack(stack); - inv.calculateLostTime(); - if (inv.getTemperature() == 0) inv.setTemperature(getBiomeMinTemp(player, world)); + if (burnTicks > 0) + { + if (temperature < Constants.JETPACK_MAX_TEMPERATURE) + { + if (burnTicks % inv.getIncreasingFactor() == 0) + { + ++temperature; + coolTicks = coolTicks < 5000 ? coolTicks + 100 : coolTicks; + } + } + } else if (burnTicks <= 0) + { + inv.currentItemBurnTime = 0; + if (coolTicks % inv.getDecreasingFactor() == 0) + { + temperature = (temperature - 1 >= getBiomeMinTemp(player, world)) ? temperature - 1 : 0; + } + } + inv.setTemperature(temperature); + inv.setCoolTicks(coolTicks); + inv.setBurnTicks(burnTicks <= 0 ? 0 : burnTicks); } @Override @@ -323,10 +282,47 @@ public boolean onDroppedByPlayer(ItemStack stack, EntityPlayer player) } @Override - @SideOnly(Side.CLIENT) - public ModelBiped getWearableModel(ItemStack wearable) + public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) { - return ClientProxy.modelCoalJetpack.setWearable(wearable); + onUnequipped(world, player, stack); + } + + @Override + public double getDurabilityForDisplay(ItemStack stack) + { + return (float) getTemperature(stack) / Constants.JETPACK_MAX_TEMPERATURE + 50; + } + + private int getTemperature(ItemStack jetpack) + { + return jetpack.stackTagCompound.getCompoundTag(Constants.JETPACK_COMPOUND_TAG).getInteger("temperature"); + } + + @Override + public boolean showDurabilityBar(ItemStack stack) + { + return ConfigHandler.enableTemperatureBar && getTemperature(stack) > 50; + } + + private int getBiomeMinTemp(EntityPlayer player, World world) + { + BiomeDictionary.Type[] thisBiomeTypes = BiomeDictionary.getTypesForBiome(world.getBiomeGenForCoords((int) player.posX, (int) player.posZ)); + for (BiomeDictionary.Type type : thisBiomeTypes) + { + if (type == BiomeDictionary.Type.COLD || type == BiomeDictionary.Type.SNOWY) + { + return 0; + } + if (type == BiomeDictionary.Type.HOT || type == BiomeDictionary.Type.BEACH) + { + return 30; + } + if (type == BiomeDictionary.Type.NETHER) + { + return 40; + } + } + return 25; } @Override @@ -339,10 +335,29 @@ public String getArmorTexture(ItemStack stack, Entity entity, int slot, String t return modelTexture; } + @Override + @SideOnly(Side.CLIENT) + public ModelBiped getWearableModel(ItemStack wearable) + { + return ClientProxy.modelCoalJetpack.setWearable(wearable); + } + @Override @SideOnly(Side.CLIENT) public ResourceLocation getWearableTexture(ItemStack wearable) { return Resources.modelTextures("coalJetpack"); } + + @Override + public int getItemEnchantability() + { + return 0; + } + + @Override + public boolean isBookEnchantable(ItemStack stack, ItemStack book) + { + return EnchUtils.isSoulBook(book); + } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java index 214d8193..e9f4c08f 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java @@ -42,6 +42,7 @@ public class ItemCopterPack extends ItemAB implements IBackWearableItem public static byte OFF_MODE = 0; public static byte NORMAL_MODE = 1; public static byte HOVER_MODE = 2; + private float fuelSpent; public ItemCopterPack() { @@ -64,15 +65,9 @@ public void getSubItems(Item item, CreativeTabs tab, List list) } @Override - public int getItemEnchantability() - { - return 0; - } - - @Override - public boolean isBookEnchantable(ItemStack stack, ItemStack book) + public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isCurrent) { - return EnchUtils.isSoulBook(book); + //TODO } @Override @@ -86,85 +81,9 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla } @Override - public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isCurrent) - { - } - - @SuppressWarnings("unchecked") - public void pushEntities(World world, EntityPlayer player, float speed) - { - double posX = player.posX; - double posY = player.posY; - double posZ = player.posZ; - List groundItems = world.getEntitiesWithinAABB( - EntityItem.class, AxisAlignedBB.getBoundingBox( - posX, posY, posZ, posX + 1.0D, posY + 1.0D, posZ + 1.0D).expand(4.0D, 4.0D, 4.0D)); - - for (EntityItem groundItem : groundItems) - { - if (!groundItem.isInWater()) - { - if (groundItem.posX > posX) - { - groundItem.motionX = speed; - } - if (groundItem.posX < posX) - { - groundItem.motionX = -speed; - } - - if (groundItem.posZ > posZ) - { - groundItem.motionZ = speed; - } - if (groundItem.posZ < posZ) - { - groundItem.motionZ = -speed; - } - - if (groundItem.posY < posY) - { - groundItem.motionY -= speed; - } - } - } - } - - @Override - public boolean onDroppedByPlayer(ItemStack stack, EntityPlayer player) - { - if (stack != null && player instanceof EntityPlayerMP && player.openContainer instanceof ContainerCopter) - { - player.closeScreen(); - } - return super.onDroppedByPlayer(stack, player); - } - - @Override - @SideOnly(Side.CLIENT) - public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack stack, int armorSlot) - { - return ModelCopterPack.instance.setWearable(stack); - } - - @Override - @SideOnly(Side.CLIENT) - public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) - { - String modelTexture; - modelTexture = Resources.modelTextures("copterPack").toString(); - - return modelTexture; - } - - private static void elevate(EntityPlayer player, ItemStack copter) + public void onEquipped(World world, EntityPlayer player, ItemStack stack) { - if (player.posY < 100) - player.motionY = Math.max(player.motionY, 0.18); - else if (player.posY < 250) - player.motionY = 0.18 - (player.posY - 100) / 1000; - else if (player.posY >= 250) - player.motionY += 0; + stack.stackTagCompound.setByte("status", OFF_MODE); } @Override @@ -173,7 +92,7 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) InventoryCopterPack inv = new InventoryCopterPack(Wearing.getWearingCopter(player)); inv.openInventory(); boolean canElevate = true; - int fuelConsumption = 0; + float fuelConsumption = 0.0f; if (inv.getStatus() != OFF_MODE) { if (player.isInWater()) @@ -186,7 +105,7 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) } return; } - if (inv.fuelTank.getFluidAmount() == 0) + if (inv.getFuelTank().getFluidAmount() == 0) { canElevate = false; if (player.onGround) @@ -237,7 +156,7 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) player.motionY = -0.3; } else { - fuelConsumption += 2; + fuelConsumption *= 2; player.motionY = 0.0f; } } @@ -267,7 +186,7 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) { if (Minecraft.getMinecraft().gameSettings.keyBindJump.getIsKeyPressed()) { - if (inv.canConsumeFuel(fuelConsumption + 2) && canElevate) + if (inv.canConsumeFuel((int) Math.ceil(fuelConsumption * 2)) && canElevate) { elevate(player, stack); } @@ -277,20 +196,17 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) //Elevation serverside if (!player.onGround && player.motionY > 0) { - fuelConsumption += 2; + fuelConsumption *= 2; } int ticks = inv.tickCounter - 1; - if (inv.fuelTank.getFluid() != null) + if (inv.getFuelTank().getFluid() != null && GeneralReference.isValidFuel(inv.getFuelTank().getFluid().getFluid())) { - if (GeneralReference.isValidFuel(inv.getFuelTank().getFluid().getFluid())) - { - fuelConsumption = (int) Math.floor(fuelConsumption * GeneralReference.liquidFuels.get(inv.getFuelTank().getFluid().getFluid().getName())); - } + fuelConsumption = fuelConsumption * GeneralReference.liquidFuels.get(inv.getFuelTank().getFluid().getFluid().getName()); } if (ticks <= 0) { inv.tickCounter = 3; - inv.consumeFuel(fuelConsumption); + inv.consumeFuel(getFuelSpent(fuelConsumption)); inv.dirtyTanks(); } else { @@ -301,6 +217,79 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) inv.closeInventory(); } + private int getFuelSpent(float f) + { + f += fuelSpent; + fuelSpent = f % 1; + return (int) (f - fuelSpent); + } + + private static void elevate(EntityPlayer player, ItemStack copter) + { + if (player.posY < 100) + player.motionY = Math.max(player.motionY, 0.18); + else if (player.posY < 250) + player.motionY = 0.18 - (player.posY - 100) / 1000; + else if (player.posY >= 250) + player.motionY += 0; + } + + @SuppressWarnings("unchecked") + private void pushEntities(World world, EntityPlayer player, float speed) + { + double posX = player.posX; + double posY = player.posY; + double posZ = player.posZ; + List groundItems = world.getEntitiesWithinAABB( + EntityItem.class, AxisAlignedBB.getBoundingBox( + posX, posY, posZ, posX + 1.0D, posY + 1.0D, posZ + 1.0D).expand(4.0D, 4.0D, 4.0D)); + + for (EntityItem groundItem : groundItems) + { + if (!groundItem.isInWater()) + { + if (groundItem.posX > posX) + { + groundItem.motionX = speed; + } + if (groundItem.posX < posX) + { + groundItem.motionX = -speed; + } + + if (groundItem.posZ > posZ) + { + groundItem.motionZ = speed; + } + if (groundItem.posZ < posZ) + { + groundItem.motionZ = -speed; + } + + if (groundItem.posY < posY) + { + groundItem.motionY -= speed; + } + } + } + } + + @Override + public void onUnequipped(World world, EntityPlayer player, ItemStack stack) + { + stack.stackTagCompound.setByte("status", OFF_MODE); + } + + @Override + public boolean onDroppedByPlayer(ItemStack stack, EntityPlayer player) + { + if (stack != null && player instanceof EntityPlayerMP && player.openContainer instanceof ContainerCopter) + { + player.closeScreen(); + } + return super.onDroppedByPlayer(stack, player); + } + @Override public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) { @@ -308,16 +297,20 @@ public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) } @Override - public void onEquipped(World world, EntityPlayer player, ItemStack stack) + @SideOnly(Side.CLIENT) + public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack stack, int armorSlot) { - if (!stack.hasTagCompound()) stack.setTagCompound(new NBTTagCompound()); - stack.stackTagCompound.setByte("status", OFF_MODE); + return ModelCopterPack.instance.setWearable(stack); } @Override - public void onUnequipped(World world, EntityPlayer player, ItemStack stack) + @SideOnly(Side.CLIENT) + public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) { - stack.stackTagCompound.setByte("status", OFF_MODE); + String modelTexture; + modelTexture = Resources.modelTextures("copterPack").toString(); + + return modelTexture; } @Override @@ -334,4 +327,16 @@ public ResourceLocation getWearableTexture(ItemStack wearable) return Resources.modelTextures("copterPack"); } + @Override + public int getItemEnchantability() + { + return 0; + } + + @Override + public boolean isBookEnchantable(ItemStack stack, ItemStack book) + { + return EnchUtils.isSoulBook(book); + } + } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java index accf9aa6..b03b6edc 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java @@ -17,9 +17,8 @@ public class GeneralReference public static void init() { - liquidFuels.put("biofuel", ConfigHandler.fuelRateBioFuel); - liquidFuels.put("bioethanol", ConfigHandler.fuelRateBioEthanol); - liquidFuels.put("coal", ConfigHandler.fuelRateCoal); //liquid coal? o_O + liquidFuels.put("biofuel", ConfigHandler.fuelRateBioFuel); // ? + liquidFuels.put("bioethanol", ConfigHandler.fuelRateBioEthanol); // ic2 ethanol liquidFuels.put("creosote", ConfigHandler.fuelRateCreosote); liquidFuels.put("fuel", ConfigHandler.fuelRateFuel); liquidFuels.put("lava", ConfigHandler.fuelRateLava); @@ -27,15 +26,10 @@ public static void init() liquidFuels.put("liquid_medium_oil", ConfigHandler.fuelRateOil); liquidFuels.put("liquid_heavy_oil", ConfigHandler.fuelRateOil); liquidFuels.put("liquid_light_fuel", ConfigHandler.fuelRateFuelLight); - liquidFuels.put("liquid_heavy_fuel", ConfigHandler.fuelRateFuelLight); + liquidFuels.put("liquid_heavy_fuel", ConfigHandler.fuelRateFuelHeavy); liquidFuels.put("nitrofuel", ConfigHandler.fuelRateFuelNitro); liquidFuels.put("oil", ConfigHandler.fuelRateOil); liquidFuels.put("rocket_fuel", ConfigHandler.fuelRateFuel); - - //liquidFuels.put("liquid_sulfuriclight_fuel", ConfigHandler.fuelRateFuel); - //liquidFuels.put("liquid_cracked_light_fuel", ConfigHandler.fuelRateFuel); - //liquidFuels.put("liquid_sulfuricheavy_fuel", ConfigHandler.fuelRateFuel); - //liquidFuels.put("liquid_cracked_heavy_fuel", ConfigHandler.fuelRateFuel); } public static boolean isValidFuel(Fluid fluid) From a53f0df13adc14a8608b97acaf20fbdd693c2fa6 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 17 Apr 2017 12:52:11 +0700 Subject: [PATCH 388/462] Fixed mouseover + number dupe Fixed easter texture issue Shift-Space-Click on fluid container will put it to backpack inventory ignoring tanks --- .../adventurebackpack/AdventureBackpack.java | 8 +- .../block/TileAdventureBackpack.java | 12 +-- .../common/BackpackAbilities.java | 90 ++++--------------- .../adventurebackpack/common/Constants.java | 3 +- .../handlers/ClientEventHandler.java | 4 - .../inventory/ContainerBackpack.java | 17 ++-- .../inventory/ContainerCopter.java | 23 ++--- .../inventory/ContainerJetpack.java | 23 ++--- .../inventory/InventoryActions.java | 34 +++---- .../inventory/InventoryCopterPack.java | 4 +- .../inventory/SlotAdventureBackpack.java | 4 +- .../inventory/SlotFluid.java | 4 +- .../inventory/SlotFluidFuel.java | 4 +- .../inventory/SlotFluidWater.java | 4 +- .../adventurebackpack/inventory/SlotFuel.java | 4 +- .../adventurebackpack/inventory/SlotTool.java | 4 +- .../darkona/adventurebackpack/util/Utils.java | 13 ++- 17 files changed, 102 insertions(+), 153 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java index 43336a3c..4c6e5a19 100644 --- a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java @@ -1,7 +1,5 @@ package com.darkona.adventurebackpack; -import java.util.Calendar; - import net.minecraft.launchwrapper.Launch; import net.minecraftforge.common.MinecraftForge; import cpw.mods.fml.common.FMLCommonHandler; @@ -41,7 +39,6 @@ dependencies = "required-after:CodeChickenCore@[1.0.7.47,)") public class AdventureBackpack { - @SidedProxy(clientSide = ModInfo.MOD_CLIENT_PROXY, serverSide = ModInfo.MOD_SERVER_PROXY) public static IProxy proxy; @Mod.Instance(ModInfo.MOD_ID) @@ -63,7 +60,7 @@ public class AdventureBackpack @Mod.EventHandler public void preInit(FMLPreInitializationEvent event) { - int year = Calendar.getInstance().get(Calendar.YEAR), month = Calendar.getInstance().get(Calendar.MONTH) + 1, day = Calendar.getInstance().get(Calendar.DAY_OF_MONTH); + //int year = Calendar.getInstance().get(Calendar.YEAR), month = Calendar.getInstance().get(Calendar.MONTH) + 1, day = Calendar.getInstance().get(Calendar.DAY_OF_MONTH); //Configuration FMLCommonHandler.instance().bus().register(new ConfigHandler()); @@ -93,7 +90,6 @@ public void preInit(FMLPreInitializationEvent event) MinecraftForge.EVENT_BUS.register(tooltipEventHandler); FMLCommonHandler.instance().bus().register(playerEventHandler); - } @Mod.EventHandler @@ -101,8 +97,8 @@ public void init(FMLInitializationEvent event) { proxy.init(); ModRecipes.init(); - ModWorldGen.init(); + //GUIs guiHandler = new GuiHandler(); NetworkRegistry.INSTANCE.registerGuiHandler(instance, guiHandler); diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index bb76215d..57a2e350 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -333,8 +333,7 @@ public void saveToNBT(NBTTagCompound compound) @Override public FluidTank[] getTanksArray() { - FluidTank[] tanks = {leftTank, rightTank}; - return tanks; + return new FluidTank[]{leftTank, rightTank}; } //====================================================INVENTORY===================================================// @@ -389,12 +388,12 @@ public ItemStack getStackInSlotOnClosing(int slot) } @Override - public void setInventorySlotContents(int i, ItemStack itemstack) + public void setInventorySlotContents(int slot, ItemStack stack) { - inventory[i] = itemstack; - if (itemstack != null && itemstack.stackSize > getInventoryStackLimit()) + inventory[slot] = stack; + if (stack != null && stack.stackSize > getInventoryStackLimit()) { - itemstack.stackSize = getInventoryStackLimit(); + stack.stackSize = getInventoryStackLimit(); } markDirty(); } @@ -513,6 +512,7 @@ public void updateEntity() public void updateTankSlots(FluidTank tank, int slotIn) { + //while (InventoryActions.transferContainerTank(this, tank, slotIn)); updateTankSlots(); //TODO remove method } diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java index 408c644d..38139a0d 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java @@ -41,17 +41,28 @@ */ public class BackpackAbilities { + /** + * These are the colorNames of the backpacks that have abilities when being worn. + */ + private static final String[] SPECIAL_BACKPACKS = {"Bat", "Cactus", "Chicken", "Cow", "Creeper", "Dragon", "Melon", + "Mooshroom", "Ocelot", "Pig", "Pigman", "Rainbow", "Slime", "Squid", "Sunflower", "Wolf",}; - public static BackpackAbilities backpackAbilities = new BackpackAbilities(); - public static BackpackRemovals backpackRemovals = new BackpackRemovals(); + private static final String[] REMOVAL_BACKPACKS = {"Bat", "Dragon", "Pigman", "Rainbow", "Squid",}; /** - * @param colorName - * @return + * These are the colorNames of the backpacks that have abilities while being blocks. Note that not all the + * backpacks that have particularities while in block form necessarily have abilities. + * + * @see com.darkona.adventurebackpack.block.BlockAdventureBackpack */ + private static final String[] TILE_BACKPACKS = {"Cactus", "Melon",}; + + public static BackpackAbilities backpackAbilities = new BackpackAbilities(); + public static BackpackRemovals backpackRemovals = new BackpackRemovals(); + public static boolean hasAbility(String colorName) { - for (String valid : validWearingBackpacks) + for (String valid : SPECIAL_BACKPACKS) { if (valid.equals(colorName)) { @@ -63,7 +74,7 @@ public static boolean hasAbility(String colorName) public static boolean hasRemoval(String colorName) { - for (String valid : validRemovalBackpacks) + for (String valid : REMOVAL_BACKPACKS) { if (valid.equals(colorName)) { @@ -138,27 +149,6 @@ public void executeRemoval(EntityPlayer player, World world, ItemStack backpack) } } - /** - * These are the colorNames of the backpacks that have abilities when being worn. - */ - private static String[] validWearingBackpacks = - { - "Bat", "Squid", "Pigman", "Cactus", "Cow", "Pig", "Dragon", "Slime", "Chicken", "Wolf", "Ocelot", "Creeper", "Rainbow", "Melon", "Sunflower", "Mooshroom" - }; - - private static String[] validRemovalBackpacks = - { - "Bat", "Squid", "Pigman", "Dragon", "Rainbow" - }; - - /** - * These are the colorNames of the backpacks that have abilities while being blocks. Note that not all the - * backpacks that have particularities while in block form necessarily have abilities. - * - * @see com.darkona.adventurebackpack.block.BlockAdventureBackpack - */ - private static String[] validTileBackpacks = {"Cactus", "Melon"}; - /** * Detects if a player is under the rain. For detecting when it is Under The Sea (maybe to sing a nice Disney tune) * it won't work, there's a different method for that, isInWater @@ -174,10 +164,6 @@ private boolean isUnderRain(EntityPlayer player) /** * This backpack will feed you while you stay in the sun, slowly. At the very least you shouldn't starve. - * - * @param player - * @param world - * @param backpack */ public void itemSunflower(EntityPlayer player, World world, ItemStack backpack) { @@ -202,10 +188,6 @@ public void itemSunflower(EntityPlayer player, World world, ItemStack backpack) /** * Nana nana nana nana Bat - Batpack! See in the dark! - * - * @param player - * @param world - * @param backpack */ public void itemBat(EntityPlayer player, World world, ItemStack backpack) { @@ -255,10 +237,6 @@ public void itemPigman(EntityPlayer player, World world, ItemStack backpack) /** * The Dragon Backpack does something awesome. - * - * @param player - * @param world - * @param backpack */ public void itemDragon(EntityPlayer player, World world, ItemStack backpack) { @@ -416,10 +394,6 @@ public void itemPig(EntityPlayer player, World world, ItemStack backpack) /** * Squishy! The Slime Backpack has an incredibly useless "ability". Makes the player leave a slimy trail of * particles whenever he or she is running, and make that splishy splashy squishy sound on each step as well!. - * - * @param player - * @param world - * @param backpack */ public void itemSlime(EntityPlayer player, World world, ItemStack backpack) { @@ -458,10 +432,6 @@ public void itemSlime(EntityPlayer player, World world, ItemStack backpack) /** * The Chicken Backpack will go and *plop* an egg for you randomly each so many seconds. It's very rare though. - * - * @param player - * @param world - * @param backpack */ public void itemChicken(EntityPlayer player, World world, ItemStack backpack) { @@ -480,10 +450,6 @@ public void itemChicken(EntityPlayer player, World world, ItemStack backpack) /** * The Melon Backpack, like his cousin the Cactus Backpack, will fill itself, but with delicious * and refreshing Melon Juice, if the backpack is wet in any way. - * - * @param player - * @param world - * @param backpack */ public void itemMelon(EntityPlayer player, World world, ItemStack backpack) { @@ -519,9 +485,6 @@ public void itemMelon(EntityPlayer player, World world, ItemStack backpack) * Sneak on another player to make them jump in confusion as they think one of those green bastards is behind him/her. * You can only do it once every so often. A couple of minutes. Remember, you must be sneaking. * - * @param player - * @param world - * @param backpack * @see com.darkona.adventurebackpack.handlers.PlayerEventHandler */ @SuppressWarnings("unchecked") @@ -569,10 +532,6 @@ public void itemCreeper(EntityPlayer player, World world, ItemStack backpack) * The Cow Backpack fills itself with milk when there is wheat in the backpack's inventory, but it will do so slowly * and will eat the wheat. It's like having a cow in your backpack. Each 16 wheat makes a bucket. It only happens * when it is being worn. For not-player related milk generation go get a cow. Moo! - * - * @param player - * @param world - * @param backpack */ public void itemCow(EntityPlayer player, World world, ItemStack backpack) { @@ -700,10 +659,6 @@ public void itemMooshroom(EntityPlayer player, World world, ItemStack backpack) * The Wolf Backpack is a handy one if you're out in the wild. It checks around for any wolves that may lurk around. * If any of them gets mad at you, it will smell the scent of it's kin on you and promptly forget about the whole * deal. Smelling like dog is awesome. - * - * @param player the player - * @param world the world - * @param backpack the backpack */ @SuppressWarnings("unchecked") public void itemWolf(EntityPlayer player, World world, ItemStack backpack) @@ -743,10 +698,6 @@ public void itemWolf(EntityPlayer player, World world, ItemStack backpack) * The Blaze Backpack will make you inmune to fire and lava and burning and heat and... not really. You're supposed * to die a fiery death if you are not careful, but this backpack will protect you against those burning fire * elemental inhabitants of the Nether. Any blast of fire directed your way will be stopped, deflected or whatever. - * - * @param player - * @param world - * @param backpack */ public void itemBlaze(EntityPlayer player, World world, ItemStack backpack) { @@ -756,10 +707,6 @@ public void itemBlaze(EntityPlayer player, World world, ItemStack backpack) /** * Like actual Ocelots and Cats, the Ocelot Backpack will scare the hell out of Creepers, so they won't creep on you * while you're busy doing something else, paying no attention whatsoever at your surroundings like a mindless chicken. - * - * @param player - * @param world - * @param backpack */ @SuppressWarnings("unchecked") public void itemOcelot(EntityPlayer player, World world, ItemStack backpack) @@ -819,9 +766,6 @@ private void fillWithRain(World world, TileAdventureBackpack backpack, FluidStac /** * Like real life cactii, this backpack will fill slowly while it's raining with refreshing water. - * - * @param world - * @param backpack */ public void tileCactus(World world, TileAdventureBackpack backpack) { diff --git a/src/main/java/com/darkona/adventurebackpack/common/Constants.java b/src/main/java/com/darkona/adventurebackpack/common/Constants.java index 10de6e37..1d06bc9e 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/Constants.java +++ b/src/main/java/com/darkona/adventurebackpack/common/Constants.java @@ -59,6 +59,5 @@ public class Constants // - public static final String[] NIGHTVISION_BACKPACKS = {"Bat", "Squid", "Dragon"}; - + public static final String[] NIGHTVISION_BACKPACKS = {"Bat", "Dragon", "Squid",}; } diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java index 06a7aa32..8d223d50 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java @@ -27,10 +27,6 @@ */ public class ClientEventHandler { - - /** - * @param event - */ @SubscribeEvent @SideOnly(Side.CLIENT) public void mouseWheelDetect(MouseEvent event) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 99976ea7..eb136487 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -17,6 +17,7 @@ import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_RIGHT; import static com.darkona.adventurebackpack.common.Constants.LOWER_TOOL; import static com.darkona.adventurebackpack.common.Constants.UPPER_TOOL; +import org.lwjgl.input.Keyboard; /** * Created on 12/10/2014 @@ -29,8 +30,7 @@ public class ContainerBackpack extends ContainerAdventureBackpack implements IWe public static final byte SOURCE_TILE = 0; public static final byte SOURCE_WEARING = 1; public static final byte SOURCE_HOLDING = 2; - @SuppressWarnings("FieldCanBeLocal") - private final int //TODO constants to constants + private final int PLAYER_HOT_START = 0, PLAYER_HOT_END = PLAYER_HOT_START + 8, PLAYER_INV_START = PLAYER_HOT_END + 1, @@ -189,7 +189,7 @@ public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) } } - } else if (SlotFluid.isContainer(stack)) + } else if (SlotFluid.isContainer(stack) && !Keyboard.isKeyDown(Keyboard.KEY_SPACE)) { ItemStack rightOutStack = getSlot(BUCKET_RIGHT + 1).getStack(); ItemStack leftOutStack = getSlot(BUCKET_LEFT + 1).getStack(); @@ -295,9 +295,16 @@ public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) @Override public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) { - if (slot >= 0 && getSlot(slot) != null && getSlot(slot).getStack() == player.getHeldItem() && source == SOURCE_HOLDING) + if (source == SOURCE_HOLDING && slot >= 0) { - return null; + if (getSlot(slot) != null && getSlot(slot).getStack() == player.getHeldItem()) + { + return null; + } + if (flag == 2 && getSlot(button).getStack() == player.getHeldItem()) + { + return null; + } } return super.slotClick(slot, button, flag, player); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java index 85b7db78..ad88940e 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java @@ -16,10 +16,9 @@ */ public class ContainerCopter extends ContainerAdventureBackpack implements IWearableContainer { - private final int PLAYER_HOT_START = 0; //TODO constants to constants + private final int PLAYER_HOT_START = 0; private final int PLAYER_HOT_END = PLAYER_HOT_START + 8; private final int PLAYER_INV_START = PLAYER_HOT_END + 1; - @SuppressWarnings("FieldCanBeLocal") private final int PLAYER_INV_END = PLAYER_INV_START + 26; private final int COPTER_INV_START = PLAYER_INV_END + 1; InventoryCopterPack inventory; @@ -121,14 +120,11 @@ public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) } } else if (SlotFluid.isEmpty(stack)) { - if (outStack == null && SlotFluidFuel.isValidItem(stack)) + if (outStack == null && tankAmount >= containerCapacity && SlotFluidFuel.isValidItem(stack)) { - if (tankAmount != 0 && tankAmount + containerCapacity <= maxAmount) + if (!mergeItemStack(stack, COPTER_INV_START, COPTER_INV_START + 1, false)) { - if (!mergeItemStack(stack, COPTER_INV_START, COPTER_INV_START + 1, false)) - { - return null; - } + return null; } } } @@ -155,9 +151,16 @@ public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) @Override public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) { - if (slot >= 0 && getSlot(slot) != null && getSlot(slot).getStack() == player.getHeldItem() && !wearing) + if (!wearing && slot >= 0) { - return null; + if (getSlot(slot) != null && getSlot(slot).getStack() == player.getHeldItem()) + { + return null; + } + if (flag == 2 && getSlot(button).getStack() == player.getHeldItem()) + { + return null; + } } return super.slotClick(slot, button, flag, player); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java index d5d096ff..c814e0a0 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java @@ -15,10 +15,9 @@ */ public class ContainerJetpack extends ContainerAdventureBackpack implements IWearableContainer { - private final int PLAYER_HOT_START = 0; //TODO constants to constants + private final int PLAYER_HOT_START = 0; private final int PLAYER_HOT_END = PLAYER_HOT_START + 8; private final int PLAYER_INV_START = PLAYER_HOT_END + 1; - @SuppressWarnings("FieldCanBeLocal") private final int PLAYER_INV_END = PLAYER_INV_START + 26; private final int JETPACK_INV_START = PLAYER_INV_END + 1; private final int JETPACK_FUEL_START = PLAYER_INV_END + 3; @@ -124,14 +123,11 @@ public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) } } else if (SlotFluid.isEmpty(stack)) { - if (outStack == null && SlotFluidWater.isValidItem(stack)) + if (outStack == null && tankAmount >= containerCapacity && SlotFluidWater.isValidItem(stack)) { - if (tankAmount != 0 && tankAmount + containerCapacity <= maxAmount) + if (!mergeItemStack(stack, JETPACK_INV_START, JETPACK_INV_START + 1, false)) { - if (!mergeItemStack(stack, JETPACK_INV_START, JETPACK_INV_START + 1, false)) - { - return null; - } + return null; } } } @@ -165,9 +161,16 @@ public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) @Override public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) { - if (slot >= 0 && getSlot(slot) != null && getSlot(slot).getStack() == player.getHeldItem() && !wearing) + if (!wearing && slot >= 0) { - return null; + if (getSlot(slot) != null && getSlot(slot).getStack() == player.getHeldItem()) + { + return null; + } + if (flag == 2 && getSlot(button).getStack() == player.getHeldItem()) + { + return null; + } } return super.slotClick(slot, button, flag, player); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java index 7e91a99a..511cbadc 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java @@ -38,7 +38,7 @@ public static boolean transferContainerTank(IInventoryTanks inventory, FluidTank //Set slot out for whatever number the output slot should be. int slotOut = slotIn + 1; - //CONTAINER ===========> TANK //TODO сheck if container fluid amount exceeds tank free space + //CONTAINER ===========> TANK if (FluidContainerRegistry.isFilledContainer(stackIn)) { //See if the tank can accept moar fluid. @@ -46,25 +46,29 @@ public static boolean transferContainerTank(IInventoryTanks inventory, FluidTank if (fill > 0) //If can accept the fluid { - //Get the empty container for the input, if there's any. - ItemStack stackOut = FluidContainerRegistry.drainFluidContainer(stackIn); - - if (inventory.getStackInSlot(slotOut) == null || stackOut == null) - { - tank.fill(FluidContainerRegistry.getFluidForFilledItem(stackIn), true); - inventory.decrStackSizeNoSave(slotIn, 1); - inventory.setInventorySlotContentsNoSave(slotOut, stackOut); - return true; - } else if (inventory.getStackInSlot(slotOut).getItem().equals(stackOut.getItem()) - && stackOut.getItemDamage() == inventory.getStackInSlot(slotOut).getItemDamage()) + //TODO add ability to empty the tank. using hose in bucketOut slot? + //if (FluidContainerRegistry.getContainerCapacity(stackIn) + tank.getFluidAmount() <= tank.getCapacity()) { - int maxStack = inventory.getStackInSlot(slotOut).getMaxStackSize(); - if (maxStack > 1 && (inventory.getStackInSlot(slotOut).stackSize + 1) <= maxStack) + //Get the empty container for the input, if there's any. + ItemStack stackOut = FluidContainerRegistry.drainFluidContainer(stackIn); + + if (inventory.getStackInSlot(slotOut) == null || stackOut == null) { tank.fill(FluidContainerRegistry.getFluidForFilledItem(stackIn), true); inventory.decrStackSizeNoSave(slotIn, 1); - inventory.getStackInSlot(slotOut).stackSize++; + inventory.setInventorySlotContentsNoSave(slotOut, stackOut); return true; + } else if (inventory.getStackInSlot(slotOut).getItem().equals(stackOut.getItem()) + && stackOut.getItemDamage() == inventory.getStackInSlot(slotOut).getItemDamage()) + { + int maxStack = inventory.getStackInSlot(slotOut).getMaxStackSize(); + if (maxStack > 1 && (inventory.getStackInSlot(slotOut).stackSize + 1) <= maxStack) + { + tank.fill(FluidContainerRegistry.getFluidForFilledItem(stackIn), true); + inventory.decrStackSizeNoSave(slotIn, 1); + inventory.getStackInSlot(slotOut).stackSize++; + return true; + } } } } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java index 84209499..11a4f0d2 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java @@ -119,9 +119,7 @@ public int getInventoryStackLimit() @Override public void markDirty() { - containerStack.stackTagCompound.setTag(COPTER_FUEL_TANK, fuelTank.writeToNBT(new NBTTagCompound())); - containerStack.stackTagCompound.setByte("status", status); - containerStack.stackTagCompound.setInteger("tickCounter", this.tickCounter); + saveToNBT(containerStack.stackTagCompound); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotAdventureBackpack.java index 87209d6d..b7db9405 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotAdventureBackpack.java @@ -10,8 +10,8 @@ */ abstract class SlotAdventureBackpack extends Slot { - SlotAdventureBackpack(IInventory p_i1824_1_, int p_i1824_2_, int p_i1824_3_, int p_i1824_4_) //TODO whats the point? + SlotAdventureBackpack(IInventory inventory, int slotIndex, int posX, int posY) { - super(p_i1824_1_, p_i1824_2_, p_i1824_3_, p_i1824_4_); + super(inventory, slotIndex, posX, posY); } } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java index 982d45ac..840ca5bb 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java @@ -16,9 +16,9 @@ */ public class SlotFluid extends SlotAdventureBackpack { - SlotFluid(IInventory inventory, int id, int x, int y) + SlotFluid(IInventory inventory, int slotIndex, int posX, int posY) { - super(inventory, id, x, y); + super(inventory, slotIndex, posX, posY); } static boolean isContainer(ItemStack stack) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidFuel.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidFuel.java index 4233bbcd..933ae504 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidFuel.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidFuel.java @@ -13,9 +13,9 @@ */ public class SlotFluidFuel extends SlotFluid { - SlotFluidFuel(IInventory inventory, int id, int x, int y) + SlotFluidFuel(IInventory inventory, int slotIndex, int posX, int posY) { - super(inventory, id, x, y); + super(inventory, slotIndex, posX, posY); } private static boolean isValidContainer(ItemStack stack) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidWater.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidWater.java index 0b90b783..3ae39f3e 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidWater.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidWater.java @@ -15,9 +15,9 @@ */ public class SlotFluidWater extends SlotFluid { - SlotFluidWater(IInventory inventory, int id, int x, int y) + SlotFluidWater(IInventory inventory, int slotIndex, int posX, int posY) { - super(inventory, id, x, y); + super(inventory, slotIndex, posX, posY); } private static boolean isContainerForWater(ItemStack stack) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java index c7d05951..2f975dff 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java @@ -11,9 +11,9 @@ */ public class SlotFuel extends SlotAdventureBackpack { - SlotFuel(IInventory inventory, int id, int x, int y) + SlotFuel(IInventory inventory, int slotIndex, int posX, int posY) { - super(inventory, id, x, y); + super(inventory, slotIndex, posX, posY); } static boolean isValidItem(ItemStack stack) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java index a0b622bf..ed497c58 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java @@ -19,9 +19,9 @@ */ public class SlotTool extends SlotAdventureBackpack { - SlotTool(IInventory inventory, int id, int x, int y) + SlotTool(IInventory inventory, int slotIndex, int posX, int posY) { - super(inventory, id, x, y); + super(inventory, slotIndex, posX, posY); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index 117ddfed..8fd29c79 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -58,24 +58,23 @@ public static int[] calculateEaster(int year) public static String getHoliday() { - Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR), month = calendar.get(Calendar.MONTH) + 1, day = calendar.get(Calendar.DAY_OF_MONTH); - //if (AdventureBackpack.instance.chineseNewYear) return "ChinaNewYear"; + //if (AdventureBackpack.instance.chineseNewYear) return "ChinaNewYear"; // here and below commented lines: textures are missing //if (AdventureBackpack.instance.hannukah) return "Hannukah"; - if (month == Utils.calculateEaster(year)[0] && day == Utils.calculateEaster(year)[1]) return "Easter"; + //if (month == Utils.calculateEaster(year)[0] && day == Utils.calculateEaster(year)[1]) return "Easter"; String dia = "Standard"; if (month == 1) { if (day == 1) dia = "NewYear"; - if (day == 28) dia = "Shuttle";//Challenger + if (day == 28) dia = "Shuttle"; //Challenger } if (month == 2) { - if (day == 1) dia = "Shuttle";//Columbia + if (day == 1) dia = "Shuttle"; //Columbia if (day == 14) dia = "Valentines"; //if (day == 23) dia = "Fatherland"; } @@ -116,16 +115,16 @@ public static String getHoliday() } if (month == 11) { - // if (day == 2) dia = "Muertos"; + //if (day == 2) dia = "Muertos"; } if (month == 12) { if (day >= 22 && day <= 26) dia = "Christmas"; if (day == 31) dia = "NewYear"; } + //LogHelper.info("Today is: " + day + "/" + month + "/" + year + ". Which means today is: " + dia); return dia; - } public static int isBlockRegisteredAsFluid(Block block) From 78074b0163315caea7842817abf71d8738f80b48 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 16 May 2017 15:32:59 +0700 Subject: [PATCH 389/462] Quickfix https://github.com/runescapejon/AdventureBackpack2/issues/102 --- .../darkona/adventurebackpack/inventory/ContainerBackpack.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index eb136487..415dbc12 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -17,7 +17,6 @@ import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_RIGHT; import static com.darkona.adventurebackpack.common.Constants.LOWER_TOOL; import static com.darkona.adventurebackpack.common.Constants.UPPER_TOOL; -import org.lwjgl.input.Keyboard; /** * Created on 12/10/2014 @@ -189,7 +188,7 @@ public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) } } - } else if (SlotFluid.isContainer(stack) && !Keyboard.isKeyDown(Keyboard.KEY_SPACE)) + } else if (SlotFluid.isContainer(stack)) { ItemStack rightOutStack = getSlot(BUCKET_RIGHT + 1).getStack(); ItemStack leftOutStack = getSlot(BUCKET_LEFT + 1).getStack(); From 7d7a027f9c196d1c2e40b898a30c3d254b53a675 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 15 Jun 2017 16:39:00 +0700 Subject: [PATCH 390/462] Put hose in bucketOut slot to empty the tank Fixed default Copter/Jetpack recipes NBT --- .../adventurebackpack/api/FluidEffect.java | 1 - .../adventurebackpack/AdventureBackpack.java | 2 +- .../adventurebackpack/CreativeTabAB.java | 3 -- .../block/BackpackMaterial.java | 1 - .../block/BlockAdventureBackpack.java | 1 - .../block/BlockCampFire.java | 15 ------- .../block/BlockSleepingBag.java | 3 +- .../block/TileAdventureBackpack.java | 39 +++++++------------ .../adventurebackpack/block/TileCampfire.java | 1 + .../client/ClientActions.java | 2 - .../adventurebackpack/client/Visuals.java | 1 - .../client/audio/BoilingBoilerSound.java | 2 - .../client/audio/CopterPackSound.java | 2 - .../client/audio/JetpackSoundOn.java | 2 - .../client/audio/LeakingBoilerSound.java | 2 - .../client/audio/NyanMovingSound.java | 1 - .../client/gui/GuiAdvBackpack.java | 2 - .../client/gui/GuiCopterPack.java | 1 - .../adventurebackpack/client/gui/GuiTank.java | 36 ++--------------- .../client/gui/GuiWithTanks.java | 1 - .../client/gui/IBackpackGui.java | 1 - .../client/gui/ModGuiConfig.java | 2 - .../client/models/ModelAdventureHat.java | 1 - .../client/models/ModelBackpackArmor.java | 5 --- .../client/models/ModelBackpackBlock.java | 9 ----- .../client/models/ModelCampFire.java | 1 - .../client/models/ModelClockworkCrossbow.java | 6 --- .../client/models/ModelCoalJetpack.java | 3 -- .../client/models/ModelCopterPack.java | 3 -- .../client/models/ModelFullArmor.java | 1 - .../client/models/ModelSleepingBag.java | 1 - .../client/models/ModelWearable.java | 2 - .../client/render/CopygirlRenderUtils.java | 4 +- .../RendererAdventureBackpackBlock.java | 3 -- .../client/render/RendererCampFire.java | 5 +-- .../client/render/RendererHose.java | 2 - .../client/render/RendererInflatableBoat.java | 3 -- .../render/RendererItemAdventureHat.java | 6 --- .../render/RendererItemClockworkCrossbow.java | 5 --- .../client/render/RendererStack.java | 2 - .../render/RendererWearableEquipped.java | 1 - .../common/ServerActions.java | 23 ++--------- .../config/ConfigHandler.java | 2 - .../adventurebackpack/config/Keybindings.java | 8 ++-- .../entity/EntityInflatableBoat.java | 19 --------- .../entity/ai/AvoidEntitySelector.java | 5 +-- .../entity/ai/EntityAIHorseFollowOwner.java | 5 --- .../adventurebackpack/entity/fx/SteamFX.java | 5 ++- .../events/WearableEvent.java | 2 - .../fluids/FluidEffectRegistry.java | 4 -- .../fluids/FluidMelonJuice.java | 1 - .../adventurebackpack/fluids/FluidMilk.java | 4 -- .../adventurebackpack/fluids/TankWrapper.java | 1 - .../fluids/effects/FuelEffect.java | 1 - .../fluids/effects/LavaEffect.java | 1 - .../fluids/effects/MelonJuiceEffect.java | 1 - .../handlers/GeneralEventHandler.java | 13 ++----- .../handlers/GuiHandler.java | 2 +- .../handlers/KeybindHandler.java | 37 ++++++++---------- .../handlers/PlayerEventHandler.java | 4 -- .../handlers/TooltipEventHandler.java | 1 - .../adventurebackpack/init/ModBlocks.java | 2 - .../adventurebackpack/init/ModEntities.java | 7 ---- .../adventurebackpack/init/ModFluids.java | 1 - .../adventurebackpack/init/ModItems.java | 2 - .../adventurebackpack/init/ModMaterials.java | 2 - .../adventurebackpack/init/ModNetwork.java | 1 - .../adventurebackpack/init/ModRecipes.java | 14 ++++++- .../adventurebackpack/init/ModWorldGen.java | 8 ---- .../init/recipes/AbstractBackpackRecipe.java | 6 +-- .../init/recipes/BackpackRecipe.java | 1 + .../init/recipes/BackpackRecipes.java | 4 +- .../init/recipes/BackpackRecipesList.java | 4 -- .../inventory/ContainerBackpack.java | 7 +--- .../IInventoryAdventureBackpack.java | 2 - .../inventory/InventoryActions.java | 24 ++++++++---- .../inventory/InventoryBackpack.java | 23 ++++++----- .../inventory/InventoryCoalJetpack.java | 19 +++++---- .../inventory/InventoryCopterPack.java | 18 ++++----- .../inventory/SlotBackpack.java | 6 +-- .../inventory/SlotFluid.java | 4 +- .../inventory/SlotFluidFuel.java | 4 +- .../inventory/SlotFluidWater.java | 4 +- .../adventurebackpack/inventory/SlotTool.java | 12 +++--- .../adventurebackpack/item/ArmorAB.java | 5 +-- .../item/IBackWearableItem.java | 1 - .../adventurebackpack/item/ItemAB.java | 5 +-- .../item/ItemAdventureBackpack.java | 4 +- .../item/ItemAdventureHat.java | 2 - .../item/ItemAdventurePants.java | 1 - .../item/ItemAdventureSuit.java | 1 - .../adventurebackpack/item/ItemComponent.java | 8 ---- .../item/ItemCopterPack.java | 3 +- .../adventurebackpack/item/ItemCrossbow.java | 10 +---- .../item/ItemCrossbowMagazine.java | 1 + .../item/ItemJuiceBottle.java | 1 - .../adventurebackpack/item/ItemMachete.java | 2 - .../item/ItemPistonBoots.java | 1 - .../adventurebackpack/item/ItemTelescope.java | 1 - .../adventurebackpack/item/ToolAB.java | 3 +- .../network/CowAbilityPacket.java | 2 - .../network/CycleToolPacket.java | 2 - .../EquipUnequipBackWearablePacket.java | 6 --- .../adventurebackpack/network/GUIPacket.java | 4 +- .../network/MessageConstants.java | 11 ------ .../network/PlayerActionPacket.java | 2 +- .../network/SleepingBagPacket.java | 5 +-- .../network/SyncPropertiesPacket.java | 3 +- .../messages/EntityParticlePacket.java | 1 + .../network/messages/EntitySoundPacket.java | 2 +- .../playerProperties/BackpackProperty.java | 6 +-- .../adventurebackpack/proxy/ClientProxy.java | 1 - .../adventurebackpack/proxy/CommonProxy.java | 1 - .../adventurebackpack/proxy/IProxy.java | 2 - .../adventurebackpack/proxy/ServerProxy.java | 3 ++ .../reference/BackpackNames.java | 2 - .../adventurebackpack/reference/Key.java | 1 - .../adventurebackpack/util/ColorReplacer.java | 1 - .../adventurebackpack/util/EnchUtils.java | 1 - .../adventurebackpack/util/FluidUtils.java | 1 - .../adventurebackpack/util/LogHelper.java | 1 - .../adventurebackpack/util/Resources.java | 1 - .../darkona/adventurebackpack/util/Utils.java | 1 - 123 files changed, 156 insertions(+), 451 deletions(-) delete mode 100644 src/main/java/com/darkona/adventurebackpack/network/MessageConstants.java diff --git a/src/main/java/adventurebackpack/api/FluidEffect.java b/src/main/java/adventurebackpack/api/FluidEffect.java index ff5a34ae..1546c514 100644 --- a/src/main/java/adventurebackpack/api/FluidEffect.java +++ b/src/main/java/adventurebackpack/api/FluidEffect.java @@ -68,5 +68,4 @@ public int getEffectID() * @param entity The entity that will be affected. */ public abstract void affectDrinker(World world, Entity entity); - } diff --git a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java index 4c6e5a19..76cfc963 100644 --- a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java @@ -120,7 +120,7 @@ public void postInit(FMLPostInitializationEvent event) if (ConfigHandler.IS_ENDERIO) LogHelper.info("EnderIO is present. Acting accordingly"); - //ConditionalFluidEffect.init(); //TODO + //ConditionalFluidEffect.init(); //ModItems.conditionalInit(); ModRecipes.conditionalInit(); diff --git a/src/main/java/com/darkona/adventurebackpack/CreativeTabAB.java b/src/main/java/com/darkona/adventurebackpack/CreativeTabAB.java index cdd1ba0e..5361e8c6 100644 --- a/src/main/java/com/darkona/adventurebackpack/CreativeTabAB.java +++ b/src/main/java/com/darkona/adventurebackpack/CreativeTabAB.java @@ -13,7 +13,6 @@ */ public class CreativeTabAB { - public static final CreativeTabs ADVENTURE_BACKPACK_CREATIVE_TAB = new CreativeTabs(ModInfo.MOD_ID.toLowerCase()) { @Override @@ -33,7 +32,5 @@ public String getTabLabel() { return ModInfo.MOD_ID.toLowerCase(); } - }; - } diff --git a/src/main/java/com/darkona/adventurebackpack/block/BackpackMaterial.java b/src/main/java/com/darkona/adventurebackpack/block/BackpackMaterial.java index 2252ae03..34deaf89 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BackpackMaterial.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BackpackMaterial.java @@ -10,7 +10,6 @@ */ public class BackpackMaterial extends Material { - public BackpackMaterial() { super(MapColor.brownColor); diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java index 89509953..e08aef38 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java @@ -44,7 +44,6 @@ */ public class BlockAdventureBackpack extends BlockContainer { - public BlockAdventureBackpack() { super(new BackpackMaterial()); diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java b/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java index b5fff0a8..18350fea 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java @@ -34,7 +34,6 @@ public BlockCampFire() super(Material.rock); this.setTickRandomly(true); this.setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); - } private void func_149978_e() @@ -127,7 +126,6 @@ public void randomDisplayTick(World world, int posX, int posY, int posZ, Random //world.spawnParticle("flame", posX+Math.sin(i/4), posY, posZ+Math.cos(i/4), 0.0D, 0.0D, 0.0D); world.spawnParticle("flame", rndX, rndY + 0.16, rndZ, 0.0D, 0.0D, 0.0D); } - } @Override @@ -157,11 +155,6 @@ public void setBlockBoundsBasedOnState(IBlockAccess blockAccess, int x, int y, i /** * Returns a bounding box from the pool of bounding boxes (this means this box can change after the pool has been * cleared to be reused) - * - * @param p_149668_1_ - * @param p_149668_2_ - * @param p_149668_3_ - * @param p_149668_4_ */ @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_149668_2_, int p_149668_3_, int p_149668_4_) @@ -171,11 +164,6 @@ public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_14 /** * Returns the bounding box of the wired rectangular prism to render. - * - * @param p_149633_1_ - * @param p_149633_2_ - * @param p_149633_3_ - * @param p_149633_4_ */ @Override public AxisAlignedBB getSelectedBoundingBoxFromPool(World p_149633_1_, int p_149633_2_, int p_149633_3_, int p_149633_4_) @@ -191,9 +179,6 @@ public IIcon getIcon(IBlockAccess p_149673_1_, int p_149673_2_, int p_149673_3_, /** * Gets the block's texture. Args: side, meta - * - * @param p_149691_1_ - * @param p_149691_2_ */ @Override public IIcon getIcon(int p_149691_1_, int p_149691_2_) diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java b/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java index 313dfef0..b22d6100 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java @@ -37,7 +37,6 @@ */ public class BlockSleepingBag extends BlockDirectional { - public static final int[][] footBlockToHeadBlockMap = new int[][]{{0, 1}, {-1, 0}, {0, -1}, {1, 0}}; @SideOnly(Side.CLIENT) @@ -439,7 +438,7 @@ public boolean isOpaqueCube() } /** - * Returns if this block is collidable (only used by Fire). Args: x, y, z + * Returns if this block is collidable (only used by Fire). */ @Override public boolean isCollidable() diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 57a2e350..6e331805 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -340,6 +340,7 @@ public FluidTank[] getTanksArray() @Override public void openInventory() { + } @Override @@ -403,19 +404,25 @@ public void markDirty() { for (int i = 0; i < inventory.length; i++) { - if (i == BUCKET_IN_LEFT && inventory[i] != null) - { - updateTankSlots(getLeftTank(), i); - } - - if (i == BUCKET_IN_RIGHT && inventory[i] != null) + if ((i == BUCKET_IN_LEFT || i == BUCKET_IN_RIGHT) && inventory[i] != null) { - updateTankSlots(getRightTank(), i); + updateTankSlots(); } } super.markDirty(); } + @Override + public boolean updateTankSlots() + { + boolean result = false; + while (InventoryActions.transferContainerTank(this, getLeftTank(), BUCKET_IN_LEFT)) + result = true; + while (InventoryActions.transferContainerTank(this, getRightTank(), BUCKET_IN_RIGHT)) + result = true; + return result; + } + @Override public void setInventorySlotContentsNoSave(int slot, ItemStack itemstack) { @@ -510,12 +517,6 @@ public void updateEntity() } } - public void updateTankSlots(FluidTank tank, int slotIn) - { - //while (InventoryActions.transferContainerTank(this, tank, slotIn)); - updateTankSlots(); //TODO remove method - } - @Override public void saveTanks(NBTTagCompound compound) { @@ -603,17 +604,6 @@ public boolean drop(World world, EntityPlayer player, int x, int y, int z) return world.spawnEntityInWorld(droppedItem); } - @Override - public boolean updateTankSlots() - { - boolean result = false; - while (InventoryActions.transferContainerTank(this, getLeftTank(), BUCKET_IN_LEFT)) - result = true; - while (InventoryActions.transferContainerTank(this, getRightTank(), BUCKET_IN_RIGHT)) - result = true; - return result; - } - @Override public void dirtyTanks() { @@ -623,6 +613,7 @@ public void dirtyTanks() @Override public void dirtyTime() { + } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileCampfire.java b/src/main/java/com/darkona/adventurebackpack/block/TileCampfire.java index 3d49ed9f..066aebbb 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileCampfire.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileCampfire.java @@ -12,6 +12,7 @@ public class TileCampfire extends TileEntity { public TileCampfire() { + } private int burnTicks; diff --git a/src/main/java/com/darkona/adventurebackpack/client/ClientActions.java b/src/main/java/com/darkona/adventurebackpack/client/ClientActions.java index 2e678163..b4490177 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/ClientActions.java +++ b/src/main/java/com/darkona/adventurebackpack/client/ClientActions.java @@ -26,7 +26,6 @@ */ public class ClientActions { - @SideOnly(Side.CLIENT) public static void showParticlesAtEntity(Entity entity, byte particleCode) { @@ -84,5 +83,4 @@ public static void playSoundAtEntity(Entity entity, byte soundCode) } } } - } diff --git a/src/main/java/com/darkona/adventurebackpack/client/Visuals.java b/src/main/java/com/darkona/adventurebackpack/client/Visuals.java index d4990715..90330e3f 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/Visuals.java +++ b/src/main/java/com/darkona/adventurebackpack/client/Visuals.java @@ -16,7 +16,6 @@ */ public class Visuals { - public static void NyanParticles(EntityPlayer player, World world) { // World world = player.worldObj; diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java index 583d999c..82aa6b6f 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java @@ -15,7 +15,6 @@ */ public class BoilingBoilerSound extends MovingSound { - public EntityPlayer thePlayer; protected boolean repeat = true; protected int repeatDelay = 0; @@ -104,5 +103,4 @@ public AttenuationType getAttenuationType() { return AttenuationType.LINEAR; } - } diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java index 6d7dfdb7..63a3533a 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java @@ -17,7 +17,6 @@ */ public class CopterPackSound extends MovingSound { - public EntityPlayer thePlayer; protected boolean repeat = true; protected int repeatDelay = 0; @@ -132,5 +131,4 @@ public AttenuationType getAttenuationType() { return AttenuationType.LINEAR; } - } diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java b/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java index 4bafc405..07056a13 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java @@ -15,7 +15,6 @@ */ public class JetpackSoundOn extends MovingSound { - public EntityPlayer thePlayer; protected boolean repeat = true; protected int repeatDelay = 0; @@ -103,5 +102,4 @@ public AttenuationType getAttenuationType() { return AttenuationType.LINEAR; } - } diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java index b6fca81c..65fb944b 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java @@ -15,7 +15,6 @@ */ public class LeakingBoilerSound extends MovingSound { - public EntityPlayer thePlayer; protected boolean repeat = true; protected int repeatDelay = 0; @@ -103,5 +102,4 @@ public AttenuationType getAttenuationType() { return AttenuationType.LINEAR; } - } diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/NyanMovingSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/NyanMovingSound.java index 4963bbf3..72c28f67 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/NyanMovingSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/NyanMovingSound.java @@ -14,7 +14,6 @@ */ public class NyanMovingSound extends MovingSound { - public static NyanMovingSound instance = new NyanMovingSound(); public EntityPlayer getPlayer() diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index 1f89dbec..66a7a464 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -27,7 +27,6 @@ @SideOnly(Side.CLIENT) public class GuiAdvBackpack extends GuiWithTanks { - protected IInventoryAdventureBackpack inventory; protected boolean isTile; protected boolean wearing; @@ -189,7 +188,6 @@ public float getZLevel() public void initGui() { super.initGui(); - } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java index 8eb0e2f9..1ec83817 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java @@ -68,7 +68,6 @@ protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int mouseX, in equipButton.draw(this, 1, 167); } } - } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiTank.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiTank.java index f2c6f111..8cd54041 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiTank.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiTank.java @@ -66,13 +66,8 @@ public List getTankTooltip() return tankTips; } - /** - * @param gui - * @param theFluid - */ public void draw(GuiWithTanks gui, FluidTank theFluid) { - tank = theFluid; liquidPerPixel = tank.getCapacity() / this.height; this.zLevel = gui.getZLevel() + 1; @@ -91,7 +86,6 @@ public void draw(GuiWithTanks gui, FluidTank theFluid) drawMethodThree(); break; } - } public void draw(GuiWithTanks gui, FluidTank theFluid, int X, int Y) @@ -101,10 +95,6 @@ public void draw(GuiWithTanks gui, FluidTank theFluid, int X, int Y) draw(gui, theFluid); } - /** - * @param gui - * @param - */ private void drawMethodOne(GuiWithTanks gui) { if (tank.getFluid() != null) @@ -128,9 +118,6 @@ private void drawMethodOne(GuiWithTanks gui) } } - /** - * @param - */ private void drawMethodTwo() { if (tank.getFluid() != null) @@ -157,9 +144,6 @@ private void drawMethodTwo() } } - /** - * @param - */ private void drawMethodThree() { if (tank.getFluid() != null) @@ -195,12 +179,6 @@ private void drawMethodThree() } } - /** - * @param gui - * @param mouseX - * @param mouseY - * @return - */ public boolean inTank(GuiWithTanks gui, int mouseX, int mouseY) { mouseX -= gui.getLeft(); @@ -216,14 +194,10 @@ public boolean inTank(GuiWithTanks gui, int mouseX, int mouseY) * @param icon The icon to draw from. * @param w The Width of the drawed box. * @param h The height of the drawed box. - * @param srcX The startX coordinate from the icon to start drawing from. Starts - * at 0. - * @param srcY The startY coordinate from the icon to start drawing from. Starts - * at 0. - * @param srcW The width of the selection in the icon to draw from. Starts at - * 0. - * @param srcH The height of the selection in the icon to draw from. Starts - * at 0. + * @param srcX The startX coordinate from the icon to start drawing from. Starts at 0. + * @param srcY The startY coordinate from the icon to start drawing from. Starts at 0. + * @param srcW The width of the selection in the icon to draw from. Starts at 0. + * @param srcH The height of the selection in the icon to draw from. Starts at 0. */ public static void drawFluidPixelFromIcon(int x, int y, IIcon icon, int w, int h, int srcX, int srcY, int srcW, int srcH, float zLevel) { @@ -248,7 +222,5 @@ public static void drawFluidPixelFromIcon(int x, int y, IIcon icon, int w, int h tessellator.addVertexWithUV(x + w, y, zLevel, newMaxU, newMinV); tessellator.addVertexWithUV(x, y, zLevel, newMinU, newMinV); tessellator.draw(); - - } } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java index 126da21f..e7d3d284 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java @@ -29,5 +29,4 @@ public float getZLevel() { return zLevel; } - } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/IBackpackGui.java b/src/main/java/com/darkona/adventurebackpack/client/gui/IBackpackGui.java index 6f54ee21..73aa1f9b 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/IBackpackGui.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/IBackpackGui.java @@ -9,7 +9,6 @@ */ public interface IBackpackGui { - void drawTexturedModelRectFromIcon(int i, int j, IIcon icon, int h, int w); int getLeft(); diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java b/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java index 61bfb94d..86bf6c29 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java @@ -18,7 +18,6 @@ */ public class ModGuiConfig extends GuiConfig { - public ModGuiConfig(GuiScreen guiScreen) { super(guiScreen, getConfigElements(), ModInfo.MOD_ID, false, false, ModInfo.MOD_NAME); @@ -36,6 +35,5 @@ private static List getConfigElements() } return configElements; } - } diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelAdventureHat.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelAdventureHat.java index 57b91b43..ffb05cc3 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelAdventureHat.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelAdventureHat.java @@ -73,5 +73,4 @@ public void setRotationAngles(Entity entity, float f, float f1, float f2, float { super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); } - } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java index 37d3fcf2..b8c2dade 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java @@ -62,7 +62,6 @@ private void init() this.textureHeight = 64; //Main Backpack - this.mainBody = new ModelRenderer(this, 0, 9); this.mainBody.addBox(-5.0F, 0.0F, -3.0F, 10, 9, 5); this.mainBody.setRotationPoint(0.0F, 0.0F, 0.0F); @@ -93,7 +92,6 @@ private void init() this.mainBody.addChild(this.pocketFace); //Left Tank - this.tankLeftTop = new ModelRenderer(this, 0, 40); this.tankLeftTop.setRotationPoint(5.0F, -1.0F, -2.5F); this.tankLeftTop.addBox(0.0F, 0.0F, 0.0F, 4, 1, 4); @@ -124,7 +122,6 @@ private void init() this.tankLeftBottom.addChild(this.tankLeftWall4); //Right Tank - this.tankRightTop = new ModelRenderer(this, 17, 40); this.tankRightTop.setRotationPoint(-9.0F, -1.0F, -2.5F); this.tankRightTop.addBox(0.0F, 0.0F, 0.0F, 4, 1, 4); @@ -155,7 +152,6 @@ private void init() this.tankRightBottom.addChild(this.tankRightWall4); //Bed - this.bed = new ModelRenderer(this, 31, 0); this.bed.setRotationPoint(-7.0F, 7.0F, 2.0F); this.bed.addBox(0.0F, 0.0F, 0.0F, 14, 2, 2); @@ -191,7 +187,6 @@ private void init() this.bed.addChild(this.bedStrapLeftBottom); //Noses - this.villagerNose = new ModelRenderer(this, 64, 0); this.villagerNose.setRotationPoint(-1.0F, 4.0F, 4.0F); this.villagerNose.addBox(0.0F, 0.0F, 0.0F, 2, 4, 2); diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java index 48210d27..3acf99ea 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java @@ -68,7 +68,6 @@ public ModelBackpackBlock() this.textureHeight = 64; //Main Backpack - this.mainBody = new ModelRenderer(this, 0, 9); this.mainBody.setRotationPoint(0.0F, 0.0F, 0.0F); this.mainBody.addBox(-5.0F, 0.0F, -3.0F, 10, 9, 5); @@ -99,7 +98,6 @@ public ModelBackpackBlock() this.mainBody.addChild(this.pocketFace); //Left Tank - this.tankLeftTop = new ModelRenderer(this, 0, 40); this.tankLeftTop.setRotationPoint(5.0F, 0.0F, -2.5F); this.tankLeftTop.addBox(0.0F, 0.0F, 0.0F, 4, 1, 4); @@ -130,7 +128,6 @@ public ModelBackpackBlock() this.tankLeftBottom.addChild(this.tankLeftWall4); //Right Tank - this.tankRightTop = new ModelRenderer(this, 17, 40); this.tankRightTop.setRotationPoint(-9.0F, 0.0F, -2.5F); this.tankRightTop.addBox(0.0F, 0.0F, 0.0F, 4, 1, 4); @@ -161,7 +158,6 @@ public ModelBackpackBlock() this.tankRightBottom.addChild(this.tankRightWall4); //Bed - this.bed = new ModelRenderer(this, 31, 0); this.bed.setRotationPoint(-7.0F, 7.0F, 2.0F); this.bed.addBox(0.0F, 0.0F, 0.0F, 14, 2, 2); @@ -197,7 +193,6 @@ public ModelBackpackBlock() this.bed.addChild(this.bedStrapLeftBottom); //Lamp - this.lampPole1 = new ModelRenderer(this, 32, 24); this.lampPole1.setRotationPoint(5.0F, -10.0F, -1.0F); this.lampPole1.addBox(0.0F, 0.0F, 0.0F, 1, 10, 1); @@ -247,7 +242,6 @@ public ModelBackpackBlock() this.lampLight.addBox(0.0F, 0.0F, 0.0F, 3, 4, 3); //Kitchen - this.kitchenBase = new ModelRenderer(this, 49, 46); this.kitchenBase.setRotationPoint(-9.0F, -1.0F, -1.5F); this.kitchenBase.addBox(0.0F, 0.0F, 0.0F, 3, 1, 2); @@ -258,7 +252,6 @@ public ModelBackpackBlock() this.kitchenBase.addChild(this.kitchen); //Noses - this.villagerNose = new ModelRenderer(this, 64, 0); this.villagerNose.setRotationPoint(-1.0F, 4.0F, 4.0F); this.villagerNose.addBox(0.0F, 0.0F, 0.0F, 2, 4, 2); @@ -270,12 +263,10 @@ public ModelBackpackBlock() this.pigNose = new ModelRenderer(this, 74, 0); this.pigNose.setRotationPoint(-2.0F, 4.0F, 4.0F); this.pigNose.addBox(0.0F, 0.0F, 0.0F, 4, 3, 1); - } public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float scale, IInventoryAdventureBackpack backpack) { - //scale*=0.9; boolean sleepingbag = backpack.isSBDeployed(); FluidTank tankLeft = backpack.getLeftTank(); diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelCampFire.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelCampFire.java index f04fd5de..687137b5 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelCampFire.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelCampFire.java @@ -146,5 +146,4 @@ public void setRotateAngle(ModelRenderer modelRenderer, float x, float y, float modelRenderer.rotateAngleY = y; modelRenderer.rotateAngleZ = z; } - } diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelClockworkCrossbow.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelClockworkCrossbow.java index 568fdfb4..ab8b9214 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelClockworkCrossbow.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelClockworkCrossbow.java @@ -101,7 +101,6 @@ public ModelClockworkCrossbow() this.sniperLeg1_1.addBox(-0.5F, 0.0F, -0.5F, 1, 7, 1, 0.0F); this.setRotateAngle(sniperLeg1_1, 0.0F, 0.0F, -0.4363323129985824F); - this.hookTooth2 = new ModelRenderer(this, 0, 0); this.hookTooth2.setRotationPoint(0.0F, -1.0F, -1.0F); this.hookTooth2.addBox(0.0F, 0.0F, 0.0F, 3, 1, 1, 0.0F); @@ -156,7 +155,6 @@ public ModelClockworkCrossbow() this.leftArc3.addBox(0.0F, 0.0F, 0.0F, 8, 2, 2, 0.0F); this.setRotateAngle(leftArc3, 0.0F, -0.7853981633974483F, 0.0F); - this.reloader2 = new ModelRenderer(this, 0, 44); this.reloader2.setRotationPoint(6.0F, 1.0F, 0.0F); this.reloader2.addBox(0.0F, -0.5F, -0.5F, 1, 4, 1, 0.0F); @@ -174,7 +172,6 @@ public ModelClockworkCrossbow() this.hookTooth3.setRotationPoint(0.0F, 3.0F, 3.0F); this.hookTooth3.addBox(0.0F, 0.0F, 0.0F, 3, 1, 1, 0.0F); - this.hookHead.addChild(this.hookTooth1); this.reloader2.addChild(this.reloader3); this.sniperLeg1_1.addChild(this.shape38); @@ -207,7 +204,6 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f @Override public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - this.wheel.render(f5); this.reloader1.render(f5); this.sniperLeg1.render(f5); @@ -222,10 +218,8 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f this.handle.render(1 / 18f); this.magazine.render(f5); - ModelRenderer[] arrows = {arrow1, arrow2, arrow3}; - setRotateAngle(arrow, Utils.degreesToRadians(-90), Utils.degreesToRadians(0), Utils.degreesToRadians(0)); for (ModelRenderer model : arrows) { diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelCoalJetpack.java index 6aae9e32..1284774c 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelCoalJetpack.java @@ -177,7 +177,6 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f GL11.glTranslatef(-bipedBody.offsetX, -bipedBody.offsetY, -(bipedBody.offsetZ)); GL11.glPopMatrix(); } - } public void renderCoalJetpack(float f5) @@ -197,7 +196,5 @@ public void renderCoalJetpack(float f5) GL11.glPushMatrix(); renderFluidInTank(inv.getWaterTank(), new Vector3(0, .5f, 0), new Vector3(.155f, 0, .135f), new Vector3(0.18f, 0.0625f, -0.045f), tankTop); GL11.glPopMatrix(); - } - } diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelCopterPack.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelCopterPack.java index ce85f8dc..9aa5fc26 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelCopterPack.java @@ -21,7 +21,6 @@ */ public class ModelCopterPack extends ModelWearable { - public static ModelCopterPack instance = new ModelCopterPack(); public ModelRenderer Base; public ModelRenderer EngineBody; @@ -58,7 +57,6 @@ private void init() this.Base.addBox(-4.0F, 0.0F, 2.0F, 8, 12, 1); //TANK - this.TankTop = new ModelRenderer(this, 0, 33); this.TankTop.setRotationPoint(1.0F, 0.0F, 3.0F); this.TankTop.addBox(0.0F, 0.0F, 0.0F, 5, 1, 5, 0.0F); @@ -145,7 +143,6 @@ private void init() this.Axis.addChild(this.Blade4); //ESCAPE - this.Escape1 = new ModelRenderer(this, 9, 35); this.Escape1.setRotationPoint(-4.0F, 9.0F, 4.0F); this.Escape1.addBox(0.0F, 0.0F, 0.0F, 2, 1, 1); diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelFullArmor.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelFullArmor.java index 25bfdf15..1eaa097b 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelFullArmor.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelFullArmor.java @@ -21,7 +21,6 @@ public ModelFullArmor() @Override public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - setRotationAngles(f, f1, f2, f3, f4, f5, entity); if (entity instanceof EntityLivingBase) { diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelSleepingBag.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelSleepingBag.java index e1c52911..07c3e270 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelSleepingBag.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelSleepingBag.java @@ -67,5 +67,4 @@ public void setRotationAngles(float f, float f1, float f2, float f3, float f4, f { super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); } - } diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelWearable.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelWearable.java index 93721896..65a02e58 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelWearable.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelWearable.java @@ -18,7 +18,6 @@ */ public abstract class ModelWearable extends ModelBiped { - protected void startBlending() { GL11.glEnable(GL11.GL_BLEND); @@ -67,5 +66,4 @@ public void renderFluidInTank(FluidTank tank, Vector3 minCoords, Vector3 maxCoor RenderUtils.renderFluidCuboid(tank.getFluid(), cat.add(victor), ((1.0F * tank.getFluidAmount()) / (1.0F * tank.getCapacity())), 0.8); } } - } diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/CopygirlRenderUtils.java b/src/main/java/com/darkona/adventurebackpack/client/render/CopygirlRenderUtils.java index e31382e6..02154898 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/CopygirlRenderUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/CopygirlRenderUtils.java @@ -42,16 +42,15 @@ @SideOnly(Side.CLIENT) public final class CopygirlRenderUtils { - private static final ResourceLocation glint = new ResourceLocation("textures/misc/enchanted_item_glint.png"); private CopygirlRenderUtils() { + } public static void renderItemIn3d(ItemStack stack) { - TextureManager textureManager = Minecraft.getMinecraft().getTextureManager(); // Not sure why but this can be null when the world loads. if (textureManager == null) @@ -114,7 +113,6 @@ public static void renderItemIn3d(ItemStack stack) GL11.glDisable(GL12.GL_RESCALE_NORMAL); GL11.glPopMatrix(); - } public static void setColorFromInt(int color) diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java index 786b32f5..df2a037b 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java @@ -21,7 +21,6 @@ public class RendererAdventureBackpackBlock extends TileEntitySpecialRenderer { - //private ModelAdventureBackpackBlock model; private ModelBackpackBlock model; @@ -79,7 +78,5 @@ public void renderTileEntityAt(TileEntity te, double x, double y, double z, floa GL11.glPopMatrix(); GL11.glPopMatrix(); GL11.glPopMatrix(); - } - } diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererCampFire.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererCampFire.java index a7b16a73..8d18ddfd 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererCampFire.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererCampFire.java @@ -17,8 +17,7 @@ */ public class RendererCampFire extends TileEntitySpecialRenderer { - - // private ModelAdventureBackpackBlock model; + //private ModelAdventureBackpackBlock model; private ModelCampFire model; public RendererCampFire() @@ -43,6 +42,4 @@ public void renderTileEntityAt(TileEntity te, double x, double y, double z, floa GL11.glPopMatrix(); GL11.glPopMatrix(); } - - } diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java index 55f1f439..239456ea 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java @@ -18,7 +18,6 @@ */ public class RendererHose implements IItemRenderer { - private static RenderItem renderHose = new RenderItem(); @SuppressWarnings("FieldCanBeLocal") private FontRenderer fontRenderer; @@ -40,7 +39,6 @@ public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRe @SuppressWarnings("incomplete-switch") public void renderItem(ItemRenderType type, ItemStack hose, Object... data) { - if (type == ItemRenderType.INVENTORY) { // ====================Render the item===================== // diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererInflatableBoat.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererInflatableBoat.java index 73c65769..15b9cc43 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererInflatableBoat.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererInflatableBoat.java @@ -18,7 +18,6 @@ */ public class RendererInflatableBoat extends Render { - private ResourceLocation boatTexture = Resources.modelTextures("inflatableBoat"); private ModelInflatableBoat boatModel = new ModelInflatableBoat(); @@ -57,8 +56,6 @@ public void doRender(EntityInflatableBoat entity, double x, double y, double z, /** * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture. - * - * @param p_110775_1_ */ @Override protected ResourceLocation getEntityTexture(Entity p_110775_1_) diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureHat.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureHat.java index 1449b297..9ddf9ca9 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureHat.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureHat.java @@ -1,6 +1,5 @@ package com.darkona.adventurebackpack.client.render; - import org.lwjgl.opengl.GL11; import net.minecraft.client.Minecraft; @@ -12,15 +11,11 @@ import com.darkona.adventurebackpack.client.models.ModelAdventureHat; import com.darkona.adventurebackpack.util.Resources; - /** * Created by Darkona on 11/10/2014. */ - - public class RendererItemAdventureHat implements IItemRenderer { - private final ModelAdventureHat model; public RendererItemAdventureHat() @@ -177,5 +172,4 @@ public void renderItem(IItemRenderer.ItemRenderType type, ItemStack item, Object break; } } - } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemClockworkCrossbow.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemClockworkCrossbow.java index 4f11c206..0534c7fe 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemClockworkCrossbow.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemClockworkCrossbow.java @@ -16,11 +16,8 @@ /** * Created by Darkona on 11/10/2014. */ - - public class RendererItemClockworkCrossbow implements IItemRenderer { - private final ModelClockworkCrossbow model; private ResourceLocation modelTexture = Resources.modelTextures("clockworkCrossbow"); @@ -41,7 +38,6 @@ public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRe public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); EntityPlayer player; switch (type) @@ -141,5 +137,4 @@ public void renderItem(ItemRenderType type, ItemStack item, Object... data) break; } } - } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java index 71849805..9452f6d6 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java @@ -10,7 +10,6 @@ public class RendererStack extends ModelRenderer { - public ItemStack stack; private boolean which; @@ -59,5 +58,4 @@ public void render(float par1) } } - } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererWearableEquipped.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererWearableEquipped.java index 1e7e9680..5a161c0f 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererWearableEquipped.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererWearableEquipped.java @@ -24,7 +24,6 @@ */ public class RendererWearableEquipped extends RendererLivingEntity { - public ResourceLocation texture; public ModelBiped modelBipedMain; diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index d6a61e81..20ca4ef5 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -73,14 +73,11 @@ public static void cycleTool(EntityPlayer player, int direction, int slot) player.inventory.mainInventory[slot] = backpack.getStackInSlot(UPPER_TOOL); backpack.setInventorySlotContentsNoSave(UPPER_TOOL, backpack.getStackInSlot(LOWER_TOOL)); backpack.setInventorySlotContentsNoSave(LOWER_TOOL, current); - } else + } else if (direction > 0) { - if (direction > 0) - { - player.inventory.mainInventory[slot] = backpack.getStackInSlot(LOWER_TOOL); - backpack.setInventorySlotContentsNoSave(LOWER_TOOL, backpack.getStackInSlot(UPPER_TOOL)); - backpack.setInventorySlotContentsNoSave(UPPER_TOOL, current); - } + player.inventory.mainInventory[slot] = backpack.getStackInSlot(LOWER_TOOL); + backpack.setInventorySlotContentsNoSave(LOWER_TOOL, backpack.getStackInSlot(UPPER_TOOL)); + backpack.setInventorySlotContentsNoSave(UPPER_TOOL, current); } } backpack.markDirty(); @@ -169,11 +166,6 @@ public static void electrify(EntityPlayer player) } } - /** - * @param player - * @param bow - * @param charge - */ public static void leakArrow(EntityPlayer player, ItemStack bow, int charge) { World world = player.worldObj; @@ -247,12 +239,6 @@ public static void leakArrow(EntityPlayer player, ItemStack bow, int charge) } } - /** - * @param player - * @param coordX - * @param coordY - * @param coordZ - */ public static void toggleSleepingBag(EntityPlayer player, int coordX, int coordY, int coordZ) { World world = player.worldObj; @@ -490,5 +476,4 @@ public static void toggleCoalJetpack(EntityPlayer player, ItemStack jetpack, byt } } } - } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 1124f981..99d1b521 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -15,7 +15,6 @@ */ public class ConfigHandler { - //public static final String configVersion = "1.0.0"; public static Configuration config; @@ -214,5 +213,4 @@ public void onConfigChangeEvent(ConfigChangedEvent.OnConfigChangedEvent event) { return !configuration.getLoadedConfigVersion().equals(configuration.getDefinedConfigVersion()); }*/ - } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/config/Keybindings.java b/src/main/java/com/darkona/adventurebackpack/config/Keybindings.java index fa65cc1b..b9ae0823 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/Keybindings.java +++ b/src/main/java/com/darkona/adventurebackpack/config/Keybindings.java @@ -1,11 +1,11 @@ package com.darkona.adventurebackpack.config; +import org.lwjgl.input.Keyboard; + import net.minecraft.client.settings.KeyBinding; import com.darkona.adventurebackpack.reference.Names; -import org.lwjgl.input.Keyboard; - /** * Created on 14/10/2014 * @@ -16,6 +16,4 @@ public class Keybindings public static KeyBinding openBackpack = new KeyBinding(Names.keys.OPEN_BACKPACK_INVENTORY, Keyboard.KEY_B, Names.keys.CATEGORY); public static KeyBinding toggleActions = new KeyBinding(Names.keys.TOGGLE_BACKPACK_ACTIONS, Keyboard.KEY_N, Names.keys.CATEGORY); //public static KeyBinding jumpKey = -} - - +} \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java b/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java index 49124c06..b02f137e 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java @@ -410,8 +410,6 @@ public boolean interactFirst(EntityPlayer p_130002_1_) /** * Save the entity to NBT (calls an abstract helper method to write extra data) - * - * @param compound */ @Override public void writeToNBT(NBTTagCompound compound) @@ -422,8 +420,6 @@ public void writeToNBT(NBTTagCompound compound) /** * Reads the entity from NBT (calls an abstract helper method to read specialized data) - * - * @param compound */ @Override public void readFromNBT(NBTTagCompound compound) @@ -521,8 +517,6 @@ public int getSizeInventory() /** * Returns the stack in slot i - * - * @param p_70301_1_ */ @Override public ItemStack getStackInSlot(int p_70301_1_) @@ -533,9 +527,6 @@ public ItemStack getStackInSlot(int p_70301_1_) /** * Removes from an inventory slot (first arg) up to a specified number (second arg) of items and returns them in a * new stack. - * - * @param p_70298_1_ - * @param p_70298_2_ */ @Override public ItemStack decrStackSize(int p_70298_1_, int p_70298_2_) @@ -546,8 +537,6 @@ public ItemStack decrStackSize(int p_70298_1_, int p_70298_2_) /** * When some containers are closed they call this on each slot, then drop whatever it returns as an EntityItem - * like when you close a workbench GUI. - * - * @param p_70304_1_ */ @Override public ItemStack getStackInSlotOnClosing(int p_70304_1_) @@ -557,9 +546,6 @@ public ItemStack getStackInSlotOnClosing(int p_70304_1_) /** * Sets the given item stack to the specified slot in the inventory (can be crafting or armor sections). - * - * @param p_70299_1_ - * @param p_70299_2_ */ @Override public void setInventorySlotContents(int p_70299_1_, ItemStack p_70299_2_) @@ -606,8 +592,6 @@ public void markDirty() /** * Do not make give this method the name canInteractWith because it clashes with Container - * - * @param p_70300_1_ */ @Override public boolean isUseableByPlayer(EntityPlayer p_70300_1_) @@ -629,9 +613,6 @@ public void closeInventory() /** * Returns true if automation is allowed to insert the given stack (ignoring stack size) into the given slot. - * - * @param p_94041_1_ - * @param p_94041_2_ */ @Override public boolean isItemValidForSlot(int p_94041_1_, ItemStack p_94041_2_) diff --git a/src/main/java/com/darkona/adventurebackpack/entity/ai/AvoidEntitySelector.java b/src/main/java/com/darkona/adventurebackpack/entity/ai/AvoidEntitySelector.java index 5c066815..b9e6e81c 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/ai/AvoidEntitySelector.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/ai/AvoidEntitySelector.java @@ -5,8 +5,6 @@ public class AvoidEntitySelector implements IEntitySelector { - - final EntityAIAvoidPlayerWithBackpack entityAvoiderAI; AvoidEntitySelector(EntityAIAvoidPlayerWithBackpack par1EntityAIAvoidEntity) @@ -14,13 +12,12 @@ public class AvoidEntitySelector implements IEntitySelector this.entityAvoiderAI = par1EntityAIAvoidEntity; } - /** * Return whether the specified com.darkona.adventurebackpack.entity is applicable to this filter. */ + @Override public boolean isEntityApplicable(Entity par1Entity) { return par1Entity.isEntityAlive() && EntityAIAvoidPlayerWithBackpack.func_98217_a(this.entityAvoiderAI).getEntitySenses().canSee(par1Entity); } - } diff --git a/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIHorseFollowOwner.java b/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIHorseFollowOwner.java index 6b98a2ea..be51d5eb 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIHorseFollowOwner.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIHorseFollowOwner.java @@ -39,7 +39,6 @@ public EntityAIHorseFollowOwner(EntityHorse horse, double speed, float minDist, this.maxDist = maxDist; } - public double getDistanceSquaredToOwner() { double relX = theHorse.posX - theOwner.posX; @@ -48,7 +47,6 @@ public double getDistanceSquaredToOwner() return relX * relX + relY * relY + relZ * relZ; } - @Override public boolean shouldExecute() { @@ -91,7 +89,6 @@ public void resetTask() theHorse.getNavigator().setAvoidsWater(this.avoidWater); } - @Override public void updateTask() { @@ -108,6 +105,4 @@ public void updateTask() } } } - - } diff --git a/src/main/java/com/darkona/adventurebackpack/entity/fx/SteamFX.java b/src/main/java/com/darkona/adventurebackpack/entity/fx/SteamFX.java index e4e590f1..7fd2fd12 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/fx/SteamFX.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/fx/SteamFX.java @@ -13,8 +13,7 @@ */ @SideOnly(Side.CLIENT) -public class SteamFX - extends EntityFX +public class SteamFX extends EntityFX { private float smokeParticleScale; @@ -43,6 +42,7 @@ public SteamFX(World world, double x, double y, double z, double velX, double ve this.noClip = true; } + @Override public void renderParticle(Tessellator par1Tessellator, float par2, float par3, float par4, float par5, float par6, float par7) { float age = (this.particleAge + par2) / this.particleMaxAge * 32.0F; @@ -58,6 +58,7 @@ public void renderParticle(Tessellator par1Tessellator, float par2, float par3, super.renderParticle(par1Tessellator, par2, par3, par4, par5, par6, par7); } + @Override public void onUpdate() { this.prevPosX = this.posX; diff --git a/src/main/java/com/darkona/adventurebackpack/events/WearableEvent.java b/src/main/java/com/darkona/adventurebackpack/events/WearableEvent.java index c16b3670..e6ce434b 100644 --- a/src/main/java/com/darkona/adventurebackpack/events/WearableEvent.java +++ b/src/main/java/com/darkona/adventurebackpack/events/WearableEvent.java @@ -11,7 +11,6 @@ */ public class WearableEvent extends PlayerEvent { - public final ItemStack wearable; public WearableEvent(EntityPlayer player, ItemStack wearable) @@ -35,5 +34,4 @@ public EquipWearableEvent(EntityPlayer player, ItemStack wearable) super(player, wearable); } } - } diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/FluidEffectRegistry.java b/src/main/java/com/darkona/adventurebackpack/fluids/FluidEffectRegistry.java index 47f988dd..acb70830 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/FluidEffectRegistry.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/FluidEffectRegistry.java @@ -43,10 +43,6 @@ public static void init() SOUP_EFFECT = new MushroomStewEffect(); } - /** - * @param effect - * @return - */ public static int registerFluidEffect(FluidEffect effect) { String className = effect.getClass().getName(); diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/FluidMelonJuice.java b/src/main/java/com/darkona/adventurebackpack/fluids/FluidMelonJuice.java index d6e3099a..77602a04 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/FluidMelonJuice.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/FluidMelonJuice.java @@ -12,7 +12,6 @@ */ public class FluidMelonJuice extends Fluid { - public FluidMelonJuice() { super("melonJuice"); diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/FluidMilk.java b/src/main/java/com/darkona/adventurebackpack/fluids/FluidMilk.java index 33344238..a21fb15c 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/FluidMilk.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/FluidMilk.java @@ -15,7 +15,6 @@ */ public class FluidMilk extends Fluid { - public FluidMilk() { super("milk"); @@ -24,7 +23,6 @@ public FluidMilk() setLuminosity(0); } - @Override public IIcon getStillIcon() { @@ -54,6 +52,4 @@ public boolean isGaseous(World world, int x, int y, int z) { return false; } - - } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/TankWrapper.java b/src/main/java/com/darkona/adventurebackpack/fluids/TankWrapper.java index fc1f472f..543b9497 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/TankWrapper.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/TankWrapper.java @@ -35,5 +35,4 @@ public boolean isEmpty() { return this.fluid == null || (this.getFluidAmount() == this.capacity); } - } diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/effects/FuelEffect.java b/src/main/java/com/darkona/adventurebackpack/fluids/effects/FuelEffect.java index c30e7104..bceda7cb 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/effects/FuelEffect.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/effects/FuelEffect.java @@ -18,7 +18,6 @@ public class FuelEffect extends FluidEffect { - public FuelEffect() { super(FluidRegistry.getFluid("fuel"), 20); diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/effects/LavaEffect.java b/src/main/java/com/darkona/adventurebackpack/fluids/effects/LavaEffect.java index 3dfdfa98..a11f0f0c 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/effects/LavaEffect.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/effects/LavaEffect.java @@ -31,5 +31,4 @@ public void affectDrinker(World world, Entity entity) player.addPotionEffect(new PotionEffect(Potion.digSlowdown.id, timeInSeconds * 20 * 6, 3, false)); } } - } diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/effects/MelonJuiceEffect.java b/src/main/java/com/darkona/adventurebackpack/fluids/effects/MelonJuiceEffect.java index 59fa56bd..957e941c 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/effects/MelonJuiceEffect.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/effects/MelonJuiceEffect.java @@ -15,7 +15,6 @@ */ public class MelonJuiceEffect extends FluidEffect { - public MelonJuiceEffect() { super(ModFluids.melonJuice, 30); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java index c139e440..f63d00a2 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java @@ -35,20 +35,16 @@ */ public class GeneralEventHandler { - /** - * @param event - */ @SubscribeEvent public void eatGoldenApple(PlayerUseItemEvent.Finish event) { EntityPlayer player = event.entityPlayer; if (ConfigHandler.backpackAbilities) { - if (event.item.getItem() instanceof ItemAppleGold && - //((ItemAppleGold) event.item.getItem()).getRarity(event.item) == EnumRarity.epic && - Wearing.isWearingTheRightBackpack(player, "Rainbow")) + if (event.item.getItem() instanceof ItemAppleGold + //&& ((ItemAppleGold) event.item.getItem()).getRarity(event.item) == EnumRarity.epic + && Wearing.isWearingTheRightBackpack(player, "Rainbow")) { - InventoryBackpack inv = new InventoryBackpack(Wearing.getWearingBackpack(player)); if (inv.getLastTime() > 0) return; inv.setLastTime(Utils.secondsToTicks(150)); @@ -101,9 +97,6 @@ public void detectArrow(ArrowLooseEvent event) } } - /** - * @param event - */ @SubscribeEvent public void detectLightning(EntityStruckByLightningEvent event) { diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java index 6bc61587..ced4f78b 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java @@ -33,6 +33,7 @@ public class GuiHandler implements IGuiHandler public GuiHandler() { + } @Override @@ -88,7 +89,6 @@ public Object getServerGuiElement(int ID, EntityPlayer player, World world, int } return null; - } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java index 9cec8e3a..4c6e1ea3 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java @@ -53,31 +53,28 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) if (player != null) { - if (keypressed == Key.INVENTORY_KEY) + if (keypressed == Key.INVENTORY_KEY && mc.inGameHasFocus) { - if (mc.inGameHasFocus) + if (player.isSneaking() && (player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemAdventureBackpack)) { - if (player.isSneaking() && (player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemAdventureBackpack)) + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); + } else + { + ModNetwork.net.sendToServer(new SyncPropertiesPacket.Message()); + if (Wearing.isWearingBackpack(player)) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_KEYBIND)); + } else if ((player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemAdventureBackpack)) { ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); - } else + } + if (Wearing.isWearingCopter(player)) { - ModNetwork.net.sendToServer(new SyncPropertiesPacket.Message()); - if (Wearing.isWearingBackpack(player)) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_KEYBIND)); - } else if ((player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemAdventureBackpack)) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); - } - if (Wearing.isWearingCopter(player)) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.COPTER_GUI, GUIPacket.FROM_KEYBIND)); - } - if (Wearing.isWearingJetpack(player)) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.JETPACK_GUI, GUIPacket.FROM_KEYBIND)); - } + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.COPTER_GUI, GUIPacket.FROM_KEYBIND)); + } + if (Wearing.isWearingJetpack(player)) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.JETPACK_GUI, GUIPacket.FROM_KEYBIND)); } } } diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 71190a3d..b7f43481 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -106,8 +106,6 @@ public void playerTravelsAcrossDimensions(PlayerEvent.PlayerChangedDimensionEven /** * Used for the Piston Boots to give them their amazing powers. - * - * @param event */ @SubscribeEvent public void onPlayerJump(LivingEvent.LivingJumpEvent event) @@ -147,8 +145,6 @@ public void pistonBootsUnequipped(LivingEvent.LivingUpdateEvent event) /** * Used by the Piston boots to lessen the fall damage. It's hacky, but I don't care. - * - * @param event */ @SubscribeEvent public void onFall(LivingFallEvent event) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java index 430bb1e4..acce0624 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java @@ -309,5 +309,4 @@ private String emptyFormat() { return String.format("%s%sEmpty", EnumChatFormatting.DARK_GRAY, EnumChatFormatting.ITALIC); } - } diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModBlocks.java b/src/main/java/com/darkona/adventurebackpack/init/ModBlocks.java index 4a74ed73..9c5259a2 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModBlocks.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModBlocks.java @@ -14,7 +14,6 @@ */ public class ModBlocks { - public static BlockAdventureBackpack blockBackpack = new BlockAdventureBackpack(); public static BlockSleepingBag blockSleepingBag = new BlockSleepingBag(); public static BlockCampFire blockCampFire = new BlockCampFire(); @@ -28,5 +27,4 @@ public static void init() GameRegistry.registerTileEntity(TileCampfire.class, "tileCampFire"); GameRegistry.registerTileEntity(TileAdventureBackpack.class, "adventureBackpackTileEntity"); } - } diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModEntities.java b/src/main/java/com/darkona/adventurebackpack/init/ModEntities.java index 3d12f6dc..75d73cbf 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModEntities.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModEntities.java @@ -13,17 +13,10 @@ */ public class ModEntities { - public static void init() { - //Color color1 = new Color(227,129,216); - //Color color2 = new Color(0, 0, 0); - //int color_int1 = (color1.getRed() << 16) + (color1.getGreen() << 8) + color1.getBlue(); - //int color_int2 = (color2.getRed() << 16) + (color2.getGreen() << 8) + color2.getBlue(); int counter = 0; EntityRegistry.registerModEntity(EntityInflatableBoat.class, "inflatableBoat", counter++, AdventureBackpack.instance, 64, 1, true); - EntityRegistry.registerModEntity(EntityFriendlySpider.class, "rideableSpider", counter++, AdventureBackpack.instance, 64, 2, true); - //EntityRegistry.registerGlobalEntityID(EntityRideableSpider.class, "rideableSpider", EntityRegistry.findGlobalUniqueEntityId(),color_int2,color_int1); } } diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModFluids.java b/src/main/java/com/darkona/adventurebackpack/init/ModFluids.java index 66ec1f91..f48b04a5 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModFluids.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModFluids.java @@ -38,5 +38,4 @@ public static void init() GeneralReference.init(); } - } diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModItems.java b/src/main/java/com/darkona/adventurebackpack/init/ModItems.java index 1742f7f7..9e409b0c 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModItems.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModItems.java @@ -23,7 +23,6 @@ */ public class ModItems { - public static final ItemMachete machete = new ItemMachete(); public static final ItemCrossbow cwxbow = new ItemCrossbow(); public static final ArmorAB adventureHat = new ItemAdventureHat(); @@ -65,5 +64,4 @@ public static void init() GameRegistry.registerItem(steamJetpack, "steamJetpack"); } }*/ - } diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModMaterials.java b/src/main/java/com/darkona/adventurebackpack/init/ModMaterials.java index 7f0ae20a..07574c34 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModMaterials.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModMaterials.java @@ -11,8 +11,6 @@ */ public class ModMaterials { - public static Item.ToolMaterial ruggedIron = EnumHelper.addToolMaterial("RUGGED_IRON", 2, 350, 6.5F, 5.2F, 10); - public static ItemArmor.ArmorMaterial ruggedLeather = EnumHelper.addArmorMaterial("RUGGED_LEATHER", 15, new int[]{2, 5, 4, 2}, 12); } diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java b/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java index a313589f..ef247426 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java @@ -45,7 +45,6 @@ public static void init() registerMessage(CowAbilityPacket.class, CowAbilityPacket.CowAbilityMessage.class); registerMessage(PlayerActionPacket.class, PlayerActionPacket.ActionMessage.class); registerMessage(EquipUnequipBackWearablePacket.class, EquipUnequipBackWearablePacket.Message.class); - } @SuppressWarnings("unchecked") diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java index c7a390ad..73fc02e8 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java @@ -5,9 +5,11 @@ import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.oredict.ShapedOreRecipe; import cpw.mods.fml.common.registry.GameRegistry; +import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.init.recipes.BackpackRecipesList; import com.darkona.adventurebackpack.reference.BackpackNames; @@ -40,7 +42,10 @@ public static void init() //Copter Pack if (ConfigHandler.recipeCopterPack) { - GameRegistry.addRecipe(new ItemStack(ModItems.copterPack), + ItemStack copterStack = new ItemStack(ModItems.copterPack); + copterStack.setTagCompound(new NBTTagCompound()); + + GameRegistry.addRecipe(copterStack, "WBW", "TEI", "CDI", @@ -56,7 +61,12 @@ public static void init() //CoalJetpack if (ConfigHandler.recipeCoalJetpack) { - GameRegistry.addRecipe(new ItemStack(ModItems.coalJetpack), + ItemStack jetpackStack = new ItemStack(ModItems.coalJetpack); + NBTTagCompound jetpackCompound = new NBTTagCompound(); + jetpackCompound.setTag(Constants.JETPACK_COMPOUND_TAG, new NBTTagCompound()); + jetpackStack.setTagCompound(jetpackCompound); + + GameRegistry.addRecipe(jetpackStack, "SWT", "GIG", "FWS", diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java b/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java index 34f1e683..3a02042e 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java @@ -23,9 +23,7 @@ public class ModWorldGen { public static void init() { - //Dungeon Generation - for (int i = 0; i < BackpackNames.backpackNames.length; i++) { if (BackpackNames.backpackNames[i].equals("IronGolem") && ConfigHandler.allowGolemGen) @@ -61,7 +59,6 @@ public static void init() public static class TradeHandler implements VillagerRegistry.IVillageTradeHandler { - ItemStack backpack; TradeHandler(ItemStack backpack) @@ -72,10 +69,6 @@ public static class TradeHandler implements VillagerRegistry.IVillageTradeHandle /** * Called to allow changing the content of the {@link net.minecraft.village.MerchantRecipeList} for the villager * supplied during creation - * - * @param villager - * @param recipeList - * @param random */ @Override @SuppressWarnings("unchecked") @@ -95,5 +88,4 @@ public void manipulateTradesForVillager(EntityVillager villager, MerchantRecipeL } } } - } diff --git a/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipe.java b/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipe.java index cb911a13..e289d2db 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipe.java +++ b/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipe.java @@ -21,12 +21,11 @@ */ class AbstractBackpackRecipe implements IRecipe { - private final BackpackRecipes br = new BackpackRecipes(); private ItemStack result; private ItemStack[] recipe; - public boolean compareStacksForColor(ItemStack stack1, ItemStack stack2) + private boolean compareStacksForColor(ItemStack stack1, ItemStack stack2) { if (stack1 == null && stack2 == null) @@ -69,7 +68,6 @@ public AbstractBackpackRecipe() public HashMap recipes; - public ItemStack makeBackpack(ItemStack backpackIn, String colorName) { if (backpackIn == null) return null; @@ -166,6 +164,4 @@ public ItemStack getRecipeOutput() backpack.stackTagCompound.setString("colorName", "Standard"); return backpack; } - - } diff --git a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipe.java b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipe.java index 01d381bb..373fc4ee 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipe.java +++ b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipe.java @@ -14,6 +14,7 @@ public class BackpackRecipe BackpackRecipe() { + } BackpackRecipe(String name, ItemStack[] array) diff --git a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipes.java index 45149183..7f063a69 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipes.java @@ -18,10 +18,9 @@ */ public class BackpackRecipes { - public List recipes; - public BackpackRecipes() + BackpackRecipes() { String[] covered = {"XXX", "XaX", "XXX"}; Black = reviewRecipe(covered, @@ -676,5 +675,4 @@ public static ItemStack[] reviewRecipe(Object... objects) //recipe.array = aitemstack; return aitemstack; } - } diff --git a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipesList.java b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipesList.java index d650625d..65f46732 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipesList.java +++ b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipesList.java @@ -16,7 +16,6 @@ */ public class BackpackRecipesList { - public List recipes; public BackpackRecipesList() @@ -41,7 +40,6 @@ public BackpackRecipesList() ItemStack woolRed = new ItemStack(Blocks.wool, 1, 14); ItemStack woolBlack = new ItemStack(Blocks.wool, 1, 15); - Standard = reviewRecipe( "LGL", "TCT", @@ -690,10 +688,8 @@ public BackpackRecipesList() public final Object[] Zombie; public final Object[] ModdedNetwork; - public static Object[] reviewRecipe(Object... objects) { return objects; } - } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 415dbc12..0b300ddc 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -25,7 +25,6 @@ */ public class ContainerBackpack extends ContainerAdventureBackpack implements IWearableContainer { - public static final byte SOURCE_TILE = 0; public static final byte SOURCE_WEARING = 1; public static final byte SOURCE_HOLDING = 2; @@ -86,7 +85,6 @@ private void bindPlayerInventory(InventoryPlayer invPlayer) private void makeSlots(InventoryPlayer invPlayer) { - bindPlayerInventory(invPlayer); // Backpack Inventory @@ -123,7 +121,6 @@ private void makeSlots(InventoryPlayer invPlayer) addSlotToContainer(new SlotTool(inventory, LOWER_TOOL, 44, 97));// Lower Tool 17 //Bucket Slots - // bucket in left 18 addSlotToContainer(new SlotFluid(inventory, BUCKET_IN_LEFT, 6, 7)); // bucket out left 19 @@ -161,7 +158,7 @@ public void detectAndSendChanges() @Override public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) { - if (source == SOURCE_WEARING) refresh(); //TODO + if (source == SOURCE_WEARING) refresh(); Slot slot = getSlot(fromSlot); ItemStack result = null; @@ -327,7 +324,7 @@ public void onContainerClosed(EntityPlayer player) player.dropPlayerItemWithRandomChoice(itemstack, false); } } - for (int i = 0; i < 9; i++) //TODO crafters + for (int i = 0; i < 9; i++) { ItemStack itemstack = this.craftMatrix.getStackInSlotOnClosing(i); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java index 1b3a9359..92c4ab3a 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java @@ -12,7 +12,6 @@ */ public interface IInventoryAdventureBackpack extends IInventoryTanks { - FluidTank getLeftTank(); FluidTank getRightTank(); @@ -48,5 +47,4 @@ public interface IInventoryAdventureBackpack extends IInventoryTanks void dirtyTime(); void dirtyExtended(); - } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java index 511cbadc..171688f9 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java @@ -9,6 +9,7 @@ import net.minecraftforge.fluids.FluidTank; import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.util.FluidUtils; /** @@ -32,11 +33,22 @@ public class InventoryActions */ public static boolean transferContainerTank(IInventoryTanks inventory, FluidTank tank, int slotIn) { - ItemStack stackIn = inventory.getStackInSlot(slotIn); - if (tank == null || stackIn == null) return false; - - //Set slot out for whatever number the output slot should be. + if (tank == null) return false; int slotOut = slotIn + 1; + ItemStack stackHose = inventory.getStackInSlot(slotOut); + + if (stackHose != null && stackHose.getItem() instanceof ItemHose) + { + if (tank.getFluidAmount() > 0) + { + tank.drain(tank.getFluidAmount(), true); // hose in the bucketOut slot will empty the tank + return true; + } + //return false; + } + + ItemStack stackIn = inventory.getStackInSlot(slotIn); + if (stackIn == null) return false; //CONTAINER ===========> TANK if (FluidContainerRegistry.isFilledContainer(stackIn)) @@ -46,8 +58,7 @@ public static boolean transferContainerTank(IInventoryTanks inventory, FluidTank if (fill > 0) //If can accept the fluid { - //TODO add ability to empty the tank. using hose in bucketOut slot? - //if (FluidContainerRegistry.getContainerCapacity(stackIn) + tank.getFluidAmount() <= tank.getCapacity()) + if (FluidContainerRegistry.getContainerCapacity(stackIn) + tank.getFluidAmount() <= tank.getCapacity()) { //Get the empty container for the input, if there's any. ItemStack stackOut = FluidContainerRegistry.drainFluidContainer(stackIn); @@ -152,5 +163,4 @@ public static boolean hasBlockItem(IInventoryAdventureBackpack backpack, Block i } return false; } - } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index 031e17d9..73584314 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -190,17 +190,6 @@ public ItemStack decrStackSizeNoSave(int slot, int quantity) return stack; } - @Override - public boolean updateTankSlots() - { - boolean result = false; - while (InventoryActions.transferContainerTank(this, getLeftTank(), BUCKET_IN_LEFT)) - result = true; - while (InventoryActions.transferContainerTank(this, getRightTank(), BUCKET_IN_RIGHT)) - result = true; - return result; - } - @Override public void loadFromNBT(NBTTagCompound compound) { @@ -263,6 +252,17 @@ public FluidTank[] getTanksArray() return new FluidTank[]{leftTank, rightTank}; } + @Override + public boolean updateTankSlots() + { + boolean result = false; + while (InventoryActions.transferContainerTank(this, getLeftTank(), BUCKET_IN_LEFT)) + result = true; + while (InventoryActions.transferContainerTank(this, getRightTank(), BUCKET_IN_RIGHT)) + result = true; + return result; + } + @Override public void dirtyInventory() { @@ -416,5 +416,4 @@ public void setDisableNVision(boolean b) { this.disableNVision = b; } - } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index 0dcb1fc8..f5f80e1d 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -59,15 +59,6 @@ public int getBurnTimeRemainingScaled(int scale) return this.burnTicks * scale / this.currentItemBurnTime; } - @Override - public boolean updateTankSlots() - { - boolean result = false; - while (InventoryActions.transferContainerTank(this, getWaterTank(), JETPACK_BUCKET_IN)) - result = true; - return result; - } - @Override public void loadFromNBT(NBTTagCompound compound) { @@ -132,6 +123,15 @@ public FluidTank[] getTanksArray() return new FluidTank[]{waterTank, steamTank}; } + @Override + public boolean updateTankSlots() + { + boolean result = false; + while (InventoryActions.transferContainerTank(this, getWaterTank(), JETPACK_BUCKET_IN)) + result = true; + return result; + } + @Override public void dirtyInventory() { @@ -456,5 +456,4 @@ public void calculateLostTime() { long elapsedTimesince = System.currentTimeMillis() - systemTime; } - } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java index 11a4f0d2..253bfbfa 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java @@ -209,15 +209,6 @@ public void setStatus(byte status) this.status = status; } - @Override - public boolean updateTankSlots() - { - boolean result = false; - while (InventoryActions.transferContainerTank(this, getFuelTank(), COPTER_BUCKET_IN)) - result = true; - return result; - } - @Override public void loadFromNBT(NBTTagCompound compound) { @@ -240,6 +231,15 @@ public FluidTank[] getTanksArray() return new FluidTank[]{fuelTank}; } + @Override + public boolean updateTankSlots() + { + boolean result = false; + while (InventoryActions.transferContainerTank(this, getFuelTank(), COPTER_BUCKET_IN)) + result = true; + return result; + } + @Override public void dirtyInventory() { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java index 3a97afa2..c35b1124 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java @@ -10,7 +10,6 @@ */ public class SlotBackpack extends SlotAdventureBackpack { - private static final String[] FORBIDDEN_CLASSES = { // Adventure Backpack 2 "com.darkona.adventurebackpack.item.ItemAdventureBackpack", @@ -30,9 +29,9 @@ public class SlotBackpack extends SlotAdventureBackpack // Project Red Exploration Backpacks "mrtjp.projectred.exploration.ItemBackpack",}; - SlotBackpack(IInventoryAdventureBackpack inventory, int id, int x, int y) + SlotBackpack(IInventoryAdventureBackpack inventory, int slotIndex, int posX, int posY) { - super(inventory, id, x, y); + super(inventory, slotIndex, posX, posY); } public static boolean isValidItem(ItemStack stack) @@ -72,5 +71,4 @@ public boolean isItemValid(ItemStack stack) { return isValidItem(stack); } - } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java index 840ca5bb..65148e2c 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java @@ -7,6 +7,7 @@ import net.minecraftforge.fluids.FluidTank; import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.util.Utils; /** @@ -94,7 +95,7 @@ static int getCapacity(ItemStack stack) @Override public boolean isItemValid(ItemStack stack) { - return stack != null && isContainer(stack); + return stack != null && (isContainer(stack) || stack.getItem() instanceof ItemHose); } @Override @@ -115,5 +116,4 @@ public int getSlotStackLimit() { return Constants.BASIC_TANK_CAPACITY / Constants.BUCKET; } - } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidFuel.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidFuel.java index 933ae504..9d78ff5a 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidFuel.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidFuel.java @@ -4,6 +4,7 @@ import net.minecraft.item.ItemStack; import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.reference.GeneralReference; /** @@ -31,7 +32,7 @@ static boolean isValidItem(ItemStack stack) @Override public boolean isItemValid(ItemStack stack) { - return stack != null && isValidItem(stack); + return stack != null && (isValidItem(stack) || stack.getItem() instanceof ItemHose); } @Override @@ -39,5 +40,4 @@ public int getSlotStackLimit() { return Constants.COPTER_FUEL_CAPACITY / Constants.BUCKET; } - } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidWater.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidWater.java index 3ae39f3e..ca0827fa 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidWater.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidWater.java @@ -6,6 +6,7 @@ import net.minecraftforge.fluids.FluidRegistry; import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.util.FluidUtils; /** @@ -42,7 +43,7 @@ static boolean isValidItem(ItemStack stack) @Override public boolean isItemValid(ItemStack stack) { - return stack != null && isValidItem(stack); + return stack != null && (isValidItem(stack) || stack.getItem() instanceof ItemHose); } @Override @@ -50,5 +51,4 @@ public int getSlotStackLimit() { return Constants.JETPACK_WATER_CAPACITY / Constants.BUCKET; } - } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java index ed497c58..b42a1dcd 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java @@ -30,9 +30,11 @@ public boolean isItemValid(ItemStack stack) return isValidTool(stack); } - private static final String[] VALID_TOOL_NAMES = {"wrench", "hammer", "axe", "shovel", "grafter", "scoop", "crowbar", "mattock", "drill",}; + private static final String[] VALID_TOOL_NAMES = {"axe", "crowbar", "drill", "grafter", "hammer", "mattock", + "scoop", "shovel", "wrench",}; - private static final String[] INVALID_TOOL_NAMES = {"bucket", "sword", "dagger", "sabre", "rapier", "shield", "cutlass", "bow", "whip", "disassembler", "robit"}; + private static final String[] INVALID_TOOL_NAMES = {"bow", "bucket", "cutlass", "dagger", "disassembler", "rapier", + "robit", "sabre", "shield", "sword", "whip",}; public static boolean isValidTool(ItemStack stack) { @@ -44,7 +46,8 @@ public static boolean isValidTool(ItemStack stack) String clazz = item.getClass().getName(); // Vanilla - if (item instanceof ItemTool || item instanceof ItemHoe || item instanceof ItemShears || item instanceof ItemFishingRod || item instanceof ItemFlintAndSteel) + if (item instanceof ItemTool || item instanceof ItemHoe || item instanceof ItemShears + || item instanceof ItemFishingRod || item instanceof ItemFlintAndSteel) { return true; } @@ -121,8 +124,7 @@ public static boolean isValidTool(ItemStack stack) try { //Thaumcraft - if (java.lang.Class.forName("thaumcraft.common.items.wands.ItemWandCasting").isInstance(item)) - return true; + if (java.lang.Class.forName("thaumcraft.common.items.wands.ItemWandCasting").isInstance(item)) return true; } catch (Exception oops) { // oops.printStackTrace(); diff --git a/src/main/java/com/darkona/adventurebackpack/item/ArmorAB.java b/src/main/java/com/darkona/adventurebackpack/item/ArmorAB.java index 4023bd77..9dc4c3ec 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ArmorAB.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ArmorAB.java @@ -19,18 +19,17 @@ */ public class ArmorAB extends ItemArmor { - /** * @param type 2 Chain * @param renderIndex 0 Helmet, 1 Plate, 2 Pants, 3 Boots */ - public ArmorAB(int renderIndex, int type) + ArmorAB(int renderIndex, int type) { super(ModMaterials.ruggedLeather, renderIndex, type); setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); } - protected String getUnwrappedUnlocalizedName(String unlocalizedName) + private String getUnwrappedUnlocalizedName(String unlocalizedName) { return unlocalizedName.substring(unlocalizedName.indexOf(".") + 1); } diff --git a/src/main/java/com/darkona/adventurebackpack/item/IBackWearableItem.java b/src/main/java/com/darkona/adventurebackpack/item/IBackWearableItem.java index 41e77681..9243a95c 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/IBackWearableItem.java +++ b/src/main/java/com/darkona/adventurebackpack/item/IBackWearableItem.java @@ -28,5 +28,4 @@ public interface IBackWearableItem @SideOnly(Side.CLIENT) ResourceLocation getWearableTexture(ItemStack wearable); - } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAB.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAB.java index 058963a6..19f42d76 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAB.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAB.java @@ -14,8 +14,7 @@ */ public class ItemAB extends Item { - - public ItemAB() + ItemAB() { super(); setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); @@ -45,7 +44,7 @@ public void registerIcons(IIconRegister iconRegister) itemIcon = iconRegister.registerIcon(this.getUnlocalizedName().substring(this.getUnlocalizedName().indexOf(".") + 1)); } - protected String getUnwrappedUnlocalizedName(String unlocalizedName) + private String getUnwrappedUnlocalizedName(String unlocalizedName) { return unlocalizedName.substring(unlocalizedName.indexOf(".") + 1); } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 712d165a..f252d985 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -319,15 +319,15 @@ public boolean showDurabilityBar(ItemStack stack) return ConfigHandler.enableFullnessBar && getItemCount(stack) > 0; } - @SideOnly(Side.CLIENT) @Override + @SideOnly(Side.CLIENT) public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack stack, int armorSlot) { return new ModelBackpackArmor(); } - @SideOnly(Side.CLIENT) @Override + @SideOnly(Side.CLIENT) public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) { String modelTexture; diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java index 567bc9f0..0ae432d7 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java @@ -14,7 +14,6 @@ */ public class ItemAdventureHat extends ArmorAB { - public ItemAdventureHat() { super(2, 0); @@ -34,5 +33,4 @@ public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) { return par2ItemStack.isItemEqual(new ItemStack(Items.leather)); } - } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventurePants.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventurePants.java index 773b7387..059dfdfb 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventurePants.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventurePants.java @@ -10,7 +10,6 @@ */ public class ItemAdventurePants extends ArmorAB { - public ItemAdventurePants() { super(2, 2); diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureSuit.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureSuit.java index f3c9d316..b309d5a8 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureSuit.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureSuit.java @@ -10,7 +10,6 @@ */ public class ItemAdventureSuit extends ArmorAB { - public ItemAdventureSuit() { super(1, 1); diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java b/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java index 302fb623..65c3db63 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java @@ -41,7 +41,6 @@ public class ItemComponent extends ItemAB "hydroBlades", }; - public ItemComponent() { setNoRepair(); @@ -237,13 +236,6 @@ private ItemStack placeBoat(ItemStack stack, World world, EntityPlayer player, b } } - /** - * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer - * - * @param stack - * @param world - * @param player - */ @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java index e9f4c08f..fdb4326f 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java @@ -67,7 +67,7 @@ public void getSubItems(Item item, CreativeTabs tab, List list) @Override public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isCurrent) { - //TODO + } @Override @@ -338,5 +338,4 @@ public boolean isBookEnchantable(ItemStack stack, ItemStack book) { return EnchUtils.isSoulBook(book); } - } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCrossbow.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCrossbow.java index f7f79a6d..4f988e04 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCrossbow.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCrossbow.java @@ -18,7 +18,6 @@ */ public class ItemCrossbow extends ItemAB { - public ItemCrossbow() { super(); @@ -69,10 +68,6 @@ public EnumAction getItemUseAction(ItemStack p_77661_1_) /** * Called when item is crafted/smelted. Used only by maps so far. - * - * @param stack - * @param world - * @param player */ @Override public void onCreated(ItemStack stack, World world, EntityPlayer player) @@ -108,10 +103,10 @@ public void onUpdate(ItemStack stack, World world, Entity entity, int slot, bool int reloading = stack.stackTagCompound.getInteger("Reloading"); if (shot > 0) stack.stackTagCompound.setByte("Shot", (byte) (shot - 1)); if (reloading > 0) stack.stackTagCompound.setInteger("Reloading", reloading - 1); - if (entity instanceof EntityPlayer) + /*if (entity instanceof EntityPlayer) { //((EntityPlayer)entity).setItemInUse(stack,2); - } + }*/ } } @@ -127,7 +122,6 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla stack.stackTagCompound.setByte("Shot", (byte) 4); int reloadTime = 20; stack.stackTagCompound.setInteger("Reloading", reloadTime); - } return stack; } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCrossbowMagazine.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCrossbowMagazine.java index d5e58560..dad675c2 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCrossbowMagazine.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCrossbowMagazine.java @@ -7,4 +7,5 @@ */ public class ItemCrossbowMagazine { + } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemJuiceBottle.java b/src/main/java/com/darkona/adventurebackpack/item/ItemJuiceBottle.java index b648defc..fe3d95c3 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemJuiceBottle.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemJuiceBottle.java @@ -19,7 +19,6 @@ */ public class ItemJuiceBottle extends ItemAB { - public ItemJuiceBottle() { super(); diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemMachete.java b/src/main/java/com/darkona/adventurebackpack/item/ItemMachete.java index 6c10db56..27e7ffbf 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemMachete.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemMachete.java @@ -77,7 +77,6 @@ public float func_150893_a(ItemStack stack, Block block) if (stacky.getItem() == Item.getItemFromBlock(block)) return 15F; } return material == Material.plants || material == Material.vine || material == Material.coral || material == Material.gourd || material == Material.leaves || material == Material.cloth ? 12.0F : 0.5F; - } /** @@ -143,5 +142,4 @@ public boolean onBlockStartBreak(ItemStack itemstack, int x, int y, int z, Entit return new ItemStack(new ItemShears()).getItem().onBlockStartBreak(itemstack, x, y, z, player); } - } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java b/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java index 4dd685ca..389cbc54 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java @@ -14,7 +14,6 @@ */ public class ItemPistonBoots extends ArmorAB { - public ItemPistonBoots() { super(2, 3); diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemTelescope.java b/src/main/java/com/darkona/adventurebackpack/item/ItemTelescope.java index c2d8f42c..2f495ba4 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemTelescope.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemTelescope.java @@ -8,5 +8,4 @@ public class ItemTelescope extends ItemAB { //Make Telescope item doto list - } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ToolAB.java b/src/main/java/com/darkona/adventurebackpack/item/ToolAB.java index 1e57ce5c..5d9f7f3d 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ToolAB.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ToolAB.java @@ -17,8 +17,7 @@ */ public class ToolAB extends ItemTool { - - public ToolAB(ToolMaterial material, Set breakableBlocks) + ToolAB(ToolMaterial material, Set breakableBlocks) { super(1f, material, breakableBlocks); //setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); diff --git a/src/main/java/com/darkona/adventurebackpack/network/CowAbilityPacket.java b/src/main/java/com/darkona/adventurebackpack/network/CowAbilityPacket.java index 9fb2c1c9..7fa43ea9 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/CowAbilityPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/CowAbilityPacket.java @@ -22,7 +22,6 @@ */ public class CowAbilityPacket implements IMessageHandler { - public static final byte CONSUME_WHEAT = 0; @Override @@ -78,5 +77,4 @@ public void toBytes(ByteBuf buf) buf.writeByte(action); } } - } diff --git a/src/main/java/com/darkona/adventurebackpack/network/CycleToolPacket.java b/src/main/java/com/darkona/adventurebackpack/network/CycleToolPacket.java index 8c5d3639..596b555e 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/CycleToolPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/CycleToolPacket.java @@ -16,7 +16,6 @@ */ public class CycleToolPacket implements IMessageHandler { - public static final byte TOGGLE_HOSE_TANK = 0; public static final byte SWITCH_HOSE_ACTION = 1; public static final byte CYCLE_TOOL_ACTION = 2; @@ -79,5 +78,4 @@ public void toBytes(ByteBuf buf) buf.writeInt(slot); } } - } diff --git a/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java b/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java index 53348c31..b963aad1 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java @@ -18,7 +18,6 @@ */ public class EquipUnequipBackWearablePacket implements IMessageHandler { - public static final byte EQUIP_WEARABLE = 0; public static final byte UNEQUIP_WEARABLE = 1; @@ -88,11 +87,6 @@ public void fromBytes(ByteBuf buf) force = buf.readBoolean(); } - /** - * Deconstruct your message into the supplied byte buffer - * - * @param buf - */ @Override public void toBytes(ByteBuf buf) { diff --git a/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java b/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java index ad626788..1e7dadd1 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java @@ -21,8 +21,6 @@ */ public class GUIPacket implements IMessageHandler { - - public static final byte FROM_KEYBIND = 0; public static final byte FROM_HOLDING = 1; public static final byte FROM_TILE = 2; @@ -124,12 +122,12 @@ public IMessage onMessage(GUImessage message, MessageContext ctx) public static class GUImessage implements IMessage { - private byte type; private byte from; public GUImessage() { + } public GUImessage(byte type, byte from) diff --git a/src/main/java/com/darkona/adventurebackpack/network/MessageConstants.java b/src/main/java/com/darkona/adventurebackpack/network/MessageConstants.java deleted file mode 100644 index 60c049c3..00000000 --- a/src/main/java/com/darkona/adventurebackpack/network/MessageConstants.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.darkona.adventurebackpack.network; - -/** - * Created on 14/10/2014 - * - * @author Darkona - */ -public class MessageConstants -{ - -} diff --git a/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java b/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java index 75bf9fa6..554adf4e 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java @@ -48,11 +48,11 @@ public IMessage onMessage(ActionMessage message, MessageContext ctx) public static class ActionMessage implements IMessage { - private byte type; public ActionMessage() { + } public ActionMessage(byte type) diff --git a/src/main/java/com/darkona/adventurebackpack/network/SleepingBagPacket.java b/src/main/java/com/darkona/adventurebackpack/network/SleepingBagPacket.java index b40a7a3c..dc6d581b 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/SleepingBagPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/SleepingBagPacket.java @@ -15,7 +15,6 @@ */ public class SleepingBagPacket implements IMessageHandler { - @Override public IMessage onMessage(SleepingBagMessage message, MessageContext ctx) { @@ -26,16 +25,15 @@ public IMessage onMessage(SleepingBagMessage message, MessageContext ctx) return null; } - public static class SleepingBagMessage implements IMessage { - public int x; public int y; public int z; public SleepingBagMessage() { + } public SleepingBagMessage(int X, int Y, int Z) @@ -60,6 +58,5 @@ public void toBytes(ByteBuf buf) buf.writeInt(y); buf.writeInt(z); } - } } diff --git a/src/main/java/com/darkona/adventurebackpack/network/SyncPropertiesPacket.java b/src/main/java/com/darkona/adventurebackpack/network/SyncPropertiesPacket.java index b90ae324..36b74295 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/SyncPropertiesPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/SyncPropertiesPacket.java @@ -48,14 +48,13 @@ public Message onMessage(Message message, MessageContext ctx) public static class Message implements IMessage { - int ID; byte type; NBTTagCompound properties; - public Message() { + } public Message(int id, NBTTagCompound props) diff --git a/src/main/java/com/darkona/adventurebackpack/network/messages/EntityParticlePacket.java b/src/main/java/com/darkona/adventurebackpack/network/messages/EntityParticlePacket.java index daa89f40..6c24156d 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/messages/EntityParticlePacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/messages/EntityParticlePacket.java @@ -51,6 +51,7 @@ public Message(byte particleCode, Entity entity) public Message() { + } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/network/messages/EntitySoundPacket.java b/src/main/java/com/darkona/adventurebackpack/network/messages/EntitySoundPacket.java index ef6ca540..433d19bc 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/messages/EntitySoundPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/messages/EntitySoundPacket.java @@ -19,7 +19,6 @@ */ public class EntitySoundPacket implements IMessageHandler { - public static final boolean play = true; public static final byte NYAN_SOUND = 0; @@ -56,6 +55,7 @@ public Message(byte soundCode, Entity entity) public Message() { + } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java b/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java index e43369e4..a717cea0 100644 --- a/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java +++ b/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java @@ -21,15 +21,13 @@ */ public class BackpackProperty implements IExtendedEntityProperties { - - public static final String PROPERTY_NAME = "abp.property"; - protected EntityPlayer player = null; + private static final String PROPERTY_NAME = "abp.property"; + private EntityPlayer player = null; private ItemStack wearable = null; private ChunkCoordinates campFire = null; private NBTTagCompound wearableData = new NBTTagCompound(); private boolean forceCampFire = false; private int dimension = 0; - //private RenderPlayerEvent.Specials.Pre event; public NBTTagCompound getWearableData() { diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java index 434cddc8..30f51f19 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java @@ -46,7 +46,6 @@ */ public class ClientProxy implements IProxy { - public static RendererItemAdventureBackpack rendererItemAdventureBackpack; public static RendererItemAdventureHat rendererItemAdventureHat; public static RendererHose rendererHose; diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java index 688324d9..efca0e37 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java @@ -28,5 +28,4 @@ public void setPlayer(EntityPlayerMP player) { this.player = player; } - } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java index 9f032a2d..4f45de75 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java @@ -10,7 +10,6 @@ */ public interface IProxy { - void init(); void registerKeybindings(); @@ -20,5 +19,4 @@ public interface IProxy void joinPlayer(EntityPlayer player); void synchronizePlayer(int id, NBTTagCompound compound); - } diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java index 5f61fef3..55338c6c 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java @@ -23,16 +23,19 @@ public class ServerProxy implements IProxy @Override public void init() { + } @Override public void registerKeybindings() { + } @Override public void initNetwork() { + } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/reference/BackpackNames.java b/src/main/java/com/darkona/adventurebackpack/reference/BackpackNames.java index 6023c11e..0373f0a3 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/BackpackNames.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/BackpackNames.java @@ -14,7 +14,6 @@ */ public class BackpackNames { - public static String[] backpackNames = { "Standard", "Cow", @@ -97,7 +96,6 @@ public class BackpackNames public static ItemStack setBackpackColorNameFromDamage(ItemStack backpack, int damage) { - if (backpack == null) return null; if (!(backpack.getItem() instanceof ItemAdventureBackpack)) return null; NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(backpack) != null ? BackpackUtils.getBackpackTag(backpack) : new NBTTagCompound(); diff --git a/src/main/java/com/darkona/adventurebackpack/reference/Key.java b/src/main/java/com/darkona/adventurebackpack/reference/Key.java index 2491ab63..18274086 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/Key.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/Key.java @@ -7,6 +7,5 @@ */ public enum Key { - UNKNOWN, INVENTORY_KEY, TOGGLE_KEY, JUMP } diff --git a/src/main/java/com/darkona/adventurebackpack/util/ColorReplacer.java b/src/main/java/com/darkona/adventurebackpack/util/ColorReplacer.java index 8b44ab0b..d0f2cc9a 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/ColorReplacer.java +++ b/src/main/java/com/darkona/adventurebackpack/util/ColorReplacer.java @@ -11,7 +11,6 @@ public class ColorReplacer { - public static BufferedImage colorImage(int colour, BufferedImage image) { int width = image.getWidth(); diff --git a/src/main/java/com/darkona/adventurebackpack/util/EnchUtils.java b/src/main/java/com/darkona/adventurebackpack/util/EnchUtils.java index 2bf25208..87193cd0 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/EnchUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/EnchUtils.java @@ -85,5 +85,4 @@ public static boolean isSoulBook(ItemStack book) } return false; } - } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/util/FluidUtils.java b/src/main/java/com/darkona/adventurebackpack/util/FluidUtils.java index 28a50ad4..0372837f 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/FluidUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/FluidUtils.java @@ -11,7 +11,6 @@ */ public class FluidUtils { - public static boolean isContainerForFluid(ItemStack container, Fluid fluid) { if (container != null && fluid != null) diff --git a/src/main/java/com/darkona/adventurebackpack/util/LogHelper.java b/src/main/java/com/darkona/adventurebackpack/util/LogHelper.java index c37f0312..21a17ccc 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/LogHelper.java +++ b/src/main/java/com/darkona/adventurebackpack/util/LogHelper.java @@ -12,7 +12,6 @@ */ public class LogHelper { - public static void log(Level logLevel, Object object) { FMLLog.log(ModInfo.MOD_NAME, logLevel, String.valueOf(object)); diff --git a/src/main/java/com/darkona/adventurebackpack/util/Resources.java b/src/main/java/com/darkona/adventurebackpack/util/Resources.java index c7080dba..f6e2a3b0 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Resources.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Resources.java @@ -14,7 +14,6 @@ */ public class Resources { - public static final String TEXTURE_LOCATION = ModInfo.MOD_ID.toLowerCase(); public static String modelTextureResourceString(String name) diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index 8fd29c79..0efc253a 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -493,5 +493,4 @@ public static boolean isDimensionAllowed (int dimensionID) } return true; } - } From c65b1cccb1e14b7eee24713d936f95fc316f3f41 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sat, 1 Jul 2017 16:23:45 +0700 Subject: [PATCH 391/462] Attempt to fix rare NPE Added Hose tooltip --- .../client/gui/GuiAdvBackpack.java | 2 - .../client/gui/GuiOverlay.java | 69 ++++++++----------- .../handlers/TooltipEventHandler.java | 21 +++++- .../item/ItemAdventureBackpack.java | 2 +- .../item/ItemAdventureHat.java | 4 +- .../item/ItemAdventurePants.java | 4 +- .../item/ItemAdventureSuit.java | 4 +- .../item/ItemPistonBoots.java | 4 +- 8 files changed, 55 insertions(+), 55 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index 66a7a464..f818314e 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -144,7 +144,6 @@ protected void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) @Override protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { - inventory.openInventory(); lft = inventory.getLeftTank(); rgt = inventory.getRightTank(); @@ -175,7 +174,6 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) GL11.glPopMatrix(); }*/ - } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java index 2f4c3806..37c1fc9e 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java @@ -41,13 +41,11 @@ public class GuiOverlay extends Gui { private Minecraft mc; - @SuppressWarnings("FieldCanBeLocal") private int screenWidth; - @SuppressWarnings("FieldCanBeLocal") private int screenHeight; - protected static RenderItem itemRender = new RenderItem(); - protected FontRenderer fontRendererObj; - ScaledResolution resolution; + private static RenderItem itemRender = new RenderItem(); + private FontRenderer fontRendererObj; + private ScaledResolution resolution; public GuiOverlay(Minecraft mc) { @@ -77,30 +75,27 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) screenHeight = resolution.getScaledHeight(); if (ConfigHandler.statusOverlay) { - int xPos = ConfigHandler.statusOverlayIndentH; - int xStep = BUFF_ICON_SIZE + BUFF_ICON_SPACING; - if (!ConfigHandler.statusOverlayLeft) - { - xPos = screenWidth - BUFF_ICON_SIZE - ConfigHandler.statusOverlayIndentH; - xStep = -BUFF_ICON_SIZE - BUFF_ICON_SPACING; - } - int yPos = ConfigHandler.statusOverlayIndentV; - if (!ConfigHandler.statusOverlayTop) - { - yPos = screenHeight - BUFF_ICON_SIZE - ConfigHandler.statusOverlayIndentV; - } - - Collection collection = this.mc.thePlayer.getActivePotionEffects(); - if (!collection.isEmpty()) + int xStep = ConfigHandler.statusOverlayLeft + ? BUFF_ICON_SIZE + BUFF_ICON_SPACING + : - BUFF_ICON_SIZE - BUFF_ICON_SPACING; + int xPos = ConfigHandler.statusOverlayLeft + ? ConfigHandler.statusOverlayIndentH + : screenWidth - BUFF_ICON_SIZE - ConfigHandler.statusOverlayIndentH; + int yPos = ConfigHandler.statusOverlayTop + ? ConfigHandler.statusOverlayIndentV + : screenHeight - BUFF_ICON_SIZE - ConfigHandler.statusOverlayIndentV; + + Collection activePotionEffects = this.mc.thePlayer.getActivePotionEffects(); + if (!activePotionEffects.isEmpty()) { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glDisable(GL11.GL_LIGHTING); this.mc.renderEngine.bindTexture(new ResourceLocation("textures/gui/container/inventory.png")); - for (Iterator iterator = this.mc.thePlayer.getActivePotionEffects().iterator(); iterator.hasNext(); xPos += xStep) + for (Iterator activeEffect = activePotionEffects.iterator(); activeEffect.hasNext(); xPos += xStep) { - PotionEffect potioneffect = (PotionEffect) iterator.next(); - Potion potion = Potion.potionTypes[potioneffect.getPotionID()]; + PotionEffect potionEffect = (PotionEffect) activeEffect.next(); + Potion potion = Potion.potionTypes[potionEffect.getPotionID()]; if (potion.hasStatusIcon()) { @@ -127,26 +122,20 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) int textureHeight = 23; int textureWidth = 10; - int xPos = screenWidth - (textureWidth * 3) - ConfigHandler.tanksOverlayIndentH; - if (!ConfigHandler.tanksOverlayRight) - { - xPos = ConfigHandler.tanksOverlayIndentH; - } - int yPos = screenHeight - textureHeight - ConfigHandler.tanksOverlayIndentV; - if (!ConfigHandler.tanksOverlayBottom) - { - yPos = ConfigHandler.tanksOverlayIndentV; - } + int xPos = ConfigHandler.tanksOverlayRight + ? screenWidth - (textureWidth * 3) - ConfigHandler.tanksOverlayIndentH + : ConfigHandler.tanksOverlayIndentH; + int yPos = ConfigHandler.tanksOverlayBottom + ? screenHeight - textureHeight - ConfigHandler.tanksOverlayIndentV + : ConfigHandler.tanksOverlayIndentV; + int tankX = xPos; GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glDisable(GL11.GL_LIGHTING); - - int tankX = xPos; GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); for (FluidTank tank : inv.getTanksArray()) { - mc.renderEngine.bindTexture(new ResourceLocation(ModInfo.MOD_ID.toLowerCase(), "textures/gui/overlay.png")); drawTexturedModalRect(tankX, yPos, 10, 0, textureWidth, textureHeight); drawTank(tank, tankX + 1, yPos + 1, textureHeight - 2, textureWidth - 2); @@ -170,11 +159,8 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) u[1] = (tank == 1) ? 0 : 10; } mc.renderEngine.bindTexture(new ResourceLocation(ModInfo.MOD_ID.toLowerCase(), "textures/gui/overlay.png")); - - //Left Tank - drawTexturedModalRect(xStart[0], yStart[0], u[0], v[0], textureWidth, textureHeight); - //Right Tank - drawTexturedModalRect(xStart[1], yStart[0], u[1], v[1], textureWidth, textureHeight); + drawTexturedModalRect(xStart[0], yStart[0], u[0], v[0], textureWidth, textureHeight); //Left Tank + drawTexturedModalRect(xStart[1], yStart[0], u[1], v[1], textureWidth, textureHeight); //Right Tank RenderHelper.enableStandardItemLighting(); RenderHelper.enableGUIStandardItemLighting(); GL11.glPushMatrix(); @@ -187,7 +173,6 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) } GL11.glPopMatrix(); RenderHelper.disableStandardItemLighting(); - } GL11.glDisable(GL12.GL_RESCALE_NORMAL); GL11.glDisable(GL11.GL_BLEND); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java index acce0624..6e0f7493 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java @@ -21,6 +21,7 @@ import com.darkona.adventurebackpack.item.ItemAdventureBackpack; import com.darkona.adventurebackpack.item.ItemCoalJetpack; import com.darkona.adventurebackpack.item.ItemCopterPack; +import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.reference.GeneralReference; /** @@ -57,7 +58,7 @@ public void wearableTooltips(ItemTooltipEvent event) if (GuiScreen.isShiftKeyDown()) { NBTTagList itemList = backpackTag.getTagList(Constants.INVENTORY, NBT.TAG_COMPOUND); - event.toolTip.add("Slots used: " + backpackTooltip(itemList)); + event.toolTip.add("Slots used: " + inventoryTooltip(itemList)); tank.readFromNBT(backpackTag.getCompoundTag(Constants.LEFT_TANK)); event.toolTip.add("Left Tank: " + tankTooltip(tank, true)); @@ -157,6 +158,22 @@ public void wearableTooltips(ItemTooltipEvent event) event.toolTip.add("Press '" + whiteFormat(actionKey) + "' during flight to"); event.toolTip.add("switch hover mode"); } + } else if (event.itemStack.getItem() instanceof ItemHose) + { + if (GuiScreen.isCtrlKeyDown()) + { + String actionKey = GameSettings.getKeyDisplayString(Keybindings.toggleActions.getKeyCode()); + event.toolTip.add("While holding Hose:"); + event.toolTip.add("- press '" + whiteFormat(actionKey) + "' to change active tank"); + event.toolTip.add("- press Shift+'" + whiteFormat("Wheel") + "' to change mode"); + event.toolTip.add(""); + event.toolTip.add("Put Hose into bucketOut slot of wearable pack"); + event.toolTip.add("to empty corresponded tank"); + event.toolTip.add(EnumChatFormatting.RED + "WARNING! Fluid will be dumped and lost. Forever."); + } else + { + event.toolTip.add(holdThe(false)); + } } } @@ -165,7 +182,7 @@ private String holdThe(boolean button) return EnumChatFormatting.WHITE + "" + EnumChatFormatting.ITALIC + (button ? "" : ""); } - private String backpackTooltip(NBTTagList itemList) + private String inventoryTooltip(NBTTagList itemList) { int itemCount = itemList.tagCount(); boolean toolSlotU = false; diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index f252d985..72f5d34d 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -372,7 +372,7 @@ public String getItemStackDisplayName(ItemStack stack) } @Override - public boolean getIsRepairable(ItemStack p_82789_1_, ItemStack p_82789_2_) + public boolean getIsRepairable(ItemStack toRepair, ItemStack repair) { return false; } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java index 0ae432d7..d3652d28 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureHat.java @@ -29,8 +29,8 @@ public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemSta } @Override - public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) + public boolean getIsRepairable(ItemStack toRepair, ItemStack repair) { - return par2ItemStack.isItemEqual(new ItemStack(Items.leather)); + return repair.isItemEqual(new ItemStack(Items.leather)); } } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventurePants.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventurePants.java index 059dfdfb..63c066d4 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventurePants.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventurePants.java @@ -18,8 +18,8 @@ public ItemAdventurePants() } @Override - public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) + public boolean getIsRepairable(ItemStack toRepair, ItemStack repair) { - return par2ItemStack.isItemEqual(new ItemStack(Items.leather)); + return repair.isItemEqual(new ItemStack(Items.leather)); } } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureSuit.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureSuit.java index b309d5a8..9aaca149 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureSuit.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureSuit.java @@ -18,8 +18,8 @@ public ItemAdventureSuit() } @Override - public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) + public boolean getIsRepairable(ItemStack toRepair, ItemStack repair) { - return par2ItemStack.isItemEqual(new ItemStack(Items.leather)); + return repair.isItemEqual(new ItemStack(Items.leather)); } } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java b/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java index 389cbc54..7f8dfe82 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemPistonBoots.java @@ -31,8 +31,8 @@ public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) } @Override - public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) + public boolean getIsRepairable(ItemStack toRepair, ItemStack repair) { - return par2ItemStack.isItemEqual(new ItemStack(Items.leather)); + return repair.isItemEqual(new ItemStack(Items.leather)); } } From 847463dba1326bcda2c30e3c7c18919053b65122 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sun, 2 Jul 2017 16:01:48 +0700 Subject: [PATCH 392/462] Keybinds rename (this reset game keybinds to default) a bit of tooltips refactor --- .../client/gui/GuiAdvBackpack.java | 2 +- .../client/gui/GuiCoalJetpack.java | 2 +- .../client/gui/GuiCopterPack.java | 2 +- .../adventurebackpack/config/Keybindings.java | 16 +- .../handlers/KeybindHandler.java | 7 +- .../handlers/TooltipEventHandler.java | 163 ++++++++++-------- .../adventurebackpack/proxy/ClientProxy.java | 2 +- .../adventurebackpack/reference/Key.java | 2 +- .../adventurebackpack/reference/Names.java | 4 +- .../assets/adventurebackpack/lang/en_US.lang | 4 +- 10 files changed, 116 insertions(+), 88 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index f818314e..ee0341b8 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -237,7 +237,7 @@ protected void mouseClicked(int mouseX, int mouseY, int button) @Override protected void keyTyped(char key, int keycode) { - if (keycode == Keybindings.openBackpack.getKeyCode()) + if (keycode == Keybindings.openInventory.getKeyCode()) { player.closeScreen(); } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java index a495b5de..2ecb09fb 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java @@ -182,7 +182,7 @@ public float getZLevel() @Override protected void keyTyped(char key, int keycode) { - if (keycode == Keybindings.openBackpack.getKeyCode()) + if (keycode == Keybindings.openInventory.getKeyCode()) { player.closeScreen(); } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java index 1ec83817..0866f2c9 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java @@ -145,7 +145,7 @@ protected void mouseClicked(int mouseX, int mouseY, int mouseButton) @Override protected void keyTyped(char key, int keycode) { - if (keycode == Keybindings.openBackpack.getKeyCode()) + if (keycode == Keybindings.openInventory.getKeyCode()) { player.closeScreen(); } diff --git a/src/main/java/com/darkona/adventurebackpack/config/Keybindings.java b/src/main/java/com/darkona/adventurebackpack/config/Keybindings.java index b9ae0823..16c0bc62 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/Keybindings.java +++ b/src/main/java/com/darkona/adventurebackpack/config/Keybindings.java @@ -2,6 +2,7 @@ import org.lwjgl.input.Keyboard; +import net.minecraft.client.settings.GameSettings; import net.minecraft.client.settings.KeyBinding; import com.darkona.adventurebackpack.reference.Names; @@ -13,7 +14,16 @@ */ public class Keybindings { - public static KeyBinding openBackpack = new KeyBinding(Names.keys.OPEN_BACKPACK_INVENTORY, Keyboard.KEY_B, Names.keys.CATEGORY); - public static KeyBinding toggleActions = new KeyBinding(Names.keys.TOGGLE_BACKPACK_ACTIONS, Keyboard.KEY_N, Names.keys.CATEGORY); - //public static KeyBinding jumpKey = + public static KeyBinding openInventory = new KeyBinding(Names.keys.OPEN_INVENTORY, Keyboard.KEY_B, Names.keys.CATEGORY); + public static KeyBinding toggleActions = new KeyBinding(Names.keys.TOGGLE_ACTIONS, Keyboard.KEY_N, Names.keys.CATEGORY); + + public static String getInventoryKeyName() + { + return GameSettings.getKeyDisplayString(openInventory.getKeyCode()); + } + + public static String getActionKeyName() + { + return GameSettings.getKeyDisplayString(toggleActions.getKeyCode()); + } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java index 4c6e1ea3..aa99c013 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java @@ -28,15 +28,14 @@ public class KeybindHandler { private static Key getPressedKeyBinding() { - if (Keybindings.openBackpack.isPressed()) + if (Keybindings.openInventory.isPressed()) { return Key.INVENTORY_KEY; } if (Keybindings.toggleActions.isPressed()) { - return Key.TOGGLE_KEY; + return Key.ACTION_KEY; } - if (Minecraft.getMinecraft().gameSettings.keyBindJump.isPressed()) { return Key.JUMP; @@ -79,7 +78,7 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) } } - if (keypressed == Key.TOGGLE_KEY) + if (keypressed == Key.ACTION_KEY) { if (player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemHose) { diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java index 6e0f7493..c245150a 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java @@ -1,7 +1,7 @@ package com.darkona.adventurebackpack.handlers; import net.minecraft.client.gui.GuiScreen; -import net.minecraft.client.settings.GameSettings; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; @@ -34,12 +34,14 @@ public class TooltipEventHandler @SubscribeEvent @SideOnly(Side.CLIENT) @SuppressWarnings("unused") - public void wearableTooltips(ItemTooltipEvent event) + public void itemsTooltips(ItemTooltipEvent event) { if (!ConfigHandler.enableTooltips) return; - if (event.itemStack.getItem() instanceof ItemAdventureBackpack) + Item theItem = event.itemStack.getItem(); + + if (theItem instanceof ItemAdventureBackpack) { FluidTank tank = new FluidTank(Constants.BASIC_TANK_CAPACITY); NBTTagCompound compound = event.itemStack.stackTagCompound; @@ -61,25 +63,24 @@ public void wearableTooltips(ItemTooltipEvent event) event.toolTip.add("Slots used: " + inventoryTooltip(itemList)); tank.readFromNBT(backpackTag.getCompoundTag(Constants.LEFT_TANK)); - event.toolTip.add("Left Tank: " + tankTooltip(tank, true)); + event.toolTip.add("Left Tank: " + tankTooltip(tank)); tank.readFromNBT(backpackTag.getCompoundTag(Constants.RIGHT_TANK)); - event.toolTip.add("Right Tank: " + tankTooltip(tank, true)); + event.toolTip.add("Right Tank: " + tankTooltip(tank)); if (!GuiScreen.isCtrlKeyDown()) - event.toolTip.add(holdThe(false)); + event.toolTip.add(holdCtrl()); } else if (!GuiScreen.isCtrlKeyDown()) { - event.toolTip.add(holdThe(true)); + event.toolTip.add(holdShift()); } if (GuiScreen.isCtrlKeyDown()) { - String actionKey = GameSettings.getKeyDisplayString(Keybindings.toggleActions.getKeyCode()); boolean cycling = !backpackTag.getBoolean("disableCycling"); event.toolTip.add("Tool Cycling: " + switchTooltip(cycling, true)); - event.toolTip.add("Press '" + whiteFormat(actionKey) + "' while wearing"); + event.toolTip.add("Press '" + actionKeyFormat() + "' while wearing"); event.toolTip.add("backpack, for turn cycling " + switchTooltip(!cycling, false)); String color = backpackTag.getString("colorName"); @@ -89,13 +90,13 @@ public void wearableTooltips(ItemTooltipEvent event) { boolean vision = !backpackTag.getBoolean("disableNVision"); event.toolTip.add("Night Vision: " + switchTooltip(vision, true)); - event.toolTip.add("Press Shift+'" + whiteFormat(actionKey) + "' while wearing"); + event.toolTip.add("Press Shift+'" + actionKeyFormat() + "' while wearing"); event.toolTip.add("backpack, for turn nightvision " + switchTooltip(!vision, false)); } } } - } else if (event.itemStack.getItem() instanceof ItemCoalJetpack) + } else if (theItem instanceof ItemCoalJetpack) { FluidTank waterTank = new FluidTank(Constants.JETPACK_WATER_CAPACITY); FluidTank steamTank = new FluidTank(Constants.JETPACK_STEAM_CAPACITY); @@ -108,63 +109,61 @@ public void wearableTooltips(ItemTooltipEvent event) event.toolTip.add("Fuel: " + slotStackTooltip(itemList, Constants.JETPACK_FUEL_SLOT)); waterTank.readFromNBT(jetpackTag.getCompoundTag(Constants.JETPACK_WATER_TANK)); - event.toolTip.add("Left Tank: " + tankTooltip(waterTank, true)); + event.toolTip.add("Left Tank: " + tankTooltip(waterTank)); steamTank.readFromNBT(jetpackTag.getCompoundTag(Constants.JETPACK_STEAM_TANK)); - // special case for steam, have to set displayed fluid name manually + // special case for steam, have to set displayed fluid name manually, cuz technically it's water String theSteam = steamTank.getFluidAmount() > 0 ? EnumChatFormatting.AQUA + "Steam" : ""; event.toolTip.add("Right Tank: " + tankTooltip(steamTank, false) + theSteam); if (!GuiScreen.isCtrlKeyDown()) - event.toolTip.add(holdThe(false)); + event.toolTip.add(holdCtrl()); } else if (!GuiScreen.isCtrlKeyDown()) { - event.toolTip.add(holdThe(true)); + event.toolTip.add(holdShift()); } if (GuiScreen.isCtrlKeyDown()) { - String actionKey = GameSettings.getKeyDisplayString(Keybindings.toggleActions.getKeyCode()); event.toolTip.add("Maximum altitude: " + whiteFormat("185") + " meters"); - event.toolTip.add("Press Shift+'" + whiteFormat(actionKey) + "' while wearing"); + event.toolTip.add("Press Shift+'" + actionKeyFormat() + "' while wearing"); event.toolTip.add("jetpack, for turn it ON"); } - } else if (event.itemStack.getItem() instanceof ItemCopterPack) + } else if (theItem instanceof ItemCopterPack) { FluidTank fuelTank = new FluidTank(Constants.COPTER_FUEL_CAPACITY); NBTTagCompound compound = event.itemStack.stackTagCompound; if (GuiScreen.isShiftKeyDown()) { fuelTank.readFromNBT(compound.getCompoundTag(Constants.COPTER_FUEL_TANK)); - event.toolTip.add("Fuel Tank: " + tankTooltip(fuelTank, true)); + event.toolTip.add("Fuel Tank: " + tankTooltip(fuelTank)); event.toolTip.add("Fuel consumption rate: " + fuelConsumptionTooltip(fuelTank)); if (!GuiScreen.isCtrlKeyDown()) - event.toolTip.add(holdThe(false)); + event.toolTip.add(holdCtrl()); } else if (!GuiScreen.isCtrlKeyDown()) { - event.toolTip.add(holdThe(true)); + event.toolTip.add(holdShift()); } if (GuiScreen.isCtrlKeyDown()) { - String actionKey = GameSettings.getKeyDisplayString(Keybindings.toggleActions.getKeyCode()); event.toolTip.add("Maximum altitude: " + whiteFormat("250") + " meters"); - event.toolTip.add("Press Shift+'" + whiteFormat(actionKey) + "' while wearing"); + event.toolTip.add("Press Shift+'" + actionKeyFormat() + "' while wearing"); event.toolTip.add("copterpack, for turn it ON"); - event.toolTip.add("Press '" + whiteFormat(actionKey) + "' during flight to"); + event.toolTip.add("Press '" + actionKeyFormat() + "' during flight to"); event.toolTip.add("switch hover mode"); } - } else if (event.itemStack.getItem() instanceof ItemHose) + + } else if (theItem instanceof ItemHose) { if (GuiScreen.isCtrlKeyDown()) { - String actionKey = GameSettings.getKeyDisplayString(Keybindings.toggleActions.getKeyCode()); event.toolTip.add("While holding Hose:"); - event.toolTip.add("- press '" + whiteFormat(actionKey) + "' to change active tank"); + event.toolTip.add("- press '" + actionKeyFormat() + "' to change active tank"); event.toolTip.add("- press Shift+'" + whiteFormat("Wheel") + "' to change mode"); event.toolTip.add(""); event.toolTip.add("Put Hose into bucketOut slot of wearable pack"); @@ -172,14 +171,34 @@ public void wearableTooltips(ItemTooltipEvent event) event.toolTip.add(EnumChatFormatting.RED + "WARNING! Fluid will be dumped and lost. Forever."); } else { - event.toolTip.add(holdThe(false)); + event.toolTip.add(holdCtrl()); } } } + private String holdShift() + { + return holdThe(true); + } + + private String holdCtrl() + { + return holdThe(false); + } + private String holdThe(boolean button) { - return EnumChatFormatting.WHITE + "" + EnumChatFormatting.ITALIC + (button ? "" : ""); + return whiteFormat( EnumChatFormatting.ITALIC + (button ? "" : "")); + } + + private String whiteFormat(String theString) + { + return EnumChatFormatting.WHITE + theString + EnumChatFormatting.GRAY; + } + + private String actionKeyFormat() + { + return whiteFormat(Keybindings.getActionKeyName()); } private String inventoryTooltip(NBTTagList itemList) @@ -203,19 +222,24 @@ else if (slotAtI == Constants.LOWER_TOOL) private String toolSlotFormat(boolean isTool) { - return (isTool ? EnumChatFormatting.WHITE/*GREEN*/ : EnumChatFormatting.DARK_GRAY) + "[]"; + return (isTool ? EnumChatFormatting.WHITE : EnumChatFormatting.DARK_GRAY) + "[]"; } private String mainSlotsFormat(int slotsUsed) { - String sFormatted = String.valueOf(slotsUsed); + String slotsFormatted = Integer.toString(slotsUsed); if (slotsUsed == 0) - sFormatted = EnumChatFormatting.DARK_GRAY + sFormatted; + slotsFormatted = EnumChatFormatting.DARK_GRAY + slotsFormatted; else if (slotsUsed == Constants.INVENTORY_MAIN_SIZE) - sFormatted = EnumChatFormatting.WHITE + sFormatted; + slotsFormatted = EnumChatFormatting.WHITE + slotsFormatted; else - sFormatted = EnumChatFormatting.GRAY + sFormatted; - return sFormatted + "/" + Constants.INVENTORY_MAIN_SIZE; + slotsFormatted = EnumChatFormatting.GRAY + slotsFormatted; + return slotsFormatted + "/" + Constants.INVENTORY_MAIN_SIZE; + } + + private String tankTooltip(FluidTank tank) + { + return tankTooltip(tank, true); } private String tankTooltip(FluidTank tank, boolean attachName) @@ -227,34 +251,34 @@ private String tankTooltip(FluidTank tank, boolean attachName) private String fluidAmountFormat(int fluidAmount, int tankCapacity) { - String aFormatted = String.valueOf(fluidAmount); + String amountFormatted = Integer.toString(fluidAmount); if (fluidAmount == tankCapacity) - aFormatted = EnumChatFormatting.WHITE + aFormatted; + amountFormatted = EnumChatFormatting.WHITE + amountFormatted; else if (fluidAmount == 0) - aFormatted = emptyFormat(); - return aFormatted; + amountFormatted = emptyFormat(); + return amountFormatted; } private String fluidNameFormat(FluidStack fluid) { - String fUnlocalized = fluid.getUnlocalizedName().toLowerCase(); - String fLocalized = fluid.getLocalizedName(); - String nFormatted = " "; - if (fUnlocalized.contains("lava") || fUnlocalized.contains("fire")) - nFormatted += EnumChatFormatting.RED; - else if (fUnlocalized.contains("water")) - nFormatted += EnumChatFormatting.BLUE; - else if (fUnlocalized.contains("oil")) - nFormatted += EnumChatFormatting.DARK_GRAY; - else if (fUnlocalized.contains("fuel") || fUnlocalized.contains("creosote")) - nFormatted += EnumChatFormatting.YELLOW; - else if (fUnlocalized.contains("milk")) - nFormatted += EnumChatFormatting.WHITE; - else if (fUnlocalized.contains("xpjuice")) - nFormatted += EnumChatFormatting.GREEN; + String nameUnlocalized = fluid.getUnlocalizedName().toLowerCase(); + String nameLocalized = fluid.getLocalizedName(); + String nameFormatted = " "; + if (nameUnlocalized.contains("lava") || nameUnlocalized.contains("fire")) + nameFormatted += EnumChatFormatting.RED; + else if (nameUnlocalized.contains("water")) + nameFormatted += EnumChatFormatting.BLUE; + else if (nameUnlocalized.contains("oil")) + nameFormatted += EnumChatFormatting.DARK_GRAY; + else if (nameUnlocalized.contains("fuel") || nameUnlocalized.contains("creosote")) + nameFormatted += EnumChatFormatting.YELLOW; + else if (nameUnlocalized.contains("milk")) + nameFormatted += EnumChatFormatting.WHITE; + else if (nameUnlocalized.contains("xpjuice")) + nameFormatted += EnumChatFormatting.GREEN; else - nFormatted += EnumChatFormatting.GRAY; - return nFormatted + fLocalized; + nameFormatted += EnumChatFormatting.GRAY; + return nameFormatted + nameLocalized; } private String switchTooltip(boolean status, boolean doFormat) @@ -264,8 +288,8 @@ private String switchTooltip(boolean status, boolean doFormat) private String switchFormat(boolean status) { - String sFormatted = status ? EnumChatFormatting.WHITE + "ON" : EnumChatFormatting.DARK_GRAY + "OFF"; - return "[" + sFormatted + EnumChatFormatting.GRAY + "]"; + String switchFormatted = status ? EnumChatFormatting.WHITE + "ON" : EnumChatFormatting.DARK_GRAY + "OFF"; + return "[" + switchFormatted + EnumChatFormatting.GRAY + "]"; } private String slotStackTooltip(NBTTagList itemList, int slot) @@ -290,40 +314,35 @@ private String stackDataFormat(int id, int meta, int count) if (count == 0) return emptyFormat(); - String dFormatted; + String dataFormatted; try { ItemStack iStack = new ItemStack(GameData.getItemRegistry().getObjectById(id), 0, meta); - dFormatted = iStack.getDisplayName() + " (" + stackSizeFormat(iStack, count) + ")"; + dataFormatted = iStack.getDisplayName() + " (" + stackSizeFormat(iStack, count) + ")"; } catch (Exception e) { - dFormatted = EnumChatFormatting.RED + "Error"; + dataFormatted = EnumChatFormatting.RED + "Error"; //e.printStackTrace(); } - return dFormatted; + return dataFormatted; } private String stackSizeFormat(ItemStack stack, int count) { - return stack.getMaxStackSize() == count ? EnumChatFormatting.WHITE + "" + count + EnumChatFormatting.GRAY : "" + count; + return stack.getMaxStackSize() == count ? whiteFormat(Integer.toString(count)) : Integer.toString(count); } - private String fuelConsumptionTooltip(FluidTank fTank) + private String fuelConsumptionTooltip(FluidTank tank) { - if (fTank.getFluidAmount() > 0 && GeneralReference.isValidFuel(fTank.getFluid().getFluid())) + if (tank.getFluidAmount() > 0 && GeneralReference.isValidFuel(tank.getFluid().getFluid())) { - return String.format("x%.2f", GeneralReference.liquidFuels.get(fTank.getFluid().getFluid().getName())); + return String.format("x%.2f", GeneralReference.liquidFuels.get(tank.getFluid().getFluid().getName())); } return EnumChatFormatting.DARK_GRAY + "-"; } - private String whiteFormat(String theString) - { - return EnumChatFormatting.WHITE + theString + EnumChatFormatting.GRAY; - } - private String emptyFormat() { - return String.format("%s%sEmpty", EnumChatFormatting.DARK_GRAY, EnumChatFormatting.ITALIC); + return EnumChatFormatting.DARK_GRAY.toString() + EnumChatFormatting.ITALIC + "Empty"; } } diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java index 30f51f19..6500c9d7 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java @@ -125,7 +125,7 @@ public void initRenderers() @Override public void registerKeybindings() { - ClientRegistry.registerKeyBinding(Keybindings.openBackpack); + ClientRegistry.registerKeyBinding(Keybindings.openInventory); ClientRegistry.registerKeyBinding(Keybindings.toggleActions); FMLCommonHandler.instance().bus().register(new KeybindHandler()); } diff --git a/src/main/java/com/darkona/adventurebackpack/reference/Key.java b/src/main/java/com/darkona/adventurebackpack/reference/Key.java index 18274086..4066ecf2 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/Key.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/Key.java @@ -7,5 +7,5 @@ */ public enum Key { - UNKNOWN, INVENTORY_KEY, TOGGLE_KEY, JUMP + UNKNOWN, INVENTORY_KEY, ACTION_KEY, JUMP } diff --git a/src/main/java/com/darkona/adventurebackpack/reference/Names.java b/src/main/java/com/darkona/adventurebackpack/reference/Names.java index 958da517..65aba7c6 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/Names.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/Names.java @@ -10,7 +10,7 @@ public final class Names public static final class keys { public static final String CATEGORY = "keys.adventureBackpack.category"; - public static String OPEN_BACKPACK_INVENTORY = "keys.adventureBackpack.openBackpackInventory"; - public static String TOGGLE_BACKPACK_ACTIONS = "keys.adventureBackpack.switchHoseTank"; + public static String OPEN_INVENTORY = "keys.adventureBackpack.openInventory"; + public static String TOGGLE_ACTIONS = "keys.adventureBackpack.toggleActions"; } } diff --git a/src/main/resources/assets/adventurebackpack/lang/en_US.lang b/src/main/resources/assets/adventurebackpack/lang/en_US.lang index ab6bff24..eaffe005 100644 --- a/src/main/resources/assets/adventurebackpack/lang/en_US.lang +++ b/src/main/resources/assets/adventurebackpack/lang/en_US.lang @@ -55,8 +55,8 @@ itemGroup.adventurebackpack=Adventure Backpack Mod ## Keybindings keys.adventureBackpack.category=Adventure Backpack -keys.adventureBackpack.openBackpackInventory=Open AdventureBackpack -keys.adventureBackpack.switchHoseTank=Toggle Actions +keys.adventureBackpack.openInventory=Open Inventory +keys.adventureBackpack.toggleActions=Toggle Actions ## Fluids fluid.melonJuice=Melon Juice From 2f1f83812f1abffa84a91a40b85db835d7d7ff26 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 5 Jul 2017 06:36:36 +0700 Subject: [PATCH 393/462] More nullchecks for nullcheck god Another code cleanup --- .../block/TileAdventureBackpack.java | 17 ---- .../client/gui/GuiOverlay.java | 2 +- .../common/BackpackAbilities.java | 4 +- .../common/ServerActions.java | 18 ++-- .../handlers/ClientEventHandler.java | 4 +- .../handlers/GeneralEventHandler.java | 12 ++- .../handlers/KeybindHandler.java | 78 ++++++++++------ .../handlers/TooltipEventHandler.java | 5 +- .../IInventoryAdventureBackpack.java | 4 - .../inventory/InventoryActions.java | 21 ++--- .../inventory/InventoryBackpack.java | 14 --- .../network/CycleToolPacket.java | 7 +- .../network/PlayerActionPacket.java | 4 +- .../network/SyncPropertiesPacket.java | 2 - .../network/WearableModePacket.java | 8 +- .../playerProperties/BackpackProperty.java | 1 - .../adventurebackpack/util/FluidUtils.java | 8 +- .../darkona/adventurebackpack/util/Utils.java | 28 ------ .../adventurebackpack/util/Wearing.java | 90 ++++++++++--------- 19 files changed, 146 insertions(+), 181 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 6e331805..a4e39286 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -517,23 +517,6 @@ public void updateEntity() } } - @Override - public void saveTanks(NBTTagCompound compound) - { - NBTTagCompound backpackTag = compound.getCompoundTag(COMPOUND_TAG); - backpackTag.setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); - backpackTag.setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); - compound.setTag(COMPOUND_TAG, backpackTag); - } - - @Override - public void loadTanks(NBTTagCompound compound) - { - NBTTagCompound backpackTag = compound.getCompoundTag(COMPOUND_TAG); - leftTank.readFromNBT(backpackTag.getCompoundTag(LEFT_TANK)); - rightTank.readFromNBT(backpackTag.getCompoundTag(RIGHT_TANK)); - } - @Override public TileAdventureBackpack getTile() { diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java index 37c1fc9e..1a2150bf 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java @@ -149,7 +149,7 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) int[] xStart = {xPos, xPos + textureWidth + 1}; int[] yStart = {yPos, yPos}; short tank = -1; - if (player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemHose) + if (Wearing.isHoldingHose(player)) { tank = (short) (ItemHose.getHoseTank(player.getHeldItem())); } diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java index 38139a0d..b8614eae 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java @@ -200,10 +200,10 @@ public void itemBat(EntityPlayer player, World world, ItemStack backpack) { nightVision = player.getActivePotionEffect(Potion.nightVision); } - if ((nightVision == null || nightVision.getDuration() < 222) && !Wearing.getBackpackInv(player, true).getDisableNVision()) + if ((nightVision == null || nightVision.getDuration() < 222) && !Wearing.getWearingBackpackInv(player).getDisableNVision()) { player.addPotionEffect(new PotionEffect(Potion.nightVision.id, 239, -1, true)); - } else if (nightVision != null && Wearing.getBackpackInv(player, true).getDisableNVision()) + } else if (nightVision != null && Wearing.getWearingBackpackInv(player).getDisableNVision()) { backpackRemovals.itemBat(player, world, backpack); } diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index 20ca4ef5..596953ac 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -63,7 +63,7 @@ public static void cycleTool(EntityPlayer player, int direction, int slot) try { - InventoryBackpack backpack = Wearing.getBackpackInv(player, true); + InventoryBackpack backpack = Wearing.getWearingBackpackInv(player); ItemStack current = player.getCurrentEquippedItem(); backpack.openInventory(); if (SlotTool.isValidTool(current)) @@ -113,15 +113,14 @@ public static boolean setFluidEffect(World world, EntityPlayer player, FluidTank * @param direction The direction in which the hose modes will switch. * @param action The type of the action to be performed on the hose. * Can be HOSE_SWITCH for mode or HOSE_TOGGLE for tank - * @param slot The slot in which the hose gleefully frolicks in the inventory. */ - public static void switchHose(EntityPlayer player, boolean action, int direction, int slot) + public static void switchHose(EntityPlayer player, int direction, boolean action) { - - ItemStack hose = player.inventory.mainInventory[slot]; - if (hose != null && hose.getItem() instanceof ItemHose) + if (Wearing.isHoldingHose(player)) { + ItemStack hose = player.inventory.getCurrentItem(); NBTTagCompound tag = hose.hasTagCompound() ? hose.stackTagCompound : new NBTTagCompound(); + if (!action) { int mode = ItemHose.getHoseMode(hose); @@ -144,6 +143,7 @@ public static void switchHose(EntityPlayer player, boolean action, int direction tank = (tank + 1) % 2; tag.setInteger("tank", tank); } + hose.setTagCompound(tag); } } @@ -406,7 +406,7 @@ public static void toggleCopterPack(EntityPlayer player, ItemStack copter, byte } } - public static void toggleToolCycling(EntityPlayer player, ItemStack backpack, byte on_off) + public static void toggleToolCycling(EntityPlayer player, ItemStack backpack) { InventoryBackpack inv = new InventoryBackpack(backpack); if (ConfigHandler.enableToolsCycling) @@ -431,7 +431,7 @@ public static void toggleToolCycling(EntityPlayer player, ItemStack backpack, by } } - public static void toggleNightVision(EntityPlayer player, ItemStack backpack, byte on_off) + public static void toggleNightVision(EntityPlayer player, ItemStack backpack) { InventoryBackpack inv = new InventoryBackpack(backpack); if (inv.getDisableNVision()) @@ -455,7 +455,7 @@ public static void toggleNightVision(EntityPlayer player, ItemStack backpack, by } } - public static void toggleCoalJetpack(EntityPlayer player, ItemStack jetpack, byte on_off) + public static void toggleCoalJetpack(EntityPlayer player, ItemStack jetpack) { InventoryCoalJetpack inv = new InventoryCoalJetpack(jetpack); if (inv.getStatus()) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java index 8d223d50..86108954 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java @@ -49,7 +49,7 @@ public void mouseWheelDetect(MouseEvent event) ItemStack heldItem = player.inventory.getStackInSlot(slot); Item theItem = heldItem.getItem(); - if ((ConfigHandler.enableToolsCycling && !Wearing.getBackpackInv(player, true).getDisableCycling() && SlotTool.isValidTool(heldItem)) + if ((ConfigHandler.enableToolsCycling && !Wearing.getWearingBackpackInv(player).getDisableCycling() && SlotTool.isValidTool(heldItem)) || (BackpackNames.getBackpackColorName(backpack).equals("Skeleton") && theItem.equals(Items.bow))) { ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(dWheel, slot, CycleToolPacket.CYCLE_TOOL_ACTION)); @@ -60,7 +60,7 @@ public void mouseWheelDetect(MouseEvent event) if (theItem instanceof ItemHose) { ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(dWheel, slot, CycleToolPacket.SWITCH_HOSE_ACTION)); - ServerActions.switchHose(player, ServerActions.HOSE_SWITCH, dWheel, slot); + ServerActions.switchHose(player, dWheel, ServerActions.HOSE_SWITCH); event.setCanceled(true); } } diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java index f63d00a2..5183da81 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java @@ -39,6 +39,7 @@ public class GeneralEventHandler public void eatGoldenApple(PlayerUseItemEvent.Finish event) { EntityPlayer player = event.entityPlayer; + if (ConfigHandler.backpackAbilities) { if (event.item.getItem() instanceof ItemAppleGold @@ -70,7 +71,9 @@ public void eatGoldenApple(PlayerUseItemEvent.Finish event) @SubscribeEvent public void detectBow(ArrowNockEvent event) { - if (!ConfigHandler.backpackAbilities) return; + if (!ConfigHandler.backpackAbilities) + return; + if (Wearing.isWearingTheRightBackpack(event.entityPlayer, "Skeleton")) { InventoryBackpack backpack = new InventoryBackpack(Wearing.getWearingBackpack(event.entityPlayer)); @@ -85,7 +88,9 @@ public void detectBow(ArrowNockEvent event) @SubscribeEvent public void detectArrow(ArrowLooseEvent event) { - if (!ConfigHandler.backpackAbilities) return; + if (!ConfigHandler.backpackAbilities) + return; + if (Wearing.isWearingTheRightBackpack(event.entityPlayer, "Skeleton")) { InventoryBackpack backpack = new InventoryBackpack(Wearing.getWearingBackpack(event.entityPlayer)); @@ -112,7 +117,6 @@ public void makeHorsesFollowOwner(EntityJoinWorldEvent event) if (!ConfigHandler.backpackAbilities) return; if (event.entity instanceof EntityHorse) { - EntityHorse horse = ((EntityHorse) event.entity); if (!horse.isDead && horse.isTame() && horse.hasCustomNameTag()) { @@ -150,7 +154,7 @@ public void backpackUnequipped(WearableEvent.UnequipWearableEvent event) }*/ - /* @SubscribeEvent + /*@SubscribeEvent public void listFluids(FluidRegistry.FluidRegisterEvent event) { LogHelper.info("Registered fluid " + event.fluidName + " with id " + event.fluidID); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java index aa99c013..7707813c 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java @@ -10,8 +10,6 @@ import com.darkona.adventurebackpack.config.Keybindings; import com.darkona.adventurebackpack.entity.EntityFriendlySpider; import com.darkona.adventurebackpack.init.ModNetwork; -import com.darkona.adventurebackpack.item.ItemAdventureBackpack; -import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.network.CycleToolPacket; import com.darkona.adventurebackpack.network.GUIPacket; import com.darkona.adventurebackpack.network.PlayerActionPacket; @@ -46,71 +44,72 @@ private static Key getPressedKeyBinding() @SubscribeEvent public void handleKeyInputEvent(InputEvent.KeyInputEvent event) { - Key keypressed = getPressedKeyBinding(); + Key pressedKey = getPressedKeyBinding(); Minecraft mc = Minecraft.getMinecraft(); EntityPlayer player = mc.thePlayer; if (player != null) { - if (keypressed == Key.INVENTORY_KEY && mc.inGameHasFocus) + if (pressedKey == Key.INVENTORY_KEY && mc.inGameHasFocus) { - if (player.isSneaking() && (player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemAdventureBackpack)) + sendSyncPropertiesPacket(); + + if (player.isSneaking() && Wearing.isHoldingBackpack(player)) { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); + sendGUIPacket(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING); } else { - ModNetwork.net.sendToServer(new SyncPropertiesPacket.Message()); if (Wearing.isWearingBackpack(player)) { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_KEYBIND)); - } else if ((player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemAdventureBackpack)) + sendGUIPacket(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_KEYBIND); + } else if (Wearing.isHoldingBackpack(player)) { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING)); + sendGUIPacket(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING); } if (Wearing.isWearingCopter(player)) { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.COPTER_GUI, GUIPacket.FROM_KEYBIND)); + sendGUIPacket(GUIPacket.COPTER_GUI, GUIPacket.FROM_KEYBIND); } if (Wearing.isWearingJetpack(player)) { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(GUIPacket.JETPACK_GUI, GUIPacket.FROM_KEYBIND)); + sendGUIPacket(GUIPacket.JETPACK_GUI, GUIPacket.FROM_KEYBIND); } } } - if (keypressed == Key.ACTION_KEY) + if (pressedKey == Key.ACTION_KEY) { - if (player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemHose) + if (Wearing.isHoldingHose(player)) { - ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(0, (player).inventory.currentItem, CycleToolPacket.TOGGLE_HOSE_TANK)); - ServerActions.switchHose(player, ServerActions.HOSE_TOGGLE, 0, (player).inventory.currentItem); + sendCycleToolPacket(0, (player).inventory.currentItem, CycleToolPacket.TOGGLE_HOSE_TANK); + ServerActions.switchHose(player, 0, ServerActions.HOSE_TOGGLE); } else if (Wearing.isWearingBackpack(player)) { if (player.isSneaking()) { for (String valid : Constants.NIGHTVISION_BACKPACKS) { - if (Wearing.getBackpackInv(player, true).getColorName().equals(valid)) + if (Wearing.getWearingBackpackInv(player).getColorName().equals(valid)) { - ModNetwork.net.sendToServer(new WearableModePacket.Message(WearableModePacket.NIGHTVISION_ON_OFF, "")); - ServerActions.toggleNightVision(player, Wearing.getWearingBackpack(player), WearableModePacket.NIGHTVISION_ON_OFF); + sendWearableModePacket(WearableModePacket.NIGHTVISION_ON_OFF); + ServerActions.toggleNightVision(player, Wearing.getWearingBackpack(player)); } } } else { - ModNetwork.net.sendToServer(new WearableModePacket.Message(WearableModePacket.CYCLING_ON_OFF, "")); - ServerActions.toggleToolCycling(player, Wearing.getWearingBackpack(player), WearableModePacket.CYCLING_ON_OFF); + sendWearableModePacket(WearableModePacket.CYCLING_ON_OFF); + ServerActions.toggleToolCycling(player, Wearing.getWearingBackpack(player)); } } if (Wearing.isWearingCopter(player)) { if (!player.isSneaking()) { - ModNetwork.net.sendToServer(new WearableModePacket.Message(WearableModePacket.COPTER_TOGGLE, "")); + sendWearableModePacket(WearableModePacket.COPTER_TOGGLE); ServerActions.toggleCopterPack(player, Wearing.getWearingCopter(player), WearableModePacket.COPTER_TOGGLE); } else { - ModNetwork.net.sendToServer(new WearableModePacket.Message(WearableModePacket.COPTER_ON_OFF, "")); + sendWearableModePacket(WearableModePacket.COPTER_ON_OFF); ServerActions.toggleCopterPack(player, Wearing.getWearingCopter(player), WearableModePacket.COPTER_ON_OFF); } } @@ -118,20 +117,45 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) { if (player.isSneaking()) { - ModNetwork.net.sendToServer(new WearableModePacket.Message(WearableModePacket.JETPACK_ON_OFF, "")); - ServerActions.toggleCoalJetpack(player, Wearing.getWearingJetpack(player), WearableModePacket.JETPACK_ON_OFF); + sendWearableModePacket(WearableModePacket.JETPACK_ON_OFF); + ServerActions.toggleCoalJetpack(player, Wearing.getWearingJetpack(player)); } } } - if (keypressed == Key.JUMP) + if (pressedKey == Key.JUMP) { if (player.ridingEntity != null && player.ridingEntity instanceof EntityFriendlySpider) { - ModNetwork.net.sendToServer(new PlayerActionPacket.ActionMessage(PlayerActionPacket.spiderJump)); + sendPlayerActionPacket(PlayerActionPacket.SPIDER_JUMP); ((EntityFriendlySpider) player.ridingEntity).setJumping(true); } } } } + + private void sendSyncPropertiesPacket() + { + ModNetwork.net.sendToServer(new SyncPropertiesPacket.Message()); + } + + private void sendGUIPacket(byte type, byte from) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(type, from)); + } + + private void sendWearableModePacket(byte type) + { + ModNetwork.net.sendToServer(new WearableModePacket.Message(type, "")); //TODO playerID? + } + + private void sendCycleToolPacket(int direction, int slot, byte type) + { + ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(direction, slot, type)); + } + + private void sendPlayerActionPacket(byte type) + { + ModNetwork.net.sendToServer(new PlayerActionPacket.ActionMessage(type)); + } } diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java index c245150a..97b7f930 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java @@ -188,7 +188,7 @@ private String holdCtrl() private String holdThe(boolean button) { - return whiteFormat( EnumChatFormatting.ITALIC + (button ? "" : "")); + return whiteFormat(EnumChatFormatting.ITALIC + (button ? "" : "")); } private String whiteFormat(String theString) @@ -262,7 +262,6 @@ else if (fluidAmount == 0) private String fluidNameFormat(FluidStack fluid) { String nameUnlocalized = fluid.getUnlocalizedName().toLowerCase(); - String nameLocalized = fluid.getLocalizedName(); String nameFormatted = " "; if (nameUnlocalized.contains("lava") || nameUnlocalized.contains("fire")) nameFormatted += EnumChatFormatting.RED; @@ -278,7 +277,7 @@ else if (nameUnlocalized.contains("xpjuice")) nameFormatted += EnumChatFormatting.GREEN; else nameFormatted += EnumChatFormatting.GRAY; - return nameFormatted + nameLocalized; + return nameFormatted + fluid.getLocalizedName(); } private String switchTooltip(boolean status, boolean doFormat) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java index 92c4ab3a..c0c6ec7b 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java @@ -32,10 +32,6 @@ public interface IInventoryAdventureBackpack extends IInventoryTanks boolean isSpecial(); - void saveTanks(NBTTagCompound compound); - - void loadTanks(NBTTagCompound compound); - boolean hasItem(Item item); void consumeInventoryItem(Item item); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java index 171688f9..3dea4eb9 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java @@ -41,7 +41,7 @@ public static boolean transferContainerTank(IInventoryTanks inventory, FluidTank { if (tank.getFluidAmount() > 0) { - tank.drain(tank.getFluidAmount(), true); // hose in the bucketOut slot will empty the tank + tank.drain(tank.getFluidAmount(), true); //Hose in the bucketOut slot will empty the tank return true; } //return false; @@ -53,15 +53,13 @@ public static boolean transferContainerTank(IInventoryTanks inventory, FluidTank //CONTAINER ===========> TANK if (FluidContainerRegistry.isFilledContainer(stackIn)) { - //See if the tank can accept moar fluid. - int fill = tank.fill(FluidContainerRegistry.getFluidForFilledItem(stackIn), false); + int fill = tank.fill(FluidContainerRegistry.getFluidForFilledItem(stackIn), false); //See if the tank can accept moar fluid if (fill > 0) //If can accept the fluid { if (FluidContainerRegistry.getContainerCapacity(stackIn) + tank.getFluidAmount() <= tank.getCapacity()) { - //Get the empty container for the input, if there's any. - ItemStack stackOut = FluidContainerRegistry.drainFluidContainer(stackIn); + ItemStack stackOut = FluidContainerRegistry.drainFluidContainer(stackIn); //Get the empty container for the input, if there's any if (inventory.getStackInSlot(slotOut) == null || stackOut == null) { @@ -86,18 +84,15 @@ public static boolean transferContainerTank(IInventoryTanks inventory, FluidTank } //TANK =====> CONTAINER - else if (tank.getFluid() != null && tank.getFluidAmount() > 0 && FluidUtils.isEmptyContainerForFluid(stackIn, tank.getFluid().getFluid())) { - //How much fluid can this container hold. - int amount = FluidContainerRegistry.getContainerCapacity(tank.getFluid(), stackIn); - //Let's see how much can we drain this tank - FluidStack drain = tank.drain(amount, false); - - ItemStack stackOut = FluidContainerRegistry.fillFluidContainer(drain, stackIn); + int amount = FluidContainerRegistry.getContainerCapacity(tank.getFluid(), stackIn); //How much fluid can this container hold + FluidStack drain = tank.drain(amount, false); //Let's see how much can we drain this tank - if (drain.amount == amount) + if (amount > 0 && drain.amount == amount) { + ItemStack stackOut = FluidContainerRegistry.fillFluidContainer(drain, stackIn); + if (inventory.getStackInSlot(slotOut) == null || stackOut == null) { tank.drain(amount, true); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index 73584314..3a03d42b 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -110,20 +110,6 @@ public boolean isSpecial() return special; } - @Override - public void saveTanks(NBTTagCompound compound) - { - compound.setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); - compound.setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); - } - - @Override - public void loadTanks(NBTTagCompound compound) - { - leftTank.readFromNBT(compound.getCompoundTag(LEFT_TANK)); - rightTank.readFromNBT(compound.getCompoundTag(RIGHT_TANK)); - } - @Override public boolean hasItem(Item item) { diff --git a/src/main/java/com/darkona/adventurebackpack/network/CycleToolPacket.java b/src/main/java/com/darkona/adventurebackpack/network/CycleToolPacket.java index 596b555e..b9b7ce5f 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/CycleToolPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/CycleToolPacket.java @@ -33,10 +33,10 @@ public IMessage onMessage(CycleToolMessage message, MessageContext ctx) ServerActions.cycleTool(player, message.directionOfCycle, message.slot); break; case TOGGLE_HOSE_TANK: - ServerActions.switchHose(player, ServerActions.HOSE_TOGGLE, message.directionOfCycle, message.slot); + ServerActions.switchHose(player, message.directionOfCycle, ServerActions.HOSE_TOGGLE); break; case SWITCH_HOSE_ACTION: - ServerActions.switchHose(player, ServerActions.HOSE_SWITCH, message.directionOfCycle, message.slot); + ServerActions.switchHose(player, message.directionOfCycle, ServerActions.HOSE_SWITCH); break; } } @@ -45,13 +45,13 @@ public IMessage onMessage(CycleToolMessage message, MessageContext ctx) public static class CycleToolMessage implements IMessage { - private int directionOfCycle; private int slot; private byte typeOfAction; public CycleToolMessage() { + } public CycleToolMessage(int directionOfCycle, int slot, byte typeOfAction) @@ -59,7 +59,6 @@ public CycleToolMessage(int directionOfCycle, int slot, byte typeOfAction) this.typeOfAction = typeOfAction; this.directionOfCycle = directionOfCycle; this.slot = slot; - } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java b/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java index 554adf4e..efa9b16f 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java @@ -15,7 +15,7 @@ */ public class PlayerActionPacket implements IMessageHandler { - public static final byte spiderJump = 0; + public static final byte SPIDER_JUMP = 0; public static final byte JETPACK_IN_USE = 1; public static final byte JETPACK_NOT_IN_USE = 2; @@ -24,7 +24,7 @@ public IMessage onMessage(ActionMessage message, MessageContext ctx) { if (ctx.side.isServer()) { - if (message.type == spiderJump) + if (message.type == SPIDER_JUMP) { if (ctx.getServerHandler().playerEntity.ridingEntity != null && ctx.getServerHandler().playerEntity.ridingEntity instanceof EntityFriendlySpider) { diff --git a/src/main/java/com/darkona/adventurebackpack/network/SyncPropertiesPacket.java b/src/main/java/com/darkona/adventurebackpack/network/SyncPropertiesPacket.java index 36b74295..a14e05b4 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/SyncPropertiesPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/SyncPropertiesPacket.java @@ -28,7 +28,6 @@ public class SyncPropertiesPacket implements IMessageHandler Date: Fri, 7 Jul 2017 00:33:25 +0700 Subject: [PATCH 394/462] Refactoring continues --- .../adventurebackpack/AdventureBackpack.java | 56 ++---- .../client/audio/BoilingBoilerSound.java | 10 +- .../client/audio/CopterPackSound.java | 9 +- .../client/audio/JetpackSoundOn.java | 9 +- .../client/audio/LeakingBoilerSound.java | 9 +- .../client/gui/GuiAdvBackpack.java | 6 +- .../client/gui/GuiOverlay.java | 2 +- .../RendererAdventureBackpackBlock.java | 4 +- .../render/RendererItemAdventureBackpack.java | 4 +- .../common/ServerActions.java | 1 - .../adventurebackpack/config/Keybindings.java | 10 +- .../handlers/KeybindHandler.java | 27 ++- .../adventurebackpack/init/ModDates.java | 123 ++++++++++++ .../adventurebackpack/init/ModItems.java | 1 + .../adventurebackpack/init/ModRecipes.java | 184 +++++++++--------- .../inventory/SlotFluidWater.java | 1 + .../item/ItemAdventureBackpack.java | 6 +- .../adventurebackpack/proxy/ClientProxy.java | 7 +- .../adventurebackpack/reference/Key.java | 11 -- .../adventurebackpack/reference/Names.java | 16 -- .../darkona/adventurebackpack/util/Utils.java | 171 ++-------------- .../adventurebackpack/util/Wearing.java | 72 +++---- 22 files changed, 341 insertions(+), 398 deletions(-) create mode 100644 src/main/java/com/darkona/adventurebackpack/init/ModDates.java delete mode 100644 src/main/java/com/darkona/adventurebackpack/reference/Key.java delete mode 100644 src/main/java/com/darkona/adventurebackpack/reference/Names.java diff --git a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java index 76cfc963..f0d3023b 100644 --- a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java @@ -21,6 +21,7 @@ import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.init.ModEntities; import com.darkona.adventurebackpack.init.ModFluids; +import com.darkona.adventurebackpack.init.ModDates; import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.init.ModRecipes; @@ -28,7 +29,6 @@ import com.darkona.adventurebackpack.proxy.IProxy; import com.darkona.adventurebackpack.reference.ModInfo; import com.darkona.adventurebackpack.util.LogHelper; -import com.darkona.adventurebackpack.util.Utils; /** * Created on 10/10/2014 @@ -44,32 +44,15 @@ public class AdventureBackpack @Mod.Instance(ModInfo.MOD_ID) public static AdventureBackpack instance; - //Static things - public static CreativeTabAB creativeTab = new CreativeTabAB(); - - //public boolean chineseNewYear; - //public boolean hannukah; - public String Holiday; - PlayerEventHandler playerEventHandler; - ClientEventHandler clientEventHandler; - GeneralEventHandler generalEventHandler; - TooltipEventHandler tooltipEventHandler; - - GuiHandler guiHandler; - @Mod.EventHandler public void preInit(FMLPreInitializationEvent event) { - //int year = Calendar.getInstance().get(Calendar.YEAR), month = Calendar.getInstance().get(Calendar.MONTH) + 1, day = Calendar.getInstance().get(Calendar.DAY_OF_MONTH); - //Configuration FMLCommonHandler.instance().bus().register(new ConfigHandler()); ConfigHandler.init(event.getSuggestedConfigurationFile()); - //chineseNewYear = ChineseCalendar.isChineseNewYear(year, month, day); - //hannukah = JewishCalendar.isHannukah(year, month, day); - Holiday = Utils.getHoliday(); //ModStuff + ModDates.init(); ModItems.init(); ModBlocks.init(); ModFluids.init(); @@ -78,18 +61,13 @@ public void preInit(FMLPreInitializationEvent event) ModNetwork.init(); proxy.initNetwork(); - //EVENTS - playerEventHandler = new PlayerEventHandler(); - generalEventHandler = new GeneralEventHandler(); - clientEventHandler = new ClientEventHandler(); - tooltipEventHandler = new TooltipEventHandler(); + //Events + MinecraftForge.EVENT_BUS.register(new GeneralEventHandler()); + MinecraftForge.EVENT_BUS.register(new ClientEventHandler()); + MinecraftForge.EVENT_BUS.register(new TooltipEventHandler()); + MinecraftForge.EVENT_BUS.register(new PlayerEventHandler()); - MinecraftForge.EVENT_BUS.register(generalEventHandler); - MinecraftForge.EVENT_BUS.register(clientEventHandler); - MinecraftForge.EVENT_BUS.register(playerEventHandler); - MinecraftForge.EVENT_BUS.register(tooltipEventHandler); - - FMLCommonHandler.instance().bus().register(playerEventHandler); + FMLCommonHandler.instance().bus().register(new PlayerEventHandler()); } @Mod.EventHandler @@ -100,8 +78,7 @@ public void init(FMLInitializationEvent event) ModWorldGen.init(); //GUIs - guiHandler = new GuiHandler(); - NetworkRegistry.INSTANCE.registerGuiHandler(instance, guiHandler); + NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandler()); } @Mod.EventHandler @@ -122,10 +99,9 @@ public void postInit(FMLPostInitializationEvent event) //ConditionalFluidEffect.init(); //ModItems.conditionalInit(); - ModRecipes.conditionalInit(); + //ModRecipes.conditionalInit(); - /* - LogHelper.info("DUMPING FLUID INFORMATION"); + /*LogHelper.info("DUMPING FLUID INFORMATION"); LogHelper.info("-------------------------------------------------------------------------"); for(Fluid fluid : FluidRegistry.getRegisteredFluids().values()) { @@ -134,16 +110,14 @@ public void postInit(FMLPostInitializationEvent event) LogHelper.info("Name: " + fluid.getName()); LogHelper.info(""); } - LogHelper.info("-------------------------------------------------------------------------"); - */ - /* - LogHelper.info("DUMPING TILE INFORMATION"); + LogHelper.info("-------------------------------------------------------------------------");*/ + + /*LogHelper.info("DUMPING TILE INFORMATION"); LogHelper.info("-------------------------------------------------------------------------"); for (Block block : GameData.getBlockRegistry().typeSafeIterable()) { LogHelper.info("Block= " + block.getUnlocalizedName()); } - LogHelper.info("-------------------------------------------------------------------------"); - */ + LogHelper.info("-------------------------------------------------------------------------");*/ } } diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java index 82aa6b6f..5f6bc8f1 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java @@ -15,11 +15,10 @@ */ public class BoilingBoilerSound extends MovingSound { - public EntityPlayer thePlayer; - protected boolean repeat = true; - protected int repeatDelay = 0; - - protected float pitch; + private EntityPlayer thePlayer; + private boolean repeat = true; + private int repeatDelay = 0; + private float pitch; public BoilingBoilerSound(EntityPlayer player) { @@ -55,7 +54,6 @@ public boolean isDonePlaying() @Override public void update() { - if (thePlayer == null || thePlayer.isDead || thePlayer.worldObj == null || !Wearing.isWearingJetpack(thePlayer)) { setDonePlaying(); diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java index 63a3533a..a022d24b 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java @@ -17,11 +17,10 @@ */ public class CopterPackSound extends MovingSound { - public EntityPlayer thePlayer; - protected boolean repeat = true; - protected int repeatDelay = 0; - - protected float pitch; + private EntityPlayer thePlayer; + private boolean repeat = true; + private int repeatDelay = 0; + private float pitch; public CopterPackSound(EntityPlayer player) { diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java b/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java index 07056a13..4ae82550 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java @@ -15,11 +15,10 @@ */ public class JetpackSoundOn extends MovingSound { - public EntityPlayer thePlayer; - protected boolean repeat = true; - protected int repeatDelay = 0; - - protected float pitch; + private EntityPlayer thePlayer; + private boolean repeat = true; + private int repeatDelay = 0; + private float pitch; public JetpackSoundOn(EntityPlayer player) { diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java index 65fb944b..185e9deb 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java @@ -15,11 +15,10 @@ */ public class LeakingBoilerSound extends MovingSound { - public EntityPlayer thePlayer; - protected boolean repeat = true; - protected int repeatDelay = 0; - - protected float pitch; + private EntityPlayer thePlayer; + private boolean repeat = true; + private int repeatDelay = 0; + private float pitch; public LeakingBoilerSound(EntityPlayer player) { diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index ee0341b8..e1e5cf17 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -40,12 +40,10 @@ public class GuiAdvBackpack extends GuiWithTanks private static GuiImageButtonNormal unequipButton = new GuiImageButtonNormal(5, 91, 18, 18); private static GuiTank tankLeft = new GuiTank(25, 7, 100, 16, ConfigHandler.typeTankRender); private static GuiTank tankRight = new GuiTank(207, 7, 100, 16, ConfigHandler.typeTankRender); - @SuppressWarnings("FieldCanBeLocal") private FluidTank lft; - @SuppressWarnings("FieldCanBeLocal") private FluidTank rgt; - public int lefties; - public int topsies; + private int lefties; + private int topsies; public GuiAdvBackpack(EntityPlayer player, TileAdventureBackpack tileBackpack) { diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java index 1a2150bf..5f5638b2 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java @@ -115,7 +115,7 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) EntityPlayer player = mc.thePlayer; if (Wearing.isWearingWearable(player)) { - IInventoryTanks inv = Wearing.getWearableInv(player); + IInventoryTanks inv = Wearing.getWearingWearableInv(player); assert inv != null; inv.openInventory(); diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java index df2a037b..7778598a 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java @@ -9,9 +9,9 @@ import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.client.models.ModelBackpackBlock; +import com.darkona.adventurebackpack.init.ModDates; import com.darkona.adventurebackpack.reference.BackpackNames; import com.darkona.adventurebackpack.util.Resources; -import com.darkona.adventurebackpack.util.Utils; /** * Created on 12/10/2014 @@ -65,7 +65,7 @@ public void renderTileEntityAt(TileEntity te, double x, double y, double z, floa ResourceLocation modelTexture; if (BackpackNames.getBackpackColorName((TileAdventureBackpack) te).equals("Standard")) { - modelTexture = Resources.backpackTextureFromString(Utils.getHoliday()); + modelTexture = Resources.backpackTextureFromString(ModDates.getHoliday()); } else { modelTexture = Resources.backpackTextureFromColor((TileAdventureBackpack) te); diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java index 36412a1a..603da18e 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java @@ -7,8 +7,8 @@ import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.IItemRenderer; -import com.darkona.adventurebackpack.AdventureBackpack; import com.darkona.adventurebackpack.client.models.ModelBackpackBlock; +import com.darkona.adventurebackpack.init.ModDates; import com.darkona.adventurebackpack.inventory.InventoryBackpack; import com.darkona.adventurebackpack.reference.BackpackNames; import com.darkona.adventurebackpack.util.Resources; @@ -73,7 +73,7 @@ public void renderItem(IItemRenderer.ItemRenderType type, ItemStack backpack, Ob ResourceLocation modelTexture; if (BackpackNames.getBackpackColorName(backpack).equals("Standard")) { - modelTexture = Resources.backpackTextureFromString(AdventureBackpack.instance.Holiday); + modelTexture = Resources.backpackTextureFromString(ModDates.getHoliday()); } else { modelTexture = Resources.backpackTextureFromColor(inv); diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index 596953ac..f9525343 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -402,7 +402,6 @@ public static void toggleCopterPack(EntityPlayer player, ItemStack copter, byte { player.addChatComponentMessage(new ChatComponentTranslation(message)); } - } } diff --git a/src/main/java/com/darkona/adventurebackpack/config/Keybindings.java b/src/main/java/com/darkona/adventurebackpack/config/Keybindings.java index 16c0bc62..6a30d356 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/Keybindings.java +++ b/src/main/java/com/darkona/adventurebackpack/config/Keybindings.java @@ -5,8 +5,6 @@ import net.minecraft.client.settings.GameSettings; import net.minecraft.client.settings.KeyBinding; -import com.darkona.adventurebackpack.reference.Names; - /** * Created on 14/10/2014 * @@ -14,8 +12,12 @@ */ public class Keybindings { - public static KeyBinding openInventory = new KeyBinding(Names.keys.OPEN_INVENTORY, Keyboard.KEY_B, Names.keys.CATEGORY); - public static KeyBinding toggleActions = new KeyBinding(Names.keys.TOGGLE_ACTIONS, Keyboard.KEY_N, Names.keys.CATEGORY); + private static final String CATEGORY = "keys.adventureBackpack.category"; + private static final String OPEN_INVENTORY = "keys.adventureBackpack.openInventory"; + private static final String TOGGLE_ACTIONS = "keys.adventureBackpack.toggleActions"; + + public static KeyBinding openInventory = new KeyBinding(OPEN_INVENTORY, Keyboard.KEY_B, CATEGORY); + public static KeyBinding toggleActions = new KeyBinding(TOGGLE_ACTIONS, Keyboard.KEY_N, CATEGORY); public static String getInventoryKeyName() { diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java index 7707813c..cd462c6a 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java @@ -15,7 +15,6 @@ import com.darkona.adventurebackpack.network.PlayerActionPacket; import com.darkona.adventurebackpack.network.SyncPropertiesPacket; import com.darkona.adventurebackpack.network.WearableModePacket; -import com.darkona.adventurebackpack.reference.Key; import com.darkona.adventurebackpack.util.Wearing; /** @@ -24,6 +23,11 @@ public class KeybindHandler { + public enum Key + { + UNKNOWN, INVENTORY_KEY, ACTION_KEY, JUMP + } + private static Key getPressedKeyBinding() { if (Keybindings.openInventory.isPressed()) @@ -54,9 +58,12 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) { sendSyncPropertiesPacket(); - if (player.isSneaking() && Wearing.isHoldingBackpack(player)) + if (player.isSneaking()) { - sendGUIPacket(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING); + if(Wearing.isHoldingBackpack(player)) + { + sendGUIPacket(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING); + } } else { if (Wearing.isWearingBackpack(player)) @@ -66,10 +73,12 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) { sendGUIPacket(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING); } + if (Wearing.isWearingCopter(player)) { sendGUIPacket(GUIPacket.COPTER_GUI, GUIPacket.FROM_KEYBIND); } + if (Wearing.isWearingJetpack(player)) { sendGUIPacket(GUIPacket.JETPACK_GUI, GUIPacket.FROM_KEYBIND); @@ -81,7 +90,7 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) { if (Wearing.isHoldingHose(player)) { - sendCycleToolPacket(0, (player).inventory.currentItem, CycleToolPacket.TOGGLE_HOSE_TANK); + sendCycleToolPacket(0, player.inventory.currentItem, CycleToolPacket.TOGGLE_HOSE_TANK); ServerActions.switchHose(player, 0, ServerActions.HOSE_TOGGLE); } else if (Wearing.isWearingBackpack(player)) { @@ -103,14 +112,14 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) } if (Wearing.isWearingCopter(player)) { - if (!player.isSneaking()) - { - sendWearableModePacket(WearableModePacket.COPTER_TOGGLE); - ServerActions.toggleCopterPack(player, Wearing.getWearingCopter(player), WearableModePacket.COPTER_TOGGLE); - } else + if (player.isSneaking()) { sendWearableModePacket(WearableModePacket.COPTER_ON_OFF); ServerActions.toggleCopterPack(player, Wearing.getWearingCopter(player), WearableModePacket.COPTER_ON_OFF); + } else + { + sendWearableModePacket(WearableModePacket.COPTER_TOGGLE); + ServerActions.toggleCopterPack(player, Wearing.getWearingCopter(player), WearableModePacket.COPTER_TOGGLE); } } if (Wearing.isWearingJetpack(player)) diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModDates.java b/src/main/java/com/darkona/adventurebackpack/init/ModDates.java new file mode 100644 index 00000000..8e0071a3 --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/init/ModDates.java @@ -0,0 +1,123 @@ +package com.darkona.adventurebackpack.init; + +import java.util.Calendar; + +/** + * Created by Ugachaga on 06.07.2017. + */ +public class ModDates +{ + private static String Holiday; + + private static int year = Calendar.getInstance().get(Calendar.YEAR); + private static int month = Calendar.getInstance().get(Calendar.MONTH) + 1; + private static int day = Calendar.getInstance().get(Calendar.DAY_OF_MONTH); + + public static void init() + { + Holiday = setHoliday(); + //TODO problem with textures: Columbus.png, Germany.png, Halloween.png, Italy.png and Liberation.png + } + + public static String getHoliday() + { + return Holiday; + } + + private static String setHoliday() + { + // here and below commented lines: textures are missing. + /*if (ChineseCalendar.isChineseNewYear(year, month, day)) + { + return "ChinaNewYear"; + } + if (JewishCalendar.isHannukah(year, month, day)) + { + return "Hannukah"; + } + if (month == calculateEaster(year)[0] && day == calculateEaster(year)[1]) + { + return "Easter"; + }*/ + + String result = "Standard"; + if (month == 1) + { + if (day == 1) result = "NewYear"; + if (day == 28) result = "Shuttle"; //Challenger + } + if (month == 2) + { + if (day == 1) result = "Shuttle"; //Columbia + if (day == 14) result = "Valentines"; + //if (day == 23) result = "Fatherland"; + } + if (month == 3) + { + if (day == 17) result = "Patrick"; + } + if (month == 4) + { + if (day == 1) result = "Fools"; + if (day == 25) result = "Italy"; + } + if (month == 5) + { + if (day == 8 || day == 9 || day == 10) result = "Liberation"; + } + if (month == 6) + { + + } + if (month == 7) + { + if (day == 4) result = "USA"; + if (day == 24) result = "Bolivar"; + //if (day == 14) result = "Bastille"; + } + if (month == 8) + { + + } + if (month == 9) + { + //if (day == 19) result = "Pirate"; + } + if (month == 10) + { + if (day == 3) result = "Germany"; + if (day == 12) result = "Columbus"; + if (day == 31) result = "Halloween"; + } + if (month == 11) + { + //if (day == 2) result = "Muertos"; + } + if (month == 12) + { + if (day >= 22 && day <= 26) result = "Christmas"; + if (day == 31) result = "NewYear"; + } + //LogHelper.info("Today is: " + day + "/" + month + "/" + year + ". Which means today is: " + result); + return result; + } + + private static int[] calculateEaster(int year) + { + int a = year % 19, + b = year / 100, + c = year % 100, + d = b / 4, + e = b % 4, + g = (8 * b + 13) / 25, + h = (19 * a + b - d - g + 15) % 30, + j = c / 4, + k = c % 4, + m = (a + 11 * h) / 319, + r = (2 * e + 2 * j - k - h + m + 32) % 7, + n = (h - m + r + 90) / 25, + p = (h - m + r + n + 19) % 32; + + return new int[]{n, p}; + } +} \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModItems.java b/src/main/java/com/darkona/adventurebackpack/init/ModItems.java index 9e409b0c..7ca8c2c1 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModItems.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModItems.java @@ -38,6 +38,7 @@ public class ModItems public static void init() { + // Sequence affect location in NEI and CreativeTab, so keep it logically grouped GameRegistry.registerItem(machete, "machete"); GameRegistry.registerItem(cwxbow, "clockworkCrossbow"); GameRegistry.registerItem(adventureHat, "adventureHat"); diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java index 73fc02e8..209ee48d 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java @@ -31,6 +31,7 @@ public static void init() { if (ConfigHandler.recipeSaddle) { + //Saddle GameRegistry.addRecipe(new ItemStack(Items.saddle), "LLL", "L L", @@ -39,6 +40,15 @@ public static void init() 'I', Items.iron_ingot); } + //CampFire + GameRegistry.addRecipe(new ShapedOreRecipe(ModBlocks.blockCampFire, + " S ", + "SxS", + "ccc", + 'S', "stickWood", + 'x', Items.coal, + 'c', "cobblestone")); + //Copter Pack if (ConfigHandler.recipeCopterPack) { @@ -78,63 +88,6 @@ public static void init() 'T', new ItemStack(ModItems.component, 1, 2)); } - //change to make it not support BuildCraft there are people out there who dont like that mod - //CampFire - GameRegistry.addRecipe(new ShapedOreRecipe(ModBlocks.blockCampFire, - " S ", - "SxS", - "ccc", - 'S', "stickWood", - 'x', Items.coal, - 'c', "cobblestone")); - - //Sleeping Bag - GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 1), - " X", - "CCC", - 'X', Blocks.wool, - 'C', Blocks.carpet); - - //Backpack Tank - GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 2), - "GIG", - "GGG", - "GIG", - 'G', Blocks.glass, - 'I', Items.iron_ingot); - - //Inflatable Boat - if (ConfigHandler.recipeInflatableBoat) - { - GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 7), - " ", - "w w", - "sws", - 'w', Blocks.wool, - 's', Blocks.sand); - } - - //Inflatable Boat (Motorized) - if (ConfigHandler.recipeInflatableBoatM && ConfigHandler.recipeInflatableBoat) - { - GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 8), - " B ", - " E ", - " H ", - 'B', new ItemStack(ModItems.component, 1, 7), - 'H', new ItemStack(ModItems.component, 1, 9), - 'E', new ItemStack(ModItems.component, 1, 5)); - } - - //Hose Nozzle - GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 3), - " G ", - "ILI", - " ", - 'G', Items.gold_ingot, - 'I', Items.iron_ingot, - 'L', Blocks.lever); - if (ConfigHandler.recipeMachete) { //Machete Handle @@ -158,9 +111,9 @@ public static void init() 'H', new ItemStack(ModItems.component, 1, 4)); } - //Clockwork Crossbow if (ConfigHandler.recipeClockCrossbow) { + //Clockwork Crossbow GameRegistry.addRecipe(new ItemStack(ModItems.cwxbow), " ", "BA ", @@ -201,9 +154,9 @@ public static void init() 'L', Items.leather); } - //Piston Boots if (ConfigHandler.recipePitonBoots) { + //Piston Boots GameRegistry.addRecipe(new ItemStack(ModItems.pistonBoots), " B ", "PSP", @@ -215,6 +168,15 @@ public static void init() //Melon Juice Bottle GameRegistry.addShapelessRecipe(new ItemStack(ModItems.melonJuiceBottle), Items.melon, Items.potionitem); + //Hose Nozzle + GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 3), + " G ", + "ILI", + " ", + 'G', Items.gold_ingot, + 'I', Items.iron_ingot, + 'L', Blocks.lever); + //Hose GameRegistry.addRecipe(new ItemStack(ModItems.hose), "NGG", @@ -222,6 +184,79 @@ public static void init() 'N', new ItemStack(ModItems.component, 1, 3), 'G', new ItemStack(Items.dye, 1, 2)); + //Sleeping Bag + GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 1), + " X", + "CCC", + 'X', Blocks.wool, + 'C', Blocks.carpet); + + //Backpack Tank + GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 2), + "GIG", + "GGG", + "GIG", + 'G', Blocks.glass, + 'I', Items.iron_ingot); + + if (ConfigHandler.recipeCopterPack) + { + //Copter Engine + GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 5), + "IGI", + "PCP", + "FOF", + 'I', Items.iron_ingot, + 'G', Items.gold_ingot, + 'P', Blocks.piston, + 'F', Blocks.furnace, + 'C', Items.cauldron, + 'O', Blocks.obsidian); + } + + if (ConfigHandler.recipeCopterPack || ConfigHandler.recipeInflatableBoatM) + { + //Copter Blades + GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 6), + "III", + " F ", + " F ", + 'I', Items.iron_ingot, + 'F', Blocks.fence); + } + + + if (ConfigHandler.recipeInflatableBoat) + { + //Inflatable Boat + GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 7), + " ", + "w w", + "sws", + 'w', Blocks.wool, + 's', Blocks.sand); + + if (ConfigHandler.recipeInflatableBoatM) + { + //Inflatable Boat (Motorized) + GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 8), + " B ", + " E ", + " H ", + 'B', new ItemStack(ModItems.component, 1, 7), + 'H', new ItemStack(ModItems.component, 1, 9), + 'E', new ItemStack(ModItems.component, 1, 5)); + + //Hydro Blades + GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 9), + " F ", + " F ", + "III", + 'I', Items.iron_ingot, + 'F', Blocks.fence); + } + } + BackpackRecipesList br = new BackpackRecipesList(); int counter = 0; for (int i = 0; i < BackpackNames.backpackNames.length; i++) @@ -269,36 +304,11 @@ public static void init() */ } - public static void conditionalInit() + /*public static void conditionalInit() { + if(ConfigHandler.IS_BUILDCRAFT) { - //Copter Engine - GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 5), - "IGI", - "PCP", - "FOF", - 'I', Items.iron_ingot, - 'G', Items.gold_ingot, - 'P', Blocks.piston, - 'F', Blocks.furnace, - 'C', Items.cauldron, - 'O', Blocks.obsidian); - - //Copter Blades - GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 6), - "III", - " F ", - " F ", - 'I', Items.iron_ingot, - 'F', Blocks.fence); - //Hydro Blades - GameRegistry.addRecipe(new ItemStack(ModItems.component, 1, 9), - " F ", - " F ", - "III", - 'I', Items.iron_ingot, - 'F', Blocks.fence); } - } + }*/ } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidWater.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidWater.java index ca0827fa..1d27fcb4 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidWater.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidWater.java @@ -25,6 +25,7 @@ private static boolean isContainerForWater(ItemStack stack) { return FluidUtils.isContainerForFluid(stack, FluidRegistry.WATER); } + private static boolean isContainerWithWater(ItemStack stack) { return isFilled(stack) && FluidContainerRegistry.getFluidForFilledItem(stack).getFluid().getName().contains("water"); diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 72f5d34d..6625fe35 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -24,7 +24,6 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import com.darkona.adventurebackpack.AdventureBackpack; import com.darkona.adventurebackpack.block.BlockAdventureBackpack; import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.client.models.ModelBackpackArmor; @@ -33,6 +32,7 @@ import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.events.WearableEvent; import com.darkona.adventurebackpack.init.ModBlocks; +import com.darkona.adventurebackpack.init.ModDates; import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.inventory.ContainerBackpack; @@ -333,7 +333,7 @@ public String getArmorTexture(ItemStack stack, Entity entity, int slot, String t String modelTexture; if (BackpackNames.getBackpackColorName(stack).equals("Standard")) { - modelTexture = Resources.backpackTextureFromString(AdventureBackpack.instance.Holiday).toString(); + modelTexture = Resources.backpackTextureFromString(ModDates.getHoliday()).toString(); } else { modelTexture = Resources.backpackTexturesStringFromColor(stack); @@ -357,7 +357,7 @@ public ResourceLocation getWearableTexture(ItemStack wearable) if (BackpackNames.getBackpackColorName(wearable).equals("Standard")) { - modelTexture = Resources.backpackTextureFromString(AdventureBackpack.instance.Holiday); + modelTexture = Resources.backpackTextureFromString(ModDates.getHoliday()); } else { modelTexture = Resources.backpackTextureFromString(BackpackNames.getBackpackColorName(wearable)); diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java index 6500c9d7..781a3d49 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java @@ -1,7 +1,5 @@ package com.darkona.adventurebackpack.proxy; -import java.lang.reflect.Field; - import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -58,8 +56,6 @@ public class ClientProxy implements IProxy public static ModelBackpackArmor modelAdventureBackpack = new ModelBackpackArmor(); public static ModelCopterPack modelCopterPack = new ModelCopterPack(); - public static Field camRollField; - @Override public void init() { @@ -77,6 +73,7 @@ public void initNetwork() @Override public void joinPlayer(EntityPlayer player) { + } @Override @@ -91,7 +88,7 @@ public void synchronizePlayer(int id, NBTTagCompound properties) } } - public void initRenderers() + private void initRenderers() { renderHandler = new RenderHandler(); MinecraftForge.EVENT_BUS.register(renderHandler); diff --git a/src/main/java/com/darkona/adventurebackpack/reference/Key.java b/src/main/java/com/darkona/adventurebackpack/reference/Key.java deleted file mode 100644 index 4066ecf2..00000000 --- a/src/main/java/com/darkona/adventurebackpack/reference/Key.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.darkona.adventurebackpack.reference; - -/** - * Created on 14/10/2014 - * - * @author Darkona - */ -public enum Key -{ - UNKNOWN, INVENTORY_KEY, ACTION_KEY, JUMP -} diff --git a/src/main/java/com/darkona/adventurebackpack/reference/Names.java b/src/main/java/com/darkona/adventurebackpack/reference/Names.java deleted file mode 100644 index 65aba7c6..00000000 --- a/src/main/java/com/darkona/adventurebackpack/reference/Names.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.darkona.adventurebackpack.reference; - -/** - * Created on 14/10/2014 - * - * @author Darkona - */ -public final class Names -{ - public static final class keys - { - public static final String CATEGORY = "keys.adventureBackpack.category"; - public static String OPEN_INVENTORY = "keys.adventureBackpack.openInventory"; - public static String TOGGLE_ACTIONS = "keys.adventureBackpack.toggleActions"; - } -} diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index d759953b..6db48a7e 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -1,7 +1,5 @@ package com.darkona.adventurebackpack.util; -import java.util.Calendar; - import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ChunkCoordinates; @@ -35,104 +33,8 @@ public static float radiansToDegrees(float radians) return radians * 57.2957795f; } - public static int[] calculateEaster(int year) - { - int a = year % 19, - b = year / 100, - c = year % 100, - d = b / 4, - e = b % 4, - g = (8 * b + 13) / 25, - h = (19 * a + b - d - g + 15) % 30, - j = c / 4, - k = c % 4, - m = (a + 11 * h) / 319, - r = (2 * e + 2 * j - k - h + m + 32) % 7, - n = (h - m + r + 90) / 25, - p = (h - m + r + n + 19) % 32; - - return new int[]{n, p}; - } - - public static String getHoliday() - { - Calendar calendar = Calendar.getInstance(); - int year = calendar.get(Calendar.YEAR), - month = calendar.get(Calendar.MONTH) + 1, - day = calendar.get(Calendar.DAY_OF_MONTH); - - //if (AdventureBackpack.instance.chineseNewYear) return "ChinaNewYear"; // here and below commented lines: textures are missing - //if (AdventureBackpack.instance.hannukah) return "Hannukah"; - //if (month == Utils.calculateEaster(year)[0] && day == Utils.calculateEaster(year)[1]) return "Easter"; - String dia = "Standard"; - if (month == 1) - { - if (day == 1) dia = "NewYear"; - if (day == 28) dia = "Shuttle"; //Challenger - } - if (month == 2) - { - if (day == 1) dia = "Shuttle"; //Columbia - if (day == 14) dia = "Valentines"; - //if (day == 23) dia = "Fatherland"; - } - if (month == 3) - { - if (day == 17) dia = "Patrick"; - } - if (month == 4) - { - if (day == 1) dia = "Fools"; - if (day == 25) dia = "Italy"; - } - if (month == 5) - { - if (day == 8 || day == 9 || day == 10) dia = "Liberation"; - } - if (month == 6) - { - } - if (month == 7) - { - if (day == 4) dia = "USA"; - if (day == 24) dia = "Bolivar"; - //if (day == 14) dia = "Bastille"; - } - if (month == 8) - { - } - if (month == 9) - { - //if (day == 19) dia = "Pirate"; - } - if (month == 10) - { - if (day == 3) dia = "Germany"; - if (day == 12) dia = "Columbus"; - if (day == 31) dia = "Halloween"; - } - if (month == 11) - { - //if (day == 2) dia = "Muertos"; - } - if (month == 12) - { - if (day >= 22 && day <= 26) dia = "Christmas"; - if (day == 31) dia = "NewYear"; - } - - //LogHelper.info("Today is: " + day + "/" + month + "/" + year + ". Which means today is: " + dia); - return dia; - } - public static int isBlockRegisteredAsFluid(Block block) { - /* - * for (Map.Entry fluid : - * getRegisteredFluids().entrySet()) { int ID = - * (fluid.getValue().getBlockID() == BlockID) ? fluid.getValue().getID() - * : -1; if (ID > 0) return ID; } - */ int fluidID = -1; for (Fluid fluid : FluidRegistry.getRegisteredFluids().values()) { @@ -231,11 +133,11 @@ public static boolean inServer() return side == Side.SERVER; } - private static ChunkCoordinates checkCoordsForBackpack(IBlockAccess world, int origX, int origZ, int X, int Y, int Z, boolean except) + private static ChunkCoordinates checkCoordsForBackpack(IBlockAccess world, int origX, int origZ, int x, int y, int z, boolean except) { - if (world.isAirBlock(X, Y, Z) || isReplaceable(world, X, Y, Z)) + if (world.isAirBlock(x, y, z) || isReplaceable(world, x, y, z)) { - return new ChunkCoordinates(X, Y, Z); + return new ChunkCoordinates(x, y, z); } return null; } @@ -246,18 +148,18 @@ public static boolean isReplaceable(IBlockAccess world, int x, int y, int z) return block.isReplaceable(world, x, y, z); } - private static ChunkCoordinates checkCoordsForPlayer(IBlockAccess world, int origX, int origZ, int X, int Y, int Z, boolean except) + private static ChunkCoordinates checkCoordsForPlayer(IBlockAccess world, int origX, int origZ, int x, int y, int z, boolean except) { - LogHelper.info("Checking coordinates in X=" + X + ", Y=" + Y + ", Z=" + Z); - if (except && world.isSideSolid(X, Y - 1, Z, ForgeDirection.UP, true) && world.isAirBlock(X, Y, Z) && world.isAirBlock(X, Y + 1, Z) && !areCoordinatesTheSame2D(origX, origZ, X, Z)) + LogHelper.info("Checking coordinates in X=" + x + ", Y=" + y + ", Z=" + z); + if (except && world.isSideSolid(x, y - 1, z, ForgeDirection.UP, true) && world.isAirBlock(x, y, z) && world.isAirBlock(x, y + 1, z) && !areCoordinatesTheSame2D(origX, origZ, x, z)) { LogHelper.info("Found spot with the exception of the origin point"); - return new ChunkCoordinates(X, Y, Z); + return new ChunkCoordinates(x, y, z); } - if (!except && world.isSideSolid(X, Y - 1, Z, ForgeDirection.UP, true) && world.isAirBlock(X, Y, Z) && world.isAirBlock(X, Y + 1, Z)) + if (!except && world.isSideSolid(x, y - 1, z, ForgeDirection.UP, true) && world.isAirBlock(x, y, z) && world.isAirBlock(x, y + 1, z)) { LogHelper.info("Found spot without exceptions"); - return new ChunkCoordinates(X, Y, Z); + return new ChunkCoordinates(x, y, z); } return null; } @@ -288,7 +190,6 @@ public static ChunkCoordinates getNearestEmptyChunkCoordinatesSpiral(IBlockAcces //Steps mod 2 == 0 => X++, Z-- //Steps mod 2 == 1 => X--, Z++ - // if (steps >= radius) return null; int i = X, j = Z; if (steps % 2 == 0) @@ -297,7 +198,6 @@ public static ChunkCoordinates getNearestEmptyChunkCoordinatesSpiral(IBlockAcces { for (; i <= X + steps; i++) { - ChunkCoordinates coords = type ? checkCoordsForPlayer(world, origX, origZ, X, Y, Z, except) : checkCoordsForBackpack(world, origX, origZ, X, Y, Z, except); if (coords != null) { @@ -354,24 +254,6 @@ public static ChunkCoordinates getNearestEmptyChunkCoordinatesSpiral(IBlockAcces } } - /* Old code. Still works, though. - for (int i = x - radius; i <= x + radius; i++) - { - for (int j = y - (radius / 2); j <= y + (radius / 2); j++) - { - for (int k = z + radius; k <= z + (radius); k++) - { - if (except && world.isSideSolid(i, j - 1, k, ForgeDirection.UP) && world.isAirBlock(i, j, k) && !areCoordinatesTheSame(x, y, z, i, j, k)) - { - return new ChunkCoordinates(i, j, k); - } - if (!except && world.isSideSolid(i, j - 1, k, ForgeDirection.UP) && world.isAirBlock(i, j, k)) - { - return new ChunkCoordinates(i, j, k); - } - } - } - }*/ return null; } @@ -412,7 +294,7 @@ public static String getFirstWord(String text) { // Check if there is more than one word. String firstWord = text.substring(0, text.indexOf(' ')); String secondWord = text.substring(text.indexOf(' ') + 1); - return firstWord.equals("Molten") ? secondWord : firstWord;// Extract first word. + return firstWord.equals("Molten") ? secondWord : firstWord; // Extract first word. } else { return text; // Text is the first word itself. @@ -421,36 +303,15 @@ public static String getFirstWord(String text) public static String makeItRainbow(String theString) { - StringBuilder everyHunterWannaKnowWherePheasantSits = new StringBuilder(); + EnumChatFormatting[] rainbowSequence = {EnumChatFormatting.RED, EnumChatFormatting.GOLD, EnumChatFormatting.YELLOW, + EnumChatFormatting.GREEN, EnumChatFormatting.AQUA, EnumChatFormatting.BLUE, EnumChatFormatting.DARK_PURPLE}; + + StringBuilder rainbowed = new StringBuilder(); for (int i = 0; i < theString.length(); i++) { - char charAtI = theString.charAt(i); - switch (i % 7) - { - case 0: - everyHunterWannaKnowWherePheasantSits.append(EnumChatFormatting.RED).append(charAtI); - break; - case 1: - everyHunterWannaKnowWherePheasantSits.append(EnumChatFormatting.GOLD).append(charAtI); - break; - case 2: - everyHunterWannaKnowWherePheasantSits.append(EnumChatFormatting.YELLOW).append(charAtI); - break; - case 3: - everyHunterWannaKnowWherePheasantSits.append(EnumChatFormatting.GREEN).append(charAtI); - break; - case 4: - everyHunterWannaKnowWherePheasantSits.append(EnumChatFormatting.AQUA).append(charAtI); - break; - case 5: - everyHunterWannaKnowWherePheasantSits.append(EnumChatFormatting.BLUE).append(charAtI); - break; - case 6: - everyHunterWannaKnowWherePheasantSits.append(EnumChatFormatting.DARK_PURPLE).append(charAtI); - break; - } + rainbowed.append(rainbowSequence[i % 7]).append(theString.charAt(i)); } - return everyHunterWannaKnowWherePheasantSits.toString(); + return rainbowed.toString(); } public static boolean isDimensionAllowed (int dimensionID) diff --git a/src/main/java/com/darkona/adventurebackpack/util/Wearing.java b/src/main/java/com/darkona/adventurebackpack/util/Wearing.java index b5e823f0..79d0eec4 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Wearing.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Wearing.java @@ -30,14 +30,26 @@ public static boolean isWearingWearable(EntityPlayer player) return BackpackProperty.get(player).getWearable() != null && BackpackProperty.get(player).getWearable().getItem() instanceof IBackWearableItem; } - public static boolean isHoldingWearable(EntityPlayer player) + public static ItemStack getWearingWearable(EntityPlayer player) { - return player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof IBackWearableItem; + return isWearingWearable(player) ? BackpackProperty.get(player).getWearable() : null; } - public static ItemStack getWearingWearable(EntityPlayer player) + public static IInventoryTanks getWearingWearableInv(EntityPlayer player) { - return isWearingWearable(player) ? BackpackProperty.get(player).getWearable() : null; + ItemStack wearable = Wearing.getWearingWearable(player); + if (wearable.getItem() instanceof ItemAdventureBackpack) + return new InventoryBackpack(wearable); + if (wearable.getItem() instanceof ItemCoalJetpack) + return new InventoryCoalJetpack(wearable); + if (wearable.getItem() instanceof ItemCopterPack) + return new InventoryCopterPack(wearable); + return null; + } + + public static boolean isHoldingWearable(EntityPlayer player) + { + return player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof IBackWearableItem; } // Backpack @@ -46,11 +58,31 @@ public static boolean isWearingBackpack(EntityPlayer player) return BackpackProperty.get(player).getWearable() != null && BackpackProperty.get(player).getWearable().getItem() instanceof ItemAdventureBackpack; } + public static boolean isWearingTheRightBackpack(EntityPlayer player, String... backpacks) + { + if (Wearing.isWearingBackpack(player)) + { + for (String name : backpacks) + { + if (BackpackNames.getBackpackColorName(Wearing.getWearingBackpack(player)).equals(name)) + { + return true; + } + } + } + return false; + } + public static ItemStack getWearingBackpack(EntityPlayer player) { return isWearingBackpack(player) ? BackpackProperty.get(player).getWearable() : null; } + public static InventoryBackpack getWearingBackpackInv(EntityPlayer player) + { + return new InventoryBackpack(BackpackProperty.get(player).getWearable()); + } + public static boolean isHoldingBackpack(EntityPlayer player) { return player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof ItemAdventureBackpack; @@ -134,36 +166,4 @@ public static ItemStack getWearingBoots(EntityPlayer player) { return isWearingBoots(player) ? player.inventory.armorInventory[0] : null; } - - /** - * Will return a backpack inventory from a backpack in the slot - */ - public static InventoryBackpack getWearingBackpackInv(EntityPlayer player) - { - return new InventoryBackpack(BackpackProperty.get(player).getWearable()); - } - - public static boolean isWearingTheRightBackpack(EntityPlayer player, String... backpacks) - { - if (Wearing.isWearingBackpack(player)) - { - for (String name : backpacks) - { - if (BackpackNames.getBackpackColorName(Wearing.getWearingBackpack(player)).equals(name)) - { - return true; - } - } - } - return false; - } - - public static IInventoryTanks getWearableInv(EntityPlayer player) - { - ItemStack wearable = Wearing.getWearingWearable(player); - if (wearable.getItem() instanceof ItemAdventureBackpack) return new InventoryBackpack(wearable); - if (wearable.getItem() instanceof ItemCoalJetpack) return new InventoryCoalJetpack(wearable); - if (wearable.getItem() instanceof ItemCopterPack) return new InventoryCopterPack(wearable); - return null; - } } From ffe5f1f0893b7cd8863bd82f17c9d7770b5ac7af Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sun, 9 Jul 2017 13:13:47 +0700 Subject: [PATCH 395/462] Readded Shift-Space-Click --- .../client/gui/GuiAdvBackpack.java | 28 +++ .../client/gui/GuiWithTanks.java | 14 ++ .../handlers/KeyInputEventHandler.java | 170 ++++++++++++++++++ .../handlers/KeybindHandler.java | 170 ------------------ .../adventurebackpack/init/ModDates.java | 11 +- .../inventory/ContainerBackpack.java | 11 +- .../item/ItemAdventureBackpack.java | 16 +- .../item/ItemCoalJetpack.java | 1 - .../adventurebackpack/network/GUIPacket.java | 9 +- .../network/PlayerActionPacket.java | 49 +++-- .../network/WearableModePacket.java | 10 +- .../adventurebackpack/proxy/ClientProxy.java | 4 +- .../adventurebackpack/util/Wearing.java | 5 + .../textures/backpack/Columbus.png | Bin 3655 -> 0 bytes .../textures/backpack/Germany.png | Bin 3655 -> 0 bytes .../textures/backpack/Halloween.png | Bin 3655 -> 0 bytes .../textures/backpack/Italy.png | Bin 3466 -> 0 bytes .../textures/backpack/Liberation.png | Bin 3678 -> 0 bytes 18 files changed, 281 insertions(+), 217 deletions(-) create mode 100644 src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java delete mode 100644 src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java delete mode 100644 src/main/resources/assets/adventurebackpack/textures/backpack/Columbus.png delete mode 100644 src/main/resources/assets/adventurebackpack/textures/backpack/Germany.png delete mode 100644 src/main/resources/assets/adventurebackpack/textures/backpack/Halloween.png delete mode 100644 src/main/resources/assets/adventurebackpack/textures/backpack/Italy.png delete mode 100644 src/main/resources/assets/adventurebackpack/textures/backpack/Liberation.png diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index e1e5cf17..35ceacad 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -1,5 +1,6 @@ package com.darkona.adventurebackpack.client.gui; +import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; import net.minecraft.entity.player.EntityPlayer; @@ -16,6 +17,7 @@ import com.darkona.adventurebackpack.inventory.IInventoryAdventureBackpack; import com.darkona.adventurebackpack.inventory.InventoryBackpack; import com.darkona.adventurebackpack.network.EquipUnequipBackWearablePacket; +import com.darkona.adventurebackpack.network.PlayerActionPacket; import com.darkona.adventurebackpack.network.SleepingBagPacket; import com.darkona.adventurebackpack.util.Resources; @@ -33,6 +35,7 @@ public class GuiAdvBackpack extends GuiWithTanks protected int X; protected int Y; protected int Z; + private boolean isHoldingSpace; private EntityPlayer player; private static final ResourceLocation texture = Resources.guiTextures("guiBackpackNew"); private static GuiImageButtonNormal bedButton = new GuiImageButtonNormal(5, 91, 18, 18); @@ -241,4 +244,29 @@ protected void keyTyped(char key, int keycode) } super.keyTyped(key, keycode); } + + @Override + public void updateScreen() + { + if (!isHoldingSpace) + { + if (Keyboard.isKeyDown(Keyboard.KEY_SPACE)) + { + isHoldingSpace = true; + ModNetwork.net.sendToServer(new PlayerActionPacket.ActionMessage(PlayerActionPacket.GUI_HOLDING_SPACE)); + inventory.getExtendedProperties().setBoolean("holdingSpace", true); + //inventory.dirtyExtended(); + } + } else + { + if (!Keyboard.isKeyDown(Keyboard.KEY_SPACE)) + { + isHoldingSpace = false; + ModNetwork.net.sendToServer(new PlayerActionPacket.ActionMessage(PlayerActionPacket.GUI_NOT_HOLDING_SPACE)); + inventory.getExtendedProperties().removeTag("holdingSpace"); + //inventory.dirtyExtended(); + } + } + super.updateScreen(); + } } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java index e7d3d284..69ff362a 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java @@ -1,5 +1,7 @@ package com.darkona.adventurebackpack.client.gui; +import org.lwjgl.input.Mouse; + import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.inventory.Container; @@ -29,4 +31,16 @@ public float getZLevel() { return zLevel; } + + @Override + public void handleMouseInput() + { + if (Mouse.getEventDWheel() != 0) + { + return; // forbid mouseWheel, preventing glitches with Shift+Wheel on fluid containers and so on + } + + super.handleMouseInput(); + } + } diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java new file mode 100644 index 00000000..2d4e39eb --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java @@ -0,0 +1,170 @@ +package com.darkona.adventurebackpack.handlers; + +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.InputEvent; + +import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.common.ServerActions; +import com.darkona.adventurebackpack.config.Keybindings; +import com.darkona.adventurebackpack.entity.EntityFriendlySpider; +import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.network.CycleToolPacket; +import com.darkona.adventurebackpack.network.GUIPacket; +import com.darkona.adventurebackpack.network.PlayerActionPacket; +import com.darkona.adventurebackpack.network.SyncPropertiesPacket; +import com.darkona.adventurebackpack.network.WearableModePacket; +import com.darkona.adventurebackpack.util.Wearing; + +/** + * Created by Darkona on 11/10/2014. + */ + +public class KeyInputEventHandler +{ + public enum Key + { + UNKNOWN, INVENTORY, ACTION, JUMP + } + + @SubscribeEvent + public void handleKeyInputEvent(InputEvent.KeyInputEvent event) + { + Key pressedKey = getPressedKeyBinding(); + Minecraft mc = Minecraft.getMinecraft(); + EntityPlayer player = mc.thePlayer; + + if (pressedKey == Key.UNKNOWN || player == null) + return; + + if (pressedKey == Key.INVENTORY && mc.inGameHasFocus) + { + sendSyncPropertiesPacket(); + + if (player.isSneaking()) + { + if (Wearing.isHoldingBackpack(player)) + { + sendGUIPacket(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING); + } + } else + { + if (Wearing.isWearingBackpack(player)) + { + sendGUIPacket(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_WEARING); + } else if (Wearing.isHoldingBackpack(player)) + { + sendGUIPacket(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING); + } + + if (Wearing.isWearingCopter(player)) + { + sendGUIPacket(GUIPacket.COPTER_GUI, GUIPacket.FROM_WEARING); + } + + if (Wearing.isWearingJetpack(player)) + { + sendGUIPacket(GUIPacket.JETPACK_GUI, GUIPacket.FROM_WEARING); + } + } + } + + if (pressedKey == Key.ACTION) + { + if (Wearing.isHoldingHose(player)) + { + sendCycleToolPacket(0, player.inventory.currentItem, CycleToolPacket.TOGGLE_HOSE_TANK); + ServerActions.switchHose(player, 0, ServerActions.HOSE_TOGGLE); + } else if (Wearing.isWearingBackpack(player)) + { + if (player.isSneaking()) + { + for (String valid : Constants.NIGHTVISION_BACKPACKS) + { + if (Wearing.getWearingBackpackInv(player).getColorName().equals(valid)) + { + sendWearableModePacket(WearableModePacket.NIGHTVISION_ON_OFF); + ServerActions.toggleNightVision(player, Wearing.getWearingBackpack(player)); + } + } + } else + { + sendWearableModePacket(WearableModePacket.CYCLING_ON_OFF); + ServerActions.toggleToolCycling(player, Wearing.getWearingBackpack(player)); + } + } + if (Wearing.isWearingCopter(player)) + { + if (player.isSneaking()) + { + sendWearableModePacket(WearableModePacket.COPTER_ON_OFF); + ServerActions.toggleCopterPack(player, Wearing.getWearingCopter(player), WearableModePacket.COPTER_ON_OFF); + } else + { + sendWearableModePacket(WearableModePacket.COPTER_TOGGLE); + ServerActions.toggleCopterPack(player, Wearing.getWearingCopter(player), WearableModePacket.COPTER_TOGGLE); + } + } + if (Wearing.isWearingJetpack(player)) + { + if (player.isSneaking()) + { + sendWearableModePacket(WearableModePacket.JETPACK_ON_OFF); + ServerActions.toggleCoalJetpack(player, Wearing.getWearingJetpack(player)); + } + } + } + + if (pressedKey == Key.JUMP) + { + if (player.ridingEntity != null && player.ridingEntity instanceof EntityFriendlySpider) + { + sendPlayerActionPacket(PlayerActionPacket.SPIDER_JUMP); + ((EntityFriendlySpider) player.ridingEntity).setJumping(true); + } + } + } + + private static Key getPressedKeyBinding() + { + if (Keybindings.openInventory.isPressed()) + { + return Key.INVENTORY; + } + if (Keybindings.toggleActions.isPressed()) + { + return Key.ACTION; + } + if (Minecraft.getMinecraft().gameSettings.keyBindJump.isPressed()) + { + return Key.JUMP; + } + return Key.UNKNOWN; + } + + private void sendSyncPropertiesPacket() + { + ModNetwork.net.sendToServer(new SyncPropertiesPacket.Message()); + } + + private void sendGUIPacket(byte type, byte from) + { + ModNetwork.net.sendToServer(new GUIPacket.GUImessage(type, from)); + } + + private void sendWearableModePacket(byte type) + { + ModNetwork.net.sendToServer(new WearableModePacket.Message(type, "")); //TODO playerID? + } + + private void sendCycleToolPacket(int direction, int slot, byte type) + { + ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(direction, slot, type)); + } + + private void sendPlayerActionPacket(byte type) + { + ModNetwork.net.sendToServer(new PlayerActionPacket.ActionMessage(type)); + } +} diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java deleted file mode 100644 index cd462c6a..00000000 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeybindHandler.java +++ /dev/null @@ -1,170 +0,0 @@ -package com.darkona.adventurebackpack.handlers; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.common.gameevent.InputEvent; - -import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.common.ServerActions; -import com.darkona.adventurebackpack.config.Keybindings; -import com.darkona.adventurebackpack.entity.EntityFriendlySpider; -import com.darkona.adventurebackpack.init.ModNetwork; -import com.darkona.adventurebackpack.network.CycleToolPacket; -import com.darkona.adventurebackpack.network.GUIPacket; -import com.darkona.adventurebackpack.network.PlayerActionPacket; -import com.darkona.adventurebackpack.network.SyncPropertiesPacket; -import com.darkona.adventurebackpack.network.WearableModePacket; -import com.darkona.adventurebackpack.util.Wearing; - -/** - * Created by Darkona on 11/10/2014. - */ - -public class KeybindHandler -{ - public enum Key - { - UNKNOWN, INVENTORY_KEY, ACTION_KEY, JUMP - } - - private static Key getPressedKeyBinding() - { - if (Keybindings.openInventory.isPressed()) - { - return Key.INVENTORY_KEY; - } - if (Keybindings.toggleActions.isPressed()) - { - return Key.ACTION_KEY; - } - if (Minecraft.getMinecraft().gameSettings.keyBindJump.isPressed()) - { - return Key.JUMP; - } - return Key.UNKNOWN; - } - - @SubscribeEvent - public void handleKeyInputEvent(InputEvent.KeyInputEvent event) - { - Key pressedKey = getPressedKeyBinding(); - Minecraft mc = Minecraft.getMinecraft(); - EntityPlayer player = mc.thePlayer; - - if (player != null) - { - if (pressedKey == Key.INVENTORY_KEY && mc.inGameHasFocus) - { - sendSyncPropertiesPacket(); - - if (player.isSneaking()) - { - if(Wearing.isHoldingBackpack(player)) - { - sendGUIPacket(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING); - } - } else - { - if (Wearing.isWearingBackpack(player)) - { - sendGUIPacket(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_KEYBIND); - } else if (Wearing.isHoldingBackpack(player)) - { - sendGUIPacket(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING); - } - - if (Wearing.isWearingCopter(player)) - { - sendGUIPacket(GUIPacket.COPTER_GUI, GUIPacket.FROM_KEYBIND); - } - - if (Wearing.isWearingJetpack(player)) - { - sendGUIPacket(GUIPacket.JETPACK_GUI, GUIPacket.FROM_KEYBIND); - } - } - } - - if (pressedKey == Key.ACTION_KEY) - { - if (Wearing.isHoldingHose(player)) - { - sendCycleToolPacket(0, player.inventory.currentItem, CycleToolPacket.TOGGLE_HOSE_TANK); - ServerActions.switchHose(player, 0, ServerActions.HOSE_TOGGLE); - } else if (Wearing.isWearingBackpack(player)) - { - if (player.isSneaking()) - { - for (String valid : Constants.NIGHTVISION_BACKPACKS) - { - if (Wearing.getWearingBackpackInv(player).getColorName().equals(valid)) - { - sendWearableModePacket(WearableModePacket.NIGHTVISION_ON_OFF); - ServerActions.toggleNightVision(player, Wearing.getWearingBackpack(player)); - } - } - } else - { - sendWearableModePacket(WearableModePacket.CYCLING_ON_OFF); - ServerActions.toggleToolCycling(player, Wearing.getWearingBackpack(player)); - } - } - if (Wearing.isWearingCopter(player)) - { - if (player.isSneaking()) - { - sendWearableModePacket(WearableModePacket.COPTER_ON_OFF); - ServerActions.toggleCopterPack(player, Wearing.getWearingCopter(player), WearableModePacket.COPTER_ON_OFF); - } else - { - sendWearableModePacket(WearableModePacket.COPTER_TOGGLE); - ServerActions.toggleCopterPack(player, Wearing.getWearingCopter(player), WearableModePacket.COPTER_TOGGLE); - } - } - if (Wearing.isWearingJetpack(player)) - { - if (player.isSneaking()) - { - sendWearableModePacket(WearableModePacket.JETPACK_ON_OFF); - ServerActions.toggleCoalJetpack(player, Wearing.getWearingJetpack(player)); - } - } - } - - if (pressedKey == Key.JUMP) - { - if (player.ridingEntity != null && player.ridingEntity instanceof EntityFriendlySpider) - { - sendPlayerActionPacket(PlayerActionPacket.SPIDER_JUMP); - ((EntityFriendlySpider) player.ridingEntity).setJumping(true); - } - } - } - } - - private void sendSyncPropertiesPacket() - { - ModNetwork.net.sendToServer(new SyncPropertiesPacket.Message()); - } - - private void sendGUIPacket(byte type, byte from) - { - ModNetwork.net.sendToServer(new GUIPacket.GUImessage(type, from)); - } - - private void sendWearableModePacket(byte type) - { - ModNetwork.net.sendToServer(new WearableModePacket.Message(type, "")); //TODO playerID? - } - - private void sendCycleToolPacket(int direction, int slot, byte type) - { - ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(direction, slot, type)); - } - - private void sendPlayerActionPacket(byte type) - { - ModNetwork.net.sendToServer(new PlayerActionPacket.ActionMessage(type)); - } -} diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModDates.java b/src/main/java/com/darkona/adventurebackpack/init/ModDates.java index 8e0071a3..0d0b364a 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModDates.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModDates.java @@ -16,7 +16,6 @@ public class ModDates public static void init() { Holiday = setHoliday(); - //TODO problem with textures: Columbus.png, Germany.png, Halloween.png, Italy.png and Liberation.png } public static String getHoliday() @@ -59,11 +58,11 @@ private static String setHoliday() if (month == 4) { if (day == 1) result = "Fools"; - if (day == 25) result = "Italy"; + //if (day == 25) result = "Italy"; } if (month == 5) { - if (day == 8 || day == 9 || day == 10) result = "Liberation"; + //if (day == 8 || day == 9 || day == 10) result = "Liberation"; } if (month == 6) { @@ -85,9 +84,9 @@ private static String setHoliday() } if (month == 10) { - if (day == 3) result = "Germany"; - if (day == 12) result = "Columbus"; - if (day == 31) result = "Halloween"; + //if (day == 3) result = "Germany"; + //if (day == 12) result = "Columbus"; + //if (day == 31) result = "Halloween"; } if (month == 11) { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 0b300ddc..5455e63f 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -151,14 +151,19 @@ private void makeSlots(InventoryPlayer invPlayer) @Override public void detectAndSendChanges() { - refresh(); super.detectAndSendChanges(); + refresh(); //TODO + } + + private boolean isHoldingSpace() + { + return inventory.getExtendedProperties().hasKey("holdingSpace"); } @Override public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) { - if (source == SOURCE_WEARING) refresh(); + if (source == SOURCE_WEARING) refresh(); //TODO Slot slot = getSlot(fromSlot); ItemStack result = null; @@ -185,7 +190,7 @@ public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) } } - } else if (SlotFluid.isContainer(stack)) + } else if (!isHoldingSpace() && SlotFluid.isContainer(stack)) { ItemStack rightOutStack = getSlot(BUCKET_RIGHT + 1).getStack(); ItemStack leftOutStack = getSlot(BUCKET_LEFT + 1).getStack(); diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 6625fe35..faeacb85 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -2,7 +2,6 @@ import java.util.List; -import net.minecraft.block.Block; import net.minecraft.client.model.ModelBiped; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; @@ -33,7 +32,6 @@ import com.darkona.adventurebackpack.events.WearableEvent; import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.init.ModDates; -import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.inventory.ContainerBackpack; import com.darkona.adventurebackpack.network.GUIPacket; @@ -60,11 +58,6 @@ public ItemAdventureBackpack() setMaxStackSize(1); } - public static Item getItemFromBlock(Block block) - { - return block instanceof BlockAdventureBackpack ? ModItems.adventureBackpack : null; - } - @Override @SuppressWarnings({"unchecked", "rawtypes"}) @SideOnly(Side.CLIENT) @@ -249,7 +242,6 @@ private boolean placeBackpack(ItemStack stack, EntityPlayer player, World world, if (from) { stack.stackSize--; - } else { BackpackProperty.get(player).setWearable(null); @@ -272,9 +264,8 @@ public void onEquipped(World world, EntityPlayer player, ItemStack stack) @Override public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) { - - if (!ConfigHandler.backpackAbilities) return; - if (world == null || player == null || stack == null) return; + if (!ConfigHandler.backpackAbilities || world == null || player == null || stack == null) + return; if (BackpackAbilities.hasAbility(BackpackNames.getBackpackColorName(stack))) { @@ -294,7 +285,7 @@ public void onUnequipped(World world, EntityPlayer player, ItemStack stack) @Override public double getDurabilityForDisplay(ItemStack stack) { - return (float) getItemCount(stack) / Constants.INVENTORY_MAIN_SIZE; + return (double) getItemCount(stack) / Constants.INVENTORY_MAIN_SIZE; } private int getItemCount(ItemStack backpack) @@ -352,7 +343,6 @@ public ModelBiped getWearableModel(ItemStack wearable) @SideOnly(Side.CLIENT) public ResourceLocation getWearableTexture(ItemStack wearable) { - ResourceLocation modelTexture; if (BackpackNames.getBackpackColorName(wearable).equals("Standard")) diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index 8275ebd2..6ed2a808 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -125,7 +125,6 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) if (inv.isInUse() && canUse) { - elevate(player); inv.getSteamTank().drain(CoalConsumed, true); if (inv.getSteamTank().getFluidAmount() == 0) diff --git a/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java b/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java index 1e7dadd1..7a78f9b9 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java @@ -21,7 +21,7 @@ */ public class GUIPacket implements IMessageHandler { - public static final byte FROM_KEYBIND = 0; + public static final byte FROM_WEARING = 0; public static final byte FROM_HOLDING = 1; public static final byte FROM_TILE = 2; @@ -45,7 +45,7 @@ public IMessage onMessage(GUImessage message, MessageContext ctx) if (message.type == COPTER_GUI) { - if (message.from == FROM_KEYBIND) + if (message.from == FROM_WEARING) { if (Wearing.isWearingCopter(player)) { @@ -64,7 +64,7 @@ public IMessage onMessage(GUImessage message, MessageContext ctx) } if (message.type == JETPACK_GUI) { - if (message.from == FROM_KEYBIND) + if (message.from == FROM_WEARING) { if (Wearing.isWearingJetpack(player)) { @@ -88,7 +88,7 @@ public IMessage onMessage(GUImessage message, MessageContext ctx) return null; } - if (message.from == FROM_KEYBIND) + if (message.from == FROM_WEARING) { if (Wearing.isWearingBackpack(player)) { @@ -115,7 +115,6 @@ public IMessage onMessage(GUImessage message, MessageContext ctx) } } } - } return null; } diff --git a/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java b/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java index efa9b16f..2c1c1052 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java @@ -2,11 +2,14 @@ import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayerMP; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; import com.darkona.adventurebackpack.entity.EntityFriendlySpider; +import com.darkona.adventurebackpack.inventory.ContainerBackpack; +import com.darkona.adventurebackpack.inventory.IInventoryAdventureBackpack; import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; import com.darkona.adventurebackpack.util.Wearing; @@ -18,30 +21,53 @@ public class PlayerActionPacket implements IMessageHandler { - public static byte COPTER_ON_OFF = 0; - public static byte COPTER_TOGGLE = 1; - public static byte JETPACK_ON_OFF = 2; - public static byte CYCLING_ON_OFF = 3; - public static byte NIGHTVISION_ON_OFF = 4; + public static final byte COPTER_ON_OFF = 0; + public static final byte COPTER_TOGGLE = 1; + public static final byte JETPACK_ON_OFF = 2; + public static final byte CYCLING_ON_OFF = 3; + public static final byte NIGHTVISION_ON_OFF = 4; @Override public Message onMessage(Message message, MessageContext ctx) diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java index 781a3d49..1c9b8376 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java @@ -30,7 +30,7 @@ import com.darkona.adventurebackpack.config.Keybindings; import com.darkona.adventurebackpack.entity.EntityFriendlySpider; import com.darkona.adventurebackpack.entity.EntityInflatableBoat; -import com.darkona.adventurebackpack.handlers.KeybindHandler; +import com.darkona.adventurebackpack.handlers.KeyInputEventHandler; import com.darkona.adventurebackpack.handlers.RenderHandler; import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.init.ModItems; @@ -124,6 +124,6 @@ public void registerKeybindings() { ClientRegistry.registerKeyBinding(Keybindings.openInventory); ClientRegistry.registerKeyBinding(Keybindings.toggleActions); - FMLCommonHandler.instance().bus().register(new KeybindHandler()); + FMLCommonHandler.instance().bus().register(new KeyInputEventHandler()); } } diff --git a/src/main/java/com/darkona/adventurebackpack/util/Wearing.java b/src/main/java/com/darkona/adventurebackpack/util/Wearing.java index 79d0eec4..fc89edd9 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Wearing.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Wearing.java @@ -93,6 +93,11 @@ public static ItemStack getHoldingBackpack(EntityPlayer player) return isHoldingBackpack(player) ? player.inventory.getCurrentItem() : null; } + public static InventoryBackpack getHoldingBackpackInv(EntityPlayer player) + { + return new InventoryBackpack (player.getCurrentEquippedItem()); + } + // Copter public static boolean isWearingCopter(EntityPlayer player) { diff --git a/src/main/resources/assets/adventurebackpack/textures/backpack/Columbus.png b/src/main/resources/assets/adventurebackpack/textures/backpack/Columbus.png deleted file mode 100644 index 6bef10fdfa4afebdeffe4d068c58128462b3c3bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3655 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 diff --git a/src/main/resources/assets/adventurebackpack/textures/backpack/Germany.png b/src/main/resources/assets/adventurebackpack/textures/backpack/Germany.png deleted file mode 100644 index 6bef10fdfa4afebdeffe4d068c58128462b3c3bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3655 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 diff --git a/src/main/resources/assets/adventurebackpack/textures/backpack/Halloween.png b/src/main/resources/assets/adventurebackpack/textures/backpack/Halloween.png deleted file mode 100644 index 6bef10fdfa4afebdeffe4d068c58128462b3c3bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3655 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 diff --git a/src/main/resources/assets/adventurebackpack/textures/backpack/Italy.png b/src/main/resources/assets/adventurebackpack/textures/backpack/Italy.png deleted file mode 100644 index 68a6805549eeb933f946210ad2293a403d25a3b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3466 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 C#u{V* From 7060c101da5036be83c988b2976b4d53fb8bcad2 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 10 Jul 2017 14:52:14 +0700 Subject: [PATCH 396/462] Syncing holding packs (for tank visuals and tooltips) --- .../client/gui/GuiAdvBackpack.java | 50 ++++------- .../client/gui/GuiCoalJetpack.java | 39 ++++---- .../client/gui/GuiCopterPack.java | 24 ++--- .../handlers/TooltipEventHandler.java | 2 + .../inventory/ContainerBackpack.java | 90 +++++++++++++++---- .../inventory/ContainerCopter.java | 36 ++++++-- .../inventory/ContainerJetpack.java | 56 ++++++++++-- .../inventory/InventoryBackpack.java | 1 - .../network/PlayerActionPacket.java | 2 +- 9 files changed, 201 insertions(+), 99 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index 35ceacad..985fc2cc 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -29,51 +29,38 @@ @SideOnly(Side.CLIENT) public class GuiAdvBackpack extends GuiWithTanks { - protected IInventoryAdventureBackpack inventory; - protected boolean isTile; - protected boolean wearing; - protected int X; - protected int Y; - protected int Z; + private IInventoryAdventureBackpack inventory; + private boolean isTile; + private boolean isWearing; private boolean isHoldingSpace; private EntityPlayer player; - private static final ResourceLocation texture = Resources.guiTextures("guiBackpackNew"); + + private static final ResourceLocation TEXTURE = Resources.guiTextures("guiBackpackNew"); private static GuiImageButtonNormal bedButton = new GuiImageButtonNormal(5, 91, 18, 18); private static GuiImageButtonNormal equipButton = new GuiImageButtonNormal(5, 91, 18, 18); private static GuiImageButtonNormal unequipButton = new GuiImageButtonNormal(5, 91, 18, 18); private static GuiTank tankLeft = new GuiTank(25, 7, 100, 16, ConfigHandler.typeTankRender); private static GuiTank tankRight = new GuiTank(207, 7, 100, 16, ConfigHandler.typeTankRender); - private FluidTank lft; - private FluidTank rgt; - private int lefties; - private int topsies; public GuiAdvBackpack(EntityPlayer player, TileAdventureBackpack tileBackpack) { super(new ContainerBackpack(player, tileBackpack, ContainerBackpack.SOURCE_TILE)); - this.inventory = tileBackpack; - this.isTile = true; + this.player = player; + inventory = tileBackpack; + isTile = true; xSize = 248; ySize = 207; - this.X = tileBackpack.xCoord; - this.Y = tileBackpack.yCoord; - this.Z = tileBackpack.zCoord; - this.player = player; - this.lefties = guiLeft; - this.topsies = guiTop; } public GuiAdvBackpack(EntityPlayer player, InventoryBackpack inventoryBackpack, boolean wearing) { super(new ContainerBackpack(player, inventoryBackpack, wearing ? ContainerBackpack.SOURCE_WEARING : ContainerBackpack.SOURCE_HOLDING)); - this.inventory = inventoryBackpack; - this.wearing = wearing; - this.isTile = false; + this.player = player; + inventory = inventoryBackpack; + isWearing = wearing; + isTile = false; xSize = 248; ySize = 207; - this.player = player; - this.lefties = guiLeft; - this.topsies = guiTop; } @Override @@ -81,7 +68,7 @@ public void onGuiClosed() { if (inventory != null) { - inventory.closeInventory(); + inventory.closeInventory(); //TODO } super.onGuiClosed(); } @@ -91,7 +78,7 @@ protected void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) { GL11.glColor4f(1, 1, 1, 1); - this.mc.renderEngine.bindTexture(texture); + this.mc.renderEngine.bindTexture(TEXTURE); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); @@ -107,7 +94,7 @@ protected void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) } } else { - if (wearing) + if (isWearing) { if (unequipButton.inButton(this, mouseX, mouseY)) { @@ -146,8 +133,8 @@ protected void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { inventory.openInventory(); - lft = inventory.getLeftTank(); - rgt = inventory.getRightTank(); + FluidTank lft = inventory.getLeftTank(); + FluidTank rgt = inventory.getRightTank(); tankLeft.draw(this, lft); tankRight.draw(this, rgt); GL11.glDisable(GL11.GL_LIGHTING); @@ -214,7 +201,7 @@ protected void mouseClicked(int mouseX, int mouseY, int button) } } else { - if (wearing) + if (isWearing) { if (unequipButton.inButton(this, mouseX, mouseY)) { @@ -229,7 +216,6 @@ protected void mouseClicked(int mouseX, int mouseY, int button) //ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, Keyboard.isKeyDown(sneakKey))); player.closeScreen(); } - } } super.mouseClicked(mouseX, mouseY, button); diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java index 2ecb09fb..446e13a9 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java @@ -25,22 +25,23 @@ */ public class GuiCoalJetpack extends GuiWithTanks { - private static final ResourceLocation texture = Resources.guiTextures("guiCoalJetpack"); - private static GuiTank waterTank = new GuiTank(8, 8, 72, 16, ConfigHandler.typeTankRender); - private static GuiTank steamTank = new GuiTank(116, 8, 72, 16, ConfigHandler.typeTankRender); + private InventoryCoalJetpack inventory; + private int boiling = 0; + private boolean isWearing; + private EntityPlayer player; + + private static final ResourceLocation TEXTURE = Resources.guiTextures("guiCoalJetpack"); private static GuiImageButtonNormal equipButton = new GuiImageButtonNormal(150, 64, 18, 18); private static GuiImageButtonNormal unequipButton = new GuiImageButtonNormal(150, 64, 18, 18); - private boolean wearing; - EntityPlayer player; - InventoryCoalJetpack inventory; - int boiling = 0; + private static GuiTank waterTank = new GuiTank(8, 8, 72, 16, ConfigHandler.typeTankRender); + private static GuiTank steamTank = new GuiTank(116, 8, 72, 16, ConfigHandler.typeTankRender); - public GuiCoalJetpack(EntityPlayer player, InventoryCoalJetpack inventory, boolean wearing) + public GuiCoalJetpack(EntityPlayer player, InventoryCoalJetpack inv, boolean wearing) { - super(new ContainerJetpack(player, inventory, wearing)); - this.wearing = wearing; + super(new ContainerJetpack(player, inv, wearing)); this.player = player; - this.inventory = inventory; + inventory = inv; + isWearing = wearing; xSize = 176; ySize = 166; } @@ -49,10 +50,10 @@ public GuiCoalJetpack(EntityPlayer player, InventoryCoalJetpack inventory, boole protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int mouseX, int mouseY) { inventory.openInventory(); - this.mc.renderEngine.bindTexture(texture); + this.mc.renderEngine.bindTexture(TEXTURE); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - if (wearing) + if (isWearing) { if (unequipButton.inButton(this, mouseX, mouseY)) { @@ -71,14 +72,14 @@ protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int mouseX, in equipButton.draw(this, 1, 167); } } - //if (wearing) inventory = new InventoryCoalJetpack(Wearing.getWearingJetpack(player)); + //if (isWearing) inventory = new InventoryCoalJetpack(Wearing.getWearingJetpack(player)); } @Override protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { - this.mc.renderEngine.bindTexture(texture); - if (wearing) + this.mc.renderEngine.bindTexture(TEXTURE); + if (isWearing) inventory = new InventoryCoalJetpack(Wearing.getWearingJetpack(player)); FluidTank water = inventory.getWaterTank(); FluidTank steam = inventory.getSteamTank(); @@ -87,11 +88,13 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); if (inventory.isBoiling() && steam.getFluidAmount() < steam.getCapacity() && water.getFluidAmount() > 0) { - if (boiling < 83) + if (boiling < 83) //TODO here { drawTexturedModalRect(28, 40, 50, 172, boiling++, 37); } else + { boiling = 0; + } } if (inventory.getBurnTicks() > 0) { @@ -142,7 +145,7 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) protected void mouseClicked(int mouseX, int mouseY, int mouseButton) { //int sneakKey = Minecraft.getMinecraft().gameSettings.keyBindSneak.getKeyCode(); - if (wearing) + if (isWearing) { if (unequipButton.inButton(this, mouseX, mouseY)) { diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java index 0866f2c9..5cd2751a 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java @@ -24,32 +24,32 @@ public class GuiCopterPack extends GuiWithTanks { private InventoryCopterPack inventory; - private static final ResourceLocation texture = Resources.guiTextures("guiCopterPack"); - private static GuiTank fuelTank = new GuiTank(8, 8, 72, 32, ConfigHandler.typeTankRender); + private boolean isWearing; + private EntityPlayer player; + + private static final ResourceLocation TEXTURE = Resources.guiTextures("guiCopterPack"); private static GuiImageButtonNormal equipButton = new GuiImageButtonNormal(150, 64, 18, 18); private static GuiImageButtonNormal unequipButton = new GuiImageButtonNormal(150, 64, 18, 18); - - private boolean wearing; - EntityPlayer player; + private static GuiTank fuelTank = new GuiTank(8, 8, 72, 32, ConfigHandler.typeTankRender); public GuiCopterPack(EntityPlayer player, InventoryCopterPack inv, boolean wearing) { super(new ContainerCopter(player, inv, wearing)); - this.inventory = inv; + this.player = player; + inventory = inv; + isWearing = wearing; xSize = 176; ySize = 166; - this.wearing = wearing; - this.player = player; } @Override protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int mouseX, int mouseY) { GL11.glColor4f(1, 1, 1, 1); - this.mc.renderEngine.bindTexture(texture); + this.mc.renderEngine.bindTexture(TEXTURE); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - if (wearing) + if (isWearing) { if (unequipButton.inButton(this, mouseX, mouseY)) { @@ -123,7 +123,7 @@ public float getZLevel() protected void mouseClicked(int mouseX, int mouseY, int mouseButton) { //int sneakKey = Minecraft.getMinecraft().gameSettings.keyBindSneak.getKeyCode(); - if (wearing) + if (isWearing) { if (unequipButton.inButton(this, mouseX, mouseY)) { @@ -157,7 +157,7 @@ public void onGuiClosed() { if (inventory != null) { - inventory.closeInventory(); + inventory.closeInventory(); //TODO } super.onGuiClosed(); } diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java index 97b7f930..542327d5 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java @@ -215,6 +215,8 @@ else if (slotAtI == Constants.UPPER_TOOL) toolSlotU = true; else if (slotAtI == Constants.LOWER_TOOL) toolSlotL = true; + else + itemCount--; // this need for correct count while GUI is open and bucket slots may be occupied } itemCount -= (toolSlotU ? 1 : 0) + (toolSlotL ? 1 : 0); return toolSlotFormat(toolSlotU) + toolSlotFormat(toolSlotL) + " " + mainSlotsFormat(itemCount); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 5455e63f..cb4a960d 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -1,6 +1,7 @@ package com.darkona.adventurebackpack.inventory; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.InventoryCraftResult; @@ -28,22 +29,27 @@ public class ContainerBackpack extends ContainerAdventureBackpack implements IWe public static final byte SOURCE_TILE = 0; public static final byte SOURCE_WEARING = 1; public static final byte SOURCE_HOLDING = 2; - private final int - PLAYER_HOT_START = 0, - PLAYER_HOT_END = PLAYER_HOT_START + 8, - PLAYER_INV_START = PLAYER_HOT_END + 1, - PLAYER_INV_END = PLAYER_INV_START + 26, - BACK_INV_START = PLAYER_INV_END + 1, - BACK_INV_END = BACK_INV_START + 38, - TOOL_START = BACK_INV_END + 1, - TOOL_END = TOOL_START + 1, - BUCKET_LEFT = TOOL_END + 1, - BUCKET_RIGHT = BUCKET_LEFT + 2; - private IInventoryAdventureBackpack inventory; - private byte source; + + private static final int PLAYER_HOT_START = 0; + private static final int PLAYER_HOT_END = PLAYER_HOT_START + 8; + private static final int PLAYER_INV_START = PLAYER_HOT_END + 1; + private static final int PLAYER_INV_END = PLAYER_INV_START + 26; + private static final int BACK_INV_START = PLAYER_INV_END + 1; + private static final int BACK_INV_END = BACK_INV_START + 38; + private static final int TOOL_START = BACK_INV_END + 1; + private static final int TOOL_END = TOOL_START + 1; + private static final int BUCKET_LEFT = TOOL_END + 1; + private static final int BUCKET_RIGHT = BUCKET_LEFT + 2; + private InventoryCrafting craftMatrix = new InventoryCrafting(this, 3, 3); private IInventory craftResult = new InventoryCraftResult(); + private IInventoryAdventureBackpack inventory; private EntityPlayer player; + private byte source; + + private int leftAmount; + private int rightAmount; + private int invCount; //IDEA redesign container layout/craft slots behavior, so it will be rectangular and compatible with invTweaks. this also makes more slots available cuz craft ones will not drop content on close @@ -145,16 +151,62 @@ private void makeSlots(InventoryPlayer invPlayer) this.onCraftMatrixChanged(craftMatrix); } - /** - * Looks for changes made in the container, sends them to every listener. - */ @Override public void detectAndSendChanges() { + //refresh(); //TODO for? super.detectAndSendChanges(); - refresh(); //TODO + + if (source == SOURCE_HOLDING) + { + boolean changesDetected = false; + + ItemStack[] inv = inventory.getInventory(); + int tempCount = 0; + for (int i = 0; i <= LOWER_TOOL; i++) + { + if (inv[i] != null) + tempCount++; + } + if (invCount != tempCount) + { + invCount = tempCount; + changesDetected = true; + } + + if (leftAmount != inventory.getLeftTank().getFluidAmount()) + { + leftAmount = inventory.getLeftTank().getFluidAmount(); + changesDetected = true; + } + if (rightAmount != inventory.getRightTank().getFluidAmount()) + { + rightAmount = inventory.getRightTank().getFluidAmount(); + changesDetected = true; + } + + if (changesDetected) + { + if (player instanceof EntityPlayerMP) + { + ((EntityPlayerMP) player).sendContainerAndContentsToPlayer(this, this.getInventory()); + } + } + } } + /*@Override + @SideOnly(Side.CLIENT) + public void updateProgressBar(int par1, int par2) + { + super.updateProgressBar(par1, par2); + + *//*if (par1 == 77) + { + System.out.println("par2 = "+par2); + }*//* + }*/ + private boolean isHoldingSpace() { return inventory.getExtendedProperties().hasKey("holdingSpace"); @@ -163,7 +215,7 @@ private boolean isHoldingSpace() @Override public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) { - if (source == SOURCE_WEARING) refresh(); //TODO + if (source == SOURCE_WEARING) refresh(); //TODO why... Slot slot = getSlot(fromSlot); ItemStack result = null; @@ -314,7 +366,7 @@ public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) public void onContainerClosed(EntityPlayer player) { super.onContainerClosed(player); - if (source == SOURCE_WEARING) + if (source == SOURCE_WEARING) //TODO { this.crafters.remove(player); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java index ad88940e..9a156bd1 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java @@ -1,6 +1,7 @@ package com.darkona.adventurebackpack.inventory; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; @@ -16,15 +17,18 @@ */ public class ContainerCopter extends ContainerAdventureBackpack implements IWearableContainer { - private final int PLAYER_HOT_START = 0; - private final int PLAYER_HOT_END = PLAYER_HOT_START + 8; - private final int PLAYER_INV_START = PLAYER_HOT_END + 1; - private final int PLAYER_INV_END = PLAYER_INV_START + 26; - private final int COPTER_INV_START = PLAYER_INV_END + 1; - InventoryCopterPack inventory; + private static final int PLAYER_HOT_START = 0; + private static final int PLAYER_HOT_END = PLAYER_HOT_START + 8; + private static final int PLAYER_INV_START = PLAYER_HOT_END + 1; + private static final int PLAYER_INV_END = PLAYER_INV_START + 26; + private static final int COPTER_INV_START = PLAYER_INV_END + 1; + + private InventoryCopterPack inventory; private EntityPlayer player; private boolean wearing; + private int fuelAmount; + public ContainerCopter(EntityPlayer player, InventoryCopterPack copter, boolean wearing) { this.player = player; @@ -69,8 +73,26 @@ private void makeSlots(InventoryPlayer invPlayer) @Override public void detectAndSendChanges() { - refresh(); super.detectAndSendChanges(); + + if (!wearing) + { + boolean changesDetected = false; + + if (fuelAmount != inventory.getFuelTank().getFluidAmount()) + { + fuelAmount = inventory.getFuelTank().getFluidAmount(); + changesDetected = true; + } + + if (changesDetected) + { + if (player instanceof EntityPlayerMP) + { + ((EntityPlayerMP) player).sendContainerAndContentsToPlayer(this, this.getInventory()); + } + } + } } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java index c814e0a0..96e6a427 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java @@ -1,6 +1,7 @@ package com.darkona.adventurebackpack.inventory; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; @@ -8,6 +9,8 @@ import com.darkona.adventurebackpack.common.Constants; +import static com.darkona.adventurebackpack.common.Constants.JETPACK_FUEL_SLOT; + /** * Created on 15/01/2015 * @@ -15,16 +18,21 @@ */ public class ContainerJetpack extends ContainerAdventureBackpack implements IWearableContainer { - private final int PLAYER_HOT_START = 0; - private final int PLAYER_HOT_END = PLAYER_HOT_START + 8; - private final int PLAYER_INV_START = PLAYER_HOT_END + 1; - private final int PLAYER_INV_END = PLAYER_INV_START + 26; - private final int JETPACK_INV_START = PLAYER_INV_END + 1; - private final int JETPACK_FUEL_START = PLAYER_INV_END + 3; - InventoryCoalJetpack inventory; + private static final int PLAYER_HOT_START = 0; + private static final int PLAYER_HOT_END = PLAYER_HOT_START + 8; + private static final int PLAYER_INV_START = PLAYER_HOT_END + 1; + private static final int PLAYER_INV_END = PLAYER_INV_START + 26; + private static final int JETPACK_INV_START = PLAYER_INV_END + 1; + private static final int JETPACK_FUEL_START = PLAYER_INV_END + 3; + + private InventoryCoalJetpack inventory; private EntityPlayer player; private boolean wearing; + private int waterAmount; + private int steamAmount; + private ItemStack fuelStack; + public ContainerJetpack(EntityPlayer player, InventoryCoalJetpack jetpack, boolean wearing) { this.player = player; @@ -65,14 +73,44 @@ private void makeSlots(InventoryPlayer invPlayer) // bucket out addSlotToContainer(new SlotFluidWater(inventory, Constants.JETPACK_BUCKET_OUT, 30, 52)); // fuel - addSlotToContainer(new SlotFuel(inventory, Constants.JETPACK_FUEL_SLOT, 77, 64)); + addSlotToContainer(new SlotFuel(inventory, JETPACK_FUEL_SLOT, 77, 64)); } @Override public void detectAndSendChanges() { - refresh(); super.detectAndSendChanges(); + + if (!wearing) + { + boolean changesDetected = false; + + ItemStack[] inv = inventory.getInventory(); + if (inv[JETPACK_FUEL_SLOT] != fuelStack) + { + fuelStack = inv[JETPACK_FUEL_SLOT]; + changesDetected = true; + } + + if (waterAmount != inventory.getWaterTank().getFluidAmount()) + { + waterAmount = inventory.getWaterTank().getFluidAmount(); + changesDetected = true; + } + if (steamAmount != inventory.getSteamTank().getFluidAmount()) + { + steamAmount = inventory.getSteamTank().getFluidAmount(); + changesDetected = true; + } + + if (changesDetected) + { + if (player instanceof EntityPlayerMP) + { + ((EntityPlayerMP) player).sendContainerAndContentsToPlayer(this, this.getInventory()); + } + } + } } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index 3a03d42b..51fc8643 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -43,7 +43,6 @@ public class InventoryBackpack implements IInventoryAdventureBackpack private String colorName = "Standard"; private ItemStack containerStack; - //TODO is inventory saved while GUI is open? can we sync it in realtime like tanks *sometimes* does? related to jetpack boiling while GIU open? public InventoryBackpack(ItemStack backpack) { containerStack = backpack; diff --git a/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java b/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java index 2c1c1052..34798f12 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java @@ -64,7 +64,7 @@ public IMessage onMessage(ActionMessage message, MessageContext ctx) { inv.getExtendedProperties().removeTag("holdingSpace"); } - inv.dirtyExtended(); + //inv.dirtyExtended(); } } } From 61f2d603cd037e52ecfbd7d63dfd188fda703273 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Fri, 14 Jul 2017 19:17:24 +0700 Subject: [PATCH 397/462] Move things around --- .../adventurebackpack/CreativeTabAB.java | 4 +- .../client/gui/GuiAdvBackpack.java | 15 +--- .../client/gui/GuiCopterPack.java | 10 --- .../client/gui/GuiOverlay.java | 4 +- .../config/ConfigHandler.java | 6 -- .../adventurebackpack/init/ModDates.java | 6 +- .../inventory/ContainerAdventureBackpack.java | 23 +++++ .../inventory/ContainerBackpack.java | 89 +++++-------------- .../inventory/ContainerCopter.java | 50 +++-------- .../inventory/ContainerJetpack.java | 52 +++-------- .../adventurebackpack/item/ItemAB.java | 6 +- .../adventurebackpack/item/ToolAB.java | 4 +- .../network/PlayerActionPacket.java | 1 - .../adventurebackpack/reference/ModInfo.java | 6 +- .../adventurebackpack/util/Resources.java | 2 +- 15 files changed, 85 insertions(+), 193 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/CreativeTabAB.java b/src/main/java/com/darkona/adventurebackpack/CreativeTabAB.java index 5361e8c6..fb063c75 100644 --- a/src/main/java/com/darkona/adventurebackpack/CreativeTabAB.java +++ b/src/main/java/com/darkona/adventurebackpack/CreativeTabAB.java @@ -13,7 +13,7 @@ */ public class CreativeTabAB { - public static final CreativeTabs ADVENTURE_BACKPACK_CREATIVE_TAB = new CreativeTabs(ModInfo.MOD_ID.toLowerCase()) + public static final CreativeTabs ADVENTURE_BACKPACK_CREATIVE_TAB = new CreativeTabs(ModInfo.MOD_ID) { @Override public Item getTabIconItem() @@ -30,7 +30,7 @@ public String getTranslatedTabLabel() @Override public String getTabLabel() { - return ModInfo.MOD_ID.toLowerCase(); + return ModInfo.MOD_ID; } }; } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index 985fc2cc..10511a02 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -63,16 +63,6 @@ public GuiAdvBackpack(EntityPlayer player, InventoryBackpack inventoryBackpack, ySize = 207; } - @Override - public void onGuiClosed() - { - if (inventory != null) - { - inventory.closeInventory(); //TODO - } - super.onGuiClosed(); - } - @Override protected void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) { @@ -234,6 +224,8 @@ protected void keyTyped(char key, int keycode) @Override public void updateScreen() { + super.updateScreen(); + if (!isHoldingSpace) { if (Keyboard.isKeyDown(Keyboard.KEY_SPACE)) @@ -241,7 +233,6 @@ public void updateScreen() isHoldingSpace = true; ModNetwork.net.sendToServer(new PlayerActionPacket.ActionMessage(PlayerActionPacket.GUI_HOLDING_SPACE)); inventory.getExtendedProperties().setBoolean("holdingSpace", true); - //inventory.dirtyExtended(); } } else { @@ -250,9 +241,7 @@ public void updateScreen() isHoldingSpace = false; ModNetwork.net.sendToServer(new PlayerActionPacket.ActionMessage(PlayerActionPacket.GUI_NOT_HOLDING_SPACE)); inventory.getExtendedProperties().removeTag("holdingSpace"); - //inventory.dirtyExtended(); } } - super.updateScreen(); } } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java index 5cd2751a..ebf32db7 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java @@ -151,14 +151,4 @@ protected void keyTyped(char key, int keycode) } super.keyTyped(key, keycode); } - - @Override - public void onGuiClosed() - { - if (inventory != null) - { - inventory.closeInventory(); //TODO - } - super.onGuiClosed(); - } } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java index 5f5638b2..80df193a 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java @@ -136,7 +136,7 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); for (FluidTank tank : inv.getTanksArray()) { - mc.renderEngine.bindTexture(new ResourceLocation(ModInfo.MOD_ID.toLowerCase(), "textures/gui/overlay.png")); + mc.renderEngine.bindTexture(new ResourceLocation(ModInfo.MOD_ID, "textures/gui/overlay.png")); drawTexturedModalRect(tankX, yPos, 10, 0, textureWidth, textureHeight); drawTank(tank, tankX + 1, yPos + 1, textureHeight - 2, textureWidth - 2); ++tankX; @@ -158,7 +158,7 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) u[0] = (tank == 0) ? 0 : 10; u[1] = (tank == 1) ? 0 : 10; } - mc.renderEngine.bindTexture(new ResourceLocation(ModInfo.MOD_ID.toLowerCase(), "textures/gui/overlay.png")); + mc.renderEngine.bindTexture(new ResourceLocation(ModInfo.MOD_ID, "textures/gui/overlay.png")); drawTexturedModalRect(xStart[0], yStart[0], u[0], v[0], textureWidth, textureHeight); //Left Tank drawTexturedModalRect(xStart[1], yStart[0], u[1], v[1], textureWidth, textureHeight); //Right Tank RenderHelper.enableStandardItemLighting(); diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 99d1b521..822441a1 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -15,7 +15,6 @@ */ public class ConfigHandler { - //public static final String configVersion = "1.0.0"; public static Configuration config; public static boolean IS_DEVENV = false; @@ -208,9 +207,4 @@ public void onConfigChangeEvent(ConfigChangedEvent.OnConfigChangedEvent event) loadConfiguration(); } } - - /*private static boolean isConfigVersionWrong(Configuration configuration) - { - return !configuration.getLoadedConfigVersion().equals(configuration.getDefinedConfigVersion()); - }*/ } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModDates.java b/src/main/java/com/darkona/adventurebackpack/init/ModDates.java index 0d0b364a..fd7e1166 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModDates.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModDates.java @@ -7,7 +7,7 @@ */ public class ModDates { - private static String Holiday; + private static String holiday; private static int year = Calendar.getInstance().get(Calendar.YEAR); private static int month = Calendar.getInstance().get(Calendar.MONTH) + 1; @@ -15,12 +15,12 @@ public class ModDates public static void init() { - Holiday = setHoliday(); + holiday = setHoliday(); } public static String getHoliday() { - return Holiday; + return holiday; } private static String setHoliday() diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java index 6d5777d1..7b495e81 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java @@ -1,5 +1,6 @@ package com.darkona.adventurebackpack.inventory; +import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; @@ -9,8 +10,30 @@ * * @author Ugachaga */ +@SuppressWarnings("WeakerAccess") abstract class ContainerAdventureBackpack extends Container { + protected static final int PLAYER_HOT_START = 0; + protected static final int PLAYER_HOT_END = PLAYER_HOT_START + 8; + protected static final int PLAYER_INV_START = PLAYER_HOT_END + 1; + protected static final int PLAYER_INV_END = PLAYER_INV_START + 26; + + protected void bindPlayerInventory(InventoryPlayer invPlayer, int startX, int startY) + { + for (int x = 0; x < 9; x++) // hotbar - 9 slots + { + addSlotToContainer(new Slot(invPlayer, x, (startX + 18 * x), (58 + startY))); + } + + for (int y = 0; y < 3; y++) // inventory - 9*3, 27 slots + { + for (int x = 0; x < 9; x++) + { + addSlotToContainer(new Slot(invPlayer, (x + y * 9 + 9), (startX + 18 * x), (startY + y * 18))); + } + } + } // total 36 slots + @Override protected boolean mergeItemStack(ItemStack initStack, int minIndex, int maxIndex, boolean backward) { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index cb4a960d..334b5ebb 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -24,16 +24,12 @@ * * @author Darkona */ -public class ContainerBackpack extends ContainerAdventureBackpack implements IWearableContainer +public class ContainerBackpack extends ContainerAdventureBackpack /*implements IWearableContainer*/ { public static final byte SOURCE_TILE = 0; public static final byte SOURCE_WEARING = 1; public static final byte SOURCE_HOLDING = 2; - private static final int PLAYER_HOT_START = 0; - private static final int PLAYER_HOT_END = PLAYER_HOT_START + 8; - private static final int PLAYER_INV_START = PLAYER_HOT_END + 1; - private static final int PLAYER_INV_END = PLAYER_INV_START + 26; private static final int BACK_INV_START = PLAYER_INV_END + 1; private static final int BACK_INV_END = BACK_INV_START + 38; private static final int TOOL_START = BACK_INV_END + 1; @@ -67,39 +63,15 @@ public IInventoryAdventureBackpack getInventoryBackpack() return inventory; } - private void bindPlayerInventory(InventoryPlayer invPlayer) - { - int startX = 44; - int startY = 125; - - // Player's Hotbar - for (int x = 0; x < 9; x++) - { - addSlotToContainer(new Slot(invPlayer, x, startX + 18 * x, 183)); - } - - // Player's Inventory - for (int y = 0; y < 3; y++) - { - for (int x = 0; x < 9; x++) - { - addSlotToContainer(new Slot(invPlayer, (x + y * 9 + 9), (startX + 18 * x), (startY + y * 18))); - } - } - //Total 36 slots - } - private void makeSlots(InventoryPlayer invPlayer) { - bindPlayerInventory(invPlayer); + bindPlayerInventory(invPlayer, 44, 125); - // Backpack Inventory int startX = 62; int startY = 7; int slot = 0; - // 24 Slots - for (int i = 0; i < 3; i++) + for (int i = 0; i < 3; i++) // upper 8*3, 24 Slots { for (int j = 0; j < 8; j++) { @@ -109,9 +81,8 @@ private void makeSlots(InventoryPlayer invPlayer) } } - // 15 Slots startY = 61; - for (int i = 0; i < 3; i++) + for (int i = 0; i < 3; i++) // lower 5*3, 15 Slots { for (int j = 0; j < 5; j++) { @@ -121,24 +92,16 @@ private void makeSlots(InventoryPlayer invPlayer) } } - //Upper Tool Slot - addSlotToContainer(new SlotTool(inventory, UPPER_TOOL, 44, 79));// Upper Tool 16 - //Lower Tool slot - addSlotToContainer(new SlotTool(inventory, LOWER_TOOL, 44, 97));// Lower Tool 17 - - //Bucket Slots - // bucket in left 18 - addSlotToContainer(new SlotFluid(inventory, BUCKET_IN_LEFT, 6, 7)); - // bucket out left 19 - addSlotToContainer(new SlotFluid(inventory, BUCKET_OUT_LEFT, 6, 37)); - // bucket in right 20 - addSlotToContainer(new SlotFluid(inventory, BUCKET_IN_RIGHT, 226, 7)); - // bucket out right 21 - addSlotToContainer(new SlotFluid(inventory, BUCKET_OUT_RIGHT, 226, 37)); - - //Craft Matrix + addSlotToContainer(new SlotTool(inventory, UPPER_TOOL, 44, 79)); // #16 + addSlotToContainer(new SlotTool(inventory, LOWER_TOOL, 44, 97)); // #17 + + addSlotToContainer(new SlotFluid(inventory, BUCKET_IN_LEFT, 6, 7)); // #18 + addSlotToContainer(new SlotFluid(inventory, BUCKET_OUT_LEFT, 6, 37)); // #19 + addSlotToContainer(new SlotFluid(inventory, BUCKET_IN_RIGHT, 226, 7)); // #20 + addSlotToContainer(new SlotFluid(inventory, BUCKET_OUT_RIGHT, 226, 37)); // #21 + startX = 152; - for (int y = 0; y < 3; y++) + for (int y = 0; y < 3; y++) // Craft Matrix - 3*3, 9 slots { for (int x = 0; x < 3; x++) { @@ -154,10 +117,9 @@ private void makeSlots(InventoryPlayer invPlayer) @Override public void detectAndSendChanges() { - //refresh(); //TODO for? super.detectAndSendChanges(); - if (source == SOURCE_HOLDING) + if (source == SOURCE_HOLDING) // used for refresh tooltips and redraw tanks content while GUI is open { boolean changesDetected = false; @@ -195,18 +157,6 @@ public void detectAndSendChanges() } } - /*@Override - @SideOnly(Side.CLIENT) - public void updateProgressBar(int par1, int par2) - { - super.updateProgressBar(par1, par2); - - *//*if (par1 == 77) - { - System.out.println("par2 = "+par2); - }*//* - }*/ - private boolean isHoldingSpace() { return inventory.getExtendedProperties().hasKey("holdingSpace"); @@ -215,7 +165,6 @@ private boolean isHoldingSpace() @Override public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) { - if (source == SOURCE_WEARING) refresh(); //TODO why... Slot slot = getSlot(fromSlot); ItemStack result = null; @@ -242,7 +191,7 @@ public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) } } - } else if (!isHoldingSpace() && SlotFluid.isContainer(stack)) + } else if (SlotFluid.isContainer(stack) && !isHoldingSpace()) { ItemStack rightOutStack = getSlot(BUCKET_RIGHT + 1).getStack(); ItemStack leftOutStack = getSlot(BUCKET_LEFT + 1).getStack(); @@ -366,10 +315,12 @@ public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) public void onContainerClosed(EntityPlayer player) { super.onContainerClosed(player); - if (source == SOURCE_WEARING) //TODO + + if (source == SOURCE_WEARING) //TODO no idea why this is here (preventing dupe on closing?), and why only for wearing { this.crafters.remove(player); } + if (!player.worldObj.isRemote) { for (int i = 0; i < inventory.getSizeInventory(); i++) @@ -405,10 +356,10 @@ public boolean canInteractWith(EntityPlayer player) return inventory.isUseableByPlayer(player); } - @Override + /*@Override public void refresh() { inventory.openInventory(); this.onCraftMatrixChanged(craftMatrix); - } + }*/ } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java index 9a156bd1..1f24af07 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java @@ -15,17 +15,13 @@ * * @author Darkona */ -public class ContainerCopter extends ContainerAdventureBackpack implements IWearableContainer +public class ContainerCopter extends ContainerAdventureBackpack /*implements IWearableContainer*/ { - private static final int PLAYER_HOT_START = 0; - private static final int PLAYER_HOT_END = PLAYER_HOT_START + 8; - private static final int PLAYER_INV_START = PLAYER_HOT_END + 1; - private static final int PLAYER_INV_END = PLAYER_INV_START + 26; private static final int COPTER_INV_START = PLAYER_INV_END + 1; private InventoryCopterPack inventory; private EntityPlayer player; - private boolean wearing; + private boolean isWearing; private int fuelAmount; @@ -35,38 +31,14 @@ public ContainerCopter(EntityPlayer player, InventoryCopterPack copter, boolean inventory = copter; makeSlots(player.inventory); inventory.openInventory(); - this.wearing = wearing; - } - - private void bindPlayerInventory(InventoryPlayer invPlayer) - { - int startX = 8; - int startY = 84; - - // Player's Hotbar - for (int x = 0; x < 9; x++) - { - addSlotToContainer(new Slot(invPlayer, x, startX + 18 * x, 142)); - } - - // Player's Inventory - for (int y = 0; y < 3; y++) - { - for (int x = 0; x < 9; x++) - { - addSlotToContainer(new Slot(invPlayer, (x + y * 9 + 9), (startX + 18 * x), (startY + y * 18))); - } - } - //Total 36 slots + isWearing = wearing; } private void makeSlots(InventoryPlayer invPlayer) { - bindPlayerInventory(invPlayer); - //Bucket Slots - // bucket in + bindPlayerInventory(invPlayer, 8, 84); + addSlotToContainer(new SlotFluidFuel(inventory, COPTER_BUCKET_IN, 44, 23)); - // bucket out addSlotToContainer(new SlotFluidFuel(inventory, COPTER_BUCKET_OUT, 44, 53)); } @@ -75,7 +47,7 @@ public void detectAndSendChanges() { super.detectAndSendChanges(); - if (!wearing) + if (!isWearing) { boolean changesDetected = false; @@ -173,7 +145,7 @@ public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) @Override public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) { - if (!wearing && slot >= 0) + if (!isWearing && slot >= 0) { if (getSlot(slot) != null && getSlot(slot).getStack() == player.getHeldItem()) { @@ -191,10 +163,12 @@ public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) public void onContainerClosed(EntityPlayer player) { super.onContainerClosed(player); - if (wearing) + + if (isWearing) //TODO { this.crafters.remove(player); } + if (!player.worldObj.isRemote) { for (int i = 0; i < inventory.getSizeInventory(); i++) @@ -215,9 +189,9 @@ public boolean canInteractWith(EntityPlayer p_75145_1_) return true; } - @Override + /*@Override public void refresh() { inventory.openInventory(); - } + }*/ } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java index 96e6a427..a764a73f 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java @@ -16,18 +16,14 @@ * * @author Darkona */ -public class ContainerJetpack extends ContainerAdventureBackpack implements IWearableContainer +public class ContainerJetpack extends ContainerAdventureBackpack /*implements IWearableContainer*/ { - private static final int PLAYER_HOT_START = 0; - private static final int PLAYER_HOT_END = PLAYER_HOT_START + 8; - private static final int PLAYER_INV_START = PLAYER_HOT_END + 1; - private static final int PLAYER_INV_END = PLAYER_INV_START + 26; private static final int JETPACK_INV_START = PLAYER_INV_END + 1; private static final int JETPACK_FUEL_START = PLAYER_INV_END + 3; private InventoryCoalJetpack inventory; private EntityPlayer player; - private boolean wearing; + private boolean isWearing; private int waterAmount; private int steamAmount; @@ -39,40 +35,15 @@ public ContainerJetpack(EntityPlayer player, InventoryCoalJetpack jetpack, boole inventory = jetpack; makeSlots(player.inventory); inventory.openInventory(); - this.wearing = wearing; - } - - private void bindPlayerInventory(InventoryPlayer invPlayer) - { - int startX = 8; - int startY = 84; - - // Player's Hotbar - for (int x = 0; x < 9; x++) - { - addSlotToContainer(new Slot(invPlayer, x, startX + 18 * x, 142)); - } - - // Player's Inventory - for (int y = 0; y < 3; y++) - { - for (int x = 0; x < 9; x++) - { - addSlotToContainer(new Slot(invPlayer, (x + y * 9 + 9), (startX + 18 * x), (startY + y * 18))); - } - } - //Total 36 slots + isWearing = wearing; } private void makeSlots(InventoryPlayer invPlayer) { - bindPlayerInventory(invPlayer); - //Bucket Slots - // bucket in + bindPlayerInventory(invPlayer, 8, 84); + addSlotToContainer(new SlotFluidWater(inventory, Constants.JETPACK_BUCKET_IN, 30, 22)); - // bucket out addSlotToContainer(new SlotFluidWater(inventory, Constants.JETPACK_BUCKET_OUT, 30, 52)); - // fuel addSlotToContainer(new SlotFuel(inventory, JETPACK_FUEL_SLOT, 77, 64)); } @@ -81,7 +52,7 @@ public void detectAndSendChanges() { super.detectAndSendChanges(); - if (!wearing) + if (!isWearing) { boolean changesDetected = false; @@ -116,7 +87,6 @@ public void detectAndSendChanges() @Override public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) { - refresh(); Slot slot = getSlot(fromSlot); ItemStack result = null; @@ -199,7 +169,7 @@ public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) @Override public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) { - if (!wearing && slot >= 0) + if (!isWearing && slot >= 0) { if (getSlot(slot) != null && getSlot(slot).getStack() == player.getHeldItem()) { @@ -217,10 +187,12 @@ public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) public void onContainerClosed(EntityPlayer player) { super.onContainerClosed(player); - if (wearing) + + if (isWearing) //TODO { this.crafters.remove(player); } + if (!player.worldObj.isRemote) { for (int i = 0; i < inventory.getSizeInventory(); i++) @@ -241,9 +213,9 @@ public boolean canInteractWith(EntityPlayer p_75145_1_) return true; } - @Override + /*@Override public void refresh() { inventory.openInventory(); - } + }*/ } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAB.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAB.java index 19f42d76..5098fd05 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAB.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAB.java @@ -23,18 +23,18 @@ public class ItemAB extends Item @Override public String getUnlocalizedName(ItemStack stack) { - return String.format("item.%s%s", ModInfo.MOD_ID.toLowerCase() + ":", getUnwrappedUnlocalizedName(super.getUnlocalizedName())); + return String.format("item.%s%s", ModInfo.MOD_ID + ":", getUnwrappedUnlocalizedName(super.getUnlocalizedName())); } @Override public String getUnlocalizedName() { - return String.format("item.%s%s", ModInfo.MOD_ID.toLowerCase() + ":", getUnwrappedUnlocalizedName(super.getUnlocalizedName())); + return String.format("item.%s%s", ModInfo.MOD_ID + ":", getUnwrappedUnlocalizedName(super.getUnlocalizedName())); } public String getUnlocalizedName(String name) { - return String.format("item.%s%s", ModInfo.MOD_ID.toLowerCase() + ":", name); + return String.format("item.%s%s", ModInfo.MOD_ID + ":", name); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/item/ToolAB.java b/src/main/java/com/darkona/adventurebackpack/item/ToolAB.java index 5d9f7f3d..aa4a6b9e 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ToolAB.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ToolAB.java @@ -32,13 +32,13 @@ public Item setCreativeTab(CreativeTabs tab) @Override public String getUnlocalizedName(ItemStack stack) { - return String.format("item.%s%s", ModInfo.MOD_ID.toLowerCase() + ":", getUnwrappedUnlocalizedName(super.getUnlocalizedName())); + return String.format("item.%s%s", ModInfo.MOD_ID + ":", getUnwrappedUnlocalizedName(super.getUnlocalizedName())); } @Override public String getUnlocalizedName() { - return String.format("item.%s%s", ModInfo.MOD_ID.toLowerCase() + ":", getUnwrappedUnlocalizedName(super.getUnlocalizedName())); + return String.format("item.%s%s", ModInfo.MOD_ID + ":", getUnwrappedUnlocalizedName(super.getUnlocalizedName())); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java b/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java index 34798f12..7bf12867 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java @@ -64,7 +64,6 @@ public IMessage onMessage(ActionMessage message, MessageContext ctx) { inv.getExtendedProperties().removeTag("holdingSpace"); } - //inv.dirtyExtended(); } } } diff --git a/src/main/java/com/darkona/adventurebackpack/reference/ModInfo.java b/src/main/java/com/darkona/adventurebackpack/reference/ModInfo.java index 95225c07..5970249d 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/ModInfo.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/ModInfo.java @@ -5,11 +5,11 @@ */ public class ModInfo { + public static final String MOD_ID = "adventurebackpack"; // must be lowercase public static final String MOD_NAME = "Adventure Backpack"; public static final String MOD_VERSION = "@VERSION@"; - public static final String MOD_ID = "adventurebackpack"; - public static final String MOD_CHANNEL = "advBackpackChan"; - public static final String MOD_CLIENT_PROXY = "com.darkona.adventurebackpack.proxy.ClientProxy"; public static final String GUI_FACTORY_CLASS = "com.darkona.adventurebackpack.client.gui.GuiFactory"; + public static final String MOD_CLIENT_PROXY = "com.darkona.adventurebackpack.proxy.ClientProxy"; public static final String MOD_SERVER_PROXY = "com.darkona.adventurebackpack.proxy.ServerProxy"; + public static final String MOD_CHANNEL = "advBackpackChan"; } diff --git a/src/main/java/com/darkona/adventurebackpack/util/Resources.java b/src/main/java/com/darkona/adventurebackpack/util/Resources.java index f6e2a3b0..7dae11a5 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Resources.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Resources.java @@ -14,7 +14,7 @@ */ public class Resources { - public static final String TEXTURE_LOCATION = ModInfo.MOD_ID.toLowerCase(); + private static final String TEXTURE_LOCATION = ModInfo.MOD_ID; public static String modelTextureResourceString(String name) { From e6a9a2e77b6cb4ead8afb8dd44e720245d691e79 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Fri, 14 Jul 2017 19:18:00 +0700 Subject: [PATCH 398/462] And this too --- .../adventurebackpack/item/ArmorAB.java | 2 +- .../adventurebackpack/proxy/ClientProxy.java | 41 +++++++------------ .../adventurebackpack/proxy/CommonProxy.java | 31 -------------- 3 files changed, 16 insertions(+), 58 deletions(-) delete mode 100644 src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java diff --git a/src/main/java/com/darkona/adventurebackpack/item/ArmorAB.java b/src/main/java/com/darkona/adventurebackpack/item/ArmorAB.java index 9dc4c3ec..da812d36 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ArmorAB.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ArmorAB.java @@ -43,7 +43,7 @@ public String getUnlocalizedName(ItemStack stack) @Override public String getUnlocalizedName() { - return String.format("item.%s%s", ModInfo.MOD_ID.toLowerCase() + ":", getUnwrappedUnlocalizedName(super.getUnlocalizedName())); + return String.format("item.%s%s", ModInfo.MOD_ID + ":", getUnwrappedUnlocalizedName(super.getUnlocalizedName())); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java index 1c9b8376..bebcc25a 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java @@ -44,16 +44,9 @@ */ public class ClientProxy implements IProxy { - public static RendererItemAdventureBackpack rendererItemAdventureBackpack; - public static RendererItemAdventureHat rendererItemAdventureHat; - public static RendererHose rendererHose; - public static RendererWearableEquipped rendererWearableEquipped; - public static RenderHandler renderHandler; - public static RendererInflatableBoat renderInflatableBoat; - public static RenderRideableSpider renderRideableSpider; - public static RendererItemClockworkCrossbow renderCrossbow; - public static ModelCoalJetpack modelCoalJetpack = new ModelCoalJetpack(); + public static RendererWearableEquipped rendererWearableEquipped = new RendererWearableEquipped(); public static ModelBackpackArmor modelAdventureBackpack = new ModelBackpackArmor(); + public static ModelCoalJetpack modelCoalJetpack = new ModelCoalJetpack(); public static ModelCopterPack modelCopterPack = new ModelCopterPack(); @Override @@ -80,43 +73,39 @@ public void joinPlayer(EntityPlayer player) public void synchronizePlayer(int id, NBTTagCompound properties) { Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(id); + if (Utils.notNullAndInstanceOf(entity, EntityPlayer.class) && properties != null) { EntityPlayer player = (EntityPlayer) entity; - if (BackpackProperty.get(player) == null) BackpackProperty.register(player); + + if (BackpackProperty.get(player) == null) + BackpackProperty.register(player); + BackpackProperty.get(player).loadNBTData(properties); } } private void initRenderers() { - renderHandler = new RenderHandler(); - MinecraftForge.EVENT_BUS.register(renderHandler); - rendererWearableEquipped = new RendererWearableEquipped(); + MinecraftForge.EVENT_BUS.register(new RenderHandler()); - rendererItemAdventureBackpack = new RendererItemAdventureBackpack(); - MinecraftForgeClient.registerItemRenderer(ModItems.adventureBackpack, rendererItemAdventureBackpack); - MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(ModBlocks.blockBackpack), rendererItemAdventureBackpack); + MinecraftForgeClient.registerItemRenderer(ModItems.adventureBackpack, new RendererItemAdventureBackpack()); + MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(ModBlocks.blockBackpack), new RendererItemAdventureBackpack()); ClientRegistry.bindTileEntitySpecialRenderer(TileAdventureBackpack.class, new RendererAdventureBackpackBlock()); - rendererItemAdventureHat = new RendererItemAdventureHat(); - MinecraftForgeClient.registerItemRenderer(ModItems.adventureHat, rendererItemAdventureHat); + MinecraftForgeClient.registerItemRenderer(ModItems.adventureHat, new RendererItemAdventureHat()); if (!ConfigHandler.tanksOverlay) { - rendererHose = new RendererHose(); - MinecraftForgeClient.registerItemRenderer(ModItems.hose, rendererHose); + MinecraftForgeClient.registerItemRenderer(ModItems.hose, new RendererHose()); } ClientRegistry.bindTileEntitySpecialRenderer(TileCampfire.class, new RendererCampFire()); - renderInflatableBoat = new RendererInflatableBoat(); - RenderingRegistry.registerEntityRenderingHandler(EntityInflatableBoat.class, renderInflatableBoat); - renderRideableSpider = new RenderRideableSpider(); - RenderingRegistry.registerEntityRenderingHandler(EntityFriendlySpider.class, renderRideableSpider); + RenderingRegistry.registerEntityRenderingHandler(EntityInflatableBoat.class, new RendererInflatableBoat()); + RenderingRegistry.registerEntityRenderingHandler(EntityFriendlySpider.class, new RenderRideableSpider()); - renderCrossbow = new RendererItemClockworkCrossbow(); - MinecraftForgeClient.registerItemRenderer(ModItems.cwxbow, renderCrossbow); + MinecraftForgeClient.registerItemRenderer(ModItems.cwxbow, new RendererItemClockworkCrossbow()); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java deleted file mode 100644 index efca0e37..00000000 --- a/src/main/java/com/darkona/adventurebackpack/proxy/CommonProxy.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.darkona.adventurebackpack.proxy; - -import net.minecraft.entity.player.EntityPlayerMP; -import cpw.mods.fml.common.gameevent.TickEvent.PlayerTickEvent; -import cpw.mods.fml.relauncher.Side; - -public abstract class CommonProxy implements IProxy -{ - private EntityPlayerMP player; - - public void serverTick(PlayerTickEvent event) - { - { - if (event.side == Side.SERVER) - { - setPlayer((EntityPlayerMP) event.player); - } - } - - } - - public EntityPlayerMP getPlayer() - { - return player; - } - - public void setPlayer(EntityPlayerMP player) - { - this.player = player; - } -} \ No newline at end of file From d8a4b82a284dc90313aa5d35d283e39e76cb5719 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sat, 15 Jul 2017 21:31:23 +0700 Subject: [PATCH 399/462] Made transferStackInSlot human-readable More clean-up --- .../block/TileAdventureBackpack.java | 15 +- .../client/gui/GuiAdvBackpack.java | 38 +-- .../client/gui/GuiCoalJetpack.java | 30 +-- .../client/gui/GuiCopterPack.java | 27 +-- .../client/gui/GuiWithTanks.java | 2 +- .../inventory/ContainerAdventureBackpack.java | 55 ++++- .../inventory/ContainerBackpack.java | 226 +++++++----------- .../inventory/ContainerCopter.java | 96 +++----- .../inventory/ContainerJetpack.java | 109 +++------ .../inventory/InventoryAdventureBackpack.java | 62 +++++ .../inventory/InventoryBackpack.java | 65 +---- .../inventory/InventoryCoalJetpack.java | 56 +---- .../inventory/InventoryCopterPack.java | 56 +---- .../inventory/SlotFluid.java | 20 ++ 14 files changed, 336 insertions(+), 521 deletions(-) create mode 100644 src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventureBackpack.java diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index a4e39286..71ed7903 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -26,6 +26,7 @@ import com.darkona.adventurebackpack.inventory.InventoryActions; import com.darkona.adventurebackpack.inventory.SlotBackpack; import com.darkona.adventurebackpack.inventory.SlotTool; +import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.util.BackpackUtils; import com.darkona.adventurebackpack.util.Utils; import com.darkona.adventurebackpack.util.Wearing; @@ -261,14 +262,14 @@ public void readFromNBT(NBTTagCompound compound) @Override public void writeToNBT(NBTTagCompound compound) { + super.writeToNBT(compound); + saveToNBT(compound); compound.setBoolean("sleepingbag", sleepingBagDeployed); compound.setInteger("sbx", sbx); compound.setInteger("sby", sby); compound.setInteger("sbz", sbz); - compound.setInteger("lumen", luminosity); compound.setInteger("sbdir", sbdir); - saveToNBT(compound); - super.writeToNBT(compound); + compound.setInteger("lumen", luminosity); } @Override @@ -404,9 +405,13 @@ public void markDirty() { for (int i = 0; i < inventory.length; i++) { - if ((i == BUCKET_IN_LEFT || i == BUCKET_IN_RIGHT) && inventory[i] != null) + if (inventory[i] != null) { - updateTankSlots(); + if ((i == BUCKET_IN_LEFT || i == BUCKET_IN_RIGHT) + || (i == BUCKET_OUT_LEFT || i == BUCKET_OUT_RIGHT) && inventory[i].getItem() instanceof ItemHose) + { + updateTankSlots(); + } } } super.markDirty(); diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index 10511a02..d4ffba58 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -29,19 +29,21 @@ @SideOnly(Side.CLIENT) public class GuiAdvBackpack extends GuiWithTanks { - private IInventoryAdventureBackpack inventory; - private boolean isTile; - private boolean isWearing; - private boolean isHoldingSpace; - private EntityPlayer player; - private static final ResourceLocation TEXTURE = Resources.guiTextures("guiBackpackNew"); + private static GuiImageButtonNormal bedButton = new GuiImageButtonNormal(5, 91, 18, 18); private static GuiImageButtonNormal equipButton = new GuiImageButtonNormal(5, 91, 18, 18); private static GuiImageButtonNormal unequipButton = new GuiImageButtonNormal(5, 91, 18, 18); private static GuiTank tankLeft = new GuiTank(25, 7, 100, 16, ConfigHandler.typeTankRender); private static GuiTank tankRight = new GuiTank(207, 7, 100, 16, ConfigHandler.typeTankRender); + private IInventoryAdventureBackpack inventory; + private EntityPlayer player; + private boolean isWearing; + private boolean isTile; + + private boolean isHoldingSpace; + public GuiAdvBackpack(EntityPlayer player, TileAdventureBackpack tileBackpack) { super(new ContainerBackpack(player, tileBackpack, ContainerBackpack.SOURCE_TILE)); @@ -154,30 +156,6 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) }*/ } - @Override - public float getZLevel() - { - return this.zLevel; - } - - @Override - public void initGui() - { - super.initGui(); - } - - @Override - public int getLeft() - { - return guiLeft; - } - - @Override - public int getTop() - { - return guiTop; - } - @Override protected void mouseClicked(int mouseX, int mouseY, int button) { diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java index 446e13a9..a255265b 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java @@ -25,17 +25,19 @@ */ public class GuiCoalJetpack extends GuiWithTanks { - private InventoryCoalJetpack inventory; - private int boiling = 0; - private boolean isWearing; - private EntityPlayer player; - private static final ResourceLocation TEXTURE = Resources.guiTextures("guiCoalJetpack"); + private static GuiImageButtonNormal equipButton = new GuiImageButtonNormal(150, 64, 18, 18); private static GuiImageButtonNormal unequipButton = new GuiImageButtonNormal(150, 64, 18, 18); private static GuiTank waterTank = new GuiTank(8, 8, 72, 16, ConfigHandler.typeTankRender); private static GuiTank steamTank = new GuiTank(116, 8, 72, 16, ConfigHandler.typeTankRender); + private InventoryCoalJetpack inventory; + private EntityPlayer player; + private boolean isWearing; + + private int boiling = 0; + public GuiCoalJetpack(EntityPlayer player, InventoryCoalJetpack inv, boolean wearing) { super(new ContainerJetpack(player, inv, wearing)); @@ -164,24 +166,6 @@ protected void mouseClicked(int mouseX, int mouseY, int mouseButton) super.mouseClicked(mouseX, mouseY, mouseButton); } - @Override - public int getLeft() - { - return guiLeft; - } - - @Override - public int getTop() - { - return guiTop; - } - - @Override - public float getZLevel() - { - return zLevel; - } - @Override protected void keyTyped(char key, int keycode) { diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java index ebf32db7..299262fb 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java @@ -23,15 +23,16 @@ */ public class GuiCopterPack extends GuiWithTanks { - private InventoryCopterPack inventory; - private boolean isWearing; - private EntityPlayer player; - private static final ResourceLocation TEXTURE = Resources.guiTextures("guiCopterPack"); + private static GuiImageButtonNormal equipButton = new GuiImageButtonNormal(150, 64, 18, 18); private static GuiImageButtonNormal unequipButton = new GuiImageButtonNormal(150, 64, 18, 18); private static GuiTank fuelTank = new GuiTank(8, 8, 72, 32, ConfigHandler.typeTankRender); + private InventoryCopterPack inventory; + private EntityPlayer player; + private boolean isWearing; + public GuiCopterPack(EntityPlayer player, InventoryCopterPack inv, boolean wearing) { super(new ContainerCopter(player, inv, wearing)); @@ -101,24 +102,6 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) GL11.glPopMatrix(); } - @Override - public int getLeft() - { - return guiLeft; - } - - @Override - public int getTop() - { - return guiTop; - } - - @Override - public float getZLevel() - { - return zLevel; - } - @Override protected void mouseClicked(int mouseX, int mouseY, int mouseButton) { diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java index 69ff362a..82005371 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java @@ -12,7 +12,7 @@ */ public abstract class GuiWithTanks extends GuiContainer { - public GuiWithTanks(Container p_i1072_1_) + GuiWithTanks(Container p_i1072_1_) { super(p_i1072_1_); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java index 7b495e81..85055ebf 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java @@ -1,5 +1,6 @@ package com.darkona.adventurebackpack.inventory; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.Slot; @@ -17,6 +18,7 @@ abstract class ContainerAdventureBackpack extends Container protected static final int PLAYER_HOT_END = PLAYER_HOT_START + 8; protected static final int PLAYER_INV_START = PLAYER_HOT_END + 1; protected static final int PLAYER_INV_END = PLAYER_INV_START + 26; + protected static final int PLAYER_INV_LENGTH = PLAYER_INV_END + 1; protected void bindPlayerInventory(InventoryPlayer invPlayer, int startX, int startY) { @@ -32,7 +34,52 @@ protected void bindPlayerInventory(InventoryPlayer invPlayer, int startX, int st addSlotToContainer(new Slot(invPlayer, (x + y * 9 + 9), (startX + 18 * x), (startY + y * 18))); } } - } // total 36 slots + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) + { + Slot slot = getSlot(fromSlot); + + if (slot == null || slot.getStack() == null ) + return null; + + ItemStack stack = slot.getStack(); + ItemStack result = stack.copy(); + + if (fromSlot >= PLAYER_INV_LENGTH) + { + if (!mergePlayerInv(stack)) + return null; + } + + if (fromSlot < PLAYER_INV_LENGTH) + { + if (!transferStackToPack(stack)) + return null; + } + + if (stack.stackSize == 0) + { + slot.putStack(null); + } else + { + slot.onSlotChanged(); + } + + if (stack.stackSize == result.stackSize) + return null; + + slot.onPickupFromSlot(player, stack); + return result; + } + + protected boolean mergePlayerInv(ItemStack stack) + { + return mergeItemStack(stack, PLAYER_HOT_START, PLAYER_INV_END + 1, false); + } + + abstract protected boolean transferStackToPack(ItemStack stack); @Override protected boolean mergeItemStack(ItemStack initStack, int minIndex, int maxIndex, boolean backward) @@ -105,4 +152,10 @@ protected boolean mergeItemStack(ItemStack initStack, int minIndex, int maxIndex return changesMade; } + + @Override + public boolean canInteractWith(EntityPlayer player) + { + return true; + } } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 334b5ebb..46087d98 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -71,7 +71,7 @@ private void makeSlots(InventoryPlayer invPlayer) int startY = 7; int slot = 0; - for (int i = 0; i < 3; i++) // upper 8*3, 24 Slots + for (int i = 0; i < 3; i++) // upper 8*3, 24 Slots (1-24) { for (int j = 0; j < 8; j++) { @@ -82,7 +82,7 @@ private void makeSlots(InventoryPlayer invPlayer) } startY = 61; - for (int i = 0; i < 3; i++) // lower 5*3, 15 Slots + for (int i = 0; i < 3; i++) // lower 5*3, 15 Slots (25-39) { for (int j = 0; j < 5; j++) { @@ -92,13 +92,13 @@ private void makeSlots(InventoryPlayer invPlayer) } } - addSlotToContainer(new SlotTool(inventory, UPPER_TOOL, 44, 79)); // #16 - addSlotToContainer(new SlotTool(inventory, LOWER_TOOL, 44, 97)); // #17 + addSlotToContainer(new SlotTool(inventory, UPPER_TOOL, 44, 79)); // #40 + addSlotToContainer(new SlotTool(inventory, LOWER_TOOL, 44, 97)); // #41 - addSlotToContainer(new SlotFluid(inventory, BUCKET_IN_LEFT, 6, 7)); // #18 - addSlotToContainer(new SlotFluid(inventory, BUCKET_OUT_LEFT, 6, 37)); // #19 - addSlotToContainer(new SlotFluid(inventory, BUCKET_IN_RIGHT, 226, 7)); // #20 - addSlotToContainer(new SlotFluid(inventory, BUCKET_OUT_RIGHT, 226, 37)); // #21 + addSlotToContainer(new SlotFluid(inventory, BUCKET_IN_LEFT, 6, 7)); // #42 + addSlotToContainer(new SlotFluid(inventory, BUCKET_OUT_LEFT, 6, 37)); // #43 + addSlotToContainer(new SlotFluid(inventory, BUCKET_IN_RIGHT, 226, 7)); // #44 + addSlotToContainer(new SlotFluid(inventory, BUCKET_OUT_RIGHT, 226, 37)); // #45 startX = 152; for (int y = 0; y < 3; y++) // Craft Matrix - 3*3, 9 slots @@ -157,141 +157,105 @@ public void detectAndSendChanges() } } + @Override + protected boolean transferStackToPack(ItemStack stack) + { + if (SlotTool.isValidTool(stack)) + { + if (!mergeToolSlot(stack)) + { + if (SlotBackpack.isValidItem(stack)) + { + if (!mergeBackpackInv(stack)) + return false; + } + } + + } else if (SlotFluid.isContainer(stack) && !isHoldingSpace()) + { + if (!transferFluidContainer(stack)) + return false; + + } else if (SlotBackpack.isValidItem(stack)) + { + if (!mergeBackpackInv(stack)) + return false; + } + return true; + } + + private boolean mergeToolSlot(ItemStack stack) + { + return mergeItemStack(stack, TOOL_START, TOOL_END + 1, false); + } + + private boolean mergeBackpackInv(ItemStack stack) + { + return mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false); + } + + private boolean mergeLeftBucket(ItemStack stack) + { + return mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false); + } + + private boolean mergeRightBucket(ItemStack stack) + { + return mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false); + } + private boolean isHoldingSpace() { return inventory.getExtendedProperties().hasKey("holdingSpace"); } - @Override - public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) + private boolean transferFluidContainer(ItemStack container) { - Slot slot = getSlot(fromSlot); - ItemStack result = null; + FluidTank leftTank = inventory.getLeftTank(); + FluidTank rightTank = inventory.getRightTank(); - if (slot != null && slot.getHasStack()) + boolean isLeftOutEmpty = !getSlot(BUCKET_LEFT + 1).getHasStack(); + boolean isRightOutEmpty = !getSlot(BUCKET_RIGHT + 1).getHasStack(); + boolean isLeftTankEmpty = SlotFluid.isEmpty(leftTank); + boolean isRightTankEmpty = SlotFluid.isEmpty(rightTank); + boolean suitableToLeft = SlotFluid.isEqualAndCanFit(container, leftTank); + boolean suitableToRight = SlotFluid.isEqualAndCanFit(container, rightTank); + + if (SlotFluid.isFilled(container)) { - ItemStack stack = slot.getStack(); - result = stack.copy(); - if (fromSlot >= 36) - { - if (!mergeItemStack(stack, PLAYER_HOT_START, PLAYER_INV_END + 1, false)) - { - return null; - } - } - if (fromSlot < 36) - { - if (SlotTool.isValidTool(stack)) - { - if (!mergeItemStack(stack, TOOL_START, TOOL_END + 1, false)) - { - if (SlotBackpack.isValidItem(stack) && (!mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false))) - { - return null; - } - } - - } else if (SlotFluid.isContainer(stack) && !isHoldingSpace()) - { - ItemStack rightOutStack = getSlot(BUCKET_RIGHT + 1).getStack(); - ItemStack leftOutStack = getSlot(BUCKET_LEFT + 1).getStack(); - - FluidTank leftTank = inventory.getLeftTank(); - FluidTank rightTank = inventory.getRightTank(); - int maxAmount = leftTank.getCapacity(); - int leftAmount = leftTank.getFluidAmount(); - int rightAmount = rightTank.getFluidAmount(); - int leftFluid = SlotFluid.getFluidID(leftTank); - int rightFluid = SlotFluid.getFluidID(rightTank); - - int containerCapacity = SlotFluid.getCapacity(stack); - int containerFluid = SlotFluid.getFluidID(stack); - - if (SlotFluid.isFilled(stack)) - { - if (leftAmount == 0) - { - if (rightAmount > 0 && (rightAmount + containerCapacity <= maxAmount) && rightFluid == containerFluid) - { - if (!mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false)) - { - return null; - } - } else if (leftOutStack == null) - { - if (!mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false)) - { - return null; - } - } - } else if ((leftAmount + containerCapacity <= maxAmount) && leftFluid == containerFluid) - { - if (!mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false)) - { - return null; - } - } else if (rightAmount == 0 || (rightAmount + containerCapacity <= maxAmount) && rightFluid == containerFluid) - { - if (!mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false)) - { - return null; - } - } else if (leftOutStack == null && rightOutStack == null && SlotBackpack.isValidItem(stack)) - { - if (!mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false)) - { - return null; - } - } - } else if (SlotFluid.isEmpty(stack)) - { - if (leftAmount == 0) - { - if (rightAmount != 0 && rightOutStack == null) - { - if (!mergeItemStack(stack, BUCKET_RIGHT, BUCKET_RIGHT + 1, false)) - { - return null; - } - } else if (leftOutStack == null && rightOutStack == null && SlotBackpack.isValidItem(stack)) - { - if (!mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false)) - { - return null; - } - } - } else if (leftOutStack == null) - { - if (!mergeItemStack(stack, BUCKET_LEFT, BUCKET_LEFT + 1, false)) - { - return null; - } - } - } - - } else if (SlotBackpack.isValidItem(stack)) - { - if (!mergeItemStack(stack, BACK_INV_START, BACK_INV_END + 1, false)) - { - return null; - } - } - } - if (stack.stackSize == 0) + if (isLeftTankEmpty) { - slot.putStack(null); + if (!isRightTankEmpty && isRightOutEmpty && suitableToRight) + return mergeRightBucket(container); + else if (isLeftOutEmpty) + return mergeLeftBucket(container); + } else { - slot.onSlotChanged(); + if (isLeftOutEmpty && suitableToLeft) + return mergeLeftBucket(container); + else if (isRightOutEmpty && (isRightTankEmpty || suitableToRight)) + return mergeRightBucket(container); + else if (isLeftOutEmpty && isRightOutEmpty && SlotBackpack.isValidItem(container)) + return mergeBackpackInv(container); } - if (stack.stackSize == result.stackSize) + } else if (SlotFluid.isEmpty(container)) + { + if (isLeftTankEmpty) { - return null; + if (!isRightTankEmpty && isRightOutEmpty) + return mergeRightBucket(container); + else if (isLeftOutEmpty && isRightOutEmpty && SlotBackpack.isValidItem(container)) + return mergeBackpackInv(container); + + } else + { + if (isLeftOutEmpty) + return mergeLeftBucket(container); } - slot.onPickupFromSlot(player, stack); } - return result; + return false; } @Override @@ -345,17 +309,11 @@ public void onContainerClosed(EntityPlayer player) } @Override - public void onCraftMatrixChanged(IInventory par1IInventory) + public void onCraftMatrixChanged(IInventory inventory) { craftResult.setInventorySlotContents(0, CraftingManager.getInstance().findMatchingRecipe(craftMatrix, player.worldObj)); } - @Override - public boolean canInteractWith(EntityPlayer player) - { - return inventory.isUseableByPlayer(player); - } - /*@Override public void refresh() { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java index 1f24af07..a487ddc7 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java @@ -3,7 +3,6 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidTank; @@ -68,78 +67,43 @@ public void detectAndSendChanges() } @Override - public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) + public boolean transferStackToPack(ItemStack stack) { - Slot slot = getSlot(fromSlot); - ItemStack result = null; - - if (slot != null && slot.getHasStack()) + if (SlotFluid.isContainer(stack)) { - ItemStack stack = slot.getStack(); - result = stack.copy(); - if (fromSlot >= 36) - { - if (!mergeItemStack(stack, PLAYER_HOT_START, PLAYER_INV_END + 1, false)) - { - return null; - } - } - if (fromSlot < 36) - { - if (SlotFluid.isContainer(stack)) - { - ItemStack outStack = getSlot(COPTER_INV_START + 1).getStack(); - - FluidTank fuelTank = inventory.getFuelTank(); - int maxAmount = fuelTank.getCapacity(); - int tankAmount = fuelTank.getFluidAmount(); - int tankFluid = SlotFluid.getFluidID(fuelTank); + FluidTank fuelTank = inventory.getFuelTank(); - int containerCapacity = SlotFluid.getCapacity(stack); - int containerFluid = SlotFluid.getFluidID(stack); + boolean isOutStackEmpty = !getSlot(COPTER_INV_START + 1).getHasStack(); + boolean isFuelTankEmpty = SlotFluid.isEmpty(fuelTank); + boolean suitableToTank = SlotFluid.isEqualAndCanFit(stack, fuelTank); + boolean isBucketsCase = SlotFluid.isEmptyBucket(getSlot(COPTER_INV_START + 1).getStack()) + && SlotFluid.isFilledBucket(stack); - if (SlotFluid.isFilled(stack)) - { - if ((outStack == null || (SlotFluid.isEmptyBucket(outStack) && SlotFluid.isBucket(stack))) - && SlotFluidFuel.isValidItem(stack)) - { - if ((tankAmount == 0 || (tankAmount > 0 && tankFluid == containerFluid)) - && tankAmount + containerCapacity <= maxAmount) - { - if (!mergeItemStack(stack, COPTER_INV_START, COPTER_INV_START + 1, false)) - { - return null; - } - } - } - } else if (SlotFluid.isEmpty(stack)) + if (SlotFluid.isFilled(stack)) + { + if ((isOutStackEmpty || isBucketsCase) && SlotFluidFuel.isValidItem(stack)) + { + if (isFuelTankEmpty || suitableToTank) { - if (outStack == null && tankAmount >= containerCapacity && SlotFluidFuel.isValidItem(stack)) - { - if (!mergeItemStack(stack, COPTER_INV_START, COPTER_INV_START + 1, false)) - { - return null; - } - } + if (!mergeBucket(stack)) + return false; } } - } - - if (stack.stackSize == 0) - { - slot.putStack(null); - } else + } else if (SlotFluid.isEmpty(stack)) { - slot.onSlotChanged(); - } - - if (stack.stackSize == result.stackSize) - { - return null; + if (isOutStackEmpty && SlotFluidFuel.isValidItem(stack)) + { + if (!mergeBucket(stack)) + return false; + } } - slot.onPickupFromSlot(player, stack); } - return result; + return true; + } + + private boolean mergeBucket(ItemStack stack) + { + return mergeItemStack(stack, COPTER_INV_START, COPTER_INV_START + 1, false); } @Override @@ -183,12 +147,6 @@ public void onContainerClosed(EntityPlayer player) } } - @Override - public boolean canInteractWith(EntityPlayer p_75145_1_) - { - return true; - } - /*@Override public void refresh() { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java index a764a73f..d800f795 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java @@ -3,7 +3,6 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidTank; @@ -85,85 +84,53 @@ public void detectAndSendChanges() } @Override - public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) + public boolean transferStackToPack(ItemStack stack) { - Slot slot = getSlot(fromSlot); - ItemStack result = null; - - if (slot != null && slot.getHasStack()) + if (SlotFluid.isContainer(stack)) { - ItemStack stack = slot.getStack(); - result = stack.copy(); - if (fromSlot >= 36) - { - if (!mergeItemStack(stack, PLAYER_HOT_START, PLAYER_INV_END + 1, false)) - { - return null; - } - } - if (fromSlot < 36) - { - if (SlotFluid.isContainer(stack)) - { - ItemStack outStack = getSlot(JETPACK_INV_START + 1).getStack(); + FluidTank waterTank = inventory.getWaterTank(); - FluidTank waterTank = inventory.getWaterTank(); - int maxAmount = waterTank.getCapacity(); - int tankAmount = waterTank.getFluidAmount(); - int tankFluid = SlotFluid.getFluidID(waterTank); + boolean isOutStackEmpty = !getSlot(JETPACK_INV_START + 1).getHasStack(); + boolean isWaterTankEmpty = SlotFluid.isEmpty(waterTank); + boolean suitableToTank = SlotFluid.isEqualAndCanFit(stack, waterTank); + boolean isBucketsCase = SlotFluid.isEmptyBucket(getSlot(JETPACK_INV_START + 1).getStack()) + && SlotFluid.isFilledBucket(stack); - int containerCapacity = SlotFluid.getCapacity(stack); - int containerFluid = SlotFluid.getFluidID(stack); - - if (SlotFluid.isFilled(stack)) - { - if ((outStack == null || (SlotFluid.isEmptyBucket(outStack) && SlotFluid.isBucket(stack))) - && SlotFluidWater.isValidItem(stack)) - { - if ((tankAmount == 0 || (tankAmount > 0 && tankFluid == containerFluid)) - && tankAmount + containerCapacity <= maxAmount) - { - if (!mergeItemStack(stack, JETPACK_INV_START, JETPACK_INV_START + 1, false)) - { - return null; - } - } - } - } else if (SlotFluid.isEmpty(stack)) - { - if (outStack == null && tankAmount >= containerCapacity && SlotFluidWater.isValidItem(stack)) - { - if (!mergeItemStack(stack, JETPACK_INV_START, JETPACK_INV_START + 1, false)) - { - return null; - } - } - } - - } else if (SlotFuel.isValidItem(stack)) + if (SlotFluid.isFilled(stack)) + { + if ((isOutStackEmpty || isBucketsCase) && SlotFluidWater.isValidItem(stack)) { - if (!mergeItemStack(stack, JETPACK_FUEL_START, JETPACK_FUEL_START + 1, false)) + if (isWaterTankEmpty || suitableToTank) { - return null; + if (!mergeBucket(stack)) + return false; } } - } - - if (stack.stackSize == 0) + } else if (SlotFluid.isEmpty(stack)) { - slot.putStack(null); - } else - { - slot.onSlotChanged(); + if (isOutStackEmpty && SlotFluidWater.isValidItem(stack)) + { + if (!mergeBucket(stack)) + return false; + } } - if (stack.stackSize == result.stackSize) - { - return null; - } - slot.onPickupFromSlot(player, stack); + } else if (SlotFuel.isValidItem(stack)) + { + if (!mergeFuel(stack)) + return false; } - return result; + return true; + } + + private boolean mergeBucket(ItemStack stack) + { + return mergeItemStack(stack, JETPACK_INV_START, JETPACK_INV_START + 1, false); + } + + private boolean mergeFuel(ItemStack stack) + { + return mergeItemStack(stack, JETPACK_FUEL_START, JETPACK_FUEL_START + 1, false); } @Override @@ -207,12 +174,6 @@ public void onContainerClosed(EntityPlayer player) } } - @Override - public boolean canInteractWith(EntityPlayer p_75145_1_) - { - return true; - } - /*@Override public void refresh() { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventureBackpack.java new file mode 100644 index 00000000..a84f04d0 --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventureBackpack.java @@ -0,0 +1,62 @@ +package com.darkona.adventurebackpack.inventory; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + +/** + * Created on 15.07.2017 + * + * @author Ugachaga + */ +abstract class InventoryAdventureBackpack implements IInventoryTanks +{ + ItemStack containerStack; + + @Override + public String getInventoryName() + { + return null; + } + + @Override + public boolean hasCustomInventoryName() + { + return false; + } + + @Override + public int getInventoryStackLimit() + { + return 64; + } + + @Override + public void markDirty() + { + saveToNBT(containerStack.stackTagCompound); + } + + @Override + public boolean isUseableByPlayer(EntityPlayer player) + { + return true; + } + + @Override + public void openInventory() + { + loadFromNBT(containerStack.stackTagCompound); + } + + @Override + public void closeInventory() + { + saveToNBT(containerStack.stackTagCompound); + } + + @Override + public boolean isItemValidForSlot(int slot, ItemStack stack) + { + return false; + } +} diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index 51fc8643..51db5e9a 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -1,8 +1,6 @@ package com.darkona.adventurebackpack.inventory; - import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -28,7 +26,7 @@ * * @author Darkona */ -public class InventoryBackpack implements IInventoryAdventureBackpack +public class InventoryBackpack extends InventoryAdventureBackpack implements IInventoryAdventureBackpack { public NBTTagCompound extendedProperties = new NBTTagCompound(); @@ -41,7 +39,6 @@ public class InventoryBackpack implements IInventoryAdventureBackpack private boolean special = false; private int lastTime = 0; private String colorName = "Standard"; - private ItemStack containerStack; public InventoryBackpack(ItemStack backpack) { @@ -121,7 +118,6 @@ public void consumeInventoryItem(Item item) InventoryActions.consumeItemInInventory(this, item); } - @Override public boolean isSBDeployed() { @@ -150,7 +146,9 @@ public void dirtyExtended() @Override public void setInventorySlotContentsNoSave(int slot, ItemStack stack) { - if (slot > inventory.length) return; + if (slot > inventory.length) + return; + inventory[slot] = stack; if (stack != null && stack.stackSize > this.getInventoryStackLimit()) { @@ -178,7 +176,8 @@ public ItemStack decrStackSizeNoSave(int slot, int quantity) @Override public void loadFromNBT(NBTTagCompound compound) { - if (compound == null) return; //this need for NEI trying to render tile.backpack and comes here w/o nbt + if (compound == null) + return; //this need for NEI trying to render tile.backpack and comes here w/o nbt NBTTagCompound backpackTag = compound.getCompoundTag(COMPOUND_TAG); NBTTagList items = backpackTag.getTagList(INVENTORY, NBT.TAG_COMPOUND); @@ -320,7 +319,9 @@ public ItemStack getStackInSlotOnClosing(int slot) @Override public void setInventorySlotContents(int slot, ItemStack stack) { - if (slot > inventory.length) return; + if (slot > inventory.length) + return; + inventory[slot] = stack; if (stack != null && stack.stackSize > getInventoryStackLimit()) { @@ -329,54 +330,6 @@ public void setInventorySlotContents(int slot, ItemStack stack) dirtyInventory(); } - @Override - public String getInventoryName() - { - return "Adventure Backpack"; - } - - @Override - public boolean hasCustomInventoryName() - { - return true; - } - - @Override - public int getInventoryStackLimit() - { - return 64; - } - - @Override - public void markDirty() - { - saveToNBT(containerStack.stackTagCompound); - } - - @Override - public boolean isUseableByPlayer(EntityPlayer player) - { - return true; - } - - @Override - public void openInventory() - { - loadFromNBT(containerStack.stackTagCompound); - } - - @Override - public void closeInventory() - { - saveToNBT(containerStack.stackTagCompound); - } - - @Override - public boolean isItemValidForSlot(int slot, ItemStack stack) - { - return false; - } - public boolean hasBlock(Block block) { return InventoryActions.hasBlockItem(this, block); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index f5f80e1d..e2582808 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -1,6 +1,5 @@ package com.darkona.adventurebackpack.inventory; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; @@ -23,7 +22,7 @@ * * @author Darkona */ -public class InventoryCoalJetpack implements IInventoryTanks +public class InventoryCoalJetpack extends InventoryAdventureBackpack { public int currentItemBurnTime = 0; @@ -39,7 +38,6 @@ public class InventoryCoalJetpack implements IInventoryTanks private int burnTicks = 0; private int coolTicks = 5000; private long systemTime = 0; - private ItemStack containerStack; //TODO if GUI is open while temp is going up, temp will drop to zero at 90C. just sync issue? //TODO boiling sound work sometimes, and then it override leaking sound. check it @@ -257,9 +255,9 @@ public ItemStack decrStackSize(int slot, int quantity) } @Override - public ItemStack getStackInSlotOnClosing(int i) + public ItemStack getStackInSlotOnClosing(int slot) { - return (i == JETPACK_BUCKET_IN || i == JETPACK_BUCKET_OUT) ? inventory[i] : null; + return (slot == JETPACK_BUCKET_IN || slot == JETPACK_BUCKET_OUT) ? inventory[slot] : null; } @Override @@ -273,54 +271,6 @@ public void setInventorySlotContents(int slot, ItemStack stack) dirtyInventory(); } - @Override - public String getInventoryName() - { - return "Coal Jetpack"; - } - - @Override - public boolean hasCustomInventoryName() - { - return true; - } - - @Override - public int getInventoryStackLimit() - { - return 64; - } - - @Override - public void markDirty() - { - saveToNBT(containerStack.stackTagCompound); - } - - @Override - public boolean isUseableByPlayer(EntityPlayer p_70300_1_) - { - return true; - } - - @Override - public void openInventory() - { - loadFromNBT(containerStack.stackTagCompound); - } - - @Override - public void closeInventory() - { - saveToNBT(containerStack.stackTagCompound); - } - - @Override - public boolean isItemValidForSlot(int slot, ItemStack stack) - { - return false; - } - public ItemStack getParentItemStack() { return containerStack; diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java index 253bfbfa..943e5edd 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java @@ -1,6 +1,5 @@ package com.darkona.adventurebackpack.inventory; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.fluids.FluidTank; @@ -18,7 +17,7 @@ * * @author Darkona */ -public class InventoryCopterPack implements IInventoryTanks +public class InventoryCopterPack extends InventoryAdventureBackpack { public int tickCounter = 0; @@ -26,7 +25,6 @@ public class InventoryCopterPack implements IInventoryTanks private ItemStack[] inventory = new ItemStack[COPTER_INVENTORY_SIZE]; private byte status = ItemCopterPack.OFF_MODE; - private ItemStack containerStack; //TODO copter sound doesn't init at login (status init, so you can keep flying) public InventoryCopterPack(ItemStack copterPack) @@ -82,9 +80,9 @@ public ItemStack decrStackSize(int slot, int quantity) } @Override - public ItemStack getStackInSlotOnClosing(int i) + public ItemStack getStackInSlotOnClosing(int slot) { - return (i == COPTER_BUCKET_IN || i == COPTER_BUCKET_OUT) ? inventory[i] : null; + return (slot == COPTER_BUCKET_IN || slot == COPTER_BUCKET_OUT) ? inventory[slot] : null; } @Override @@ -98,54 +96,6 @@ public void setInventorySlotContents(int slot, ItemStack stack) dirtyInventory(); } - @Override - public String getInventoryName() - { - return "Copter Pack"; - } - - @Override - public boolean hasCustomInventoryName() - { - return true; - } - - @Override - public int getInventoryStackLimit() - { - return 64; - } - - @Override - public void markDirty() - { - saveToNBT(containerStack.stackTagCompound); - } - - @Override - public boolean isUseableByPlayer(EntityPlayer player) - { - return true; - } - - @Override - public void openInventory() - { - loadFromNBT(containerStack.stackTagCompound); - } - - @Override - public void closeInventory() - { - saveToNBT(containerStack.stackTagCompound); - } - - @Override - public boolean isItemValidForSlot(int i, ItemStack stack) - { - return false; - } - public void dirtyCounter() { containerStack.stackTagCompound.setInteger("tickCounter", this.tickCounter); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java index 65148e2c..2d152a5d 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java @@ -32,6 +32,11 @@ static boolean isEmpty(ItemStack stack) return FluidContainerRegistry.isEmptyContainer(stack); } + static boolean isEmpty(FluidTank tank) + { + return tank.getFluidAmount() == 0; + } + static boolean isFilled(ItemStack stack) { return FluidContainerRegistry.isFilledContainer(stack); @@ -52,6 +57,11 @@ static boolean isFilledBucket(ItemStack stack) return FluidContainerRegistry.isBucket(stack) && isFilled(stack); } + static boolean isEqualFluid(ItemStack container, FluidTank tank) + { + return SlotFluid.getFluidID(container) == SlotFluid.getFluidID(tank); + } + static String getFluidName(ItemStack stack) { if (stack == null || isEmpty(stack)) @@ -92,6 +102,16 @@ static int getCapacity(ItemStack stack) return FluidContainerRegistry.getContainerCapacity(stack); } + static boolean canFitToTank(ItemStack container, FluidTank tank) + { + return tank.getFluidAmount() + SlotFluid.getCapacity(container) <= tank.getCapacity(); + } + + static boolean isEqualAndCanFit(ItemStack container, FluidTank tank) + { + return isEqualFluid(container, tank) && canFitToTank(container, tank); + } + @Override public boolean isItemValid(ItemStack stack) { From 0d53705be96b978c07e3b8e30382e69432b38454 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 18 Jul 2017 00:53:14 +0700 Subject: [PATCH 400/462] More precise shift-click behavior --- .../inventory/ContainerBackpack.java | 22 ++++++++-------- .../inventory/ContainerCopter.java | 9 +++---- .../inventory/ContainerJetpack.java | 9 +++---- .../inventory/InventoryActions.java | 25 +++++++++++++++++++ .../inventory/SlotFluid.java | 5 ++++ 5 files changed, 50 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 46087d98..c988acec 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -213,30 +213,32 @@ private boolean transferFluidContainer(ItemStack container) { FluidTank leftTank = inventory.getLeftTank(); FluidTank rightTank = inventory.getRightTank(); + ItemStack leftStackOut = getSlot(BUCKET_LEFT + 1).getStack(); + ItemStack rightStackOut = getSlot(BUCKET_RIGHT + 1).getStack(); - boolean isLeftOutEmpty = !getSlot(BUCKET_LEFT + 1).getHasStack(); - boolean isRightOutEmpty = !getSlot(BUCKET_RIGHT + 1).getHasStack(); boolean isLeftTankEmpty = SlotFluid.isEmpty(leftTank); boolean isRightTankEmpty = SlotFluid.isEmpty(rightTank); boolean suitableToLeft = SlotFluid.isEqualAndCanFit(container, leftTank); boolean suitableToRight = SlotFluid.isEqualAndCanFit(container, rightTank); + boolean areLeftSameType = InventoryActions.areContainersOfSameType(container, leftStackOut); + boolean areRightSameType = InventoryActions.areContainersOfSameType(container, rightStackOut); if (SlotFluid.isFilled(container)) { if (isLeftTankEmpty) { - if (!isRightTankEmpty && isRightOutEmpty && suitableToRight) + if (!isRightTankEmpty && (rightStackOut == null || areRightSameType) && suitableToRight) return mergeRightBucket(container); - else if (isLeftOutEmpty) + else if (leftStackOut == null || areLeftSameType) return mergeLeftBucket(container); } else { - if (isLeftOutEmpty && suitableToLeft) + if ((leftStackOut == null || areLeftSameType) && suitableToLeft) return mergeLeftBucket(container); - else if (isRightOutEmpty && (isRightTankEmpty || suitableToRight)) + else if ((rightStackOut == null || areRightSameType) && (isRightTankEmpty || suitableToRight)) return mergeRightBucket(container); - else if (isLeftOutEmpty && isRightOutEmpty && SlotBackpack.isValidItem(container)) + else if (leftStackOut == null && rightStackOut == null && SlotBackpack.isValidItem(container)) return mergeBackpackInv(container); } @@ -244,14 +246,14 @@ else if (isLeftOutEmpty && isRightOutEmpty && SlotBackpack.isValidItem(container { if (isLeftTankEmpty) { - if (!isRightTankEmpty && isRightOutEmpty) + if (!isRightTankEmpty && (rightStackOut == null || areRightSameType)) return mergeRightBucket(container); - else if (isLeftOutEmpty && isRightOutEmpty && SlotBackpack.isValidItem(container)) + else if (leftStackOut == null && rightStackOut == null && SlotBackpack.isValidItem(container)) return mergeBackpackInv(container); } else { - if (isLeftOutEmpty) + if (leftStackOut == null || areLeftSameType) return mergeLeftBucket(container); } } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java index a487ddc7..c20d2543 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java @@ -72,16 +72,15 @@ public boolean transferStackToPack(ItemStack stack) if (SlotFluid.isContainer(stack)) { FluidTank fuelTank = inventory.getFuelTank(); + ItemStack stackOut = getSlot(COPTER_INV_START + 1).getStack(); - boolean isOutStackEmpty = !getSlot(COPTER_INV_START + 1).getHasStack(); boolean isFuelTankEmpty = SlotFluid.isEmpty(fuelTank); boolean suitableToTank = SlotFluid.isEqualAndCanFit(stack, fuelTank); - boolean isBucketsCase = SlotFluid.isEmptyBucket(getSlot(COPTER_INV_START + 1).getStack()) - && SlotFluid.isFilledBucket(stack); + boolean areSameType = InventoryActions.areContainersOfSameType(stack, stackOut); if (SlotFluid.isFilled(stack)) { - if ((isOutStackEmpty || isBucketsCase) && SlotFluidFuel.isValidItem(stack)) + if ((stackOut == null || areSameType) && SlotFluidFuel.isValidItem(stack)) { if (isFuelTankEmpty || suitableToTank) { @@ -91,7 +90,7 @@ public boolean transferStackToPack(ItemStack stack) } } else if (SlotFluid.isEmpty(stack)) { - if (isOutStackEmpty && SlotFluidFuel.isValidItem(stack)) + if ((stackOut == null || areSameType) && SlotFluidFuel.isValidItem(stack)) { if (!mergeBucket(stack)) return false; diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java index d800f795..35752395 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java @@ -89,16 +89,15 @@ public boolean transferStackToPack(ItemStack stack) if (SlotFluid.isContainer(stack)) { FluidTank waterTank = inventory.getWaterTank(); + ItemStack stackOut = getSlot(JETPACK_INV_START + 1).getStack(); - boolean isOutStackEmpty = !getSlot(JETPACK_INV_START + 1).getHasStack(); boolean isWaterTankEmpty = SlotFluid.isEmpty(waterTank); boolean suitableToTank = SlotFluid.isEqualAndCanFit(stack, waterTank); - boolean isBucketsCase = SlotFluid.isEmptyBucket(getSlot(JETPACK_INV_START + 1).getStack()) - && SlotFluid.isFilledBucket(stack); + boolean areSameType = InventoryActions.areContainersOfSameType(stack, stackOut); if (SlotFluid.isFilled(stack)) { - if ((isOutStackEmpty || isBucketsCase) && SlotFluidWater.isValidItem(stack)) + if ((stackOut == null || areSameType) && SlotFluidWater.isValidItem(stack)) { if (isWaterTankEmpty || suitableToTank) { @@ -108,7 +107,7 @@ public boolean transferStackToPack(ItemStack stack) } } else if (SlotFluid.isEmpty(stack)) { - if (isOutStackEmpty && SlotFluidWater.isValidItem(stack)) + if ((stackOut == null || areSameType) && SlotFluidWater.isValidItem(stack)) { if (!mergeBucket(stack)) return false; diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java index 3dea4eb9..093d7d05 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java @@ -116,6 +116,13 @@ else if (tank.getFluid() != null && tank.getFluidAmount() > 0 && FluidUtils.isEm return false; } + public static boolean areStacksCompatible(ItemStack stackA, ItemStack stackB) + { + return stackA.getItem() == stackB.getItem() + && (!stackA.getHasSubtypes() || stackA.getItemDamage() == stackB.getItemDamage()) + && ItemStack.areItemStackTagsEqual(stackA, stackB); + } + public static void consumeItemInInventory(IInventory backpack, Item item) { int i = -1; @@ -158,4 +165,22 @@ public static boolean hasBlockItem(IInventoryAdventureBackpack backpack, Block i } return false; } + + public static boolean areContainersOfSameType(ItemStack stackIn, ItemStack stackOut) + { + if (stackIn == null || stackOut == null || stackIn.getItem() == null || stackOut.getItem() == null) + return false; + + if (SlotFluid.isFilled(stackIn) && SlotFluid.isEmpty(stackOut)) + { + ItemStack emptyIn = SlotFluid.getEmptyContainer(stackIn); + return stackOut.isStackable() && areStacksCompatible(emptyIn, stackOut); + + } else if (SlotFluid.isEmpty(stackIn) && SlotFluid.isFilled(stackOut)) + { + ItemStack emptyOut = SlotFluid.getEmptyContainer(stackOut); + return stackOut.isStackable() && areStacksCompatible(stackIn, emptyOut); + } + return false; + } } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java index 2d152a5d..e4f3e739 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java @@ -112,6 +112,11 @@ static boolean isEqualAndCanFit(ItemStack container, FluidTank tank) return isEqualFluid(container, tank) && canFitToTank(container, tank); } + static ItemStack getEmptyContainer(ItemStack container) + { + return FluidContainerRegistry.drainFluidContainer(container); + } + @Override public boolean isItemValid(ItemStack stack) { From 09bf02c101722b05c9414fe69385d35c207887a7 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 20 Jul 2017 21:50:52 +0700 Subject: [PATCH 401/462] Generalization of Containers --- .../client/gui/GuiCoalJetpack.java | 2 +- .../client/gui/GuiCopterPack.java | 2 +- .../handlers/GuiHandler.java | 8 +- .../inventory/ContainerAdventureBackpack.java | 68 +++++++++- .../inventory/ContainerBackpack.java | 121 +++++------------- .../inventory/ContainerCopter.java | 87 +++---------- .../inventory/ContainerJetpack.java | 108 +++++----------- 7 files changed, 159 insertions(+), 237 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java index a255265b..f7a857a5 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java @@ -40,7 +40,7 @@ public class GuiCoalJetpack extends GuiWithTanks public GuiCoalJetpack(EntityPlayer player, InventoryCoalJetpack inv, boolean wearing) { - super(new ContainerJetpack(player, inv, wearing)); + super(new ContainerJetpack(player, inv, wearing ? ContainerJetpack.SOURCE_WEARING : ContainerJetpack.SOURCE_HOLDING)); this.player = player; inventory = inv; isWearing = wearing; diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java index 299262fb..3e9c6806 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java @@ -35,7 +35,7 @@ public class GuiCopterPack extends GuiWithTanks public GuiCopterPack(EntityPlayer player, InventoryCopterPack inv, boolean wearing) { - super(new ContainerCopter(player, inv, wearing)); + super(new ContainerCopter(player, inv, wearing ? ContainerCopter.SOURCE_WEARING : ContainerCopter.SOURCE_HOLDING)); this.player = player; inventory = inv; isWearing = wearing; diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java index ced4f78b..e9c6d41b 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java @@ -62,25 +62,25 @@ public Object getServerGuiElement(int ID, EntityPlayer player, World world, int case COPTER_HOLDING: if (Wearing.isHoldingCopter(player)) { - return new ContainerCopter(player, new InventoryCopterPack(Wearing.getHoldingCopter(player)), false); + return new ContainerCopter(player, new InventoryCopterPack(Wearing.getHoldingCopter(player)), ContainerCopter.SOURCE_HOLDING); } break; case COPTER_WEARING: if (Wearing.isWearingCopter(player)) { - return new ContainerCopter(player, new InventoryCopterPack(Wearing.getWearingCopter(player)), true); + return new ContainerCopter(player, new InventoryCopterPack(Wearing.getWearingCopter(player)), ContainerCopter.SOURCE_WEARING); } break; case JETPACK_HOLDING: if (Wearing.isHoldingJetpack(player)) { - return new ContainerJetpack(player, new InventoryCoalJetpack(Wearing.getHoldingJetpack(player)), false); + return new ContainerJetpack(player, new InventoryCoalJetpack(Wearing.getHoldingJetpack(player)), ContainerJetpack.SOURCE_HOLDING); } break; case JETPACK_WEARING: if (Wearing.isWearingJetpack(player)) { - return new ContainerJetpack(player, new InventoryCoalJetpack(Wearing.getWearingJetpack(player)), true); + return new ContainerJetpack(player, new InventoryCoalJetpack(Wearing.getWearingJetpack(player)), ContainerJetpack.SOURCE_WEARING); } break; default: diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java index 85055ebf..f2568bff 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java @@ -1,6 +1,7 @@ package com.darkona.adventurebackpack.inventory; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.Slot; @@ -14,12 +15,19 @@ @SuppressWarnings("WeakerAccess") abstract class ContainerAdventureBackpack extends Container { + public static final byte SOURCE_TILE = 0; + public static final byte SOURCE_WEARING = 1; + public static final byte SOURCE_HOLDING = 2; + protected static final int PLAYER_HOT_START = 0; protected static final int PLAYER_HOT_END = PLAYER_HOT_START + 8; protected static final int PLAYER_INV_START = PLAYER_HOT_END + 1; protected static final int PLAYER_INV_END = PLAYER_INV_START + 26; protected static final int PLAYER_INV_LENGTH = PLAYER_INV_END + 1; + protected EntityPlayer player; + protected byte source; + protected void bindPlayerInventory(InventoryPlayer invPlayer, int startX, int startY) { for (int x = 0; x < 9; x++) // hotbar - 9 slots @@ -36,6 +44,25 @@ protected void bindPlayerInventory(InventoryPlayer invPlayer, int startX, int st } } + @Override + public void detectAndSendChanges() + { + super.detectAndSendChanges(); + + if (source == SOURCE_HOLDING) // used for refresh tooltips and redraw tanks content while GUI is open + { + if (detectChanges()) + { + if (player instanceof EntityPlayerMP) + { + ((EntityPlayerMP) player).sendContainerAndContentsToPlayer(this, this.getInventory()); + } + } + } + } + + abstract protected boolean detectChanges(); + @Override public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) { @@ -81,6 +108,29 @@ protected boolean mergePlayerInv(ItemStack stack) abstract protected boolean transferStackToPack(ItemStack stack); + @Override + public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) + { + if (source == SOURCE_HOLDING && slot >= 0) + { + if (getSlot(slot) != null && getSlot(slot).getStack() == player.getHeldItem()) + { + return null; + } + if (flag == 2 && getSlot(button).getStack() == player.getHeldItem()) + { + return null; + } + } + return super.slotClick(slot, button, flag, player); + } + + @Override + public boolean canInteractWith(EntityPlayer player) + { + return true; + } + @Override protected boolean mergeItemStack(ItemStack initStack, int minIndex, int maxIndex, boolean backward) { @@ -154,8 +204,20 @@ protected boolean mergeItemStack(ItemStack initStack, int minIndex, int maxIndex } @Override - public boolean canInteractWith(EntityPlayer player) + public void onContainerClosed(EntityPlayer player) { - return true; + super.onContainerClosed(player); + + if (source == SOURCE_WEARING) //TODO no idea why this is here (preventing dupe on closing?), and why only for wearing + { + this.crafters.remove(player); + } + + if (!player.worldObj.isRemote) + { + dropContentOnClose(); + } } -} + + abstract protected void dropContentOnClose(); +} \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index c988acec..41fed7a0 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -1,7 +1,6 @@ package com.darkona.adventurebackpack.inventory; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.InventoryCraftResult; @@ -24,12 +23,8 @@ * * @author Darkona */ -public class ContainerBackpack extends ContainerAdventureBackpack /*implements IWearableContainer*/ +public class ContainerBackpack extends ContainerAdventureBackpack { - public static final byte SOURCE_TILE = 0; - public static final byte SOURCE_WEARING = 1; - public static final byte SOURCE_HOLDING = 2; - private static final int BACK_INV_START = PLAYER_INV_END + 1; private static final int BACK_INV_END = BACK_INV_START + 38; private static final int TOOL_START = BACK_INV_END + 1; @@ -40,8 +35,6 @@ public class ContainerBackpack extends ContainerAdventureBackpack /*implements I private InventoryCrafting craftMatrix = new InventoryCrafting(this, 3, 3); private IInventory craftResult = new InventoryCraftResult(); private IInventoryAdventureBackpack inventory; - private EntityPlayer player; - private byte source; private int leftAmount; private int rightAmount; @@ -115,46 +108,35 @@ private void makeSlots(InventoryPlayer invPlayer) } @Override - public void detectAndSendChanges() + protected boolean detectChanges() { - super.detectAndSendChanges(); + boolean changesDetected = false; - if (source == SOURCE_HOLDING) // used for refresh tooltips and redraw tanks content while GUI is open + ItemStack[] inv = inventory.getInventory(); + int tempCount = 0; + for (int i = 0; i <= LOWER_TOOL; i++) { - boolean changesDetected = false; - - ItemStack[] inv = inventory.getInventory(); - int tempCount = 0; - for (int i = 0; i <= LOWER_TOOL; i++) - { - if (inv[i] != null) - tempCount++; - } - if (invCount != tempCount) - { - invCount = tempCount; - changesDetected = true; - } - - if (leftAmount != inventory.getLeftTank().getFluidAmount()) - { - leftAmount = inventory.getLeftTank().getFluidAmount(); - changesDetected = true; - } - if (rightAmount != inventory.getRightTank().getFluidAmount()) - { - rightAmount = inventory.getRightTank().getFluidAmount(); - changesDetected = true; - } + if (inv[i] != null) + tempCount++; + } + if (invCount != tempCount) + { + invCount = tempCount; + changesDetected = true; + } - if (changesDetected) - { - if (player instanceof EntityPlayerMP) - { - ((EntityPlayerMP) player).sendContainerAndContentsToPlayer(this, this.getInventory()); - } - } + if (leftAmount != inventory.getLeftTank().getFluidAmount()) + { + leftAmount = inventory.getLeftTank().getFluidAmount(); + changesDetected = true; + } + if (rightAmount != inventory.getRightTank().getFluidAmount()) + { + rightAmount = inventory.getRightTank().getFluidAmount(); + changesDetected = true; } + + return changesDetected; } @Override @@ -261,51 +243,25 @@ else if (leftStackOut == null && rightStackOut == null && SlotBackpack.isValidIt } @Override - public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) + protected void dropContentOnClose() { - if (source == SOURCE_HOLDING && slot >= 0) + for (int i = 0; i < inventory.getSizeInventory(); i++) { - if (getSlot(slot) != null && getSlot(slot).getStack() == player.getHeldItem()) - { - return null; - } - if (flag == 2 && getSlot(button).getStack() == player.getHeldItem()) + ItemStack itemstack = this.inventory.getStackInSlotOnClosing(i); + if (itemstack != null) { - return null; + inventory.setInventorySlotContents(i, null); + player.dropPlayerItemWithRandomChoice(itemstack, false); } } - return super.slotClick(slot, button, flag, player); - } - - @Override - public void onContainerClosed(EntityPlayer player) - { - super.onContainerClosed(player); - if (source == SOURCE_WEARING) //TODO no idea why this is here (preventing dupe on closing?), and why only for wearing + for (int i = 0; i < 9; i++) { - this.crafters.remove(player); - } + ItemStack itemstack = this.craftMatrix.getStackInSlotOnClosing(i); - if (!player.worldObj.isRemote) - { - for (int i = 0; i < inventory.getSizeInventory(); i++) - { - ItemStack itemstack = this.inventory.getStackInSlotOnClosing(i); - if (itemstack != null) - { - inventory.setInventorySlotContents(i, null); - player.dropPlayerItemWithRandomChoice(itemstack, false); - } - } - for (int i = 0; i < 9; i++) + if (itemstack != null) { - ItemStack itemstack = this.craftMatrix.getStackInSlotOnClosing(i); - - if (itemstack != null) - { - player.dropPlayerItemWithRandomChoice(itemstack, false); - } + player.dropPlayerItemWithRandomChoice(itemstack, false); } } } @@ -315,11 +271,4 @@ public void onCraftMatrixChanged(IInventory inventory) { craftResult.setInventorySlotContents(0, CraftingManager.getInstance().findMatchingRecipe(craftMatrix, player.worldObj)); } - - /*@Override - public void refresh() - { - inventory.openInventory(); - this.onCraftMatrixChanged(craftMatrix); - }*/ } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java index c20d2543..5729d92d 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java @@ -1,7 +1,6 @@ package com.darkona.adventurebackpack.inventory; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidTank; @@ -14,23 +13,20 @@ * * @author Darkona */ -public class ContainerCopter extends ContainerAdventureBackpack /*implements IWearableContainer*/ +public class ContainerCopter extends ContainerAdventureBackpack { private static final int COPTER_INV_START = PLAYER_INV_END + 1; private InventoryCopterPack inventory; - private EntityPlayer player; - private boolean isWearing; - private int fuelAmount; - public ContainerCopter(EntityPlayer player, InventoryCopterPack copter, boolean wearing) + public ContainerCopter(EntityPlayer player, InventoryCopterPack copter, byte source) { this.player = player; inventory = copter; makeSlots(player.inventory); inventory.openInventory(); - isWearing = wearing; + this.source = source; } private void makeSlots(InventoryPlayer invPlayer) @@ -42,28 +38,17 @@ private void makeSlots(InventoryPlayer invPlayer) } @Override - public void detectAndSendChanges() + protected boolean detectChanges() { - super.detectAndSendChanges(); + boolean changesDetected = false; - if (!isWearing) + if (fuelAmount != inventory.getFuelTank().getFluidAmount()) { - boolean changesDetected = false; - - if (fuelAmount != inventory.getFuelTank().getFluidAmount()) - { - fuelAmount = inventory.getFuelTank().getFluidAmount(); - changesDetected = true; - } - - if (changesDetected) - { - if (player instanceof EntityPlayerMP) - { - ((EntityPlayerMP) player).sendContainerAndContentsToPlayer(this, this.getInventory()); - } - } + fuelAmount = inventory.getFuelTank().getFluidAmount(); + changesDetected = true; } + + return changesDetected; } @Override @@ -92,8 +77,11 @@ public boolean transferStackToPack(ItemStack stack) { if ((stackOut == null || areSameType) && SlotFluidFuel.isValidItem(stack)) { - if (!mergeBucket(stack)) - return false; + if (!isFuelTankEmpty) + { + if (!mergeBucket(stack)) + return false; + } } } } @@ -106,49 +94,16 @@ private boolean mergeBucket(ItemStack stack) } @Override - public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) + protected void dropContentOnClose() { - if (!isWearing && slot >= 0) + for (int i = 0; i < inventory.getSizeInventory(); i++) { - if (getSlot(slot) != null && getSlot(slot).getStack() == player.getHeldItem()) - { - return null; - } - if (flag == 2 && getSlot(button).getStack() == player.getHeldItem()) + ItemStack itemstack = this.inventory.getStackInSlotOnClosing(i); + if (itemstack != null) { - return null; + inventory.setInventorySlotContents(i, null); + player.dropPlayerItemWithRandomChoice(itemstack, false); } } - return super.slotClick(slot, button, flag, player); } - - @Override - public void onContainerClosed(EntityPlayer player) - { - super.onContainerClosed(player); - - if (isWearing) //TODO - { - this.crafters.remove(player); - } - - if (!player.worldObj.isRemote) - { - for (int i = 0; i < inventory.getSizeInventory(); i++) - { - ItemStack itemstack = this.inventory.getStackInSlotOnClosing(i); - if (itemstack != null) - { - inventory.setInventorySlotContents(i, null); - player.dropPlayerItemWithRandomChoice(itemstack, false); - } - } - } - } - - /*@Override - public void refresh() - { - inventory.openInventory(); - }*/ } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java index 35752395..0d078c32 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java @@ -1,7 +1,6 @@ package com.darkona.adventurebackpack.inventory; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidTank; @@ -15,26 +14,24 @@ * * @author Darkona */ -public class ContainerJetpack extends ContainerAdventureBackpack /*implements IWearableContainer*/ +public class ContainerJetpack extends ContainerAdventureBackpack { private static final int JETPACK_INV_START = PLAYER_INV_END + 1; private static final int JETPACK_FUEL_START = PLAYER_INV_END + 3; private InventoryCoalJetpack inventory; - private EntityPlayer player; - private boolean isWearing; private int waterAmount; private int steamAmount; private ItemStack fuelStack; - public ContainerJetpack(EntityPlayer player, InventoryCoalJetpack jetpack, boolean wearing) + public ContainerJetpack(EntityPlayer player, InventoryCoalJetpack jetpack, byte source) { this.player = player; inventory = jetpack; makeSlots(player.inventory); inventory.openInventory(); - isWearing = wearing; + this.source = source; } private void makeSlots(InventoryPlayer invPlayer) @@ -47,40 +44,29 @@ private void makeSlots(InventoryPlayer invPlayer) } @Override - public void detectAndSendChanges() + protected boolean detectChanges() { - super.detectAndSendChanges(); + boolean changesDetected = false; - if (!isWearing) + ItemStack[] inv = inventory.getInventory(); + if (inv[JETPACK_FUEL_SLOT] != fuelStack) { - boolean changesDetected = false; - - ItemStack[] inv = inventory.getInventory(); - if (inv[JETPACK_FUEL_SLOT] != fuelStack) - { - fuelStack = inv[JETPACK_FUEL_SLOT]; - changesDetected = true; - } - - if (waterAmount != inventory.getWaterTank().getFluidAmount()) - { - waterAmount = inventory.getWaterTank().getFluidAmount(); - changesDetected = true; - } - if (steamAmount != inventory.getSteamTank().getFluidAmount()) - { - steamAmount = inventory.getSteamTank().getFluidAmount(); - changesDetected = true; - } + fuelStack = inv[JETPACK_FUEL_SLOT]; + changesDetected = true; + } - if (changesDetected) - { - if (player instanceof EntityPlayerMP) - { - ((EntityPlayerMP) player).sendContainerAndContentsToPlayer(this, this.getInventory()); - } - } + if (waterAmount != inventory.getWaterTank().getFluidAmount()) + { + waterAmount = inventory.getWaterTank().getFluidAmount(); + changesDetected = true; + } + if (steamAmount != inventory.getSteamTank().getFluidAmount()) + { + steamAmount = inventory.getSteamTank().getFluidAmount(); + changesDetected = true; } + + return changesDetected; } @Override @@ -109,8 +95,11 @@ public boolean transferStackToPack(ItemStack stack) { if ((stackOut == null || areSameType) && SlotFluidWater.isValidItem(stack)) { - if (!mergeBucket(stack)) - return false; + if (!isWaterTankEmpty) + { + if (!mergeBucket(stack)) + return false; + } } } @@ -133,49 +122,16 @@ private boolean mergeFuel(ItemStack stack) } @Override - public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) - { - if (!isWearing && slot >= 0) - { - if (getSlot(slot) != null && getSlot(slot).getStack() == player.getHeldItem()) - { - return null; - } - if (flag == 2 && getSlot(button).getStack() == player.getHeldItem()) - { - return null; - } - } - return super.slotClick(slot, button, flag, player); - } - - @Override - public void onContainerClosed(EntityPlayer player) + protected void dropContentOnClose() { - super.onContainerClosed(player); - - if (isWearing) //TODO - { - this.crafters.remove(player); - } - - if (!player.worldObj.isRemote) + for (int i = 0; i < inventory.getSizeInventory(); i++) { - for (int i = 0; i < inventory.getSizeInventory(); i++) + ItemStack itemstack = this.inventory.getStackInSlotOnClosing(i); + if (itemstack != null) { - ItemStack itemstack = this.inventory.getStackInSlotOnClosing(i); - if (itemstack != null) - { - inventory.setInventorySlotContents(i, null); - player.dropPlayerItemWithRandomChoice(itemstack, false); - } + inventory.setInventorySlotContents(i, null); + player.dropPlayerItemWithRandomChoice(itemstack, false); } } } - - /*@Override - public void refresh() - { - inventory.openInventory(); - }*/ } From 05d8fab76f419b42c2fb5e866ffa36bc11ad3bb5 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 27 Jul 2017 11:48:35 +0700 Subject: [PATCH 402/462] Sources to Enum --- .../adventurebackpack/AdventureBackpack.java | 2 +- .../block/BlockAdventureBackpack.java | 6 +- .../block/TileAdventureBackpack.java | 28 ++------ .../client/gui/GuiAdvBackpack.java | 71 +++++++------------ .../client/gui/GuiCoalJetpack.java | 50 ++++--------- .../client/gui/GuiCopterPack.java | 45 +++--------- .../client/gui/GuiOverlay.java | 20 +++--- .../client/gui/GuiWithTanks.java | 59 +++++++++++++-- .../client/gui/IBackpackGui.java | 21 ------ .../client/render/RendererHose.java | 1 - .../common/BackpackAbilities.java | 2 - .../adventurebackpack/common/Constants.java | 5 ++ .../common/ServerActions.java | 1 + .../handlers/GuiHandler.java | 45 ++++++------ .../inventory/ContainerAdventureBackpack.java | 42 ++++++----- .../inventory/ContainerBackpack.java | 26 +++---- .../inventory/ContainerCopter.java | 24 +++---- .../inventory/ContainerJetpack.java | 23 +++--- .../inventory/IWearableContainer.java | 11 --- .../inventory/SlotFluid.java | 4 +- .../item/ItemCoalJetpack.java | 3 +- .../network/CowAbilityPacket.java | 2 +- .../EquipUnequipBackWearablePacket.java | 4 +- .../adventurebackpack/util/BackpackUtils.java | 8 +-- .../darkona/adventurebackpack/util/Utils.java | 12 +++- .../adventurebackpack/util/Wearing.java | 2 +- 26 files changed, 226 insertions(+), 291 deletions(-) delete mode 100644 src/main/java/com/darkona/adventurebackpack/client/gui/IBackpackGui.java delete mode 100644 src/main/java/com/darkona/adventurebackpack/inventory/IWearableContainer.java diff --git a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java index f0d3023b..dca27a15 100644 --- a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java @@ -19,9 +19,9 @@ import com.darkona.adventurebackpack.handlers.PlayerEventHandler; import com.darkona.adventurebackpack.handlers.TooltipEventHandler; import com.darkona.adventurebackpack.init.ModBlocks; +import com.darkona.adventurebackpack.init.ModDates; import com.darkona.adventurebackpack.init.ModEntities; import com.darkona.adventurebackpack.init.ModFluids; -import com.darkona.adventurebackpack.init.ModDates; import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.init.ModRecipes; diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java index e08aef38..e67227cc 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java @@ -376,9 +376,9 @@ public boolean removedByPlayer(World world, EntityPlayer player, int x, int y, i if (tile instanceof TileAdventureBackpack && !world.isRemote && player != null) { - if ((player.isSneaking()) ? - ((TileAdventureBackpack) tile).equip(world, player, x, y, z) : - ((TileAdventureBackpack) tile).drop(world, player, x, y, z)) + if ((player.isSneaking()) + ? ((TileAdventureBackpack) tile).equip(world, player, x, y, z) + : ((TileAdventureBackpack) tile).drop(world, player, x, y, z)) { return world.func_147480_a(x, y, z, false); } diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 71ed7903..700d1fbb 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -548,7 +548,7 @@ public boolean equip(World world, EntityPlayer player, int x, int y, int z) ItemStack stacky = new ItemStack(ModItems.adventureBackpack, 1); transferToItemStack(stacky); removeSleepingBag(world); - if (BackpackUtils.equipWearable(stacky, player) != BackpackUtils.reasons.SUCCESSFUL) + if (BackpackUtils.equipWearable(stacky, player) != BackpackUtils.Reasons.SUCCESSFUL) { if (Wearing.isWearingWearable(player)) { @@ -616,10 +616,10 @@ public void dirtyInventory() } - /** - * Returns an array containing the indices of the slots that can be accessed by automation on the given side of this - * block. - */ + //=================================================ISidedInventory================================================// + + private static final int[] SLOTS = Utils.createSlotArray(0, Constants.INVENTORY_MAIN_SIZE); + @Override public int[] getAccessibleSlotsFromSide(int side) { @@ -630,30 +630,12 @@ public int[] getAccessibleSlotsFromSide(int side) return null; } - private static final int[] SLOTS = createSlotArray(0, Constants.INVENTORY_MAIN_SIZE); - - private static int[] createSlotArray(int first, int count) - { - int[] slots = new int[count]; - for (int i = first; i < first + count; i++) - { - slots[i - first] = i; - } - return slots; - } - - /** - * Returns true if automation can insert the given item in the given slot from the given side. - */ @Override public boolean canInsertItem(int slot, ItemStack item, int side) { return this.isItemValidForSlot(slot, item); } - /** - * Returns true if automation can extract the given item in the given slot from the given side. - */ @Override public boolean canExtractItem(int slot, ItemStack item, int side) { diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index d4ffba58..e527fbc6 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -10,13 +10,12 @@ import cpw.mods.fml.relauncher.SideOnly; import com.darkona.adventurebackpack.block.TileAdventureBackpack; +import com.darkona.adventurebackpack.common.Constants.Source; import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.config.Keybindings; import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.inventory.ContainerBackpack; import com.darkona.adventurebackpack.inventory.IInventoryAdventureBackpack; import com.darkona.adventurebackpack.inventory.InventoryBackpack; -import com.darkona.adventurebackpack.network.EquipUnequipBackWearablePacket; import com.darkona.adventurebackpack.network.PlayerActionPacket; import com.darkona.adventurebackpack.network.SleepingBagPacket; import com.darkona.adventurebackpack.util.Resources; @@ -38,29 +37,25 @@ public class GuiAdvBackpack extends GuiWithTanks private static GuiTank tankRight = new GuiTank(207, 7, 100, 16, ConfigHandler.typeTankRender); private IInventoryAdventureBackpack inventory; - private EntityPlayer player; - private boolean isWearing; - private boolean isTile; private boolean isHoldingSpace; - public GuiAdvBackpack(EntityPlayer player, TileAdventureBackpack tileBackpack) + public GuiAdvBackpack(EntityPlayer player, TileAdventureBackpack tileBackpack, Source source) { - super(new ContainerBackpack(player, tileBackpack, ContainerBackpack.SOURCE_TILE)); + super(new ContainerBackpack(player, tileBackpack, source)); this.player = player; inventory = tileBackpack; - isTile = true; + this.source = source; xSize = 248; ySize = 207; } - public GuiAdvBackpack(EntityPlayer player, InventoryBackpack inventoryBackpack, boolean wearing) + public GuiAdvBackpack(EntityPlayer player, InventoryBackpack inventoryBackpack, Source source) { - super(new ContainerBackpack(player, inventoryBackpack, wearing ? ContainerBackpack.SOURCE_WEARING : ContainerBackpack.SOURCE_HOLDING)); + super(new ContainerBackpack(player, inventoryBackpack, source)); this.player = player; inventory = inventoryBackpack; - isWearing = wearing; - isTile = false; + this.source = source; xSize = 248; ySize = 207; } @@ -69,13 +64,11 @@ public GuiAdvBackpack(EntityPlayer player, InventoryBackpack inventoryBackpack, protected void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) { GL11.glColor4f(1, 1, 1, 1); - this.mc.renderEngine.bindTexture(TEXTURE); - drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); // Buttons and button highlight - if (isTile) + if (source == Source.TILE) { if (bedButton.inButton(this, mouseX, mouseY)) { @@ -86,7 +79,7 @@ protected void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) } } else { - if (isWearing) + if (source == Source.WEARING) { if (unequipButton.inButton(this, mouseX, mouseY)) { @@ -95,7 +88,7 @@ protected void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) { unequipButton.draw(this, 77, 227); } - } else + } else if (source == Source.HOLDING) { if (equipButton.inButton(this, mouseX, mouseY)) { @@ -156,47 +149,31 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) }*/ } + @Override + GuiImageButtonNormal getEquipButton() + { + return equipButton; + } + + @Override + GuiImageButtonNormal getUnequipButton() + { + return unequipButton; + } + @Override protected void mouseClicked(int mouseX, int mouseY, int button) { - //int sneakKey = Minecraft.getMinecraft().gameSettings.keyBindSneak.getKeyCode(); - if (isTile) + if (source == Source.TILE) { if (bedButton.inButton(this, mouseX, mouseY)) { TileAdventureBackpack te = (TileAdventureBackpack) inventory; ModNetwork.net.sendToServer(new SleepingBagPacket.SleepingBagMessage(te.xCoord, te.yCoord, te.zCoord)); } - } else - { - if (isWearing) - { - if (unequipButton.inButton(this, mouseX, mouseY)) - { - ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.UNEQUIP_WEARABLE, false)); - player.closeScreen(); - } - } else - { - if (equipButton.inButton(this, mouseX, mouseY)) - { - ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, false)); - //ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, Keyboard.isKeyDown(sneakKey))); - player.closeScreen(); - } - } } - super.mouseClicked(mouseX, mouseY, button); - } - @Override - protected void keyTyped(char key, int keycode) - { - if (keycode == Keybindings.openInventory.getKeyCode()) - { - player.closeScreen(); - } - super.keyTyped(key, keycode); + super.mouseClicked(mouseX, mouseY, button); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java index f7a857a5..66567d39 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java @@ -8,12 +8,10 @@ import net.minecraftforge.fluids.FluidTank; import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.common.Constants.Source; import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.config.Keybindings; -import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.inventory.ContainerJetpack; import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; -import com.darkona.adventurebackpack.network.EquipUnequipBackWearablePacket; import com.darkona.adventurebackpack.util.Resources; import com.darkona.adventurebackpack.util.Utils; import com.darkona.adventurebackpack.util.Wearing; @@ -33,17 +31,15 @@ public class GuiCoalJetpack extends GuiWithTanks private static GuiTank steamTank = new GuiTank(116, 8, 72, 16, ConfigHandler.typeTankRender); private InventoryCoalJetpack inventory; - private EntityPlayer player; - private boolean isWearing; private int boiling = 0; - public GuiCoalJetpack(EntityPlayer player, InventoryCoalJetpack inv, boolean wearing) + public GuiCoalJetpack(EntityPlayer player, InventoryCoalJetpack inv, Source source) { - super(new ContainerJetpack(player, inv, wearing ? ContainerJetpack.SOURCE_WEARING : ContainerJetpack.SOURCE_HOLDING)); + super(new ContainerJetpack(player, inv, source)); this.player = player; inventory = inv; - isWearing = wearing; + this.source = source; xSize = 176; ySize = 166; } @@ -55,7 +51,7 @@ protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int mouseX, in this.mc.renderEngine.bindTexture(TEXTURE); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - if (isWearing) + if (source == Source.WEARING) { if (unequipButton.inButton(this, mouseX, mouseY)) { @@ -64,7 +60,7 @@ protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int mouseX, in { unequipButton.draw(this, 1, 186); } - } else + } else if (source == Source.HOLDING) { if (equipButton.inButton(this, mouseX, mouseY)) { @@ -81,8 +77,10 @@ protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int mouseX, in protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { this.mc.renderEngine.bindTexture(TEXTURE); - if (isWearing) + if (source == Source.WEARING) //TODO why? + { inventory = new InventoryCoalJetpack(Wearing.getWearingJetpack(player)); + } FluidTank water = inventory.getWaterTank(); FluidTank steam = inventory.getSteamTank(); GL11.glPushMatrix(); @@ -140,39 +138,17 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) fontRendererObj.drawString((inventory.getTemperature()) + " C", 0, 0, 0x373737, false); GL11.glScalef(1, 1, 1); GL11.glPopMatrix(); - } @Override - protected void mouseClicked(int mouseX, int mouseY, int mouseButton) + GuiImageButtonNormal getEquipButton() { - //int sneakKey = Minecraft.getMinecraft().gameSettings.keyBindSneak.getKeyCode(); - if (isWearing) - { - if (unequipButton.inButton(this, mouseX, mouseY)) - { - ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.UNEQUIP_WEARABLE, false)); - player.closeScreen(); - } - } else - { - if (equipButton.inButton(this, mouseX, mouseY)) - { - ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, false)); - //ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, Keyboard.isKeyDown(sneakKey))); - player.closeScreen(); - } - } - super.mouseClicked(mouseX, mouseY, mouseButton); + return equipButton; } @Override - protected void keyTyped(char key, int keycode) + GuiImageButtonNormal getUnequipButton() { - if (keycode == Keybindings.openInventory.getKeyCode()) - { - player.closeScreen(); - } - super.keyTyped(key, keycode); + return unequipButton; } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java index 3e9c6806..5efff7e2 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java @@ -6,12 +6,10 @@ import net.minecraft.util.ResourceLocation; import net.minecraftforge.fluids.FluidTank; +import com.darkona.adventurebackpack.common.Constants.Source; import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.config.Keybindings; -import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.inventory.ContainerCopter; import com.darkona.adventurebackpack.inventory.InventoryCopterPack; -import com.darkona.adventurebackpack.network.EquipUnequipBackWearablePacket; import com.darkona.adventurebackpack.reference.GeneralReference; import com.darkona.adventurebackpack.util.Resources; import com.darkona.adventurebackpack.util.Utils; @@ -30,15 +28,13 @@ public class GuiCopterPack extends GuiWithTanks private static GuiTank fuelTank = new GuiTank(8, 8, 72, 32, ConfigHandler.typeTankRender); private InventoryCopterPack inventory; - private EntityPlayer player; - private boolean isWearing; - public GuiCopterPack(EntityPlayer player, InventoryCopterPack inv, boolean wearing) + public GuiCopterPack(EntityPlayer player, InventoryCopterPack inv, Source source) { - super(new ContainerCopter(player, inv, wearing ? ContainerCopter.SOURCE_WEARING : ContainerCopter.SOURCE_HOLDING)); + super(new ContainerCopter(player, inv, source)); this.player = player; inventory = inv; - isWearing = wearing; + this.source = source; xSize = 176; ySize = 166; } @@ -50,7 +46,7 @@ protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int mouseX, in this.mc.renderEngine.bindTexture(TEXTURE); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - if (isWearing) + if (source == Source.WEARING) { if (unequipButton.inButton(this, mouseX, mouseY)) { @@ -59,7 +55,7 @@ protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int mouseX, in { unequipButton.draw(this, 1, 186); } - } else + } else if (source == Source.HOLDING) { if (equipButton.inButton(this, mouseX, mouseY)) { @@ -103,35 +99,14 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) } @Override - protected void mouseClicked(int mouseX, int mouseY, int mouseButton) + GuiImageButtonNormal getEquipButton() { - //int sneakKey = Minecraft.getMinecraft().gameSettings.keyBindSneak.getKeyCode(); - if (isWearing) - { - if (unequipButton.inButton(this, mouseX, mouseY)) - { - ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.UNEQUIP_WEARABLE, false)); - player.closeScreen(); - } - } else - { - if (equipButton.inButton(this, mouseX, mouseY)) - { - ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, false)); - //ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, Keyboard.isKeyDown(sneakKey))); - player.closeScreen(); - } - } - super.mouseClicked(mouseX, mouseY, mouseButton); + return equipButton; } @Override - protected void keyTyped(char key, int keycode) + GuiImageButtonNormal getUnequipButton() { - if (keycode == Keybindings.openInventory.getKeyCode()) - { - player.closeScreen(); - } - super.keyTyped(key, keycode); + return unequipButton; } } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java index 80df193a..40af7ee4 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java @@ -76,14 +76,14 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) if (ConfigHandler.statusOverlay) { int xStep = ConfigHandler.statusOverlayLeft - ? BUFF_ICON_SIZE + BUFF_ICON_SPACING - : - BUFF_ICON_SIZE - BUFF_ICON_SPACING; + ? BUFF_ICON_SIZE + BUFF_ICON_SPACING + : -BUFF_ICON_SIZE - BUFF_ICON_SPACING; int xPos = ConfigHandler.statusOverlayLeft - ? ConfigHandler.statusOverlayIndentH - : screenWidth - BUFF_ICON_SIZE - ConfigHandler.statusOverlayIndentH; + ? ConfigHandler.statusOverlayIndentH + : screenWidth - BUFF_ICON_SIZE - ConfigHandler.statusOverlayIndentH; int yPos = ConfigHandler.statusOverlayTop - ? ConfigHandler.statusOverlayIndentV - : screenHeight - BUFF_ICON_SIZE - ConfigHandler.statusOverlayIndentV; + ? ConfigHandler.statusOverlayIndentV + : screenHeight - BUFF_ICON_SIZE - ConfigHandler.statusOverlayIndentV; Collection activePotionEffects = this.mc.thePlayer.getActivePotionEffects(); if (!activePotionEffects.isEmpty()) @@ -123,11 +123,11 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) int textureWidth = 10; int xPos = ConfigHandler.tanksOverlayRight - ? screenWidth - (textureWidth * 3) - ConfigHandler.tanksOverlayIndentH - : ConfigHandler.tanksOverlayIndentH; + ? screenWidth - (textureWidth * 3) - ConfigHandler.tanksOverlayIndentH + : ConfigHandler.tanksOverlayIndentH; int yPos = ConfigHandler.tanksOverlayBottom - ? screenHeight - textureHeight - ConfigHandler.tanksOverlayIndentV - : ConfigHandler.tanksOverlayIndentV; + ? screenHeight - textureHeight - ConfigHandler.tanksOverlayIndentV + : ConfigHandler.tanksOverlayIndentV; int tankX = xPos; GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java index 82005371..a539a702 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java @@ -3,8 +3,14 @@ import org.lwjgl.input.Mouse; import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; +import com.darkona.adventurebackpack.common.Constants.Source; +import com.darkona.adventurebackpack.config.Keybindings; +import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.network.EquipUnequipBackWearablePacket; + /** * Created on 06/01/2015 * @@ -12,26 +18,68 @@ */ public abstract class GuiWithTanks extends GuiContainer { - GuiWithTanks(Container p_i1072_1_) + protected EntityPlayer player; + protected Source source; + + GuiWithTanks(Container container) { - super(p_i1072_1_); + super(container); } - public int getLeft() + int getLeft() { return guiLeft; } - public int getTop() + int getTop() { return guiTop; } - public float getZLevel() + float getZLevel() { return zLevel; } + abstract GuiImageButtonNormal getEquipButton(); + + abstract GuiImageButtonNormal getUnequipButton(); + + @Override + protected void mouseClicked(int mouseX, int mouseY, int mouseButton) + { + //int sneakKey = Minecraft.getMinecraft().gameSettings.keyBindSneak.getKeyCode(); + if (source == Source.WEARING) + { + if (getUnequipButton().inButton(this, mouseX, mouseY)) + { + ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.UNEQUIP_WEARABLE, false)); + player.closeScreen(); + } + } else if (source == Source.HOLDING) + { + if (getEquipButton().inButton(this, mouseX, mouseY)) + { + ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, false)); + //ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, Keyboard.isKeyDown(sneakKey))); + player.closeScreen(); + } + } + + super.mouseClicked(mouseX, mouseY, mouseButton); + } + + @Override + protected void keyTyped(char key, int keycode) + { + if (keycode == Keybindings.openInventory.getKeyCode()) + { + player.closeScreen(); + } + + super.keyTyped(key, keycode); + } + @Override public void handleMouseInput() { @@ -42,5 +90,4 @@ public void handleMouseInput() super.handleMouseInput(); } - } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/IBackpackGui.java b/src/main/java/com/darkona/adventurebackpack/client/gui/IBackpackGui.java deleted file mode 100644 index 73aa1f9b..00000000 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/IBackpackGui.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.darkona.adventurebackpack.client.gui; - -import net.minecraft.util.IIcon; - -/** - * Created on 12/10/2014 - * - * @author Darkona - */ -public interface IBackpackGui -{ - void drawTexturedModelRectFromIcon(int i, int j, IIcon icon, int h, int w); - - int getLeft(); - - int getTop(); - - //public void drawTexturedModalRect(int i, int j, int srcX, int srcY, int w, int h); - - float getZLevel(); -} diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java index 239456ea..9e020d3d 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java @@ -36,7 +36,6 @@ public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRe } @Override - @SuppressWarnings("incomplete-switch") public void renderItem(ItemRenderType type, ItemStack hose, Object... data) { if (type == ItemRenderType.INVENTORY) diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java index b8614eae..a95dbcb4 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java @@ -134,7 +134,6 @@ public void executeAbility(EntityPlayer player, World world, Object backpack) public void executeRemoval(EntityPlayer player, World world, ItemStack backpack) { - String colorName = BackpackNames.getBackpackColorName(backpack); try { @@ -776,5 +775,4 @@ public void tileMelon(World world, TileAdventureBackpack backpack) { fillWithRain(world, backpack, new FluidStack(ModFluids.melonJuice, 2), 5); } - } diff --git a/src/main/java/com/darkona/adventurebackpack/common/Constants.java b/src/main/java/com/darkona/adventurebackpack/common/Constants.java index 1d06bc9e..7dcd0006 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/Constants.java +++ b/src/main/java/com/darkona/adventurebackpack/common/Constants.java @@ -9,6 +9,11 @@ */ public class Constants { + public enum Source + { + TILE, HOLDING, WEARING + } + public static final int BUCKET = FluidContainerRegistry.BUCKET_VOLUME; public static final int INVENTORY_SIZE = 45; diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index f9525343..98054e96 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -256,6 +256,7 @@ public static void toggleSleepingBag(EntityPlayer player, int coordX, int coordY } } else if (world.isRemote) { + //TODO -> ChatComponentTranslation player.addChatComponentMessage(new ChatComponentText("Can't deploy the sleeping bag! Check the surrounding area.")); } } else diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java index e9c6d41b..bbacf8ac 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java @@ -8,6 +8,7 @@ import com.darkona.adventurebackpack.client.gui.GuiAdvBackpack; import com.darkona.adventurebackpack.client.gui.GuiCoalJetpack; import com.darkona.adventurebackpack.client.gui.GuiCopterPack; +import com.darkona.adventurebackpack.common.Constants.Source; import com.darkona.adventurebackpack.inventory.ContainerBackpack; import com.darkona.adventurebackpack.inventory.ContainerCopter; import com.darkona.adventurebackpack.inventory.ContainerJetpack; @@ -44,43 +45,43 @@ public Object getServerGuiElement(int ID, EntityPlayer player, World world, int case BACKPACK_TILE: if (world.getTileEntity(x, y, z) != null && world.getTileEntity(x, y, z) instanceof TileAdventureBackpack) { - return new ContainerBackpack(player, (TileAdventureBackpack) world.getTileEntity(x, y, z), ContainerBackpack.SOURCE_TILE); + return new ContainerBackpack(player, (TileAdventureBackpack) world.getTileEntity(x, y, z), Source.TILE); } break; - case BACKPACK_WEARING: - if (Wearing.isWearingBackpack(player)) + case BACKPACK_HOLDING: + if (Wearing.isHoldingBackpack(player)) { - return new ContainerBackpack(player, new InventoryBackpack(Wearing.getWearingBackpack(player)), ContainerBackpack.SOURCE_WEARING); + return new ContainerBackpack(player, new InventoryBackpack(Wearing.getHoldingBackpack(player)), Source.HOLDING); } break; - case BACKPACK_HOLDING: - if (Wearing.isHoldingBackpack(player)) + case BACKPACK_WEARING: + if (Wearing.isWearingBackpack(player)) { - return new ContainerBackpack(player, new InventoryBackpack(Wearing.getHoldingBackpack(player)), ContainerBackpack.SOURCE_HOLDING); + return new ContainerBackpack(player, new InventoryBackpack(Wearing.getWearingBackpack(player)), Source.WEARING); } break; case COPTER_HOLDING: if (Wearing.isHoldingCopter(player)) { - return new ContainerCopter(player, new InventoryCopterPack(Wearing.getHoldingCopter(player)), ContainerCopter.SOURCE_HOLDING); + return new ContainerCopter(player, new InventoryCopterPack(Wearing.getHoldingCopter(player)), Source.HOLDING); } break; case COPTER_WEARING: if (Wearing.isWearingCopter(player)) { - return new ContainerCopter(player, new InventoryCopterPack(Wearing.getWearingCopter(player)), ContainerCopter.SOURCE_WEARING); + return new ContainerCopter(player, new InventoryCopterPack(Wearing.getWearingCopter(player)), Source.WEARING); } break; case JETPACK_HOLDING: if (Wearing.isHoldingJetpack(player)) { - return new ContainerJetpack(player, new InventoryCoalJetpack(Wearing.getHoldingJetpack(player)), ContainerJetpack.SOURCE_HOLDING); + return new ContainerJetpack(player, new InventoryCoalJetpack(Wearing.getHoldingJetpack(player)), Source.HOLDING); } break; case JETPACK_WEARING: if (Wearing.isWearingJetpack(player)) { - return new ContainerJetpack(player, new InventoryCoalJetpack(Wearing.getWearingJetpack(player)), ContainerJetpack.SOURCE_WEARING); + return new ContainerJetpack(player, new InventoryCoalJetpack(Wearing.getWearingJetpack(player)), Source.WEARING); } break; default: @@ -99,43 +100,43 @@ public Object getClientGuiElement(int ID, EntityPlayer player, World world, int case BACKPACK_TILE: if (world.getTileEntity(x, y, z) != null && world.getTileEntity(x, y, z) instanceof TileAdventureBackpack) { - return new GuiAdvBackpack(player, (TileAdventureBackpack) world.getTileEntity(x, y, z)); + return new GuiAdvBackpack(player, (TileAdventureBackpack) world.getTileEntity(x, y, z), Source.TILE); } break; - case BACKPACK_WEARING: - if (Wearing.isWearingBackpack(player)) + case BACKPACK_HOLDING: + if (Wearing.isHoldingBackpack(player)) { - return new GuiAdvBackpack(player, new InventoryBackpack(Wearing.getWearingBackpack(player)), true); + return new GuiAdvBackpack(player, new InventoryBackpack(Wearing.getHoldingBackpack(player)), Source.HOLDING); } break; - case BACKPACK_HOLDING: - if (Wearing.isHoldingBackpack(player)) + case BACKPACK_WEARING: + if (Wearing.isWearingBackpack(player)) { - return new GuiAdvBackpack(player, new InventoryBackpack(Wearing.getHoldingBackpack(player)), false); + return new GuiAdvBackpack(player, new InventoryBackpack(Wearing.getWearingBackpack(player)), Source.WEARING); } break; case COPTER_HOLDING: if (Wearing.isHoldingCopter(player)) { - return new GuiCopterPack(player, new InventoryCopterPack(Wearing.getHoldingCopter(player)), false); + return new GuiCopterPack(player, new InventoryCopterPack(Wearing.getHoldingCopter(player)), Source.HOLDING); } break; case COPTER_WEARING: if (Wearing.isWearingCopter(player)) { - return new GuiCopterPack(player, new InventoryCopterPack(Wearing.getWearingCopter(player)), true); + return new GuiCopterPack(player, new InventoryCopterPack(Wearing.getWearingCopter(player)), Source.WEARING); } break; case JETPACK_HOLDING: if (Wearing.isHoldingJetpack(player)) { - return new GuiCoalJetpack(player, new InventoryCoalJetpack(Wearing.getHoldingJetpack(player)), false); + return new GuiCoalJetpack(player, new InventoryCoalJetpack(Wearing.getHoldingJetpack(player)), Source.HOLDING); } break; case JETPACK_WEARING: if (Wearing.isWearingJetpack(player)) { - return new GuiCoalJetpack(player, new InventoryCoalJetpack(Wearing.getWearingJetpack(player)), true); + return new GuiCoalJetpack(player, new InventoryCoalJetpack(Wearing.getWearingJetpack(player)), Source.WEARING); } break; default: diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java index f2568bff..4039f45e 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java @@ -7,6 +7,8 @@ import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; +import com.darkona.adventurebackpack.common.Constants.Source; + /** * Created on 10.04.2017 * @@ -15,10 +17,6 @@ @SuppressWarnings("WeakerAccess") abstract class ContainerAdventureBackpack extends Container { - public static final byte SOURCE_TILE = 0; - public static final byte SOURCE_WEARING = 1; - public static final byte SOURCE_HOLDING = 2; - protected static final int PLAYER_HOT_START = 0; protected static final int PLAYER_HOT_END = PLAYER_HOT_START + 8; protected static final int PLAYER_INV_START = PLAYER_HOT_END + 1; @@ -26,7 +24,9 @@ abstract class ContainerAdventureBackpack extends Container protected static final int PLAYER_INV_LENGTH = PLAYER_INV_END + 1; protected EntityPlayer player; - protected byte source; + protected Source source; + + abstract IInventoryTanks getInventoryTanks(); protected void bindPlayerInventory(InventoryPlayer invPlayer, int startX, int startY) { @@ -49,14 +49,11 @@ public void detectAndSendChanges() { super.detectAndSendChanges(); - if (source == SOURCE_HOLDING) // used for refresh tooltips and redraw tanks content while GUI is open + if (source == Source.HOLDING) // used for refresh tooltips and redraw tanks content while GUI is open { - if (detectChanges()) + if (detectChanges() && player instanceof EntityPlayerMP) { - if (player instanceof EntityPlayerMP) - { - ((EntityPlayerMP) player).sendContainerAndContentsToPlayer(this, this.getInventory()); - } + ((EntityPlayerMP) player).sendContainerAndContentsToPlayer(this, this.getInventory()); } } } @@ -68,7 +65,7 @@ public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) { Slot slot = getSlot(fromSlot); - if (slot == null || slot.getStack() == null ) + if (slot == null || slot.getStack() == null) return null; ItemStack stack = slot.getStack(); @@ -111,7 +108,7 @@ protected boolean mergePlayerInv(ItemStack stack) @Override public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) { - if (source == SOURCE_HOLDING && slot >= 0) + if (source == Source.HOLDING && slot >= 0) { if (getSlot(slot) != null && getSlot(slot).getStack() == player.getHeldItem()) { @@ -128,7 +125,7 @@ public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) @Override public boolean canInteractWith(EntityPlayer player) { - return true; + return getInventoryTanks().isUseableByPlayer(player); } @Override @@ -208,7 +205,7 @@ public void onContainerClosed(EntityPlayer player) { super.onContainerClosed(player); - if (source == SOURCE_WEARING) //TODO no idea why this is here (preventing dupe on closing?), and why only for wearing + if (source == Source.WEARING) //TODO no idea why this is here (preventing dupe on closing?), and why only for wearing { this.crafters.remove(player); } @@ -219,5 +216,18 @@ public void onContainerClosed(EntityPlayer player) } } - abstract protected void dropContentOnClose(); + protected void dropContentOnClose() + { + IInventoryTanks inv = getInventoryTanks(); + + for (int i = 0; i < inv.getSizeInventory(); i++) + { + ItemStack itemstack = inv.getStackInSlotOnClosing(i); + if (itemstack != null) + { + inv.setInventorySlotContents(i, null); + player.dropPlayerItemWithRandomChoice(itemstack, false); + } + } + } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 41fed7a0..7d248399 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -11,6 +11,8 @@ import net.minecraft.item.crafting.CraftingManager; import net.minecraftforge.fluids.FluidTank; +import com.darkona.adventurebackpack.common.Constants.Source; + import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_LEFT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_RIGHT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_LEFT; @@ -42,7 +44,7 @@ public class ContainerBackpack extends ContainerAdventureBackpack //IDEA redesign container layout/craft slots behavior, so it will be rectangular and compatible with invTweaks. this also makes more slots available cuz craft ones will not drop content on close - public ContainerBackpack(EntityPlayer player, IInventoryAdventureBackpack backpack, byte source) + public ContainerBackpack(EntityPlayer player, IInventoryAdventureBackpack backpack, Source source) { this.player = player; inventory = backpack; @@ -56,6 +58,12 @@ public IInventoryAdventureBackpack getInventoryBackpack() return inventory; } + @Override + public IInventoryTanks getInventoryTanks() + { + return inventory; + } + private void makeSlots(InventoryPlayer invPlayer) { bindPlayerInventory(invPlayer, 44, 125); @@ -209,16 +217,16 @@ private boolean transferFluidContainer(ItemStack container) { if (isLeftTankEmpty) { - if (!isRightTankEmpty && (rightStackOut == null || areRightSameType) && suitableToRight) + if (!isRightTankEmpty && suitableToRight && (rightStackOut == null || areRightSameType)) return mergeRightBucket(container); else if (leftStackOut == null || areLeftSameType) return mergeLeftBucket(container); } else { - if ((leftStackOut == null || areLeftSameType) && suitableToLeft) + if (suitableToLeft && (leftStackOut == null || areLeftSameType)) return mergeLeftBucket(container); - else if ((rightStackOut == null || areRightSameType) && (isRightTankEmpty || suitableToRight)) + else if ((isRightTankEmpty || suitableToRight) && (rightStackOut == null || areRightSameType)) return mergeRightBucket(container); else if (leftStackOut == null && rightStackOut == null && SlotBackpack.isValidItem(container)) return mergeBackpackInv(container); @@ -245,15 +253,7 @@ else if (leftStackOut == null && rightStackOut == null && SlotBackpack.isValidIt @Override protected void dropContentOnClose() { - for (int i = 0; i < inventory.getSizeInventory(); i++) - { - ItemStack itemstack = this.inventory.getStackInSlotOnClosing(i); - if (itemstack != null) - { - inventory.setInventorySlotContents(i, null); - player.dropPlayerItemWithRandomChoice(itemstack, false); - } - } + super.dropContentOnClose(); for (int i = 0; i < 9; i++) { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java index 5729d92d..1d366518 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java @@ -5,6 +5,8 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidTank; +import com.darkona.adventurebackpack.common.Constants.Source; + import static com.darkona.adventurebackpack.common.Constants.COPTER_BUCKET_IN; import static com.darkona.adventurebackpack.common.Constants.COPTER_BUCKET_OUT; @@ -20,7 +22,7 @@ public class ContainerCopter extends ContainerAdventureBackpack private InventoryCopterPack inventory; private int fuelAmount; - public ContainerCopter(EntityPlayer player, InventoryCopterPack copter, byte source) + public ContainerCopter(EntityPlayer player, InventoryCopterPack copter, Source source) { this.player = player; inventory = copter; @@ -29,6 +31,12 @@ public ContainerCopter(EntityPlayer player, InventoryCopterPack copter, byte sou this.source = source; } + @Override + public IInventoryTanks getInventoryTanks() + { + return inventory; + } + private void makeSlots(InventoryPlayer invPlayer) { bindPlayerInventory(invPlayer, 8, 84); @@ -92,18 +100,4 @@ private boolean mergeBucket(ItemStack stack) { return mergeItemStack(stack, COPTER_INV_START, COPTER_INV_START + 1, false); } - - @Override - protected void dropContentOnClose() - { - for (int i = 0; i < inventory.getSizeInventory(); i++) - { - ItemStack itemstack = this.inventory.getStackInSlotOnClosing(i); - if (itemstack != null) - { - inventory.setInventorySlotContents(i, null); - player.dropPlayerItemWithRandomChoice(itemstack, false); - } - } - } } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java index 0d078c32..1bf66451 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java @@ -6,6 +6,7 @@ import net.minecraftforge.fluids.FluidTank; import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.common.Constants.Source; import static com.darkona.adventurebackpack.common.Constants.JETPACK_FUEL_SLOT; @@ -25,7 +26,7 @@ public class ContainerJetpack extends ContainerAdventureBackpack private int steamAmount; private ItemStack fuelStack; - public ContainerJetpack(EntityPlayer player, InventoryCoalJetpack jetpack, byte source) + public ContainerJetpack(EntityPlayer player, InventoryCoalJetpack jetpack, Source source) { this.player = player; inventory = jetpack; @@ -34,6 +35,12 @@ public ContainerJetpack(EntityPlayer player, InventoryCoalJetpack jetpack, byte this.source = source; } + @Override + public IInventoryTanks getInventoryTanks() + { + return inventory; + } + private void makeSlots(InventoryPlayer invPlayer) { bindPlayerInventory(invPlayer, 8, 84); @@ -120,18 +127,4 @@ private boolean mergeFuel(ItemStack stack) { return mergeItemStack(stack, JETPACK_FUEL_START, JETPACK_FUEL_START + 1, false); } - - @Override - protected void dropContentOnClose() - { - for (int i = 0; i < inventory.getSizeInventory(); i++) - { - ItemStack itemstack = this.inventory.getStackInSlotOnClosing(i); - if (itemstack != null) - { - inventory.setInventorySlotContents(i, null); - player.dropPlayerItemWithRandomChoice(itemstack, false); - } - } - } } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/IWearableContainer.java b/src/main/java/com/darkona/adventurebackpack/inventory/IWearableContainer.java deleted file mode 100644 index 9712839b..00000000 --- a/src/main/java/com/darkona/adventurebackpack/inventory/IWearableContainer.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.darkona.adventurebackpack.inventory; - -/** - * Created on 12/01/2015 - * - * @author Darkona - */ -public interface IWearableContainer -{ - void refresh(); -} diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java index e4f3e739..62753326 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java @@ -59,7 +59,7 @@ static boolean isFilledBucket(ItemStack stack) static boolean isEqualFluid(ItemStack container, FluidTank tank) { - return SlotFluid.getFluidID(container) == SlotFluid.getFluidID(tank); + return getFluidID(container) == getFluidID(tank); } static String getFluidName(ItemStack stack) @@ -104,7 +104,7 @@ static int getCapacity(ItemStack stack) static boolean canFitToTank(ItemStack container, FluidTank tank) { - return tank.getFluidAmount() + SlotFluid.getCapacity(container) <= tank.getCapacity(); + return tank.getFluidAmount() + getCapacity(container) <= tank.getCapacity(); } static boolean isEqualAndCanFit(ItemStack container, FluidTank tank) diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index 6ed2a808..29300370 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -78,7 +78,7 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla public void onEquipped(World world, EntityPlayer player, ItemStack stack) { InventoryCoalJetpack inv = new InventoryCoalJetpack(stack); - inv.calculateLostTime(); + inv.calculateLostTime(); //TODO debug artifact? if (inv.getTemperature() == 0) inv.setTemperature(getBiomeMinTemp(player, world)); } @@ -142,7 +142,6 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) } if (!world.isRemote) ModNetwork.sendToNearby(new EntityParticlePacket.Message(EntityParticlePacket.JETPACK_PARTICLE, player), player); - } inv.closeInventory(); } diff --git a/src/main/java/com/darkona/adventurebackpack/network/CowAbilityPacket.java b/src/main/java/com/darkona/adventurebackpack/network/CowAbilityPacket.java index 7fa43ea9..9b68175c 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/CowAbilityPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/CowAbilityPacket.java @@ -12,8 +12,8 @@ import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import com.darkona.adventurebackpack.inventory.IInventoryAdventureBackpack; import com.darkona.adventurebackpack.inventory.ContainerBackpack; +import com.darkona.adventurebackpack.inventory.IInventoryAdventureBackpack; /** * Created on 16/10/2014 diff --git a/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java b/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java index b963aad1..18617542 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java @@ -37,7 +37,7 @@ public Message onMessage(Message message, MessageContext ctx) } else */ if (Wearing.isHoldingWearable(player) && !Wearing.isWearingWearable(player)) { - if (BackpackUtils.equipWearable(player.getCurrentEquippedItem(), player) == BackpackUtils.reasons.SUCCESSFUL) + if (BackpackUtils.equipWearable(player.getCurrentEquippedItem(), player) == BackpackUtils.Reasons.SUCCESSFUL) { player.inventory.setInventorySlotContents(player.inventory.currentItem, null); player.inventoryContainer.detectAndSendChanges(); @@ -66,12 +66,12 @@ public Message onMessage(Message message, MessageContext ctx) public static class Message implements IMessage { - private byte action; private boolean force; public Message() { + } public Message(byte action, boolean force) diff --git a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java index eae685d5..8b3bc6c5 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java @@ -22,12 +22,12 @@ public class BackpackUtils { private static Timer timer = new Timer(); - public enum reasons + public enum Reasons { SUCCESSFUL, ALREADY_EQUIPPED } - public static reasons equipWearable(ItemStack backpack, EntityPlayer player) + public static Reasons equipWearable(ItemStack backpack, EntityPlayer player) { BackpackProperty prop = BackpackProperty.get(player); if (prop.getWearable() == null) @@ -39,10 +39,10 @@ public static reasons equipWearable(ItemStack backpack, EntityPlayer player) WearableEvent event = new WearableEvent.EquipWearableEvent(player, prop.getWearable()); MinecraftForge.EVENT_BUS.post(event); BackpackProperty.sync(player); - return reasons.SUCCESSFUL; + return Reasons.SUCCESSFUL; } else { - return reasons.ALREADY_EQUIPPED; + return Reasons.ALREADY_EQUIPPED; } } diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index 6db48a7e..a4db2f58 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -314,7 +314,7 @@ public static String makeItRainbow(String theString) return rainbowed.toString(); } - public static boolean isDimensionAllowed (int dimensionID) + public static boolean isDimensionAllowed(int dimensionID) { String currentDimID = String.valueOf(dimensionID); for (String forbiddenID : ConfigHandler.forbiddenDimensions) @@ -326,4 +326,14 @@ public static boolean isDimensionAllowed (int dimensionID) } return true; } + + public static int[] createSlotArray(int first, int count) + { + int[] slots = new int[count]; + for (int i = first; i < first + count; i++) + { + slots[i - first] = i; + } + return slots; + } } diff --git a/src/main/java/com/darkona/adventurebackpack/util/Wearing.java b/src/main/java/com/darkona/adventurebackpack/util/Wearing.java index fc89edd9..09391ac9 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Wearing.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Wearing.java @@ -95,7 +95,7 @@ public static ItemStack getHoldingBackpack(EntityPlayer player) public static InventoryBackpack getHoldingBackpackInv(EntityPlayer player) { - return new InventoryBackpack (player.getCurrentEquippedItem()); + return new InventoryBackpack(player.getCurrentEquippedItem()); } // Copter From 90a8ef6ba74f0718e8735672abc953a97ebf1108 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 27 Jul 2017 14:44:50 +0700 Subject: [PATCH 403/462] Random cleanup --- .../block/BackpackMaterial.java | 112 ------------------ .../block/BlockAdventureBackpack.java | 21 +--- .../block/BlockCampFire.java | 54 --------- .../block/BlockSleepingBag.java | 63 +--------- .../adventurebackpack/client/Visuals.java | 13 +- .../client/gui/GuiAdvBackpack.java | 4 +- .../client/gui/GuiCoalJetpack.java | 4 +- .../client/gui/GuiCopterPack.java | 4 +- .../client/gui/GuiWithTanks.java | 4 +- .../handlers/PlayerEventHandler.java | 9 +- 10 files changed, 20 insertions(+), 268 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/BackpackMaterial.java b/src/main/java/com/darkona/adventurebackpack/block/BackpackMaterial.java index 34deaf89..437012bc 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BackpackMaterial.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BackpackMaterial.java @@ -15,151 +15,39 @@ public BackpackMaterial() super(MapColor.brownColor); } - /** - * Returns if blocks of these materials are liquids. - */ - @Override - public boolean isLiquid() - { - return false; - } - - @Override - public boolean isSolid() - { - return true; - } - - /** - * Will prevent grass from growing on dirt underneath and kill any grass below it if it returns true - */ @Override public boolean getCanBlockGrass() { return false; } - /** - * Returns if this material is considered solid or not - */ - @Override - public boolean blocksMovement() - { - return super.blocksMovement(); - } - - /** - * Makes blocks with this material require the correct tool to be harvested. - */ - @Override - protected Material setRequiresTool() - { - return super.setRequiresTool(); - } - - /** - * Set the canBurn bool to True and return the current object. - */ @Override protected Material setBurning() { return this; } - /** - * Returns if the block can burn or not. - */ @Override public boolean getCanBurn() { return false; } - /** - * Sets {@link #replaceable} to true. - */ - @Override - public Material setReplaceable() - { - return super.setReplaceable(); - } - - /** - * Returns whether the material can be replaced by other blocks when placed - eg snow, vines and tall grass. - */ @Override public boolean isReplaceable() { return false; } - /** - * Returns true if the material can be harvested without a tool (or with the wrong tool) - */ @Override public boolean isToolNotRequired() { return true; } - /** - * This type of material can't be pushed, but pistons can move over it. - */ - @Override - protected Material setNoPushMobility() - { - return super.setNoPushMobility(); - } - - /** - * @see #isAdventureModeExempt() - */ - @Override - protected Material setAdventureModeExempt() - { - return super.setAdventureModeExempt(); - } - - @Override - public MapColor getMaterialMapColor() - { - return super.getMaterialMapColor(); - } - - /** - * Returns true if blocks with this material can always be mined in adventure mode. - */ @Override public boolean isAdventureModeExempt() { return true; } - - /** - * This type of material can't be pushed, and pistons are blocked to move. - */ - @Override - protected Material setImmovableMobility() - { - return super.setImmovableMobility(); - } - - /** - * Returns the mobility information of the material, 0 = free, 1 = can't push but can move over, 2 = total - * immobility and stop pistons. - */ - @Override - public int getMaterialMobility() - { - return super.getMaterialMobility(); - } - - /** - * Indicate if the material is opaque - */ - @Override - public boolean isOpaque() - { - return super.isOpaque(); - } } diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java index e67227cc..d27fb9a4 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java @@ -172,24 +172,6 @@ public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity e } } - /** - * Called when a player hits the block. Args: world, x, y, z, player - */ - @Override - public void onBlockClicked(World p_149699_1_, int p_149699_2_, int p_149699_3_, int p_149699_4_, EntityPlayer p_149699_5_) - { - super.onBlockClicked(p_149699_1_, p_149699_2_, p_149699_3_, p_149699_4_, p_149699_5_); - } - - /** - * Called when a block is placed using its ItemBlock. - */ - @Override - public int onBlockPlaced(World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int meta) - { - return super.onBlockPlaced(world, x, y, z, side, hitX, hitY, hitZ, meta); - } - @Override public boolean isFlammable(IBlockAccess world, int x, int y, int z, ForgeDirection face) { @@ -319,13 +301,12 @@ public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase p } world.setBlockMetadataWithNotify(x, y, z, dir, 3); createNewTileEntity(world, world.getBlockMetadata(x, y, z)); - } @Override public boolean canPlaceBlockOnSide(World par1World, int par2, int par3, int par4, int side) { - return (ForgeDirection.getOrientation(side) == ForgeDirection.UP); + return ForgeDirection.getOrientation(side) == ForgeDirection.UP; } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java b/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java index 18350fea..48cde960 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java @@ -8,7 +8,6 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.ChunkCoordinates; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; @@ -36,16 +35,6 @@ public BlockCampFire() this.setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); } - private void func_149978_e() - { - this.setBlockBounds(0.2F, 0.0F, 0.2F, 0.8F, 0.15F, 0.8F); - } - - private void blockBoundsForRender() - { - this.func_149978_e(); - } - @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) @@ -77,9 +66,6 @@ public boolean isOpaqueCube() return false; } - /** - * If this block doesn't render as an ordinary block it will return False (examples: signs, buttons, stairs, etc) - */ @Override public boolean renderAsNormalBlock() { @@ -98,18 +84,12 @@ public boolean isNormalCube() return false; } - /** - * Indicate if a material is a normal solid opaque cube - */ @Override public boolean isBlockNormalCube() { return false; } - /** - * A randomly called display update to be able to add particles or other items for display - */ @SideOnly(Side.CLIENT) @Override public void randomDisplayTick(World world, int posX, int posY, int posZ, Random rnd) @@ -152,52 +132,18 @@ public void setBlockBoundsBasedOnState(IBlockAccess blockAccess, int x, int y, i this.setBlockBounds(0.2F, 0.0F, 0.2F, 0.8F, 0.15F, 0.8F); } - /** - * Returns a bounding box from the pool of bounding boxes (this means this box can change after the pool has been - * cleared to be reused) - */ - @Override - public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_149668_2_, int p_149668_3_, int p_149668_4_) - { - return super.getCollisionBoundingBoxFromPool(p_149668_1_, p_149668_2_, p_149668_3_, p_149668_4_); - } - - /** - * Returns the bounding box of the wired rectangular prism to render. - */ - @Override - public AxisAlignedBB getSelectedBoundingBoxFromPool(World p_149633_1_, int p_149633_2_, int p_149633_3_, int p_149633_4_) - { - return super.getSelectedBoundingBoxFromPool(p_149633_1_, p_149633_2_, p_149633_3_, p_149633_4_); - } - @Override public IIcon getIcon(IBlockAccess p_149673_1_, int p_149673_2_, int p_149673_3_, int p_149673_4_, int p_149673_5_) { return icon; } - /** - * Gets the block's texture. Args: side, meta - */ @Override public IIcon getIcon(int p_149691_1_, int p_149691_2_) { return icon; } - /** - * Determines if this block is classified as a Bed, Allowing - * players to sleep in it, though the block has to specifically - * perform the sleeping functionality in it's activated event. - * - * @param world The current world - * @param x X Position - * @param y Y Position - * @param z Z Position - * @param player The player or camera entity, null in some cases. - * @return True to treat this as a bed - */ @Override public boolean isBed(IBlockAccess world, int x, int y, int z, EntityLivingBase player) { diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java b/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java index b22d6100..a51290bb 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java @@ -37,7 +37,7 @@ */ public class BlockSleepingBag extends BlockDirectional { - public static final int[][] footBlockToHeadBlockMap = new int[][]{{0, 1}, {-1, 0}, {0, -1}, {1, 0}}; + private static final int[][] footBlockToHeadBlockMap = new int[][]{{0, 1}, {-1, 0}, {0, -1}, {1, 0}}; @SideOnly(Side.CLIENT) private IIcon[] endIcons; @@ -60,9 +60,6 @@ protected String getTextureName() return this.textureName == null ? "MISSING_ICON_BLOCK_" + getIdFromBlock(this) + "_" + getUnlocalizedName() : this.textureName; } - /** - * Returns the unlocalized name of the block with "tile." appended to the front. - */ @Override public String getUnlocalizedName() { @@ -77,8 +74,7 @@ private void func_149978_e() /** * Returns whether or not this bed block is the head of the bed. */ - - public static boolean isBlockHeadOfBed(int meta) + private static boolean isBlockHeadOfBed(int meta) { return (meta & 8) != 0; } @@ -211,7 +207,7 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p } } - public static void setBedOccupied(World world, int x, int y, int z, boolean flag) + private static void setBedOccupied(World world, int x, int y, int z, boolean flag) { int l = world.getBlockMetadata(x, y, z); @@ -226,7 +222,7 @@ public static void setBedOccupied(World world, int x, int y, int z, boolean flag world.setBlockMetadataWithNotify(x, y, z, l, 4); } - public static boolean isBedOccupied(int meta) + private static boolean isBedOccupied(int meta) { return (meta & 4) != 0; } @@ -271,38 +267,6 @@ public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) return null; } - public static ChunkCoordinates func_149977_a(World world, int x, int y, int z, int whatever) - { - int meta = world.getBlockMetadata(x, y, z); - int dir = BlockDirectional.getDirection(meta); - - for (int k1 = 0; k1 <= 1; ++k1) - { - int l1 = x - footBlockToHeadBlockMap[dir][0] * k1 - 1; - int i2 = z - footBlockToHeadBlockMap[dir][1] * k1 - 1; - int j2 = l1 + 2; - int k2 = i2 + 2; - - for (int l2 = l1; l2 <= j2; ++l2) - { - for (int i3 = i2; i3 <= k2; ++i3) - { - if (World.doesBlockHaveSolidTopSurface(world, l2, y - 1, i3) && !world.getBlock(l2, y, i3).getMaterial().isOpaque() && !world.getBlock(l2, y + 1, i3).getMaterial().isOpaque()) - { - if (whatever <= 0) - { - return new ChunkCoordinates(l2, y, i3); - } - - --whatever; - } - } - } - } - - return null; - } - @Override public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) { @@ -409,40 +373,21 @@ public boolean isNormalCube() return false; } - /** - * Indicate if a material is a normal solid opaque cube - */ @Override public boolean isBlockNormalCube() { return false; } - /** - * If this block doesn't render as an ordinary block it will return False (examples: signs, buttons, stairs, etc) - */ @Override public boolean renderAsNormalBlock() { return false; } - /** - * Is this block (a) opaque and (b) a full 1m cube? This determines whether or not to render the shared face of two - * adjacent blocks and also whether the player can attach torches, redstone wire, etc to this block. - */ @Override public boolean isOpaqueCube() { return false; } - - /** - * Returns if this block is collidable (only used by Fire). - */ - @Override - public boolean isCollidable() - { - return super.isCollidable(); - } } diff --git a/src/main/java/com/darkona/adventurebackpack/client/Visuals.java b/src/main/java/com/darkona/adventurebackpack/client/Visuals.java index 90330e3f..810bfa2d 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/Visuals.java +++ b/src/main/java/com/darkona/adventurebackpack/client/Visuals.java @@ -102,20 +102,9 @@ public static EntityFX spawnParticle(String particleName, double x, double y, do return null; } else { - if (particleName.equals("steam")) + if (particleName.equals("steam")) //TODO particle names to Enum { entityFX = new SteamFX(theWorld, x, y, z, (float) motionX, (float) motionY, (float) motionZ); - /* - try - { - entityFX = (EntityFX) Class.forName("mods.railcraft.client.particles.EntitySteamFX") - .getConstructor(World.class,int.class,int.class,int.class,float.class,float.class,float.class) - .newInstance(theWorld, x, y, z, (float) motionX, (float) motionY, (float) motionZ); - }catch(Exception ex) - { - entityFX = new SteamFX(theWorld, x, y, z, (float) motionX, (float) motionY, (float) motionZ); - } - */ } mc.effectRenderer.addEffect(entityFX); return entityFX; diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index e527fbc6..7aabc657 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -150,13 +150,13 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) } @Override - GuiImageButtonNormal getEquipButton() + protected GuiImageButtonNormal getEquipButton() { return equipButton; } @Override - GuiImageButtonNormal getUnequipButton() + protected GuiImageButtonNormal getUnequipButton() { return unequipButton; } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java index 66567d39..257508c9 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java @@ -141,13 +141,13 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) } @Override - GuiImageButtonNormal getEquipButton() + protected GuiImageButtonNormal getEquipButton() { return equipButton; } @Override - GuiImageButtonNormal getUnequipButton() + protected GuiImageButtonNormal getUnequipButton() { return unequipButton; } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java index 5efff7e2..2d18d38e 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java @@ -99,13 +99,13 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) } @Override - GuiImageButtonNormal getEquipButton() + protected GuiImageButtonNormal getEquipButton() { return equipButton; } @Override - GuiImageButtonNormal getUnequipButton() + protected GuiImageButtonNormal getUnequipButton() { return unequipButton; } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java index a539a702..1db08bc4 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java @@ -41,9 +41,9 @@ float getZLevel() return zLevel; } - abstract GuiImageButtonNormal getEquipButton(); + abstract protected GuiImageButtonNormal getEquipButton(); - abstract GuiImageButtonNormal getUnequipButton(); + abstract protected GuiImageButtonNormal getUnequipButton(); @Override protected void mouseClicked(int mouseX, int mouseY, int mouseButton) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index b7f43481..9290649d 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -135,10 +135,13 @@ public void pistonBootsUnequipped(LivingEvent.LivingUpdateEvent event) { pistonBootsStepHeight = true; } - } else if (pistonBootsStepHeight) + } else { - player.stepHeight = 0.5001F; - pistonBootsStepHeight = false; + if (pistonBootsStepHeight) + { + player.stepHeight = 0.5001F; + pistonBootsStepHeight = false; + } } } } From e2dda3b411884c291ae13529a0782d90ad494664 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Fri, 28 Jul 2017 06:07:36 +0700 Subject: [PATCH 404/462] Tooltips localizable --- .../common/ServerActions.java | 6 +- .../handlers/TooltipEventHandler.java | 165 ++++++++++++------ .../assets/adventurebackpack/lang/en_US.lang | 42 ++++- .../assets/adventurebackpack/lang/ru_RU.lang | 7 + 4 files changed, 156 insertions(+), 64 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index 98054e96..b16c3bf7 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -9,7 +9,6 @@ import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.world.World; import net.minecraftforge.fluids.FluidStack; @@ -254,10 +253,9 @@ public static void toggleSleepingBag(EntityPlayer player, int coordX, int coordY { player.closeScreen(); } - } else if (world.isRemote) + } else if (!world.isRemote) { - //TODO -> ChatComponentTranslation - player.addChatComponentMessage(new ChatComponentText("Can't deploy the sleeping bag! Check the surrounding area.")); + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.backpack.cant.bag")); } } else { diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java index 542327d5..87284328 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java @@ -1,11 +1,14 @@ package com.darkona.adventurebackpack.handlers; +import java.util.List; + import net.minecraft.client.gui.GuiScreen; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.StatCollector; import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.event.entity.player.ItemTooltipEvent; import net.minecraftforge.fluids.FluidStack; @@ -31,6 +34,8 @@ */ public class TooltipEventHandler { + private List eventTip; + @SubscribeEvent @SideOnly(Side.CLIENT) @SuppressWarnings("unused") @@ -39,6 +44,7 @@ public void itemsTooltips(ItemTooltipEvent event) if (!ConfigHandler.enableTooltips) return; + eventTip = event.toolTip; Item theItem = event.itemStack.getItem(); if (theItem instanceof ItemAdventureBackpack) @@ -47,29 +53,18 @@ public void itemsTooltips(ItemTooltipEvent event) NBTTagCompound compound = event.itemStack.stackTagCompound; NBTTagCompound backpackTag = compound.getCompoundTag(Constants.COMPOUND_TAG); - /*if (ConfigHandler.IS_DEVENV && GuiScreen.isCtrlKeyDown()) - { - tank.readFromNBT(backpackTag.getCompoundTag(Constants.LEFT_TANK)); - event.toolTip.add(tank.getFluidAmount() == 0 ? "" : tank.getFluid().getUnlocalizedName()); - event.toolTip.add(tank.getFluidAmount() == 0 ? "" : tank.getFluid().getFluid().getName()); - tank.readFromNBT(backpackTag.getCompoundTag(Constants.RIGHT_TANK)); - event.toolTip.add(tank.getFluidAmount() == 0 ? "" : tank.getFluid().getUnlocalizedName()); - event.toolTip.add(tank.getFluidAmount() == 0 ? "" : tank.getFluid().getFluid().getName()); - }*/ - if (GuiScreen.isShiftKeyDown()) { NBTTagList itemList = backpackTag.getTagList(Constants.INVENTORY, NBT.TAG_COMPOUND); - event.toolTip.add("Slots used: " + inventoryTooltip(itemList)); + makeTip(local("backpack.slots.used") + ": " + inventoryTooltip(itemList)); tank.readFromNBT(backpackTag.getCompoundTag(Constants.LEFT_TANK)); - event.toolTip.add("Left Tank: " + tankTooltip(tank)); + makeTip(local("backpack.tank.left") + ": " + tankTooltip(tank)); tank.readFromNBT(backpackTag.getCompoundTag(Constants.RIGHT_TANK)); - event.toolTip.add("Right Tank: " + tankTooltip(tank)); + makeTip(local("backpack.tank.right") + ": " + tankTooltip(tank)); - if (!GuiScreen.isCtrlKeyDown()) - event.toolTip.add(holdCtrl()); + shiftFooter(); } else if (!GuiScreen.isCtrlKeyDown()) { @@ -79,9 +74,9 @@ public void itemsTooltips(ItemTooltipEvent event) if (GuiScreen.isCtrlKeyDown()) { boolean cycling = !backpackTag.getBoolean("disableCycling"); - event.toolTip.add("Tool Cycling: " + switchTooltip(cycling, true)); - event.toolTip.add("Press '" + actionKeyFormat() + "' while wearing"); - event.toolTip.add("backpack, for turn cycling " + switchTooltip(!cycling, false)); + makeTip(local("backpack.cycling") + ": " + switchTooltip(cycling, true)); + makeTip(pressKeyFormat(actionKeyFormat()), locals("backpack.cycling.key"), + " " + switchTooltip(!cycling, false)); String color = backpackTag.getString("colorName"); for (String valid : Constants.NIGHTVISION_BACKPACKS) @@ -89,9 +84,9 @@ public void itemsTooltips(ItemTooltipEvent event) if (color.equals(valid)) { boolean vision = !backpackTag.getBoolean("disableNVision"); - event.toolTip.add("Night Vision: " + switchTooltip(vision, true)); - event.toolTip.add("Press Shift+'" + actionKeyFormat() + "' while wearing"); - event.toolTip.add("backpack, for turn nightvision " + switchTooltip(!vision, false)); + makeTip(local("backpack.vision") + ": " + switchTooltip(vision, true)); + makeTip(pressShiftKeyFormat(actionKeyFormat()), locals("backpack.vision.key"), + " " + switchTooltip(!vision, false)); } } } @@ -106,72 +101,67 @@ public void itemsTooltips(ItemTooltipEvent event) if (GuiScreen.isShiftKeyDown()) { NBTTagList itemList = jetpackTag.getTagList(Constants.JETPACK_INVENTORY, NBT.TAG_COMPOUND); - event.toolTip.add("Fuel: " + slotStackTooltip(itemList, Constants.JETPACK_FUEL_SLOT)); + makeTip(local("jetpack.fuel") + ": " + slotStackTooltip(itemList, Constants.JETPACK_FUEL_SLOT)); waterTank.readFromNBT(jetpackTag.getCompoundTag(Constants.JETPACK_WATER_TANK)); - event.toolTip.add("Left Tank: " + tankTooltip(waterTank)); + makeTip(local("jetpack.tank.water") + ": " + tankTooltip(waterTank)); steamTank.readFromNBT(jetpackTag.getCompoundTag(Constants.JETPACK_STEAM_TANK)); // special case for steam, have to set displayed fluid name manually, cuz technically it's water - String theSteam = steamTank.getFluidAmount() > 0 ? EnumChatFormatting.AQUA + "Steam" : ""; - event.toolTip.add("Right Tank: " + tankTooltip(steamTank, false) + theSteam); + String theSteam = steamTank.getFluidAmount() > 0 ? EnumChatFormatting.AQUA + local("steam") : ""; + makeTip(local("jetpack.tank.steam") + ": " + tankTooltip(steamTank, false) + theSteam); - if (!GuiScreen.isCtrlKeyDown()) - event.toolTip.add(holdCtrl()); + shiftFooter(); } else if (!GuiScreen.isCtrlKeyDown()) { - event.toolTip.add(holdShift()); + makeTip(holdShift()); } if (GuiScreen.isCtrlKeyDown()) { - event.toolTip.add("Maximum altitude: " + whiteFormat("185") + " meters"); - event.toolTip.add("Press Shift+'" + actionKeyFormat() + "' while wearing"); - event.toolTip.add("jetpack, for turn it ON"); + makeTip(local("max.altitude") + ": " + whiteFormat("185 "), locals("meters")); + makeTip(pressShiftKeyFormat(actionKeyFormat()), locals("jetpack.key.onoff"), " " + local("on")); } } else if (theItem instanceof ItemCopterPack) { FluidTank fuelTank = new FluidTank(Constants.COPTER_FUEL_CAPACITY); NBTTagCompound compound = event.itemStack.stackTagCompound; + if (GuiScreen.isShiftKeyDown()) { fuelTank.readFromNBT(compound.getCompoundTag(Constants.COPTER_FUEL_TANK)); - event.toolTip.add("Fuel Tank: " + tankTooltip(fuelTank)); - event.toolTip.add("Fuel consumption rate: " + fuelConsumptionTooltip(fuelTank)); - if (!GuiScreen.isCtrlKeyDown()) - event.toolTip.add(holdCtrl()); + makeTip(local("copter.tank.fuel") + ": " + tankTooltip(fuelTank)); + makeTip(local("copter.rate.fuel") + ": " + fuelConsumptionTooltip(fuelTank)); + + shiftFooter(); } else if (!GuiScreen.isCtrlKeyDown()) { - event.toolTip.add(holdShift()); + makeTip(holdShift()); } if (GuiScreen.isCtrlKeyDown()) { - event.toolTip.add("Maximum altitude: " + whiteFormat("250") + " meters"); - event.toolTip.add("Press Shift+'" + actionKeyFormat() + "' while wearing"); - event.toolTip.add("copterpack, for turn it ON"); - event.toolTip.add("Press '" + actionKeyFormat() + "' during flight to"); - event.toolTip.add("switch hover mode"); + makeTip(local("max.altitude") + ": " + whiteFormat("250 "), locals("meters")); + makeTip(pressShiftKeyFormat(actionKeyFormat()), locals("copter.key.onoff"), " " + local("on")); + makeTip(pressKeyFormat(actionKeyFormat()), locals("copter.key.hover")); } } else if (theItem instanceof ItemHose) { if (GuiScreen.isCtrlKeyDown()) { - event.toolTip.add("While holding Hose:"); - event.toolTip.add("- press '" + actionKeyFormat() + "' to change active tank"); - event.toolTip.add("- press Shift+'" + whiteFormat("Wheel") + "' to change mode"); - event.toolTip.add(""); - event.toolTip.add("Put Hose into bucketOut slot of wearable pack"); - event.toolTip.add("to empty corresponded tank"); - event.toolTip.add(EnumChatFormatting.RED + "WARNING! Fluid will be dumped and lost. Forever."); + makeTip(local("hose.key.header") + ":"); + makeTip("- " + pressKeyFormat(actionKeyFormat()), locals("hose.key.tank")); + makeTip("- " + pressShiftKeyFormat(whiteFormat(local("mouse.wheel"))), locals("hose.key.mode")); + makeTip(locals("hose.dump")); + makeTip(EnumChatFormatting.RED.toString(), locals("hose.dump.warn")); } else { - event.toolTip.add(holdCtrl()); + makeTip(holdShift()); } } } @@ -181,14 +171,18 @@ private String holdShift() return holdThe(true); } - private String holdCtrl() + private void shiftFooter() { - return holdThe(false); + if (GuiScreen.isCtrlKeyDown()) + makeEmptyTip(); + else + makeTip(holdThe(false)); } private String holdThe(boolean button) { - return whiteFormat(EnumChatFormatting.ITALIC + (button ? "" : "")); + return whiteFormat(EnumChatFormatting.ITALIC + "<" + (button ? local("hold.shift") + : local("hold.ctrl")) + ">"); } private String whiteFormat(String theString) @@ -201,6 +195,16 @@ private String actionKeyFormat() return whiteFormat(Keybindings.getActionKeyName()); } + private String pressKeyFormat(String button) + { + return local("press") + " '" + button + "' "; + } + + private String pressShiftKeyFormat(String button) + { + return local("press") + " Shift+'" + button + "' "; + } + private String inventoryTooltip(NBTTagList itemList) { int itemCount = itemList.tagCount(); @@ -284,12 +288,13 @@ else if (nameUnlocalized.contains("xpjuice")) private String switchTooltip(boolean status, boolean doFormat) { - return doFormat ? switchFormat(status) : status ? "ON" : "OFF"; + return doFormat ? switchFormat(status) : status ? local("on") : local("off"); } private String switchFormat(boolean status) { - String switchFormatted = status ? EnumChatFormatting.WHITE + "ON" : EnumChatFormatting.DARK_GRAY + "OFF"; + String switchFormatted = status ? EnumChatFormatting.WHITE + local("on") + : EnumChatFormatting.DARK_GRAY + local("off"); return "[" + switchFormatted + EnumChatFormatting.GRAY + "]"; } @@ -322,7 +327,7 @@ private String stackDataFormat(int id, int meta, int count) dataFormatted = iStack.getDisplayName() + " (" + stackSizeFormat(iStack, count) + ")"; } catch (Exception e) { - dataFormatted = EnumChatFormatting.RED + "Error"; + dataFormatted = EnumChatFormatting.RED + local("error"); //e.printStackTrace(); } return dataFormatted; @@ -344,6 +349,54 @@ private String fuelConsumptionTooltip(FluidTank tank) private String emptyFormat() { - return EnumChatFormatting.DARK_GRAY.toString() + EnumChatFormatting.ITALIC + "Empty"; + return EnumChatFormatting.DARK_GRAY.toString() + EnumChatFormatting.ITALIC + local("empty"); + } + + private String local(String tip) + { + return StatCollector.translateToLocal("adventurebackpack:tooltips." + tip); + } + + private String[] locals(String tips) + { + return local(tips).split("@", 5); + } + + private void makeTip(String tooltip) + { + eventTip.add(tooltip); + } + + private void makeTip(String[] tooltips) + { + makeTip(null, tooltips, null); + } + + private void makeTip(String before, String[] tooltips) + { + makeTip(before, tooltips, null); + } + + private void makeTip(String before, String[] tooltips, String after) + { + for (int i = 0; i < tooltips.length; i++) + { + String tip = ""; + + if (i == 0 && before != null) + tip += before; + + tip += tooltips[i]; + + if (i == tooltips.length - 1 && after != null) + tip += after; + + eventTip.add(tip); + } + } + + private void makeEmptyTip() + { + makeTip(""); } } diff --git a/src/main/resources/assets/adventurebackpack/lang/en_US.lang b/src/main/resources/assets/adventurebackpack/lang/en_US.lang index eaffe005..861f39d5 100644 --- a/src/main/resources/assets/adventurebackpack/lang/en_US.lang +++ b/src/main/resources/assets/adventurebackpack/lang/en_US.lang @@ -43,10 +43,6 @@ item.adventurebackpack:pistonBoots.name=Piston Boots ## Blocks blockAdventureBackpack.name=Adventure Backpacks -block.adventurebackpack:block.AdventureBackpack.name=Adventure Backpack -block.adventurebackpack:AdventureBackpack.name=Adventure Backpack Block -block.adventurebackpack:CampFire.name=Campfire -block.adventurebackpack:SleepingBag.name=Sleeping Bag blockCampFire.name=CampFire blockSleepingBag.name=Sleeping Bag @@ -68,6 +64,7 @@ adventurebackpack:messages.already.equipped.backpack=You are already equipping a adventurebackpack:messages.already.equipped.copterpack=You are already equipping a Copter Pack. adventurebackpack:messages.already.equipped.jetpack=You are already equipping a Coal Jetpack. adventurebackpack:messages.already.impossibru=You aren't wearing any backpacks. +adventurebackpack:messages.backpack.cant.bag=Can't deploy the sleeping bag! Check the surrounding area. adventurebackpack:messages.copterpack.hover=CopterPack: Hover Mode. adventurebackpack:messages.copterpack.normal=CopterPack: Normal Mode. adventurebackpack:messages.copterpack.outoffuel=CopterPack: Out of fuel. @@ -80,3 +77,40 @@ adventurebackpack:messages.nightvision.off=Night Vision: Off. adventurebackpack:messages.cycling.on=Tool Cycling: On. adventurebackpack:messages.cycling.off=Tool Cycling: Off. adventurebackpack:messages.crossbow.outofammo=Clockwork Crossbow: Out of ammo. + +## Tooltips ("@" - line separator) +adventurebackpack:tooltips.on=ON +adventurebackpack:tooltips.off=OFF +adventurebackpack:tooltips.empty=Empty +adventurebackpack:tooltips.meters=meters +adventurebackpack:tooltips.error=Error +adventurebackpack:tooltips.steam=Steam +adventurebackpack:tooltips.press=Press +adventurebackpack:tooltips.hold.shift=Hold Shift +adventurebackpack:tooltips.hold.ctrl=Hold Ctrl +adventurebackpack:tooltips.mouse.wheel=Wheel +adventurebackpack:tooltips.max.altitude=Maximum altitude + +adventurebackpack:tooltips.backpack.slots.used=Slots used +adventurebackpack:tooltips.backpack.tank.left=Left Tank +adventurebackpack:tooltips.backpack.tank.right=Right Tank +adventurebackpack:tooltips.backpack.cycling=Tool Cycling +adventurebackpack:tooltips.backpack.cycling.key=while wearing@backpack, for turn cycling +adventurebackpack:tooltips.backpack.vision=Night Vision +adventurebackpack:tooltips.backpack.vision.key=while wearing@backpack, for turn nightvision + +adventurebackpack:tooltips.jetpack.fuel=Fuel +adventurebackpack:tooltips.jetpack.tank.water=Left Tank +adventurebackpack:tooltips.jetpack.tank.steam=Right Tank +adventurebackpack:tooltips.jetpack.key.onoff=while wearing@jetpack, for turn it + +adventurebackpack:tooltips.copter.tank.fuel=Fuel Tank +adventurebackpack:tooltips.copter.rate.fuel=Fuel consumption rate +adventurebackpack:tooltips.copter.key.onoff=while wearing@copterpack, for turn it +adventurebackpack:tooltips.copter.key.hover=during flight to@switch hover mode + +adventurebackpack:tooltips.hose.key.header=While holding Hose: +adventurebackpack:tooltips.hose.key.tank=to change active tank +adventurebackpack:tooltips.hose.key.mode=to change mode +adventurebackpack:tooltips.hose.dump=@Put Hose into bucketOut slot of wearable pack@to empty corresponded tank +adventurebackpack:tooltips.hose.dump.warn=WARNING! Fluid will be dumped and lost. Forever. diff --git a/src/main/resources/assets/adventurebackpack/lang/ru_RU.lang b/src/main/resources/assets/adventurebackpack/lang/ru_RU.lang index c40db1ca..9116ee7b 100644 --- a/src/main/resources/assets/adventurebackpack/lang/ru_RU.lang +++ b/src/main/resources/assets/adventurebackpack/lang/ru_RU.lang @@ -66,3 +66,10 @@ adventurebackpack:messages.copterpack.off=Вертолётный ранец: В adventurebackpack:messages.jetpack.on=Паровой ранец: Включен. adventurebackpack:messages.jetpack.off=Паровой ранец: Выключен. adventurebackpack:messages.crossbow.outofammo=Арбалет с часовым механизмом: Нет боеприпасов. + + +## +adventurebackpack:tooltips.on=ВКЛ +adventurebackpack:tooltips.off=ВЫКЛ +adventurebackpack:tooltips.empty=Пусто +adventurebackpack:tooltips.meters=метров (кубов)@над уровнем бедрока \ No newline at end of file From 89acc866d0a1f1ce5eb32c88eba729cf6661cf50 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sat, 29 Jul 2017 14:38:30 +0700 Subject: [PATCH 405/462] Small things --- .../client/gui/GuiOverlay.java | 5 ++++ .../handlers/GuiHandler.java | 4 ++-- .../handlers/TooltipEventHandler.java | 23 ++++++++++--------- .../item/ItemAdventureBackpack.java | 6 ----- .../adventurebackpack/item/ItemCrossbow.java | 22 ++++-------------- 5 files changed, 24 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java index 40af7ee4..d21e5524 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java @@ -134,6 +134,11 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) GL11.glDisable(GL11.GL_LIGHTING); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + + if (inv.getTanksArray().length == 1 && ConfigHandler.tanksOverlayRight) + { + tankX += textureWidth + 1; // case for copter, stick lonely tank to window border + } for (FluidTank tank : inv.getTanksArray()) { mc.renderEngine.bindTexture(new ResourceLocation(ModInfo.MOD_ID, "textures/gui/overlay.png")); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java index bbacf8ac..f7a5a5e8 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/GuiHandler.java @@ -28,8 +28,8 @@ public class GuiHandler implements IGuiHandler public static final byte JETPACK_HOLDING = 5; public static final byte COPTER_WEARING = 4; public static final byte COPTER_HOLDING = 3; - public static final byte BACKPACK_HOLDING = 2; - public static final byte BACKPACK_WEARING = 1; + public static final byte BACKPACK_WEARING = 2; + public static final byte BACKPACK_HOLDING = 1; public static final byte BACKPACK_TILE = 0; public GuiHandler() diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java index 87284328..fac1bc2a 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java @@ -50,8 +50,7 @@ public void itemsTooltips(ItemTooltipEvent event) if (theItem instanceof ItemAdventureBackpack) { FluidTank tank = new FluidTank(Constants.BASIC_TANK_CAPACITY); - NBTTagCompound compound = event.itemStack.stackTagCompound; - NBTTagCompound backpackTag = compound.getCompoundTag(Constants.COMPOUND_TAG); + NBTTagCompound backpackTag = event.itemStack.stackTagCompound.getCompoundTag(Constants.COMPOUND_TAG); if (GuiScreen.isShiftKeyDown()) { @@ -68,7 +67,7 @@ public void itemsTooltips(ItemTooltipEvent event) } else if (!GuiScreen.isCtrlKeyDown()) { - event.toolTip.add(holdShift()); + makeTip(holdShift()); } if (GuiScreen.isCtrlKeyDown()) @@ -95,8 +94,7 @@ public void itemsTooltips(ItemTooltipEvent event) { FluidTank waterTank = new FluidTank(Constants.JETPACK_WATER_CAPACITY); FluidTank steamTank = new FluidTank(Constants.JETPACK_STEAM_CAPACITY); - NBTTagCompound compound = event.itemStack.stackTagCompound; - NBTTagCompound jetpackTag = compound.getCompoundTag(Constants.JETPACK_COMPOUND_TAG); + NBTTagCompound jetpackTag = event.itemStack.stackTagCompound.getCompoundTag(Constants.JETPACK_COMPOUND_TAG); if (GuiScreen.isShiftKeyDown()) { @@ -127,12 +125,10 @@ public void itemsTooltips(ItemTooltipEvent event) } else if (theItem instanceof ItemCopterPack) { FluidTank fuelTank = new FluidTank(Constants.COPTER_FUEL_CAPACITY); - NBTTagCompound compound = event.itemStack.stackTagCompound; if (GuiScreen.isShiftKeyDown()) { - fuelTank.readFromNBT(compound.getCompoundTag(Constants.COPTER_FUEL_TANK)); - + fuelTank.readFromNBT(event.itemStack.stackTagCompound.getCompoundTag(Constants.COPTER_FUEL_TANK)); makeTip(local("copter.tank.fuel") + ": " + tankTooltip(fuelTank)); makeTip(local("copter.rate.fuel") + ": " + fuelConsumptionTooltip(fuelTank)); @@ -158,10 +154,10 @@ public void itemsTooltips(ItemTooltipEvent event) makeTip("- " + pressKeyFormat(actionKeyFormat()), locals("hose.key.tank")); makeTip("- " + pressShiftKeyFormat(whiteFormat(local("mouse.wheel"))), locals("hose.key.mode")); makeTip(locals("hose.dump")); - makeTip(EnumChatFormatting.RED.toString(), locals("hose.dump.warn")); + makeTip(EnumChatFormatting.RED.toString() + local("hose.dump.warn")); } else { - makeTip(holdShift()); + makeTip(holdCtrl()); } } } @@ -176,7 +172,12 @@ private void shiftFooter() if (GuiScreen.isCtrlKeyDown()) makeEmptyTip(); else - makeTip(holdThe(false)); + makeTip(holdCtrl()); + } + + private String holdCtrl() + { + return holdThe(false); } private String holdThe(boolean button) diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index faeacb85..67e560b7 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -355,12 +355,6 @@ public ResourceLocation getWearableTexture(ItemStack wearable) return modelTexture; } - @Override - public String getItemStackDisplayName(ItemStack stack) - { - return "Adventure Backpack"; - } - @Override public boolean getIsRepairable(ItemStack toRepair, ItemStack repair) { diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCrossbow.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCrossbow.java index 4f988e04..f2afdc6b 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCrossbow.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCrossbow.java @@ -42,18 +42,6 @@ public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, return false; } - @Override - public boolean isRepairable() - { - return super.isRepairable(); - } - - @Override - public String getItemStackDisplayName(ItemStack stack) - { - return super.getItemStackDisplayName(stack); - } - @Override public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) { @@ -135,17 +123,17 @@ public int getMaxItemUseDuration(ItemStack stack) @Override public void onPlayerStoppedUsing(ItemStack stack, World world, EntityPlayer player, int counter) { + } - public void shootArrow(ItemStack stack, World world, EntityPlayer player, int count) + private void shootArrow(ItemStack stack, World world, EntityPlayer player, int count) { - int j = count; - - boolean flag = player.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; + boolean flag = EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0 + || player.capabilities.isCreativeMode; if (flag || player.inventory.hasItem(Items.arrow)) { - float f = j / 20.0F; + float f = count / 20.0F; f = (f * f + f * 2.0F) / 3.0F; if (f < 0.1D) From 7f79a92e4b2a29a8d111841768b68ba3e5d67694 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sun, 30 Jul 2017 06:06:27 +0700 Subject: [PATCH 406/462] Sound fixes Fixed Copter sound at login Fixed Jetpack boiling sound Jetpack Boiling and Leaking respects sound config --- .../client/ClientActions.java | 10 ++++++++-- .../client/audio/BoilingBoilerSound.java | 2 +- .../client/gui/GuiCoalJetpack.java | 10 +++------- .../common/ServerActions.java | 20 +++++++++---------- .../handlers/PlayerEventHandler.java | 5 +++++ .../inventory/InventoryCoalJetpack.java | 4 +--- .../inventory/InventoryCopterPack.java | 1 - .../item/ItemCoalJetpack.java | 2 +- .../playerProperties/BackpackProperty.java | 19 ++++++++---------- .../adventurebackpack/proxy/ServerProxy.java | 2 +- 10 files changed, 38 insertions(+), 37 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/client/ClientActions.java b/src/main/java/com/darkona/adventurebackpack/client/ClientActions.java index b4490177..76c8a95e 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/ClientActions.java +++ b/src/main/java/com/darkona/adventurebackpack/client/ClientActions.java @@ -75,10 +75,16 @@ public static void playSoundAtEntity(Entity entity, byte soundCode) } break; case EntitySoundPacket.BOILING_BUBBLES: - snd.playSound(new BoilingBoilerSound(player)); + if (ConfigHandler.allowSoundJetpack) + { + snd.playSound(new BoilingBoilerSound(player)); + } break; case EntitySoundPacket.LEAKING_STEAM: - snd.playSound(new LeakingBoilerSound(player)); + if (ConfigHandler.allowSoundJetpack) + { + snd.playSound(new LeakingBoilerSound(player)); + } break; } } diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java index 5f6bc8f1..a6623a8f 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java @@ -61,7 +61,7 @@ public void update() } InventoryCoalJetpack inv = new InventoryCoalJetpack(Wearing.getWearingJetpack(thePlayer)); - if (inv.isBoiling() && inv.getSteamTank().getFluidAmount() > 0) + if (inv.isBoiling() && inv.getWaterTank().getFluidAmount() > 0) { xPosF = (float) thePlayer.posX; yPosF = (float) thePlayer.posY; diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java index 257508c9..2a500e40 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java @@ -14,7 +14,6 @@ import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; import com.darkona.adventurebackpack.util.Resources; import com.darkona.adventurebackpack.util.Utils; -import com.darkona.adventurebackpack.util.Wearing; /** * Created on 15/01/2015 @@ -33,6 +32,7 @@ public class GuiCoalJetpack extends GuiWithTanks private InventoryCoalJetpack inventory; private int boiling = 0; + int tick = 0; public GuiCoalJetpack(EntityPlayer player, InventoryCoalJetpack inv, Source source) { @@ -70,17 +70,13 @@ protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int mouseX, in equipButton.draw(this, 1, 167); } } - //if (isWearing) inventory = new InventoryCoalJetpack(Wearing.getWearingJetpack(player)); } @Override protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { this.mc.renderEngine.bindTexture(TEXTURE); - if (source == Source.WEARING) //TODO why? - { - inventory = new InventoryCoalJetpack(Wearing.getWearingJetpack(player)); - } + inventory.openInventory(); FluidTank water = inventory.getWaterTank(); FluidTank steam = inventory.getSteamTank(); GL11.glPushMatrix(); @@ -88,7 +84,7 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); if (inventory.isBoiling() && steam.getFluidAmount() < steam.getCapacity() && water.getFluidAmount() > 0) { - if (boiling < 83) //TODO here + if (boiling < 83) { drawTexturedModalRect(28, 40, 50, 172, boiling++, 37); } else diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index b16c3bf7..47ea4540 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -25,6 +25,7 @@ import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.network.WearableModePacket; import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; +import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.reference.BackpackNames; import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Utils; @@ -341,20 +342,20 @@ public static void pistonBootsJump(EntityPlayer player) player.jumpMovementFactor += 0.3; } - public static void toggleCopterPack(EntityPlayer player, ItemStack copter, byte type) + public static void copterSoundAtLogin(EntityPlayer player) { - String message = ""; - boolean actionPerformed = false; + byte status = BackpackProperty.get(player).getWearable().getTagCompound().getByte("status"); - if (!copter.hasTagCompound()) + if (!player.worldObj.isRemote && status != ItemCopterPack.OFF_MODE) { - copter.stackTagCompound = new NBTTagCompound(); - } - if (!copter.stackTagCompound.hasKey("status")) - { - copter.stackTagCompound.setByte("status", ItemCopterPack.OFF_MODE); + ModNetwork.sendToNearby(new EntitySoundPacket.Message(EntitySoundPacket.COPTER_SOUND, player), player); } + } + public static void toggleCopterPack(EntityPlayer player, ItemStack copter, byte type) + { + String message = ""; + boolean actionPerformed = false; byte mode = copter.stackTagCompound.getByte("status"); byte newMode = ItemCopterPack.OFF_MODE; @@ -368,7 +369,6 @@ public static void toggleCopterPack(EntityPlayer player, ItemStack copter, byte if (!player.worldObj.isRemote) { ModNetwork.sendToNearby(new EntitySoundPacket.Message(EntitySoundPacket.COPTER_SOUND, player), player); - } } else { diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 9290649d..c1d547bd 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -92,6 +92,11 @@ public void playerLogsIn(PlayerEvent.PlayerLoggedInEvent event) if (event.player instanceof EntityPlayerMP) { BackpackProperty.sync(event.player); + + if (Wearing.isWearingCopter(event.player)) + { + ServerActions.copterSoundAtLogin(event.player); + } } } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index e2582808..b5732dff 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -39,8 +39,6 @@ public class InventoryCoalJetpack extends InventoryAdventureBackpack private int coolTicks = 5000; private long systemTime = 0; - //TODO if GUI is open while temp is going up, temp will drop to zero at 90C. just sync issue? - //TODO boiling sound work sometimes, and then it override leaking sound. check it public InventoryCoalJetpack(final ItemStack jetpack) { containerStack = jetpack; @@ -186,7 +184,7 @@ public int consumeFuel() return result; } - boolean isFuel(ItemStack stack) + private boolean isFuel(ItemStack stack) { return TileEntityFurnace.isItemFuel(stack); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java index 943e5edd..5103ada3 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java @@ -26,7 +26,6 @@ public class InventoryCopterPack extends InventoryAdventureBackpack private byte status = ItemCopterPack.OFF_MODE; - //TODO copter sound doesn't init at login (status init, so you can keep flying) public InventoryCopterPack(ItemStack copterPack) { containerStack = copterPack; diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index 29300370..a94b2570 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -171,7 +171,7 @@ private void runBoiler(InventoryCoalJetpack inv, World world, EntityPlayer playe { if (!boiling) boiling = true; - if (!world.isRemote && mustBlublub) + if (!world.isRemote && mustBlublub) //TODO BoilingBoilerSound stop playing after steam tank is full (so boiling is false), and never starts again { ModNetwork.net.sendTo(new EntitySoundPacket.Message(EntitySoundPacket.BOILING_BUBBLES, player), (EntityPlayerMP) player); } diff --git a/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java b/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java index 1e2f3ba7..d66b7479 100644 --- a/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java +++ b/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java @@ -38,22 +38,19 @@ public static void sync(EntityPlayer player) { if (player instanceof EntityPlayerMP) { - syncToNear(player); + syncToNear((EntityPlayerMP) player); } } - public static void syncToNear(EntityPlayer player) + private static void syncToNear(EntityPlayerMP player) { //Thanks diesieben07!!! - if (player != null && player instanceof EntityPlayerMP) + try { - try - { - ((EntityPlayerMP) player).getServerForPlayer().getEntityTracker().func_151248_b(player, ModNetwork.net.getPacketFrom(new SyncPropertiesPacket.Message(player.getEntityId(), get(player).getData()))); - } catch (Exception ex) - { - ex.printStackTrace(); - } + player.getServerForPlayer().getEntityTracker().func_151248_b(player, ModNetwork.net.getPacketFrom(new SyncPropertiesPacket.Message(player.getEntityId(), get(player).getData()))); + } catch (Exception ex) + { + ex.printStackTrace(); } } @@ -142,7 +139,7 @@ public void setWearable(ItemStack bp) public ItemStack getWearable() { - return wearable != null ? wearable : null; + return wearable; } public void setCampFire(ChunkCoordinates cf) diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java index 55338c6c..253b1ca0 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java @@ -47,7 +47,7 @@ public void joinPlayer(EntityPlayer player) { LogHelper.info("Stored properties retrieved"); BackpackProperty.get(player).loadNBTData(playerData); - BackpackProperty.syncToNear(player); + BackpackProperty.sync(player); } else { LogHelper.info("Data is null! WTF!"); From 2b65cd691384aa0f338782fe37a9e0903618b63d Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 14 Aug 2017 19:05:45 +0700 Subject: [PATCH 407/462] Copter sound at login event --- .../darkona/adventurebackpack/client/Visuals.java | 3 +-- .../client/gui/GuiCoalJetpack.java | 1 - .../adventurebackpack/common/ServerActions.java | 14 ++++++++++++++ .../handlers/PlayerEventHandler.java | 12 +++++++++--- .../adventurebackpack/item/ItemCoalJetpack.java | 4 ++-- 5 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/client/Visuals.java b/src/main/java/com/darkona/adventurebackpack/client/Visuals.java index 810bfa2d..3a89a7cb 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/Visuals.java +++ b/src/main/java/com/darkona/adventurebackpack/client/Visuals.java @@ -18,7 +18,6 @@ public class Visuals { public static void NyanParticles(EntityPlayer player, World world) { - // World world = player.worldObj; int i = 2; for (int j = 0; j < i * 3; ++j) { @@ -102,7 +101,7 @@ public static EntityFX spawnParticle(String particleName, double x, double y, do return null; } else { - if (particleName.equals("steam")) //TODO particle names to Enum + if (particleName.equals("steam")) { entityFX = new SteamFX(theWorld, x, y, z, (float) motionX, (float) motionY, (float) motionZ); } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java index 2a500e40..501de90d 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java @@ -32,7 +32,6 @@ public class GuiCoalJetpack extends GuiWithTanks private InventoryCoalJetpack inventory; private int boiling = 0; - int tick = 0; public GuiCoalJetpack(EntityPlayer player, InventoryCoalJetpack inv, Source source) { diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index 47ea4540..36ffc7e4 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -5,6 +5,7 @@ import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.projectile.EntityArrow; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -32,6 +33,7 @@ import com.darkona.adventurebackpack.util.Wearing; import static com.darkona.adventurebackpack.common.Constants.BUCKET; +import static com.darkona.adventurebackpack.common.Constants.JETPACK_COMPOUND_TAG; import static com.darkona.adventurebackpack.common.Constants.LOWER_TOOL; import static com.darkona.adventurebackpack.common.Constants.UPPER_TOOL; @@ -352,6 +354,18 @@ public static void copterSoundAtLogin(EntityPlayer player) } } + public static void jetpackSoundAtLogin(EntityPlayer player) + { + boolean isBoiling = BackpackProperty.get(player).getWearable().getTagCompound() + .getCompoundTag(JETPACK_COMPOUND_TAG).getBoolean("boiling"); + + if (!player.worldObj.isRemote && isBoiling) + { + //ModNetwork.sendToNearby(new EntitySoundPacket.Message(EntitySoundPacket.BOILING_BUBBLES, player), player); //TODO difference? + ModNetwork.net.sendTo(new EntitySoundPacket.Message(EntitySoundPacket.BOILING_BUBBLES, player), (EntityPlayerMP) player); + } + } + public static void toggleCopterPack(EntityPlayer player, ItemStack copter, byte type) { String message = ""; diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index c1d547bd..9cfaee46 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -91,11 +91,17 @@ public void playerLogsIn(PlayerEvent.PlayerLoggedInEvent event) { if (event.player instanceof EntityPlayerMP) { - BackpackProperty.sync(event.player); + EntityPlayer player = event.player; + + BackpackProperty.sync(player); - if (Wearing.isWearingCopter(event.player)) + if (Wearing.isWearingCopter(player)) + { + ServerActions.copterSoundAtLogin(player); + } + if (Wearing.isWearingJetpack(player)) { - ServerActions.copterSoundAtLogin(event.player); + ServerActions.jetpackSoundAtLogin(player); } } } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index a94b2570..6bed60b9 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -78,7 +78,7 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla public void onEquipped(World world, EntityPlayer player, ItemStack stack) { InventoryCoalJetpack inv = new InventoryCoalJetpack(stack); - inv.calculateLostTime(); //TODO debug artifact? + inv.calculateLostTime(); // debug artifact if (inv.getTemperature() == 0) inv.setTemperature(getBiomeMinTemp(player, world)); } @@ -171,7 +171,7 @@ private void runBoiler(InventoryCoalJetpack inv, World world, EntityPlayer playe { if (!boiling) boiling = true; - if (!world.isRemote && mustBlublub) //TODO BoilingBoilerSound stop playing after steam tank is full (so boiling is false), and never starts again + if (!world.isRemote && mustBlublub) { ModNetwork.net.sendTo(new EntitySoundPacket.Message(EntitySoundPacket.BOILING_BUBBLES, player), (EntityPlayerMP) player); } From 84e9c192ddef697fc4c86c8946d306b4da1c47df Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 14 Aug 2017 19:35:14 +0700 Subject: [PATCH 408/462] 'Else' and 'Catch' braces style --- .../block/BlockAdventureBackpack.java | 9 ++-- .../block/BlockSleepingBag.java | 21 +++++--- .../block/TileAdventureBackpack.java | 18 ++++--- .../adventurebackpack/client/Visuals.java | 6 ++- .../client/audio/BoilingBoilerSound.java | 3 +- .../client/audio/CopterPackSound.java | 9 ++-- .../client/audio/JetpackSoundOn.java | 3 +- .../client/audio/LeakingBoilerSound.java | 3 +- .../client/audio/NyanMovingSound.java | 6 ++- .../client/gui/GuiAdvBackpack.java | 18 ++++--- .../client/gui/GuiCoalJetpack.java | 12 +++-- .../client/gui/GuiCopterPack.java | 9 ++-- .../client/gui/GuiOverlay.java | 6 ++- .../adventurebackpack/client/gui/GuiTank.java | 6 ++- .../client/gui/GuiWithTanks.java | 3 +- .../client/models/ModelBackpackArmor.java | 9 ++-- .../client/models/ModelBackpackBlock.java | 3 +- .../client/models/ModelClockworkCrossbow.java | 6 ++- .../client/models/ModelCoalJetpack.java | 6 ++- .../client/models/ModelCopterPack.java | 9 ++-- .../client/models/ModelInflatableBoat.java | 6 ++- .../client/render/RenderRideableSpider.java | 6 ++- .../RendererAdventureBackpackBlock.java | 3 +- .../render/RendererItemAdventureBackpack.java | 3 +- .../client/render/RendererStack.java | 3 +- .../render/RendererWearableEquipped.java | 12 +++-- .../common/BackpackAbilities.java | 30 +++++++---- .../common/BackpackRemovals.java | 18 ++++--- .../common/ServerActions.java | 33 ++++++++---- .../entity/EntityFriendlySpider.java | 51 ++++++++++++------- .../entity/EntityInflatableBoat.java | 30 +++++++---- .../ai/EntityAIAvoidPlayerWithBackpack.java | 9 ++-- .../handlers/KeyInputEventHandler.java | 15 ++++-- .../handlers/PlayerEventHandler.java | 9 ++-- .../handlers/TooltipEventHandler.java | 34 +++++++------ .../adventurebackpack/init/ModNetwork.java | 3 +- .../adventurebackpack/init/ModRecipes.java | 3 +- .../adventurebackpack/init/ModWorldGen.java | 12 +++-- .../init/recipes/AbstractBackpackRecipe.java | 9 ++-- .../recipes/AbstractBackpackRecipeTwo.java | 3 +- .../init/recipes/BackpackRecipes.java | 12 +++-- .../inventory/ContainerAdventureBackpack.java | 9 ++-- .../inventory/ContainerBackpack.java | 20 ++++---- .../inventory/ContainerCopter.java | 3 +- .../inventory/ContainerJetpack.java | 7 +-- .../inventory/InventoryActions.java | 10 ++-- .../inventory/InventoryBackpack.java | 6 ++- .../inventory/InventoryCoalJetpack.java | 6 ++- .../inventory/InventoryCopterPack.java | 3 +- .../adventurebackpack/inventory/SlotTool.java | 21 +++++--- .../item/ItemAdventureBackpack.java | 9 ++-- .../item/ItemCoalJetpack.java | 12 +++-- .../adventurebackpack/item/ItemComponent.java | 6 ++- .../item/ItemCopterPack.java | 9 ++-- .../adventurebackpack/item/ItemCrossbow.java | 3 +- .../adventurebackpack/item/ItemHose.java | 15 ++++-- .../adventurebackpack/item/ItemMachete.java | 3 +- .../EquipUnequipBackWearablePacket.java | 9 ++-- .../network/PlayerActionPacket.java | 3 +- .../network/SyncPropertiesPacket.java | 3 +- .../messages/EntityParticlePacket.java | 3 +- .../network/messages/EntitySoundPacket.java | 3 +- .../playerProperties/BackpackProperty.java | 3 +- .../adventurebackpack/proxy/ServerProxy.java | 6 ++- .../adventurebackpack/util/BackpackUtils.java | 6 ++- .../darkona/adventurebackpack/util/Utils.java | 3 +- .../util/calendar/CalendarDate.java | 3 +- .../util/calendar/CalendarImpl.java | 24 ++++++--- .../util/calendar/ChineseCalendar.java | 27 ++++++---- 69 files changed, 460 insertions(+), 244 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java index d27fb9a4..4f55d8c6 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java @@ -201,10 +201,12 @@ public int getLightValue(IBlockAccess world, int x, int y, int z) if (getAssociatedTileColorName(world, x, y, z).equals("Glowstone")) { return 15; - } else if (world.getTileEntity(x, y, z) != null && world.getTileEntity(x, y, z) instanceof TileAdventureBackpack) + } + else if (world.getTileEntity(x, y, z) != null && world.getTileEntity(x, y, z) instanceof TileAdventureBackpack) { return ((TileAdventureBackpack) world.getTileEntity(x, y, z)).getLuminosity(); - } else + } + else { return 0; } @@ -363,7 +365,8 @@ public boolean removedByPlayer(World world, EntityPlayer player, int x, int y, i { return world.func_147480_a(x, y, z, false); } - } else + } + else { return world.func_147480_a(x, y, z, false); } diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java b/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java index a51290bb..38bf66b6 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java @@ -106,7 +106,8 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p if (world.isRemote) { return true; - } else + } + else { int meta = world.getBlockMetadata(x, y, z); @@ -171,19 +172,22 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p BackpackProperty.get(player).setCampFire(campfire); } return true; - } else + } + else { if (enumstatus == EntityPlayer.EnumStatus.NOT_POSSIBLE_NOW) { player.addChatComponentMessage(new ChatComponentTranslation("tile.bed.noSleep", new Object[0])); - } else if (enumstatus == EntityPlayer.EnumStatus.NOT_SAFE) + } + else if (enumstatus == EntityPlayer.EnumStatus.NOT_SAFE) { player.addChatComponentMessage(new ChatComponentTranslation("tile.bed.notSafe", new Object[0])); } return true; } - } else + } + else { double d2 = (double) x + 0.5D; double d0 = (double) y + 0.5D; @@ -214,7 +218,8 @@ private static void setBedOccupied(World world, int x, int y, int z, boolean fla if (flag) { l |= 4; - } else + } + else { l &= -5; } @@ -239,7 +244,8 @@ public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { world.setBlockToAir(x, y, z); } - } else if (world.getBlock(x + footBlockToHeadBlockMap[dir][0], y, z + footBlockToHeadBlockMap[dir][1]) != this) + } + else if (world.getBlock(x + footBlockToHeadBlockMap[dir][0], y, z + footBlockToHeadBlockMap[dir][1]) != this) { world.setBlockToAir(x, y, z); @@ -332,7 +338,8 @@ public IIcon getIcon(int side, int meta) if (side == 0) { return Blocks.planks.getBlockTextureFromSide(side); - } else + } + else { int k = getDirection(meta); int l = Direction.bedDirection[k][side]; diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 700d1fbb..724a1d2e 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -155,7 +155,8 @@ public boolean removeSleepingBag(World world) markDirty(); return true; } - } else + } + else { this.sleepingBagDeployed = false; markDirty(); @@ -370,7 +371,8 @@ public ItemStack decrStackSize(int i, int count) if (itemstack.stackSize <= count) { setInventorySlotContents(i, null); - } else + } + else { itemstack = itemstack.splitStack(count); } @@ -449,7 +451,8 @@ public ItemStack decrStackSizeNoSave(int slot, int amount) if (stack.stackSize <= amount) { setInventorySlotContentsNoSave(slot, null); - } else + } + else { stack = stack.splitStack(amount); } @@ -516,7 +519,8 @@ public void updateEntity() sleepingBagDeployed = false; } checkTime = 20; - } else + } + else { checkTime--; } @@ -555,10 +559,12 @@ public boolean equip(World world, EntityPlayer player, int x, int y, int z) if (Wearing.isWearingBackpack(player)) { player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.equipped.backpack")); - } else if (Wearing.isWearingCopter(player)) + } + else if (Wearing.isWearingCopter(player)) { player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.equipped.copterpack")); - } else if (Wearing.isWearingJetpack(player)) + } + else if (Wearing.isWearingJetpack(player)) { player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.equipped.jetpack")); } diff --git a/src/main/java/com/darkona/adventurebackpack/client/Visuals.java b/src/main/java/com/darkona/adventurebackpack/client/Visuals.java index 3a89a7cb..5139264a 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/Visuals.java +++ b/src/main/java/com/darkona/adventurebackpack/client/Visuals.java @@ -96,10 +96,12 @@ public static EntityFX spawnParticle(String particleName, double x, double y, do if (renderX * renderX + renderY * renderY + renderZ * renderZ > var22 * var22) { return null; - } else if (particleSetting > 1) + } + else if (particleSetting > 1) { return null; - } else + } + else { if (particleName.equals("steam")) { diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java index a6623a8f..94b13d15 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java @@ -66,7 +66,8 @@ public void update() xPosF = (float) thePlayer.posX; yPosF = (float) thePlayer.posY; zPosF = (float) thePlayer.posZ; - } else + } + else { setDonePlaying(); } diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java index a022d24b..055d817f 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java @@ -75,7 +75,8 @@ public void update() if (status == ItemCopterPack.OFF_MODE) { setDonePlaying(); - } else + } + else { if (status == ItemCopterPack.HOVER_MODE) { @@ -86,13 +87,15 @@ public void update() if (thePlayer.onGround) { pitch = 0.8f; - } else + } + else { pitch = (thePlayer.motionY > 0) ? 1.2f : (thePlayer.isSneaking()) ? 0.8f : 1.0f; } } } - } else + } + else { setDonePlaying(); } diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java b/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java index 4ae82550..c4f62e68 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java @@ -66,7 +66,8 @@ public void update() xPosF = (float) thePlayer.posX; yPosF = (float) thePlayer.posY; zPosF = (float) thePlayer.posZ; - } else + } + else { setDonePlaying(); } diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java index 185e9deb..a62e36cd 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java @@ -66,7 +66,8 @@ public void update() xPosF = (float) thePlayer.posX; yPosF = (float) thePlayer.posY; zPosF = (float) thePlayer.posZ; - } else + } + else { setDonePlaying(); } diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/NyanMovingSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/NyanMovingSound.java index 72c28f67..bd663acd 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/NyanMovingSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/NyanMovingSound.java @@ -52,12 +52,14 @@ public void update() if (player == null || player.isDead) { this.donePlaying = true; - } else + } + else { if (Wearing.isWearingTheRightBackpack(player, "Rainbow")) { this.volume = 0.8f; - } else + } + else { this.donePlaying = true; // this.volume = 0.0f; diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index 7aabc657..b045c5f9 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -73,27 +73,32 @@ protected void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) if (bedButton.inButton(this, mouseX, mouseY)) { bedButton.draw(this, 20, 227); - } else + } + else { bedButton.draw(this, 1, 227); } - } else + } + else { if (source == Source.WEARING) { if (unequipButton.inButton(this, mouseX, mouseY)) { unequipButton.draw(this, 96, 227); - } else + } + else { unequipButton.draw(this, 77, 227); } - } else if (source == Source.HOLDING) + } + else if (source == Source.HOLDING) { if (equipButton.inButton(this, mouseX, mouseY)) { equipButton.draw(this, 96, 208); - } else + } + else { equipButton.draw(this, 77, 208); } @@ -189,7 +194,8 @@ public void updateScreen() ModNetwork.net.sendToServer(new PlayerActionPacket.ActionMessage(PlayerActionPacket.GUI_HOLDING_SPACE)); inventory.getExtendedProperties().setBoolean("holdingSpace", true); } - } else + } + else { if (!Keyboard.isKeyDown(Keyboard.KEY_SPACE)) { diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java index 501de90d..ec59d057 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java @@ -55,16 +55,19 @@ protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int mouseX, in if (unequipButton.inButton(this, mouseX, mouseY)) { unequipButton.draw(this, 20, 186); - } else + } + else { unequipButton.draw(this, 1, 186); } - } else if (source == Source.HOLDING) + } + else if (source == Source.HOLDING) { if (equipButton.inButton(this, mouseX, mouseY)) { equipButton.draw(this, 20, 167); - } else + } + else { equipButton.draw(this, 1, 167); } @@ -86,7 +89,8 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) if (boiling < 83) { drawTexturedModalRect(28, 40, 50, 172, boiling++, 37); - } else + } + else { boiling = 0; } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java index 2d18d38e..9cab83c4 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java @@ -51,16 +51,19 @@ protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int mouseX, in if (unequipButton.inButton(this, mouseX, mouseY)) { unequipButton.draw(this, 20, 186); - } else + } + else { unequipButton.draw(this, 1, 186); } - } else if (source == Source.HOLDING) + } + else if (source == Source.HOLDING) { if (equipButton.inButton(this, mouseX, mouseY)) { equipButton.draw(this, 20, 167); - } else + } + else { equipButton.draw(this, 1, 167); } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java index d21e5524..f20504df 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java @@ -204,7 +204,8 @@ private void drawTank(FluidTank tank, int startX, int startY, int height, int wi if (j >= top + 5) { GL11.glColor4f(0.9f, 0.9f, 0.9f, 1); - } else + } + else { GL11.glColor4f(1, 1, 1, 1); } @@ -212,7 +213,8 @@ private void drawTank(FluidTank tank, int startX, int startY, int height, int wi GL11.glPopMatrix(); } } - } catch (Exception oops) + } + catch (Exception oops) { LogHelper.error("Exception while trying to render the fluid in the GUI"); } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiTank.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiTank.java index 8cd54041..e342d7a4 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiTank.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiTank.java @@ -163,7 +163,8 @@ private void drawMethodThree() if (j >= top + 5) { GL11.glColor4f(0.9f, 0.9f, 0.9f, 1); - } else + } + else { GL11.glColor4f(1, 1, 1, 1); } @@ -171,7 +172,8 @@ private void drawMethodThree() GL11.glPopMatrix(); } } - } catch (Exception oops) + } + catch (Exception oops) { LogHelper.error("Exception while trying to render the fluid in the GUI"); //oops.printStackTrace(); diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java index 1db08bc4..2b5db026 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java @@ -56,7 +56,8 @@ protected void mouseClicked(int mouseX, int mouseY, int mouseButton) ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.UNEQUIP_WEARABLE, false)); player.closeScreen(); } - } else if (source == Source.HOLDING) + } + else if (source == Source.HOLDING) { if (getEquipButton().inButton(this, mouseX, mouseY)) { diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java index b8c2dade..5501d316 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java @@ -265,7 +265,8 @@ private void renderBackpack(Float scale) startBlending(); this.mainBody.render(scale); stopBlending(); - } else + } + else { this.mainBody.render(scale); } @@ -319,13 +320,15 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f if (bipedBody.rotationPointX == 0.0F && bipedBody.rotationPointY == 0.0F && bipedBody.rotationPointZ == 0.0F) { renderBackpack(scale); - } else + } + else { GL11.glTranslatef(bipedBody.rotationPointX * f5, bipedBody.rotationPointY * f5, bipedBody.rotationPointZ * f5); renderBackpack(scale); GL11.glTranslatef(-bipedBody.rotationPointX * f5, -bipedBody.rotationPointY * f5, -bipedBody.rotationPointZ * f5); } - } else + } + else { GL11.glPushMatrix(); GL11.glTranslatef(bipedBody.rotationPointX * f5, bipedBody.rotationPointY * f5, bipedBody.rotationPointZ * f5); diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java index 3acf99ea..2554012a 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java @@ -378,7 +378,8 @@ private void renderBackpack(IInventoryAdventureBackpack backpack, float scale) //GL11.glDisable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_BLEND); - } else + } + else { this.mainBody.render(scale); } diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelClockworkCrossbow.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelClockworkCrossbow.java index ab8b9214..67a9e24d 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelClockworkCrossbow.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelClockworkCrossbow.java @@ -235,11 +235,13 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f { setRotateAngle(stringLeft, 1.5707963267948966F, -0.5235987755982988F, 0.0F); setRotateAngle(stringRight, -1.5707963267948966F, 0.5235987755982988F, 0.0F); - } else + } + else { renderNormal(); } - } else + } + else { renderNormal(); } diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelCoalJetpack.java index 1284774c..92b557b7 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelCoalJetpack.java @@ -146,13 +146,15 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f if (bipedBody.rotationPointX == 0.0F && bipedBody.rotationPointY == 0.0F && bipedBody.rotationPointZ == 0.0F) { renderCoalJetpack(f5); - } else + } + else { GL11.glTranslatef(bipedBody.rotationPointX * f5, bipedBody.rotationPointY * f5, bipedBody.rotationPointZ * f5); renderCoalJetpack(f5); GL11.glTranslatef(-bipedBody.rotationPointX * f5, -bipedBody.rotationPointY * f5, -bipedBody.rotationPointZ * f5); } - } else + } + else { GL11.glPushMatrix(); GL11.glTranslatef(bipedBody.rotationPointX * f5, bipedBody.rotationPointY * f5, bipedBody.rotationPointZ * f5); diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelCopterPack.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelCopterPack.java index 9aa5fc26..2798e68d 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelCopterPack.java @@ -204,7 +204,8 @@ private void renderCopterPack(Entity entity, float scale) if (entity.onGround || (entity.isSneaking())) { degrees = 16; - } else + } + else { degrees = entity.motionY > 0 ? 36 : 28; } @@ -244,13 +245,15 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f { renderCopterPack(entity, f5); - } else + } + else { GL11.glTranslatef(bipedBody.rotationPointX * f5, bipedBody.rotationPointY * f5, bipedBody.rotationPointZ * f5); renderCopterPack(entity, f5); GL11.glTranslatef(-bipedBody.rotationPointX * f5, -bipedBody.rotationPointY * f5, -bipedBody.rotationPointZ * f5); } - } else + } + else { GL11.glPushMatrix(); GL11.glTranslatef(bipedBody.rotationPointX * f5, bipedBody.rotationPointY * f5, bipedBody.rotationPointZ * f5); diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelInflatableBoat.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelInflatableBoat.java index 742595ca..e8c248a8 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelInflatableBoat.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelInflatableBoat.java @@ -133,7 +133,8 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f if (theBoat.isMotorized() && theBoat.isInflated()) { Axis.isHidden = EngineBody.isHidden = false; - } else + } + else { Axis.isHidden = EngineBody.isHidden = true; } @@ -150,7 +151,8 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f this.EngineBody.render(f5); GL11.glPopMatrix(); - } else + } + else { this.boatSides5.render(f5); this.boatSides3.render(f5); diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RenderRideableSpider.java b/src/main/java/com/darkona/adventurebackpack/client/render/RenderRideableSpider.java index 6318847e..375bf109 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RenderRideableSpider.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RenderRideableSpider.java @@ -38,7 +38,8 @@ protected int shouldRenderPass(EntityFriendlySpider p_77032_1_, int p_77032_2_, if (p_77032_2_ != 0) { return -1; - } else + } + else { this.bindTexture(spiderEyesTextures); GL11.glEnable(GL11.GL_BLEND); @@ -48,7 +49,8 @@ protected int shouldRenderPass(EntityFriendlySpider p_77032_1_, int p_77032_2_, if (p_77032_1_.isInvisible()) { GL11.glDepthMask(false); - } else + } + else { GL11.glDepthMask(true); } diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java index 7778598a..db687d8c 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java @@ -66,7 +66,8 @@ public void renderTileEntityAt(TileEntity te, double x, double y, double z, floa if (BackpackNames.getBackpackColorName((TileAdventureBackpack) te).equals("Standard")) { modelTexture = Resources.backpackTextureFromString(ModDates.getHoliday()); - } else + } + else { modelTexture = Resources.backpackTextureFromColor((TileAdventureBackpack) te); } diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java index 603da18e..52933786 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java @@ -74,7 +74,8 @@ public void renderItem(IItemRenderer.ItemRenderType type, ItemStack backpack, Ob if (BackpackNames.getBackpackColorName(backpack).equals("Standard")) { modelTexture = Resources.backpackTextureFromString(ModDates.getHoliday()); - } else + } + else { modelTexture = Resources.backpackTextureFromColor(inv); } diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java index 9452f6d6..c6c3ba46 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java @@ -44,7 +44,8 @@ public void render(float par1) GL11.glRotatef(-90F, 0, 1, 0); GL11.glRotatef(-225F, 0, 0, 1); - } else + } + else { GL11.glScalef(0.7F, 0.7F, 0.7F); GL11.glPushMatrix(); diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererWearableEquipped.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererWearableEquipped.java index 5a161c0f..cc8aa8f8 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererWearableEquipped.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererWearableEquipped.java @@ -57,7 +57,8 @@ public void render(Entity entity, double x, double y, double z, float rotX, floa { GL11.glEnable(GL12.GL_RESCALE_NORMAL); renderMainModel((EntityPlayer) entity, 0, 0, 0, 0, 0, 0.0625f); - } catch (Exception oops) + } + catch (Exception oops) { } @@ -65,7 +66,8 @@ public void render(Entity entity, double x, double y, double z, float rotX, floa GL11.glEnable(GL11.GL_TEXTURE_2D); OpenGlHelper.setActiveTexture(OpenGlHelper.defaultTexUnit); GL11.glPopMatrix(); - } catch (Exception ex) + } + catch (Exception ex) { //discard silently because NO ONE CARES } @@ -77,7 +79,8 @@ protected void renderMainModel(EntityLivingBase entity, float limbSwing1, float if (!entity.isInvisible()) { modelBipedMain.render(entity, limbSwing1, limbswing2, z, yaw, whatever, scale); - } else if (!entity.isInvisibleToPlayer(Minecraft.getMinecraft().thePlayer)) + } + else if (!entity.isInvisibleToPlayer(Minecraft.getMinecraft().thePlayer)) { GL11.glPushMatrix(); GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.15F); @@ -90,7 +93,8 @@ protected void renderMainModel(EntityLivingBase entity, float limbSwing1, float GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); GL11.glPopMatrix(); GL11.glDepthMask(true); - } else + } + else { modelBipedMain.setRotationAngles(limbSwing1, limbswing2, z, yaw, whatever, scale, entity); } diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java index a95dbcb4..debd5861 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java @@ -102,7 +102,8 @@ public void executeAbility(EntityPlayer player, World world, Object backpack) this.getClass() .getMethod("item" + colorName, EntityPlayer.class, World.class, ItemStack.class) .invoke(backpackAbilities, player, world, backpack); - } catch (Exception oops) + } + catch (Exception oops) { //NOBODY CARES } @@ -124,7 +125,8 @@ public void executeAbility(EntityPlayer player, World world, Object backpack) this.getClass() .getMethod("tile" + colorName, World.class, TileAdventureBackpack.class) .invoke(backpackAbilities, world, backpack); - } catch (Exception oops) + } + catch (Exception oops) { //Seriously, nobody cares if this can't work, this is just so the game won't explode. } @@ -141,7 +143,8 @@ public void executeRemoval(EntityPlayer player, World world, ItemStack backpack) backpackRemovals.getClass() .getMethod("item" + colorName, EntityPlayer.class, World.class, ItemStack.class) .invoke(backpackRemovals, player, world, backpack); - } catch (Exception oops) + } + catch (Exception oops) { LogHelper.error("---Something bad happened when removing a backpack---"); oops.printStackTrace(); @@ -178,7 +181,8 @@ public void itemSunflower(EntityPlayer player, World world, ItemStack backpack) //LogHelper.info("OMNOMNOMNOM"); } inv.setLastTime(Utils.secondsToTicks(120)); - } else + } + else { inv.setLastTime(inv.getLastTime() - 1); } @@ -202,7 +206,8 @@ public void itemBat(EntityPlayer player, World world, ItemStack backpack) if ((nightVision == null || nightVision.getDuration() < 222) && !Wearing.getWearingBackpackInv(player).getDisableNVision()) { player.addPotionEffect(new PotionEffect(Potion.nightVision.id, 239, -1, true)); - } else if (nightVision != null && Wearing.getWearingBackpackInv(player).getDisableNVision()) + } + else if (nightVision != null && Wearing.getWearingBackpackInv(player).getDisableNVision()) { backpackRemovals.itemBat(player, world, backpack); } @@ -214,7 +219,8 @@ public void itemSquid(EntityPlayer player, World world, ItemStack backpack) { player.addPotionEffect(new PotionEffect(Potion.waterBreathing.getId(), 19, -1, true)); itemBat(player, world, backpack); - } else if (player.isPotionActive(Potion.waterBreathing.id) && player.getActivePotionEffect(Potion.waterBreathing).getAmplifier() == -1) + } + else if (player.isPotionActive(Potion.waterBreathing.id) && player.getActivePotionEffect(Potion.waterBreathing).getAmplifier() == -1) { backpackRemovals.itemSquid(player, world, backpack); } @@ -256,12 +262,14 @@ public void itemDragon(EntityPlayer player, World world, ItemStack backpack) { player.addPotionEffect(new PotionEffect(Potion.regeneration.getId(), 900, ConfigHandler.dragonBackpackRegen - 1, true)); } - } else if (potion != null && potion.getAmplifier() == ConfigHandler.dragonBackpackRegen - 1) + } + else if (potion != null && potion.getAmplifier() == ConfigHandler.dragonBackpackRegen - 1) { if (player.worldObj.isRemote) { player.removePotionEffectClient(Potion.regeneration.id); - } else + } + else { player.removePotionEffect(Potion.regeneration.id); } @@ -358,7 +366,8 @@ public void itemCactus(EntityPlayer player, World world, ItemStack backpack) FluidStack raindrop = new FluidStack(FluidRegistry.WATER, drops); inv.getLeftTank().fill(raindrop, true); inv.getRightTank().fill(raindrop, true); - } else + } + else { inv.setLastTime(inv.getLastTime() - 1); } @@ -471,7 +480,8 @@ public void itemMelon(EntityPlayer player, World world, ItemStack backpack) FluidStack raindrop = new FluidStack(ModFluids.melonJuice, drops); inv.getLeftTank().fill(raindrop, true); inv.getRightTank().fill(raindrop, true); - } else + } + else { inv.setLastTime(inv.getLastTime() - 1); } diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java index a1ff235a..a7aa7d72 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java @@ -29,7 +29,8 @@ public void itemBat(EntityPlayer player, World world, ItemStack backpack) if (player.worldObj.isRemote) { player.removePotionEffectClient(Potion.nightVision.id); - } else + } + else { player.removePotionEffect(Potion.nightVision.id); } @@ -50,7 +51,8 @@ public void itemSquid(EntityPlayer player, World world, ItemStack backpack) if (player.worldObj.isRemote) { player.removePotionEffectClient(Potion.waterBreathing.id); - } else + } + else { player.removePotionEffect(Potion.waterBreathing.id); } @@ -70,7 +72,8 @@ public void itemPigman(EntityPlayer player, World world, ItemStack backpack) if (player.worldObj.isRemote) { player.removePotionEffectClient(Potion.fireResistance.id); - } else + } + else { player.removePotionEffect(Potion.fireResistance.id); } @@ -91,7 +94,8 @@ public void itemDragon(EntityPlayer player, World world, ItemStack backpack) if (player.worldObj.isRemote) { player.removePotionEffectClient(Potion.damageBoost.id); - } else + } + else { player.removePotionEffect(Potion.damageBoost.id); } @@ -107,7 +111,8 @@ public void itemDragon(EntityPlayer player, World world, ItemStack backpack) if (player.worldObj.isRemote) { player.removePotionEffectClient(Potion.regeneration.id); - } else + } + else { player.removePotionEffect(Potion.regeneration.id); } @@ -130,7 +135,8 @@ public void itemRainbow(EntityPlayer player, World world, ItemStack backpack) if (player.worldObj.isRemote) { player.removePotionEffectClient(Potion.moveSpeed.id); - } else + } + else { player.removePotionEffect(Potion.moveSpeed.id); } diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index 36ffc7e4..3e547062 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -75,7 +75,8 @@ public static void cycleTool(EntityPlayer player, int direction, int slot) player.inventory.mainInventory[slot] = backpack.getStackInSlot(UPPER_TOOL); backpack.setInventorySlotContentsNoSave(UPPER_TOOL, backpack.getStackInSlot(LOWER_TOOL)); backpack.setInventorySlotContentsNoSave(LOWER_TOOL, current); - } else if (direction > 0) + } + else if (direction > 0) { player.inventory.mainInventory[slot] = backpack.getStackInSlot(LOWER_TOOL); backpack.setInventorySlotContentsNoSave(LOWER_TOOL, backpack.getStackInSlot(UPPER_TOOL)); @@ -84,7 +85,8 @@ public static void cycleTool(EntityPlayer player, int direction, int slot) } backpack.markDirty(); player.inventory.closeInventory(); - } catch (Exception oops) + } + catch (Exception oops) { LogHelper.debug("Exception trying to cycle tools."); oops.printStackTrace(); @@ -129,10 +131,12 @@ public static void switchHose(EntityPlayer player, int direction, boolean action if (!ConfigHandler.enableHoseDrink) { mode = (mode + 1) % 2; - } else if (direction > 0) + } + else if (direction > 0) { mode = (mode + 1) % 3; - } else if (direction < 0) + } + else if (direction < 0) { mode = (mode - 1 < 0) ? 2 : mode - 1; } @@ -216,7 +220,8 @@ public static void leakArrow(EntityPlayer player, ItemStack bow, int charge) if (flag) { entityarrow.canBePickedUp = 2; - } else + } + else { /* * From here, instead of leaking an arrow to the player inventory, which may be full and then it would be @@ -256,11 +261,13 @@ public static void toggleSleepingBag(EntityPlayer player, int coordX, int coordY { player.closeScreen(); } - } else if (!world.isRemote) + } + else if (!world.isRemote) { player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.backpack.cant.bag")); } - } else + } + else { te.removeSleepingBag(world); } @@ -384,7 +391,8 @@ public static void toggleCopterPack(EntityPlayer player, ItemStack copter, byte { ModNetwork.sendToNearby(new EntitySoundPacket.Message(EntitySoundPacket.COPTER_SOUND, player), player); } - } else + } + else { newMode = ItemCopterPack.OFF_MODE; message = "adventurebackpack:messages.copterpack.off"; @@ -431,7 +439,8 @@ public static void toggleToolCycling(EntityPlayer player, ItemStack backpack) { player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.cycling.on")); } - } else + } + else { inv.setDisableCycling(true); inv.markDirty(); @@ -455,7 +464,8 @@ public static void toggleNightVision(EntityPlayer player, ItemStack backpack) player.playSound("mob.bat.idle", 0.2F, 1.0F); player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.nightvision.on")); } - } else + } + else { inv.setDisableNVision(true); inv.markDirty(); @@ -478,7 +488,8 @@ public static void toggleCoalJetpack(EntityPlayer player, ItemStack jetpack) { player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.jetpack.off")); } - } else + } + else { inv.setStatus(true); inv.markDirty(); diff --git a/src/main/java/com/darkona/adventurebackpack/entity/EntityFriendlySpider.java b/src/main/java/com/darkona/adventurebackpack/entity/EntityFriendlySpider.java index 27e9a68b..b429181e 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/EntityFriendlySpider.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/EntityFriendlySpider.java @@ -131,7 +131,8 @@ public boolean attackEntityFrom(DamageSource damageSource, float amount) if (this.isEntityInvulnerable()) { return false; - } else if (super.attackEntityFrom(damageSource, amount)) + } + else if (super.attackEntityFrom(damageSource, amount)) { Entity entity = damageSource.getEntity(); @@ -143,11 +144,13 @@ public boolean attackEntityFrom(DamageSource damageSource, float amount) } return true; - } else + } + else { return true; } - } else + } + else { return false; } @@ -231,7 +234,8 @@ protected boolean interact(EntityPlayer player) player.mountEntity(this); return true; } - } catch (Exception oops) + } + catch (Exception oops) { return false; } @@ -255,7 +259,8 @@ protected Entity findPlayerToAttack() { double d0 = 16.0D; return this.worldObj.getClosestVulnerablePlayerToEntity(this, d0); - } else + } + else { return null; } @@ -289,7 +294,8 @@ public void setBesideClimbableBlock(boolean p_70839_1_) if (p_70839_1_) { b0 = (byte) (b0 | 1); - } else + } + else { b0 &= -2; } @@ -337,7 +343,8 @@ private void normalLivingUpdateWithNoAI() --this.newPosRotationIncrements; this.setPosition(d0, d1, d2); this.setRotation(this.rotationYaw, this.rotationPitch); - } else if (!this.isClientWorld()) + } + else if (!this.isClientWorld()) { this.motionX *= 0.98D; this.motionY *= 0.98D; @@ -367,7 +374,8 @@ private void normalLivingUpdateWithNoAI() this.moveStrafing = 0.0F; this.moveForward = 0.0F; this.randomYawVelocity = 0.0F; - } else if (this.isClientWorld()) + } + else if (this.isClientWorld()) { } @@ -384,11 +392,13 @@ private void normalLivingUpdateWithNoAI() this.jump(); this.jumpTicks = 10; } - } else + } + else { this.motionY += 0.03999999910593033D; } - } else + } + else { this.jumpTicks = 0; } @@ -416,7 +426,8 @@ public void onLivingUpdate() if (this.riddenByEntity != null) { normalLivingUpdateWithNoAI(); - } else + } + else { super.onLivingUpdate(); } @@ -466,7 +477,8 @@ public void moveEntityWithHeading(float strafe, float forward) this.limbSwingAmount += (f4 - this.limbSwingAmount) * 0.4F; this.limbSwing += this.limbSwingAmount; - } else + } + else { this.stepHeight = 0.5F; this.jumpMovementFactor = 0.02F; @@ -514,13 +526,16 @@ public void func_111104_a(Random p_111104_1_) if (i <= 1) { this.field_111105_a = Potion.moveSpeed.id; - } else if (i <= 2) + } + else if (i <= 2) { this.field_111105_a = Potion.damageBoost.id; - } else if (i <= 3) + } + else if (i <= 3) { this.field_111105_a = Potion.regeneration.id; - } else if (i <= 4) + } + else if (i <= 4) { this.field_111105_a = Potion.invisibility.id; } @@ -538,7 +553,8 @@ protected void attackEntity(Entity p_70785_1_, float p_70785_2_) if (f1 > 0.5F && this.rand.nextInt(100) == 0) { this.entityToAttack = null; - } else + } + else { if (p_70785_2_ > 2.0F && p_70785_2_ < 6.0F && this.rand.nextInt(10) == 0) { @@ -551,7 +567,8 @@ protected void attackEntity(Entity p_70785_1_, float p_70785_2_) this.motionZ = d1 / (double) f2 * 0.5D * 0.800000011920929D + this.motionZ * 0.20000000298023224D; this.motionY = 0.4000000059604645D; } - } else + } + else { super.attackEntity(p_70785_1_, p_70785_2_); } diff --git a/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java b/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java index b02f137e..20f901c7 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java @@ -91,7 +91,8 @@ public void onUpdate() inflation = 1; inflated = true; } - } else + } + else { inflation = 1; } @@ -146,7 +147,8 @@ public void onUpdate() d8 = this.posX - d2 * d5 * 0.8D + d4 * d6; d9 = this.posZ - d4 * d5 * 0.8D - d2 * d6; this.worldObj.spawnParticle("splash", d8, this.posY - 0.125D, d9, this.motionX, this.motionY, this.motionZ); - } else + } + else { d8 = this.posX + d2 + d4 * d5 * 0.7D; d9 = this.posZ + d4 - d2 * d5 * 0.7D; @@ -171,7 +173,8 @@ public void onUpdate() --this.boatPosRotationIncrements; this.setPosition(d2, d4, d11); this.setRotation(this.rotationYaw, this.rotationPitch); - } else + } + else { d2 = this.posX + this.motionX; d4 = this.posY + this.motionY; @@ -189,13 +192,15 @@ public void onUpdate() this.motionY *= 0.949999988079071D; this.motionZ *= 0.9900000095367432D; } - } else + } + else { if (d0 < 1.0D) { d2 = d0 * 2.0D - 1.0D; this.motionY += 0.03999999910593033D * d2; - } else + } + else { if (this.motionY < 0.0D) { @@ -231,7 +236,8 @@ public void onUpdate() { this.speedMultiplier = 0.35D; } - } else + } + else { this.speedMultiplier -= (this.speedMultiplier - 0.07D) / 35.0D; @@ -257,7 +263,8 @@ public void onUpdate() { this.worldObj.setBlockToAir(i1, k, j); this.isCollidedHorizontally = false; - } else if (block == Blocks.waterlily) + } + else if (block == Blocks.waterlily) { this.worldObj.func_147480_a(i1, k, j, true); this.isCollidedHorizontally = false; @@ -354,7 +361,8 @@ public boolean attackEntityFrom(DamageSource damageSource, float damage) if (this.isEntityInvulnerable()) { return false; - } else if (!this.worldObj.isRemote && !this.isDead) + } + else if (!this.worldObj.isRemote && !this.isDead) { this.setForwardDirection(-this.getForwardDirection()); this.setTimeSinceHit(10); @@ -378,7 +386,8 @@ public boolean attackEntityFrom(DamageSource damageSource, float damage) } return true; - } else + } + else { return true; } @@ -397,7 +406,8 @@ public boolean interactFirst(EntityPlayer p_130002_1_) if (this.riddenByEntity != null && this.riddenByEntity instanceof EntityPlayer && this.riddenByEntity != p_130002_1_) { return true; - } else + } + else { if (!this.worldObj.isRemote) { diff --git a/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIAvoidPlayerWithBackpack.java b/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIAvoidPlayerWithBackpack.java index 2b239114..b31ff96e 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIAvoidPlayerWithBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIAvoidPlayerWithBackpack.java @@ -99,10 +99,12 @@ public boolean shouldExecute() if (vec3 == null) { return false; - } else if (this.closestLivingEntity.getDistanceSq(vec3.xCoord, vec3.yCoord, vec3.zCoord) < this.closestLivingEntity.getDistanceSqToEntity(this.theEntity)) + } + else if (this.closestLivingEntity.getDistanceSq(vec3.xCoord, vec3.yCoord, vec3.zCoord) < this.closestLivingEntity.getDistanceSqToEntity(this.theEntity)) { return false; - } else + } + else { this.entityPathEntity = this.entityPathNavigate.getPathToXYZ(vec3.xCoord, vec3.yCoord, vec3.zCoord); return this.entityPathEntity != null && this.entityPathEntity.isDestinationSame(vec3); @@ -147,7 +149,8 @@ public void updateTask() if (this.theEntity.getDistanceSqToEntity(this.closestLivingEntity) < 49.0D) { this.theEntity.getNavigator().setSpeed(this.nearSpeed); - } else + } + else { this.theEntity.getNavigator().setSpeed(this.farSpeed); } diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java index 2d4e39eb..687815ed 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java @@ -48,12 +48,14 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) { sendGUIPacket(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING); } - } else + } + else { if (Wearing.isWearingBackpack(player)) { sendGUIPacket(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_WEARING); - } else if (Wearing.isHoldingBackpack(player)) + } + else if (Wearing.isHoldingBackpack(player)) { sendGUIPacket(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING); } @@ -76,7 +78,8 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) { sendCycleToolPacket(0, player.inventory.currentItem, CycleToolPacket.TOGGLE_HOSE_TANK); ServerActions.switchHose(player, 0, ServerActions.HOSE_TOGGLE); - } else if (Wearing.isWearingBackpack(player)) + } + else if (Wearing.isWearingBackpack(player)) { if (player.isSneaking()) { @@ -88,7 +91,8 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) ServerActions.toggleNightVision(player, Wearing.getWearingBackpack(player)); } } - } else + } + else { sendWearableModePacket(WearableModePacket.CYCLING_ON_OFF); ServerActions.toggleToolCycling(player, Wearing.getWearingBackpack(player)); @@ -100,7 +104,8 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) { sendWearableModePacket(WearableModePacket.COPTER_ON_OFF); ServerActions.toggleCopterPack(player, Wearing.getWearingCopter(player), WearableModePacket.COPTER_ON_OFF); - } else + } + else { sendWearableModePacket(WearableModePacket.COPTER_TOGGLE); ServerActions.toggleCopterPack(player, Wearing.getWearingCopter(player), WearableModePacket.COPTER_TOGGLE); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 9cfaee46..1791363b 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -146,7 +146,8 @@ public void pistonBootsUnequipped(LivingEvent.LivingUpdateEvent event) { pistonBootsStepHeight = true; } - } else + } + else { if (pistonBootsStepHeight) { @@ -256,7 +257,8 @@ public void playerDeathDrop(PlayerDropsEvent event) { ((IBackWearableItem) props.getWearable().getItem()).onPlayerDeath(player.worldObj, player, props.getWearable()); ServerProxy.storePlayerProps(player); - } else + } + else { event.drops.add(new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, pack)); props.setWearable(null); @@ -337,7 +339,8 @@ public void playerWokeUp(PlayerWakeUpEvent event) //If the player wakes up in one of those super confortable SleepingBags (tm) (Patent Pending) BackpackProperty.get(event.entityPlayer).setForceCampFire(true); LogHelper.info("Player just woke up in a sleeping bag, forcing respawn in the last lighted campfire, if there's any"); - } else + } + else { //If it's a regular bed or whatever BackpackProperty.get(event.entityPlayer).setForceCampFire(false); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java index fac1bc2a..59e513f8 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java @@ -64,8 +64,8 @@ public void itemsTooltips(ItemTooltipEvent event) makeTip(local("backpack.tank.right") + ": " + tankTooltip(tank)); shiftFooter(); - - } else if (!GuiScreen.isCtrlKeyDown()) + } + else if (!GuiScreen.isCtrlKeyDown()) { makeTip(holdShift()); } @@ -89,8 +89,8 @@ public void itemsTooltips(ItemTooltipEvent event) } } } - - } else if (theItem instanceof ItemCoalJetpack) + } + else if (theItem instanceof ItemCoalJetpack) { FluidTank waterTank = new FluidTank(Constants.JETPACK_WATER_CAPACITY); FluidTank steamTank = new FluidTank(Constants.JETPACK_STEAM_CAPACITY); @@ -110,8 +110,8 @@ public void itemsTooltips(ItemTooltipEvent event) makeTip(local("jetpack.tank.steam") + ": " + tankTooltip(steamTank, false) + theSteam); shiftFooter(); - - } else if (!GuiScreen.isCtrlKeyDown()) + } + else if (!GuiScreen.isCtrlKeyDown()) { makeTip(holdShift()); } @@ -121,8 +121,8 @@ public void itemsTooltips(ItemTooltipEvent event) makeTip(local("max.altitude") + ": " + whiteFormat("185 "), locals("meters")); makeTip(pressShiftKeyFormat(actionKeyFormat()), locals("jetpack.key.onoff"), " " + local("on")); } - - } else if (theItem instanceof ItemCopterPack) + } + else if (theItem instanceof ItemCopterPack) { FluidTank fuelTank = new FluidTank(Constants.COPTER_FUEL_CAPACITY); @@ -133,8 +133,8 @@ public void itemsTooltips(ItemTooltipEvent event) makeTip(local("copter.rate.fuel") + ": " + fuelConsumptionTooltip(fuelTank)); shiftFooter(); - - } else if (!GuiScreen.isCtrlKeyDown()) + } + else if (!GuiScreen.isCtrlKeyDown()) { makeTip(holdShift()); } @@ -145,8 +145,8 @@ public void itemsTooltips(ItemTooltipEvent event) makeTip(pressShiftKeyFormat(actionKeyFormat()), locals("copter.key.onoff"), " " + local("on")); makeTip(pressKeyFormat(actionKeyFormat()), locals("copter.key.hover")); } - - } else if (theItem instanceof ItemHose) + } + else if (theItem instanceof ItemHose) { if (GuiScreen.isCtrlKeyDown()) { @@ -155,7 +155,8 @@ public void itemsTooltips(ItemTooltipEvent event) makeTip("- " + pressShiftKeyFormat(whiteFormat(local("mouse.wheel"))), locals("hose.key.mode")); makeTip(locals("hose.dump")); makeTip(EnumChatFormatting.RED.toString() + local("hose.dump.warn")); - } else + } + else { makeTip(holdCtrl()); } @@ -182,8 +183,8 @@ private String holdCtrl() private String holdThe(boolean button) { - return whiteFormat(EnumChatFormatting.ITALIC + "<" + (button ? local("hold.shift") - : local("hold.ctrl")) + ">"); + return whiteFormat(EnumChatFormatting.ITALIC + "<" + (button ? local("hold.shift") + : local("hold.ctrl")) + ">"); } private String whiteFormat(String theString) @@ -326,7 +327,8 @@ private String stackDataFormat(int id, int meta, int count) { ItemStack iStack = new ItemStack(GameData.getItemRegistry().getObjectById(id), 0, meta); dataFormatted = iStack.getDisplayName() + " (" + stackSizeFormat(iStack, count) + ")"; - } catch (Exception e) + } + catch (Exception e) { dataFormatted = EnumChatFormatting.RED + local("error"); //e.printStackTrace(); diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java b/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java index ef247426..f072942e 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModNetwork.java @@ -69,7 +69,8 @@ public static void sendToNearby(IMessage message, EntityPlayer player) try { ((WorldServer) player.worldObj).getEntityTracker().func_151248_b(player, ModNetwork.net.getPacketFrom(message)); - } catch (Exception ex) + } + catch (Exception ex) { ex.printStackTrace(); } diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java index 209ee48d..df2a27c1 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java @@ -270,7 +270,8 @@ public static void init() GameRegistry.addRecipe(new ShapedOreRecipe(BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i), (Object[]) field.get(br))); counter++; } - } catch (Exception oops) + } + catch (Exception oops) { LogHelper.error("Huge mistake during reflection. Some bad things might happen: " + oops.getClass().getName()); oops.printStackTrace(); diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java b/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java index 3a02042e..a79c0f9d 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java @@ -30,23 +30,27 @@ public static void init() { ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i); ChestGenHooks.addItem(ChestGenHooks.VILLAGE_BLACKSMITH, new WeightedRandomChestContent(backpack, 1, 1, 2)); - } else if (BackpackNames.backpackNames[i].equals("Bat") && ConfigHandler.allowBatGen) + } + else if (BackpackNames.backpackNames[i].equals("Bat") && ConfigHandler.allowBatGen) { ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i); ChestGenHooks.addItem(ChestGenHooks.DUNGEON_CHEST, new WeightedRandomChestContent(backpack, 1, 1, 2)); ChestGenHooks.addItem(ChestGenHooks.MINESHAFT_CORRIDOR, new WeightedRandomChestContent(backpack, 1, 1, 12)); - } else if (BackpackNames.backpackNames[i].equals("Pigman") && ConfigHandler.allowPigmanGen) + } + else if (BackpackNames.backpackNames[i].equals("Pigman") && ConfigHandler.allowPigmanGen) { ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i); ChestGenHooks.addItem(ChestGenHooks.PYRAMID_DESERT_CHEST, new WeightedRandomChestContent(backpack, 1, 1, 12)); VillagerRegistry.instance().registerVillageTradeHandler(i, new ModWorldGen.TradeHandler(backpack)); - } else if (BackpackNames.backpackNames[i].equals("Villager")) + } + else if (BackpackNames.backpackNames[i].equals("Villager")) { ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i); VillagerRegistry.instance().registerVillageTradeHandler(1, new ModWorldGen.TradeHandler(backpack)); VillagerRegistry.instance().registerVillageTradeHandler(2, new ModWorldGen.TradeHandler(backpack)); VillagerRegistry.instance().registerVillageTradeHandler(3, new ModWorldGen.TradeHandler(backpack)); - } else if (BackpackNames.backpackNames[i].equals("Standard") && ConfigHandler.allowBonusGen) + } + else if (BackpackNames.backpackNames[i].equals("Standard") && ConfigHandler.allowBonusGen) { ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i); ChestGenHooks.addItem(ChestGenHooks.BONUS_CHEST, new WeightedRandomChestContent(backpack, 0, 1, 5)); diff --git a/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipe.java b/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipe.java index e289d2db..81a936e4 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipe.java +++ b/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipe.java @@ -31,12 +31,14 @@ private boolean compareStacksForColor(ItemStack stack1, ItemStack stack2) if (stack1 == null && stack2 == null) { return true; - } else if (stack1 != null && stack2 != null) + } + else if (stack1 != null && stack2 != null) { if (stack1.getItem() != stack2.getItem()) { return false; - } else + } + else { return (stack1.getItemDamage() == stack2.getItemDamage()); } @@ -58,7 +60,8 @@ public AbstractBackpackRecipe() recipes.put(field.getName(), (ItemStack[]) field.get(br)); i++; } - } catch (Exception oops) + } + catch (Exception oops) { LogHelper.error("Huge mistake during reflection. Some bad things might happen."); } diff --git a/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipeTwo.java b/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipeTwo.java index 7ed282ff..bf65be50 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipeTwo.java +++ b/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipeTwo.java @@ -32,7 +32,8 @@ public boolean compareStacks(ItemStack stack1, ItemStack stack2) if (stack1 == null && stack2 == null) { return true; - } else if (stack1 != null && stack2 != null) + } + else if (stack1 != null && stack2 != null) { if (stack1.getItem().equals(stack2.getItem())) { diff --git a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipes.java index 7f063a69..1fde7926 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipes.java @@ -626,7 +626,8 @@ public static ItemStack[] reviewRecipe(Object... objects) j = s1.length(); s = s + s1; } - } else + } + else { while (objects[i] instanceof String) { @@ -647,10 +648,12 @@ public static ItemStack[] reviewRecipe(Object... objects) if (objects[i + 1] instanceof Item) { itemstack1 = new ItemStack((Item) objects[i + 1]); - } else if (objects[i + 1] instanceof Block) + } + else if (objects[i + 1] instanceof Block) { itemstack1 = new ItemStack((Block) objects[i + 1], 1); - } else if (objects[i + 1] instanceof ItemStack) + } + else if (objects[i + 1] instanceof ItemStack) { itemstack1 = (ItemStack) objects[i + 1]; } @@ -667,7 +670,8 @@ public static ItemStack[] reviewRecipe(Object... objects) if (hashmap.containsKey(Character.valueOf(c0))) { aitemstack[i1] = ((ItemStack) hashmap.get(Character.valueOf(c0))).copy(); - } else + } + else { aitemstack[i1] = null; } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java index 4039f45e..511952d4 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java @@ -86,7 +86,8 @@ public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) if (stack.stackSize == 0) { slot.putStack(null); - } else + } + else { slot.onSlotChanged(); } @@ -156,7 +157,8 @@ protected boolean mergeItemStack(ItemStack initStack, int minIndex, int maxIndex activeStack.stackSize = mergedSize; activeSlot.onSlotChanged(); changesMade = true; - } else if (activeStack.stackSize < maxStackSize && !(activeSlot instanceof SlotFluid)) + } + else if (activeStack.stackSize < maxStackSize && !(activeSlot instanceof SlotFluid)) { initStack.stackSize -= maxStackSize - activeStack.stackSize; activeStack.stackSize = maxStackSize; @@ -186,7 +188,8 @@ protected boolean mergeItemStack(ItemStack initStack, int minIndex, int maxIndex if (mergedSize >= initStack.stackSize) { initStack.stackSize = 0; - } else + } + else { initStack.stackSize -= mergedSize; } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 7d248399..dbb2923c 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -160,13 +160,13 @@ protected boolean transferStackToPack(ItemStack stack) return false; } } - - } else if (SlotFluid.isContainer(stack) && !isHoldingSpace()) + } + else if (SlotFluid.isContainer(stack) && !isHoldingSpace()) { if (!transferFluidContainer(stack)) return false; - - } else if (SlotBackpack.isValidItem(stack)) + } + else if (SlotBackpack.isValidItem(stack)) { if (!mergeBackpackInv(stack)) return false; @@ -221,8 +221,8 @@ private boolean transferFluidContainer(ItemStack container) return mergeRightBucket(container); else if (leftStackOut == null || areLeftSameType) return mergeLeftBucket(container); - - } else + } + else { if (suitableToLeft && (leftStackOut == null || areLeftSameType)) return mergeLeftBucket(container); @@ -231,8 +231,8 @@ else if ((isRightTankEmpty || suitableToRight) && (rightStackOut == null || areR else if (leftStackOut == null && rightStackOut == null && SlotBackpack.isValidItem(container)) return mergeBackpackInv(container); } - - } else if (SlotFluid.isEmpty(container)) + } + else if (SlotFluid.isEmpty(container)) { if (isLeftTankEmpty) { @@ -240,8 +240,8 @@ else if (leftStackOut == null && rightStackOut == null && SlotBackpack.isValidIt return mergeRightBucket(container); else if (leftStackOut == null && rightStackOut == null && SlotBackpack.isValidItem(container)) return mergeBackpackInv(container); - - } else + } + else { if (leftStackOut == null || areLeftSameType) return mergeLeftBucket(container); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java index 1d366518..3500a4d8 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java @@ -81,7 +81,8 @@ public boolean transferStackToPack(ItemStack stack) return false; } } - } else if (SlotFluid.isEmpty(stack)) + } + else if (SlotFluid.isEmpty(stack)) { if ((stackOut == null || areSameType) && SlotFluidFuel.isValidItem(stack)) { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java index 1bf66451..443f8ad2 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java @@ -98,7 +98,8 @@ public boolean transferStackToPack(ItemStack stack) return false; } } - } else if (SlotFluid.isEmpty(stack)) + } + else if (SlotFluid.isEmpty(stack)) { if ((stackOut == null || areSameType) && SlotFluidWater.isValidItem(stack)) { @@ -109,8 +110,8 @@ public boolean transferStackToPack(ItemStack stack) } } } - - } else if (SlotFuel.isValidItem(stack)) + } + else if (SlotFuel.isValidItem(stack)) { if (!mergeFuel(stack)) return false; diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java index 093d7d05..eee88f1b 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java @@ -67,7 +67,8 @@ public static boolean transferContainerTank(IInventoryTanks inventory, FluidTank inventory.decrStackSizeNoSave(slotIn, 1); inventory.setInventorySlotContentsNoSave(slotOut, stackOut); return true; - } else if (inventory.getStackInSlot(slotOut).getItem().equals(stackOut.getItem()) + } + else if (inventory.getStackInSlot(slotOut).getItem().equals(stackOut.getItem()) && stackOut.getItemDamage() == inventory.getStackInSlot(slotOut).getItemDamage()) { int maxStack = inventory.getStackInSlot(slotOut).getMaxStackSize(); @@ -99,7 +100,8 @@ else if (tank.getFluid() != null && tank.getFluidAmount() > 0 && FluidUtils.isEm inventory.decrStackSizeNoSave(slotIn, 1); inventory.setInventorySlotContentsNoSave(slotOut, stackOut); return true; - } else if (stackOut.getItem().equals(inventory.getStackInSlot(slotOut).getItem()) + } + else if (stackOut.getItem().equals(inventory.getStackInSlot(slotOut).getItem()) && stackOut.getItemDamage() == inventory.getStackInSlot(slotOut).getItemDamage()) { int maxStack = inventory.getStackInSlot(slotOut).getMaxStackSize(); @@ -175,8 +177,8 @@ public static boolean areContainersOfSameType(ItemStack stackIn, ItemStack stack { ItemStack emptyIn = SlotFluid.getEmptyContainer(stackIn); return stackOut.isStackable() && areStacksCompatible(emptyIn, stackOut); - - } else if (SlotFluid.isEmpty(stackIn) && SlotFluid.isFilled(stackOut)) + } + else if (SlotFluid.isEmpty(stackIn) && SlotFluid.isFilled(stackOut)) { ItemStack emptyOut = SlotFluid.getEmptyContainer(stackOut); return stackOut.isStackable() && areStacksCompatible(stackIn, emptyOut); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index 51db5e9a..3bcb38a9 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -165,7 +165,8 @@ public ItemStack decrStackSizeNoSave(int slot, int quantity) if (stack.stackSize <= quantity) { setInventorySlotContentsNoSave(slot, null); - } else + } + else { stack = stack.splitStack(quantity); } @@ -298,7 +299,8 @@ public ItemStack decrStackSize(int slot, int quantity) if (itemstack.stackSize <= quantity) { setInventorySlotContents(slot, null); - } else + } + else { itemstack = itemstack.splitStack(quantity); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index b5732dff..c1be3af6 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -240,11 +240,13 @@ public ItemStack decrStackSize(int slot, int quantity) if (slot == JETPACK_FUEL_SLOT) { setInventorySlotContents(slot, itemstack.getItem().getContainerItem(itemstack)); - } else + } + else { setInventorySlotContents(slot, null); } - } else + } + else { itemstack = itemstack.splitStack(quantity); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java index 5103ada3..b6db5e63 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java @@ -70,7 +70,8 @@ public ItemStack decrStackSize(int slot, int quantity) if (itemstack.stackSize <= quantity) { setInventorySlotContents(slot, null); - } else + } + else { itemstack = itemstack.splitStack(quantity); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java index b42a1dcd..14b896a8 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java @@ -93,7 +93,8 @@ public static boolean isValidTool(ItemStack stack) { // Tinker's Construct if (clazz.contains("tconstruct.items.tools")) return true; - } catch (Exception oops) + } + catch (Exception oops) { // oops.printStackTrace(); } @@ -101,7 +102,8 @@ public static boolean isValidTool(ItemStack stack) { // Mekanism if (clazz.contains("mekanism.common.item")) return true; - } catch (Exception oops) + } + catch (Exception oops) { // oops.printStackTrace(); } @@ -109,7 +111,8 @@ public static boolean isValidTool(ItemStack stack) { //Buildcraft if (java.lang.Class.forName("buildcraft.api.tools.IToolWrench").isInstance(item)) return true; - } catch (Exception oops) + } + catch (Exception oops) { // oops.printStackTrace(); } @@ -117,15 +120,18 @@ public static boolean isValidTool(ItemStack stack) { //IndustrialCraft if (java.lang.Class.forName("ic2.api.item.IElectricItem").isInstance(item)) return true; - } catch (Exception oops) + } + catch (Exception oops) { // oops.printStackTrace(); } try { //Thaumcraft - if (java.lang.Class.forName("thaumcraft.common.items.wands.ItemWandCasting").isInstance(item)) return true; - } catch (Exception oops) + if (java.lang.Class.forName("thaumcraft.common.items.wands.ItemWandCasting").isInstance(item)) + return true; + } + catch (Exception oops) { // oops.printStackTrace(); } @@ -134,7 +140,8 @@ public static boolean isValidTool(ItemStack stack) //Thermal Expansion if (java.lang.Class.forName("cofh.core.item.tool").isInstance(item)) return true; if (java.lang.Class.forName("thermalexpansion.item.tool").isInstance(item)) return true; - } catch (Exception oops) + } + catch (Exception oops) { // oops.printStackTrace(); } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 67e560b7..0069a43c 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -242,7 +242,8 @@ private boolean placeBackpack(ItemStack stack, EntityPlayer player, World world, if (from) { stack.stackSize--; - } else + } + else { BackpackProperty.get(player).setWearable(null); } @@ -325,7 +326,8 @@ public String getArmorTexture(ItemStack stack, Entity entity, int slot, String t if (BackpackNames.getBackpackColorName(stack).equals("Standard")) { modelTexture = Resources.backpackTextureFromString(ModDates.getHoliday()).toString(); - } else + } + else { modelTexture = Resources.backpackTexturesStringFromColor(stack); } @@ -348,7 +350,8 @@ public ResourceLocation getWearableTexture(ItemStack wearable) if (BackpackNames.getBackpackColorName(wearable).equals("Standard")) { modelTexture = Resources.backpackTextureFromString(ModDates.getHoliday()); - } else + } + else { modelTexture = Resources.backpackTextureFromString(BackpackNames.getBackpackColorName(wearable)); } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index 6bed60b9..e9c7e1ab 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -116,7 +116,8 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) { ModNetwork.net.sendToServer(new EntitySoundPacket.Message(EntitySoundPacket.JETPACK_FIZZ, player)); } - } else + } + else { inv.setInUse(false); ModNetwork.net.sendToServer(new PlayerActionPacket.ActionMessage(PlayerActionPacket.JETPACK_NOT_IN_USE)); @@ -175,7 +176,8 @@ private void runBoiler(InventoryCoalJetpack inv, World world, EntityPlayer playe { ModNetwork.net.sendTo(new EntitySoundPacket.Message(EntitySoundPacket.BOILING_BUBBLES, player), (EntityPlayerMP) player); } - } else + } + else { if (boiling) { @@ -202,7 +204,8 @@ private void runBoiler(InventoryCoalJetpack inv, World world, EntityPlayer playe { leaking = false; } - } else + } + else { if (!leaking) { @@ -244,7 +247,8 @@ private void runHeater(InventoryCoalJetpack inv, World world, EntityPlayer playe coolTicks = coolTicks < 5000 ? coolTicks + 100 : coolTicks; } } - } else if (burnTicks <= 0) + } + else if (burnTicks <= 0) { inv.currentItemBurnTime = 0; if (coolTicks % inv.getDecreasingFactor() == 0) diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java b/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java index 65c3db63..1da4ac5a 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java @@ -173,7 +173,8 @@ private ItemStack placeBoat(ItemStack stack, World world, EntityPlayer player, b if (movingobjectposition == null) { return stack; - } else + } + else { Vec3 vec32 = player.getLook(f); boolean flag = false; @@ -200,7 +201,8 @@ private ItemStack placeBoat(ItemStack stack, World world, EntityPlayer player, b if (flag) { return stack; - } else + } + else { if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) { diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java index fdb4326f..6e5998fd 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java @@ -154,7 +154,8 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) if (player.isSneaking()) { player.motionY = -0.3; - } else + } + else { fuelConsumption *= 2; player.motionY = 0.0f; @@ -176,7 +177,8 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) pushEntities(world, player, 0.2f); //movement boost player.moveFlying(player.moveStrafing, player.moveForward, factor); - } else + } + else { pushEntities(world, player, factor + 0.4f); } @@ -208,7 +210,8 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) inv.tickCounter = 3; inv.consumeFuel(getFuelSpent(fuelConsumption)); inv.dirtyTanks(); - } else + } + else { inv.tickCounter = ticks; } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCrossbow.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCrossbow.java index f2afdc6b..889d0584 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCrossbow.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCrossbow.java @@ -173,7 +173,8 @@ private void shootArrow(ItemStack stack, World world, EntityPlayer player, int c if (flag) { entityarrow.canBePickedUp = 2; - } else + } + else { player.inventory.consumeInventoryItem(Items.arrow); } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java b/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java index 15860464..5e1ed39a 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java @@ -173,12 +173,14 @@ public void onUpdate(ItemStack stack, World world, Entity entity, int inv_slot, { nbt.setString("fluid", Utils.capitalize(tank.getFluid().getFluid().getName())); nbt.setInteger("amount", tank.getFluidAmount()); - } else + } + else { nbt.setInteger("amount", 0); nbt.setString("fluid", "Empty"); } - } else + } + else { nbt.setInteger("amount", 0); nbt.setString("fluid", "None"); @@ -342,7 +344,8 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla { world.spawnParticle("largesmoke", x + Math.random(), y + Math.random(), z + Math.random(), 0.0D, 0.0D, 0.0D); } - } else + } + else { /* NOT IN HELL DIMENSION. */ FluidStack drainedFluid = tank.drain(BUCKET, false); @@ -359,13 +362,15 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla { tank.drain(BUCKET, true); } - } else if (fluid.getFluid().getBlock() == Blocks.lava) + } + else if (fluid.getFluid().getBlock() == Blocks.lava) { if (world.setBlock(x, y, z, Blocks.flowing_lava, 0, 3)) { tank.drain(BUCKET, true); } - } else if (world.setBlock(x, y, z, fluid.getFluid().getBlock(), 0, 3)) + } + else if (world.setBlock(x, y, z, fluid.getFluid().getBlock(), 0, 3)) { tank.drain(BUCKET, true); } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemMachete.java b/src/main/java/com/darkona/adventurebackpack/item/ItemMachete.java index 27e7ffbf..1458936c 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemMachete.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemMachete.java @@ -96,7 +96,8 @@ public boolean onBlockDestroyed(ItemStack stack, World world, Block block, int x if (block != Blocks.vine && !(block instanceof IShearable)) { return super.onBlockDestroyed(stack, world, block, x, y, z, entityLivingBase); - } else + } + else { return true; } diff --git a/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java b/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java index 18617542..85bdbcae 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java @@ -42,15 +42,18 @@ public Message onMessage(Message message, MessageContext ctx) player.inventory.setInventorySlotContents(player.inventory.currentItem, null); player.inventoryContainer.detectAndSendChanges(); } - } else if (Wearing.isWearingWearable(player)) + } + else if (Wearing.isWearingWearable(player)) { if (Wearing.isWearingBackpack(player)) { player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.equipped.backpack")); - } else if (Wearing.isWearingCopter(player)) + } + else if (Wearing.isWearingCopter(player)) { player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.equipped.copterpack")); - } else if (Wearing.isWearingJetpack(player)) + } + else if (Wearing.isWearingJetpack(player)) { player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.equipped.jetpack")); } diff --git a/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java b/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java index 7bf12867..eaad57cf 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java @@ -60,7 +60,8 @@ public IMessage onMessage(ActionMessage message, MessageContext ctx) if (message.type == GUI_HOLDING_SPACE) { inv.getExtendedProperties().setBoolean("holdingSpace", true); - } else + } + else { inv.getExtendedProperties().removeTag("holdingSpace"); } diff --git a/src/main/java/com/darkona/adventurebackpack/network/SyncPropertiesPacket.java b/src/main/java/com/darkona/adventurebackpack/network/SyncPropertiesPacket.java index a14e05b4..863a8614 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/SyncPropertiesPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/SyncPropertiesPacket.java @@ -33,7 +33,8 @@ public Message onMessage(Message message, MessageContext ctx) if (Minecraft.getMinecraft().theWorld == null) { ModNetwork.net.sendToServer(new SyncPropertiesPacket.Message()); - } else + } + else { AdventureBackpack.proxy.synchronizePlayer(message.ID, message.properties); } diff --git a/src/main/java/com/darkona/adventurebackpack/network/messages/EntityParticlePacket.java b/src/main/java/com/darkona/adventurebackpack/network/messages/EntityParticlePacket.java index 6c24156d..8b9235d6 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/messages/EntityParticlePacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/messages/EntityParticlePacket.java @@ -30,7 +30,8 @@ public Message onMessage(Message message, MessageContext ctx) { Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(message.entityID); ClientActions.showParticlesAtEntity(entity, message.particleCode); - } else + } + else { ModNetwork.sendToNearby(message, ctx.getServerHandler().playerEntity); } diff --git a/src/main/java/com/darkona/adventurebackpack/network/messages/EntitySoundPacket.java b/src/main/java/com/darkona/adventurebackpack/network/messages/EntitySoundPacket.java index 433d19bc..df762159 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/messages/EntitySoundPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/messages/EntitySoundPacket.java @@ -33,7 +33,8 @@ public Message onMessage(Message message, MessageContext ctx) if (ctx.side.isClient()) { ClientActions.playSoundAtEntity(Minecraft.getMinecraft().theWorld.getEntityByID(message.entityID), message.soundCode); - } else + } + else { EntityPlayer player = ctx.getServerHandler().playerEntity; ModNetwork.sendToNearby(message, player); diff --git a/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java b/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java index d66b7479..c7159db6 100644 --- a/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java +++ b/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java @@ -48,7 +48,8 @@ private static void syncToNear(EntityPlayerMP player) try { player.getServerForPlayer().getEntityTracker().func_151248_b(player, ModNetwork.net.getPacketFrom(new SyncPropertiesPacket.Message(player.getEntityId(), get(player).getData()))); - } catch (Exception ex) + } + catch (Exception ex) { ex.printStackTrace(); } diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java index 253b1ca0..71befbfa 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java @@ -48,7 +48,8 @@ public void joinPlayer(EntityPlayer player) LogHelper.info("Stored properties retrieved"); BackpackProperty.get(player).loadNBTData(playerData); BackpackProperty.sync(player); - } else + } + else { LogHelper.info("Data is null! WTF!"); } @@ -71,7 +72,8 @@ public static void storePlayerProps(EntityPlayer player) } extendedEntityData.put(player.getUniqueID(), data); LogHelper.info("Stored player properties for dead player"); - } catch (Exception ex) + } + catch (Exception ex) { LogHelper.error("Something went wrong while saving player properties: " + ex.getMessage()); ex.printStackTrace(); diff --git a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java index 8b3bc6c5..e7a0add3 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java @@ -40,7 +40,8 @@ public static Reasons equipWearable(ItemStack backpack, EntityPlayer player) MinecraftForge.EVENT_BUS.post(event); BackpackProperty.sync(player); return Reasons.SUCCESSFUL; - } else + } + else { return Reasons.ALREADY_EQUIPPED; } @@ -96,7 +97,8 @@ public void run() WearableEvent event = new WearableEvent.UnequipWearableEvent(player, gimme); MinecraftForge.EVENT_BUS.post(event); BackpackProperty.sync(player); - } else + } + else { player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.impossibru")); } diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index a4db2f58..13b35047 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -295,7 +295,8 @@ public static String getFirstWord(String text) String firstWord = text.substring(0, text.indexOf(' ')); String secondWord = text.substring(text.indexOf(' ') + 1); return firstWord.equals("Molten") ? secondWord : firstWord; // Extract first word. - } else + } + else { return text; // Text is the first word itself. } diff --git a/src/main/java/com/darkona/adventurebackpack/util/calendar/CalendarDate.java b/src/main/java/com/darkona/adventurebackpack/util/calendar/CalendarDate.java index 7d79ec4c..3ab33215 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/calendar/CalendarDate.java +++ b/src/main/java/com/darkona/adventurebackpack/util/calendar/CalendarDate.java @@ -59,7 +59,8 @@ public boolean areDatesEqual(CalendarDate date) (year == date.getYear())) { return true; - } else + } + else { return false; } diff --git a/src/main/java/com/darkona/adventurebackpack/util/calendar/CalendarImpl.java b/src/main/java/com/darkona/adventurebackpack/util/calendar/CalendarImpl.java index 2da8b656..9ce2ffe6 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/calendar/CalendarImpl.java +++ b/src/main/java/com/darkona/adventurebackpack/util/calendar/CalendarImpl.java @@ -37,7 +37,8 @@ public int getLastDayOfGregorianMonth(int month, int year) ((year % 400) != 300)) { return 29; - } else + } + else { return month_list[month - 1]; } @@ -108,7 +109,8 @@ public boolean hebrewLeapYear(int year) if ((((year * 7) + 1) % 19) < 7) { return true; - } else + } + else { return false; } @@ -119,7 +121,8 @@ public int getLastMonthOfJewishYear(int year) if (hebrewLeapYear(year)) { return 13; - } else + } + else { return 12; } @@ -199,7 +202,8 @@ private int hebrewCalendarElapsedDays(int year) /* Then postpone Rosh HaShanah one day */ { alternativeDay = day + 1; - } else + } + else { alternativeDay = day; } @@ -228,7 +232,8 @@ private boolean longHeshvan(int year) if ((daysInHebrewYear(year) % 10) == 5) { return true; - } else + } + else { return false; } @@ -239,7 +244,8 @@ private boolean shortKislev(int year) if ((daysInHebrewYear(year) % 10) == 3) { return true; - } else + } + else { return false; } @@ -268,7 +274,8 @@ public int absoluteFromJewishDate(CalendarDate date) value = getLastDayOfJewishMonth(m, date.getYear()); returnValue += value; } - } else + } + else { for (m = 7; m < date.getMonth(); m++) { @@ -310,7 +317,8 @@ public CalendarDate jewishDateFromAbsolute(int absDate) if (absDate < temp) { start = 7; - } else + } + else { start = 1; } diff --git a/src/main/java/com/darkona/adventurebackpack/util/calendar/ChineseCalendar.java b/src/main/java/com/darkona/adventurebackpack/util/calendar/ChineseCalendar.java index 79b1220f..ffe0cae8 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/calendar/ChineseCalendar.java +++ b/src/main/java/com/darkona/adventurebackpack/util/calendar/ChineseCalendar.java @@ -48,11 +48,13 @@ public static void generateChineseCalendar(String[] arg) { String[] t = c.getYearTable(); for (int i = 0; i < t.length; i++) System.out.println(t[i]); - } else if (cmd.equalsIgnoreCase("month")) + } + else if (cmd.equalsIgnoreCase("month")) { String[] t = c.getMonthTable(); for (int i = 0; i < t.length; i++) System.out.println(t[i]); - } else + } + else { System.out.println(c.toString()); } @@ -248,19 +250,22 @@ public static int daysInChineseMonth(int y, int m) v = chineseMonths[2 * index]; l = m - 1; if (((v >> l) & 0x01) == 1) d = 29; - } else if (9 <= m && m <= 12) + } + else if (9 <= m && m <= 12) { v = chineseMonths[2 * index + 1]; l = m - 9; if (((v >> l) & 0x01) == 1) d = 29; - } else + } + else { // leap month v = chineseMonths[2 * index + 1]; v = (v >> 4) & 0x0F; if (v != Math.abs(m)) { d = 0; // wrong m specified - } else + } + else { d = 29; for (int i = 0; i < bigLeapMonthYears.length; i++) @@ -511,16 +516,20 @@ public String getDateString() if (gregorianDate == sectionalTerm) { str = " ST" + gm; - } else if (gregorianDate == principleTerm) + } + else if (gregorianDate == principleTerm) { str = " PT" + gm; - } else if (chineseDate == 1 && chineseMonth > 0) + } + else if (chineseDate == 1 && chineseMonth > 0) { str = " CM" + cm; - } else if (chineseDate == 1 && chineseMonth < 0) + } + else if (chineseDate == 1 && chineseMonth < 0) { str = "*CM" + cm; - } else + } + else { str = gd + '/' + cd; } From 84e88321d4890fa1cf017e93ed11e066c13ada54 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 16 Aug 2017 01:02:01 +0700 Subject: [PATCH 409/462] Introduce of BackpackTypes --- .../client/gui/GuiWithTanks.java | 4 +- .../inventory/ContainerAdventureBackpack.java | 18 +- .../item/ItemAdventureBackpack.java | 14 +- .../reference/BackpackTypes.java | 252 ++++++++++++++++++ 4 files changed, 277 insertions(+), 11 deletions(-) create mode 100644 src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java index 2b5db026..4b04d331 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java @@ -41,9 +41,9 @@ float getZLevel() return zLevel; } - abstract protected GuiImageButtonNormal getEquipButton(); + protected abstract GuiImageButtonNormal getEquipButton(); - abstract protected GuiImageButtonNormal getUnequipButton(); + protected abstract GuiImageButtonNormal getUnequipButton(); @Override protected void mouseClicked(int mouseX, int mouseY, int mouseButton) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java index 511952d4..eb816e10 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java @@ -26,7 +26,7 @@ abstract class ContainerAdventureBackpack extends Container protected EntityPlayer player; protected Source source; - abstract IInventoryTanks getInventoryTanks(); + public abstract IInventoryTanks getInventoryTanks(); protected void bindPlayerInventory(InventoryPlayer invPlayer, int startX, int startY) { @@ -58,7 +58,7 @@ public void detectAndSendChanges() } } - abstract protected boolean detectChanges(); + protected abstract boolean detectChanges(); @Override public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) @@ -104,7 +104,7 @@ protected boolean mergePlayerInv(ItemStack stack) return mergeItemStack(stack, PLAYER_HOT_START, PLAYER_INV_END + 1, false); } - abstract protected boolean transferStackToPack(ItemStack stack); + protected abstract boolean transferStackToPack(ItemStack stack); @Override public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) @@ -203,6 +203,18 @@ else if (activeStack.stackSize < maxStackSize && !(activeSlot instanceof SlotFlu return changesMade; } + /* + @Override + protected void retrySlotClick(int slotIndex, int p_75133_2_, boolean flag, EntityPlayer player) + { + super.retrySlotClick(slotIndex, p_75133_2_, flag, player); + //this.slotClick(index, p_75133_2_, 1, p_75133_4_); + // TODO if (slot instanceof slotFluid), see also mergeItemStack + } + + //TODO protected List crafters = new ArrayList(); + */ + @Override public void onContainerClosed(EntityPlayer player) { diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 0069a43c..7dd892eb 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -38,6 +38,7 @@ import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.proxy.ClientProxy; import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.util.BackpackUtils; import com.darkona.adventurebackpack.util.EnchUtils; import com.darkona.adventurebackpack.util.Resources; @@ -83,21 +84,22 @@ public void addInformation(ItemStack stack, EntityPlayer player, List list, bool if (backpackTag.hasKey("colorName")) { String color = backpackTag.getString("colorName"); - switch (color) + BackpackTypes type = BackpackTypes.getType(color); //TODO it seems to be good + switch (type) { - case "Bat": + case BAT: list.add(EnumChatFormatting.DARK_PURPLE + color); break; - case "Dragon": + case DRAGON: list.add(EnumChatFormatting.LIGHT_PURPLE + color); break; - case "Pigman": + case PIGMAN: list.add(EnumChatFormatting.RED + color); break; - case "Rainbow": + case RAINBOW: list.add(Utils.makeItRainbow(color)); break; - case "Squid": + case SQUID: list.add(EnumChatFormatting.DARK_AQUA + color); break; default: diff --git a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java new file mode 100644 index 00000000..c8f0df4f --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java @@ -0,0 +1,252 @@ +package com.darkona.adventurebackpack.reference; + +import java.util.EnumSet; + +import com.google.common.collect.BiMap; +import com.google.common.collect.EnumHashBiMap; +import com.google.common.collect.ImmutableBiMap; +import com.google.common.collect.ImmutableSet; +import org.apache.commons.lang3.Validate; +import org.apache.commons.lang3.text.WordUtils; + +import static com.darkona.adventurebackpack.reference.BackpackTypes.Props.NIGHT_VISION; +import static com.darkona.adventurebackpack.reference.BackpackTypes.Props.REMOVAL; +import static com.darkona.adventurebackpack.reference.BackpackTypes.Props.SPECIAL; +import static com.darkona.adventurebackpack.reference.BackpackTypes.Props.TILE; + +/** + * Created on 15.08.2017 + * + * @author Ugachaga + */ +@SuppressWarnings("unused") +public enum BackpackTypes +{ + // @formatter:off + STANDARD ( 0), + + BAT ( 2, SPECIAL, REMOVAL, NIGHT_VISION), + BLACK ( 3), + BLAZE ( 4), + BLUE ( 14), + BOOKSHELF ( 15), + BROWN ( 16), + BROWN_MUSHROOM ( 43), + CACTUS ( 17, SPECIAL, TILE), + CAKE ( 18), + CARROT ( 5), + CHEST ( 19), + CHICKEN ( 28, SPECIAL), + COAL ( 6), + COOKIE ( 20, SPECIAL), + COW ( 1), + CREEPER ( 64, SPECIAL), + CYAN ( 21), + DELUXE ( 25), + DIAMOND ( 7), + DRAGON ( 22, SPECIAL, REMOVAL, NIGHT_VISION), + EGG ( 23), + ELECTRIC ( 24), + EMERALD ( 8), + END ( 27), + ENDERMAN ( 26), + GHAST ( 30), + GLOWSTONE ( 37), + GOLD ( 9), + GRAY ( 31), + GREEN ( 32), + HAYBALE ( 33), + HORSE ( 34), + IRON ( 10), + IRON_GOLEM ( 11), + LAPIS ( 12), + LEATHER ( 35), + LIGHT_BLUE ( 36), + LIGHT_GRAY ( 38), + LIME ( 39), + MAGENTA ( 40), + MAGMA_CUBE ( 41), + MELON ( 42, SPECIAL, TILE), + MODDED_NETWORK ( 76), + MOOSHROOM ( 45, SPECIAL), + NETHER ( 46), + OBSIDIAN ( 48), + OCELOT ( 29, SPECIAL), + ORANGE ( 49), + OVERWORLD ( 50), + PIG ( 53, SPECIAL), + PIGMAN ( 51, SPECIAL, REMOVAL), + PINK ( 52), + PUMPKIN ( 54), + PURPLE ( 55), + QUARTZ ( 56), + RAINBOW ( 57, SPECIAL, REMOVAL), + RED ( 58), + RED_MUSHROOM ( 44), + REDSTONE ( 13), + SANDSTONE ( 59), + SHEEP ( 60), + SILVERFISH ( 61), + SKELETON ( 65), + SLIME ( 67, SPECIAL), + SNOW ( 68), + SPIDER ( 69), + SPONGE ( 70), + SQUID ( 62, SPECIAL, REMOVAL, NIGHT_VISION), + SUNFLOWER ( 63, SPECIAL), + VILLAGER ( 71), + WHITE ( 72), + WITHER ( 47), + WITHER_SKELETON ( 66), + WOLF ( 73, SPECIAL), + YELLOW ( 74), + ZOMBIE ( 75), + + UNKNOWN (127, "UNKNOWN"), // null object + ; + // @formatter:on + + public static final ImmutableBiMap BY_META; + public static final ImmutableSet SPECIAL_TYPES; + public static final ImmutableSet REMOVAL_TYPES; + public static final ImmutableSet NIGHT_VISION_TYPES; + + private final byte meta; + private final String skinName; // equivalent to current colorName + private final Props[] props; + + //TODO step1: replace BackpackNames by this , make it work + //TODO step2: add support for recipes (see BackpackRecipes[List]). new field 'Object[]'? + //TODO step3: rework NBT for wearable packs. unificate and simplify structure. + //TODO step4: remove all internal interactions by colorName (skinName), replace by enum. maybe remove NBT field too cuz we need only meta + + BackpackTypes(int meta, String skin, Props... props) + { + Validate.inclusiveBetween(0, 127, meta, "wrong meta value: %s (%s)", meta, this); + + this.meta = (byte) meta; + this.props = props; + this.skinName = skin; + } + + BackpackTypes(int meta, Props... props) + { + Validate.inclusiveBetween(0, 127, meta, "wrong meta value: %s (%s)", meta, this); + + this.meta = (byte) meta; + this.props = props; + this.skinName = generateSkinName(); + } + + private String generateSkinName() + { + return WordUtils + .capitalize(this.name().toLowerCase(), '_') + .replaceAll("_", ""); + } + + static + { + BiMap byMeta = EnumHashBiMap.create(BackpackTypes.class); + EnumSet specials = EnumSet.noneOf(BackpackTypes.class); + EnumSet removals = EnumSet.noneOf(BackpackTypes.class); + EnumSet nightVisions = EnumSet.noneOf(BackpackTypes.class); + + for (BackpackTypes type : BackpackTypes.values()) + { + if (byMeta.put(type, type.meta) != null) + throw new IllegalArgumentException("duplicate meta: " + type.meta); + + for (Props property : type.props) + { + if (property == SPECIAL) + specials.add(type); + if (property == REMOVAL) + removals.add(type); + if (property == NIGHT_VISION) + nightVisions.add(type); + } + } + + BY_META = ImmutableBiMap.copyOf(byMeta.inverse()); + SPECIAL_TYPES = ImmutableSet.copyOf(specials); + REMOVAL_TYPES = ImmutableSet.copyOf(removals); + NIGHT_VISION_TYPES = ImmutableSet.copyOf(nightVisions); + + //ImmutableSet.builder().addAll(SPECIAL).addAll(TILE).addAll(OTHER).build(); + } + + public static String getSkinName(BackpackTypes type) + { + return type.skinName; + } + + public static byte getMeta(BackpackTypes type) + { + return type.meta; + } + + public static BackpackTypes getType(String skinName) + { + for (BackpackTypes type : BackpackTypes.values()) + { + if (type.skinName.equals(skinName)) + return type; + } + return UNKNOWN; + } + + public static BackpackTypes getType(int meta) + { + Validate.inclusiveBetween(0, 127, meta, "wrong meta value: %s", meta); + BackpackTypes type = BY_META.get((byte) meta); + return type != null ? type : UNKNOWN; + } + + public static BackpackTypes getType(byte meta) + { + Validate.inclusiveBetween((byte) 0, (byte) 127, meta, "wrong meta value: %s", meta); + BackpackTypes type = BY_META.get(meta); + return type != null ? type : UNKNOWN; + } + + public static int getLowestUnusedMeta() + { + for (byte i = 0; i <= 126; i++) + { + if (BY_META.get(i) == null) + return i; + } + return -1; + } + + public static boolean isNightVision(BackpackTypes type) + { + return hasProperty(type, NIGHT_VISION); + } + + public static boolean isSpecial(BackpackTypes type) + { + return hasProperty(type, SPECIAL); + } + + public static boolean hasProperty(BackpackTypes type, Props prop) + { + for (Props p : type.props) + { + if (p == prop) + return true; + } + return false; + } + + public enum Props + { + SPECIAL, + REMOVAL, + TILE, + NIGHT_VISION, + //HOLIDAY, + //OTHER_ABILITY, // creeper or skeleton etc + } +} From 7351943c01682046c406e9a22b99718b5b81d8a1 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 12 Sep 2017 16:50:38 +0700 Subject: [PATCH 410/462] Inventory name returns string --- .../adventurebackpack/block/TileAdventureBackpack.java | 2 +- .../inventory/InventoryAdventureBackpack.java | 2 +- .../adventurebackpack/reference/BackpackTypes.java | 8 +++++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 724a1d2e..dd39066e 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -193,7 +193,7 @@ public ItemStack getStackInSlot(int slot) @Override public String getInventoryName() { - return null; + return ""; } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventureBackpack.java index a84f04d0..34fd8758 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventureBackpack.java @@ -15,7 +15,7 @@ abstract class InventoryAdventureBackpack implements IInventoryTanks @Override public String getInventoryName() { - return null; + return ""; } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java index c8f0df4f..daab9e4b 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java @@ -6,6 +6,7 @@ import com.google.common.collect.EnumHashBiMap; import com.google.common.collect.ImmutableBiMap; import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Sets; import org.apache.commons.lang3.Validate; import org.apache.commons.lang3.text.WordUtils; @@ -169,9 +170,9 @@ private String generateSkinName() } BY_META = ImmutableBiMap.copyOf(byMeta.inverse()); - SPECIAL_TYPES = ImmutableSet.copyOf(specials); - REMOVAL_TYPES = ImmutableSet.copyOf(removals); - NIGHT_VISION_TYPES = ImmutableSet.copyOf(nightVisions); + SPECIAL_TYPES = Sets.immutableEnumSet(specials); + REMOVAL_TYPES = Sets.immutableEnumSet(removals); + NIGHT_VISION_TYPES = Sets.immutableEnumSet(nightVisions); //ImmutableSet.builder().addAll(SPECIAL).addAll(TILE).addAll(OTHER).build(); } @@ -248,5 +249,6 @@ public enum Props NIGHT_VISION, //HOLIDAY, //OTHER_ABILITY, // creeper or skeleton etc + ; } } From 863145b68e066febd3f7d8c41e4ddbbb402d3b9a Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 14 Sep 2017 08:36:20 +0700 Subject: [PATCH 411/462] BackpackTypes implementation step1 --- .../block/BlockAdventureBackpack.java | 27 +- .../block/TileAdventureBackpack.java | 35 +- .../client/models/ModelBackpackArmor.java | 13 +- .../client/models/ModelBackpackBlock.java | 16 +- .../RendererAdventureBackpackBlock.java | 9 +- .../render/RendererItemAdventureBackpack.java | 4 +- .../common/BackpackAbilities.java | 47 +- .../common/ServerActions.java | 10 +- .../ai/EntityAIAvoidPlayerWithBackpack.java | 4 +- .../handlers/ClientEventHandler.java | 4 +- .../handlers/KeyInputEventHandler.java | 11 +- .../handlers/PlayerEventHandler.java | 4 +- .../adventurebackpack/init/ModRecipes.java | 35 +- .../adventurebackpack/init/ModWorldGen.java | 74 +- .../init/recipes/AbstractBackpackRecipe.java | 170 ----- .../init/recipes/BackpackRecipes.java | 682 ------------------ .../init/recipes/BackpackRecipesList.java | 4 +- .../IInventoryAdventureBackpack.java | 5 +- .../inventory/InventoryBackpack.java | 14 +- .../item/ItemAdventureBackpack.java | 22 +- .../reference/BackpackNames.java | 145 ---- .../reference/BackpackTypes.java | 60 +- .../adventurebackpack/util/BackpackUtils.java | 2 +- .../adventurebackpack/util/Resources.java | 6 +- .../adventurebackpack/util/Wearing.java | 4 +- 25 files changed, 239 insertions(+), 1168 deletions(-) delete mode 100644 src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipe.java delete mode 100644 src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipes.java delete mode 100644 src/main/java/com/darkona/adventurebackpack/reference/BackpackNames.java diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java index 4f55d8c6..0f631019 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java @@ -33,10 +33,16 @@ import com.darkona.adventurebackpack.client.Icons; import com.darkona.adventurebackpack.handlers.GuiHandler; import com.darkona.adventurebackpack.init.ModItems; -import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.reference.ModInfo; import com.darkona.adventurebackpack.util.Utils; +import static com.darkona.adventurebackpack.reference.BackpackTypes.BOOKSHELF; +import static com.darkona.adventurebackpack.reference.BackpackTypes.CACTUS; +import static com.darkona.adventurebackpack.reference.BackpackTypes.GLOWSTONE; +import static com.darkona.adventurebackpack.reference.BackpackTypes.REDSTONE; +import static com.darkona.adventurebackpack.reference.BackpackTypes.UNKNOWN; + /** * Created on 12/10/2014. * @@ -59,7 +65,7 @@ public BlockAdventureBackpack() @SideOnly(Side.CLIENT) public void randomDisplayTick(World world, int x, int y, int z, Random random) { - if (getAssociatedTileColorName(world, x, y, z).equals("Bookshelf")) + if (getAssociatedTileBackpackType(world, x, y, z) == BOOKSHELF) { ChunkCoordinates enchTable = Utils.findBlock3D(world, x, y, z, Blocks.enchanting_table, 2, 2); if (enchTable != null) @@ -103,10 +109,10 @@ public boolean isToolEffective(String type, int metadata) return true; } - private String getAssociatedTileColorName(IBlockAccess world, int x, int y, int z) + private BackpackTypes getAssociatedTileBackpackType(IBlockAccess world, int x, int y, int z) { final TileEntity tile = world.getTileEntity(x, y, z); - return (tile instanceof TileAdventureBackpack) ? ((TileAdventureBackpack) tile).getColorName() : "error"; + return (tile instanceof TileAdventureBackpack) ? ((TileAdventureBackpack) tile).getType() : UNKNOWN; } @Override @@ -124,7 +130,7 @@ public boolean canEntityDestroy(IBlockAccess world, int x, int y, int z, Entity @Override public float getEnchantPowerBonus(World world, int x, int y, int z) { - return getAssociatedTileColorName(world, x, y, z).equals("Bookshelf") ? 10 : 0; + return getAssociatedTileBackpackType(world, x, y, z) == BOOKSHELF ? 10 : 0; } @Override @@ -166,7 +172,7 @@ public boolean canHarvestBlock(EntityPlayer player, int meta) @Override public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) { - if (getAssociatedTileColorName(world, x, y, z).equals("Cactus")) + if (getAssociatedTileBackpackType(world, x, y, z) == CACTUS) { entity.attackEntityFrom(DamageSource.cactus, 1.0F); } @@ -198,7 +204,7 @@ public void registerBlockIcons(IIconRegister iconRegister) @Override public int getLightValue(IBlockAccess world, int x, int y, int z) { - if (getAssociatedTileColorName(world, x, y, z).equals("Glowstone")) + if (getAssociatedTileBackpackType(world, x, y, z) == GLOWSTONE) { return 15; } @@ -215,13 +221,13 @@ else if (world.getTileEntity(x, y, z) != null && world.getTileEntity(x, y, z) in @Override public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int meta) { - return getAssociatedTileColorName(world, x, y, z).equals("Redstone") ? 15 : 0; + return getAssociatedTileBackpackType(world, x, y, z) == REDSTONE ? 15 : 0; } @Override public boolean canConnectRedstone(IBlockAccess world, int x, int y, int z, int side) { - return getAssociatedTileColorName(world, x, y, z).equals("Redstone"); + return getAssociatedTileBackpackType(world, x, y, z) == REDSTONE; } @Override @@ -239,7 +245,8 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z, EntityPlayer player) { ItemStack backpack = new ItemStack(ModItems.adventureBackpack, 1); - BackpackNames.setBackpackColorNameFromDamage(backpack, BackpackNames.getBackpackDamageFromName(getAssociatedTileColorName(world, x, y, z))); + //TODO look if can be simplified + BackpackTypes.setBackpackSkinNameFromMeta(backpack, BackpackTypes.getMeta(getAssociatedTileBackpackType(world, x, y, z))); return backpack; } diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index dd39066e..e710d271 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -20,6 +20,7 @@ import com.darkona.adventurebackpack.common.BackpackAbilities; import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.inventory.IInventoryAdventureBackpack; @@ -27,6 +28,7 @@ import com.darkona.adventurebackpack.inventory.SlotBackpack; import com.darkona.adventurebackpack.inventory.SlotTool; import com.darkona.adventurebackpack.item.ItemHose; +import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.util.BackpackUtils; import com.darkona.adventurebackpack.util.Utils; import com.darkona.adventurebackpack.util.Wearing; @@ -51,25 +53,26 @@ public class TileAdventureBackpack extends TileEntity implements IInventoryAdven private FluidTank leftTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); private FluidTank rightTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); + private BackpackTypes type; + + private NBTTagCompound extendedProperties; + private NBTTagList ench; + private boolean special; //TODO rework, del cuz we need only type and type.isSpecail + private boolean disableCycling; + private boolean disableNVision; private boolean sleepingBagDeployed; - private boolean special; private int sbdir; private int sbx; private int sby; private int sbz; - private String colorName; private int checkTime = 0; private int lastTime; private int luminosity; - private NBTTagCompound extendedProperties; - private NBTTagList ench; - private boolean disableCycling; - private boolean disableNVision; public TileAdventureBackpack() { sleepingBagDeployed = false; - setColorName("Standard"); + setType(BackpackTypes.STANDARD); luminosity = 0; lastTime = 0; checkTime = 0; @@ -167,9 +170,9 @@ public boolean removeSleepingBag(World world) //=====================================================GETTERS====================================================// @Override - public String getColorName() + public BackpackTypes getType() { - return colorName; + return type; } @Override @@ -216,9 +219,9 @@ public FluidTank getRightTank() //=====================================================SETTERS====================================================// - public void setColorName(String string) + public void setType(BackpackTypes type) { - this.colorName = string; + this.type = type; } //=====================================================BOOLEANS===================================================// @@ -292,7 +295,7 @@ public void loadFromNBT(NBTTagCompound compound) } leftTank.readFromNBT(backpackTag.getCompoundTag(LEFT_TANK)); rightTank.readFromNBT(backpackTag.getCompoundTag(RIGHT_TANK)); - colorName = backpackTag.getString("colorName"); + type = BackpackTypes.getType(backpackTag.getString("colorName")); lastTime = backpackTag.getInteger("lastTime"); special = backpackTag.getBoolean("special"); extendedProperties = backpackTag.getCompoundTag("extended"); @@ -320,9 +323,9 @@ public void saveToNBT(NBTTagCompound compound) } } backpackTag.setTag(INVENTORY, items); - backpackTag.setString("colorName", colorName); + backpackTag.setString("colorName", BackpackTypes.getSkinName(type)); backpackTag.setInteger("lastTime", lastTime); - backpackTag.setBoolean("special", BackpackAbilities.hasAbility(colorName)); + backpackTag.setBoolean("special", BackpackTypes.isSpecial(type)); //TODO isSpecial 2 methods in 2 classes, del backpackTag.setTag("extended", extendedProperties); backpackTag.setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); backpackTag.setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); @@ -496,9 +499,9 @@ public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) public void updateEntity() { //Execute this backpack's ability. No, seriously. You might not infer that from the code. Just sayin' - if (isSpecial() && !colorName.isEmpty()) + if (ConfigHandler.backpackAbilities && BackpackAbilities.hasTileAbility(BackpackTypes.getSkinName(type))) //TODO { - BackpackAbilities.backpackAbilities.executeAbility(null, this.worldObj, this); + BackpackAbilities.backpackAbilities.executeTileAbility(this.worldObj, this); } //Check for backpack luminosity and a deployed sleeping bag, just in case because i'm super paranoid. diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java index 5501d316..6af1518e 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java @@ -13,6 +13,9 @@ import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.inventory.InventoryBackpack; +import com.darkona.adventurebackpack.reference.BackpackTypes; + +import static com.darkona.adventurebackpack.reference.BackpackTypes.*; /** * Created on 17/12/2014 @@ -244,7 +247,7 @@ private void renderBackpack(Float scale) { InventoryBackpack backpack = new InventoryBackpack(this.backpack); backpack.openInventory(); - String color = backpack.getColorName(); + BackpackTypes type = backpack.getType(); for (ModelRenderer model : (List) bipedBody.childModels) { model.mirror = false; @@ -260,7 +263,7 @@ private void renderBackpack(Float scale) upperTool.stack = backpack.getStackInSlot(Constants.UPPER_TOOL); } - if (color.equals("Quartz") || color.equals("Slime") || color.equals("Snow")) + if (type == QUARTZ || type == SLIME || type == SNOW) { startBlending(); this.mainBody.render(scale); @@ -277,15 +280,15 @@ private void renderBackpack(Float scale) tankRightTop.render(scale); bed.render(scale); - if (color.equals("Pig") || color.equals("Horse")) + if (type == PIG || type == HORSE) { pigNose.render(scale); } - if (color.equals("Villager") || color.equals("IronGolem")) + if (type == VILLAGER || type == IRON_GOLEM) { villagerNose.render(scale); } - if (color.equals("Ocelot")) + if (type == OCELOT) { ocelotNose.render(scale); } diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java index 2554012a..dad83c34 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java @@ -13,6 +13,9 @@ import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.inventory.IInventoryAdventureBackpack; +import com.darkona.adventurebackpack.reference.BackpackTypes; + +import static com.darkona.adventurebackpack.reference.BackpackTypes.*; /** * Created on 17/12/2014 @@ -363,9 +366,9 @@ private void renderFluidsInTanks(FluidTank tankLeft, FluidTank tankRight, float private void renderBackpack(IInventoryAdventureBackpack backpack, float scale) { - String color = backpack.getColorName(); + BackpackTypes type = backpack.getType(); - if (color.equals("Quartz") || color.equals("Slime") || color.equals("Snow")) + if (type == QUARTZ || type == SLIME || type == SNOW) { GL11.glPushMatrix(); GL11.glEnable(GL11.GL_BLEND); @@ -377,7 +380,6 @@ private void renderBackpack(IInventoryAdventureBackpack backpack, float scale) GL11.glPopMatrix(); //GL11.glDisable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_BLEND); - } else { @@ -388,20 +390,20 @@ private void renderBackpack(IInventoryAdventureBackpack backpack, float scale) if (!backpack.isSBDeployed()) bed.render(scale); - if (color.equals("Pig") || color.equals("Horse")) + if (type == PIG || type == HORSE) { pigNose.render(scale); } - if (color.equals("Villager") || color.equals("IronGolem")) + if (type == VILLAGER || type == IRON_GOLEM) { villagerNose.render(scale); } - if (color.equals("Ocelot")) + if (type == OCELOT) { ocelotNose.render(scale); } - /*if(color.equals("Standard")) + /*if(type == STANDARD) { GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java index db687d8c..0bbf497e 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java @@ -10,7 +10,7 @@ import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.client.models.ModelBackpackBlock; import com.darkona.adventurebackpack.init.ModDates; -import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.util.Resources; /** @@ -32,6 +32,7 @@ public RendererAdventureBackpackBlock() @Override public void renderTileEntityAt(TileEntity te, double x, double y, double z, float par8) { + TileAdventureBackpack tileBackpack = (TileAdventureBackpack) te; int dir = te.getBlockMetadata(); if ((dir & 8) >= 8) { @@ -63,17 +64,17 @@ public void renderTileEntityAt(TileEntity te, double x, double y, double z, floa GL11.glRotatef(dir * (-180F), 0.0F, 1.0F, 0.0F); } ResourceLocation modelTexture; - if (BackpackNames.getBackpackColorName((TileAdventureBackpack) te).equals("Standard")) + if (tileBackpack.getType() == BackpackTypes.STANDARD) { modelTexture = Resources.backpackTextureFromString(ModDates.getHoliday()); } else { - modelTexture = Resources.backpackTextureFromColor((TileAdventureBackpack) te); + modelTexture = Resources.backpackTextureFromColor(tileBackpack); } bindTexture(modelTexture); - model.render(null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 1 / 20F, (TileAdventureBackpack) te); + model.render(null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 1 / 20F, tileBackpack); GL11.glDisable(GL12.GL_RESCALE_NORMAL); GL11.glPopMatrix(); diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java index 52933786..b470741d 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java @@ -10,7 +10,7 @@ import com.darkona.adventurebackpack.client.models.ModelBackpackBlock; import com.darkona.adventurebackpack.init.ModDates; import com.darkona.adventurebackpack.inventory.InventoryBackpack; -import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.util.Resources; /** @@ -71,7 +71,7 @@ public void renderItem(IItemRenderer.ItemRenderType type, ItemStack backpack, Ob { InventoryBackpack inv = new InventoryBackpack(backpack); ResourceLocation modelTexture; - if (BackpackNames.getBackpackColorName(backpack).equals("Standard")) + if (BackpackTypes.getBackpackColorName(backpack).equals("Standard")) { modelTexture = Resources.backpackTextureFromString(ModDates.getHoliday()); } diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java index debd5861..3f0db084 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java @@ -24,9 +24,10 @@ import com.darkona.adventurebackpack.entity.ai.EntityAIAvoidPlayerWithBackpack; import com.darkona.adventurebackpack.init.ModFluids; import com.darkona.adventurebackpack.init.ModNetwork; +import com.darkona.adventurebackpack.inventory.IInventoryAdventureBackpack; import com.darkona.adventurebackpack.inventory.InventoryBackpack; import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; -import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Utils; import com.darkona.adventurebackpack.util.Wearing; @@ -39,15 +40,16 @@ * @see com.darkona.adventurebackpack.item.ItemAdventureBackpack * @see com.darkona.adventurebackpack.block.BlockAdventureBackpack */ +@SuppressWarnings("unused") public class BackpackAbilities { /** * These are the colorNames of the backpacks that have abilities when being worn. */ private static final String[] SPECIAL_BACKPACKS = {"Bat", "Cactus", "Chicken", "Cow", "Creeper", "Dragon", "Melon", - "Mooshroom", "Ocelot", "Pig", "Pigman", "Rainbow", "Slime", "Squid", "Sunflower", "Wolf",}; + "Mooshroom", "Ocelot", "Pig", "Pigman", "Rainbow", "Slime", "Squid", "Sunflower", "Wolf",}; // TODO del - private static final String[] REMOVAL_BACKPACKS = {"Bat", "Dragon", "Pigman", "Rainbow", "Squid",}; + private static final String[] REMOVAL_BACKPACKS = {"Bat", "Dragon", "Pigman", "Rainbow", "Squid",}; //TODO del /** * These are the colorNames of the backpacks that have abilities while being blocks. Note that not all the @@ -55,7 +57,7 @@ public class BackpackAbilities * * @see com.darkona.adventurebackpack.block.BlockAdventureBackpack */ - private static final String[] TILE_BACKPACKS = {"Cactus", "Melon",}; + private static final String[] TILE_BACKPACKS = {"Cactus", "Melon",}; //TODO del public static BackpackAbilities backpackAbilities = new BackpackAbilities(); public static BackpackRemovals backpackRemovals = new BackpackRemovals(); @@ -72,6 +74,18 @@ public static boolean hasAbility(String colorName) return false; } + public static boolean hasTileAbility(String colorName) + { + for (String valid : TILE_BACKPACKS) + { + if (valid.equals(colorName)) + { + return true; + } + } + return false; + } + public static boolean hasRemoval(String colorName) { for (String valid : REMOVAL_BACKPACKS) @@ -95,12 +109,13 @@ public void executeAbility(EntityPlayer player, World world, Object backpack) { if (backpack instanceof ItemStack) { - String colorName = BackpackNames.getBackpackColorName((ItemStack) backpack); + String skinName = BackpackTypes.getBackpackColorName((ItemStack) backpack); //TODO rework try { //This is black magic and shouldn't be attempted by the faint of heart. + System.out.println("item" + skinName); //TODO del this.getClass() - .getMethod("item" + colorName, EntityPlayer.class, World.class, ItemStack.class) + .getMethod("item" + skinName, EntityPlayer.class, World.class, ItemStack.class) .invoke(backpackAbilities, player, world, backpack); } catch (Exception oops) @@ -108,10 +123,13 @@ public void executeAbility(EntityPlayer player, World world, Object backpack) //NOBODY CARES } } + } + public void executeTileAbility(World world, Object backpack) + { if (backpack instanceof TileAdventureBackpack) { - String colorName = ((TileAdventureBackpack) backpack).getColorName(); + String skinName = BackpackTypes.getSkinName(((TileAdventureBackpack) backpack).getType()); try { /* @@ -122,8 +140,9 @@ public void executeAbility(EntityPlayer player, World world, Object backpack) You have to indicate exactly the classes that the method should use as parameters so be very careful with "getMethod". */ + System.out.println("tile" + skinName); //TODO del this.getClass() - .getMethod("tile" + colorName, World.class, TileAdventureBackpack.class) + .getMethod("tile" + skinName, World.class, TileAdventureBackpack.class) .invoke(backpackAbilities, world, backpack); } catch (Exception oops) @@ -131,17 +150,16 @@ public void executeAbility(EntityPlayer player, World world, Object backpack) //Seriously, nobody cares if this can't work, this is just so the game won't explode. } } - } public void executeRemoval(EntityPlayer player, World world, ItemStack backpack) { - String colorName = BackpackNames.getBackpackColorName(backpack); + String skinName = BackpackTypes.getBackpackColorName(backpack); //TODO try { //This is black magic and shouldn't be attempted by the faint of heart. backpackRemovals.getClass() - .getMethod("item" + colorName, EntityPlayer.class, World.class, ItemStack.class) + .getMethod("item" + skinName, EntityPlayer.class, World.class, ItemStack.class) .invoke(backpackRemovals, player, world, backpack); } catch (Exception oops) @@ -545,6 +563,7 @@ public void itemCreeper(EntityPlayer player, World world, ItemStack backpack) public void itemCow(EntityPlayer player, World world, ItemStack backpack) { if (world.isRemote) return; + System.out.println("COWWWW"); //TODO del InventoryBackpack inv = new InventoryBackpack(backpack); inv.openInventory(); @@ -783,6 +802,12 @@ public void tileCactus(World world, TileAdventureBackpack backpack) public void tileMelon(World world, TileAdventureBackpack backpack) { + //System.out.println("MELON!"); //TODO del fillWithRain(world, backpack, new FluidStack(ModFluids.melonJuice, 2), 5); } + + public void tileCow(World world, TileAdventureBackpack backpack) + { + IInventoryAdventureBackpack inv = backpack; //TODO make CowBackpack (and others) working in tile form + } } diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index 3e547062..e24667f5 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -27,7 +27,7 @@ import com.darkona.adventurebackpack.network.WearableModePacket; import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; -import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Utils; import com.darkona.adventurebackpack.util.Wearing; @@ -162,13 +162,13 @@ else if (direction < 0) public static void electrify(EntityPlayer player) { ItemStack backpack = Wearing.getWearingBackpack(player); - if (BackpackNames.getBackpackColorName(backpack).equals("Pig")) + if (BackpackTypes.getBackpackColorName(backpack).equals("Pig")) //TODO rework to type { - BackpackNames.setBackpackColorName(backpack, "Pigman"); + BackpackTypes.setBackpackColorName(backpack, "Pigman"); } - if (BackpackNames.getBackpackColorName(backpack).equals("Diamond")) + if (BackpackTypes.getBackpackColorName(backpack).equals("Diamond")) { - BackpackNames.setBackpackColorName(backpack, "Electric"); + BackpackTypes.setBackpackColorName(backpack, "Electric"); } } diff --git a/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIAvoidPlayerWithBackpack.java b/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIAvoidPlayerWithBackpack.java index b31ff96e..ca1c0c3e 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIAvoidPlayerWithBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIAvoidPlayerWithBackpack.java @@ -13,7 +13,7 @@ import net.minecraft.pathfinding.PathNavigate; import net.minecraft.util.Vec3; -import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.util.Wearing; /** @@ -83,7 +83,7 @@ public boolean shouldExecute() for (Object player : list) { - if (BackpackNames.getBackpackColorName(Wearing.getWearingBackpack((EntityPlayer) player)).equals(backpackName)) + if (BackpackTypes.getBackpackColorName(Wearing.getWearingBackpack((EntityPlayer) player)).equals(backpackName)) { this.closestLivingEntity = (Entity) player; } diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java index 86108954..107ef6e5 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java @@ -17,7 +17,7 @@ import com.darkona.adventurebackpack.item.ItemAdventureBackpack; import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.network.CycleToolPacket; -import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.util.Wearing; /** @@ -50,7 +50,7 @@ public void mouseWheelDetect(MouseEvent event) Item theItem = heldItem.getItem(); if ((ConfigHandler.enableToolsCycling && !Wearing.getWearingBackpackInv(player).getDisableCycling() && SlotTool.isValidTool(heldItem)) - || (BackpackNames.getBackpackColorName(backpack).equals("Skeleton") && theItem.equals(Items.bow))) + || (BackpackTypes.getBackpackColorName(backpack).equals("Skeleton") && theItem.equals(Items.bow))) { ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(dWheel, slot, CycleToolPacket.CYCLE_TOOL_ACTION)); ServerActions.cycleTool(player, dWheel, slot); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java index 687815ed..09a1692d 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java @@ -5,7 +5,6 @@ import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.InputEvent; -import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.common.ServerActions; import com.darkona.adventurebackpack.config.Keybindings; import com.darkona.adventurebackpack.entity.EntityFriendlySpider; @@ -15,6 +14,7 @@ import com.darkona.adventurebackpack.network.PlayerActionPacket; import com.darkona.adventurebackpack.network.SyncPropertiesPacket; import com.darkona.adventurebackpack.network.WearableModePacket; +import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.util.Wearing; /** @@ -83,13 +83,10 @@ else if (Wearing.isWearingBackpack(player)) { if (player.isSneaking()) { - for (String valid : Constants.NIGHTVISION_BACKPACKS) + if (BackpackTypes.isNightVision(Wearing.getWearingBackpackInv(player).getType())) { - if (Wearing.getWearingBackpackInv(player).getColorName().equals(valid)) - { - sendWearableModePacket(WearableModePacket.NIGHTVISION_ON_OFF); - ServerActions.toggleNightVision(player, Wearing.getWearingBackpack(player)); - } + sendWearableModePacket(WearableModePacket.NIGHTVISION_ON_OFF); + ServerActions.toggleNightVision(player, Wearing.getWearingBackpack(player)); } } else diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 1791363b..ba48a062 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -36,7 +36,7 @@ import com.darkona.adventurebackpack.item.ItemAdventureBackpack; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.proxy.ServerProxy; -import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.util.EnchUtils; import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Utils; @@ -281,7 +281,7 @@ public void playerCraftsBackpack(PlayerEvent.ItemCraftedEvent event) if (event.crafting.getItem() == ModItems.adventureBackpack) { LogHelper.info("Player crafted a backpack, and that backpack's appearance is: " + event.crafting.getTagCompound().getString("colorName")); - if (BackpackNames.getBackpackColorName(event.crafting).equals("Dragon") && !ConfigHandler.consumeDragonEgg) + if (BackpackTypes.getBackpackColorName(event.crafting).equals("Dragon") && !ConfigHandler.consumeDragonEgg) { event.player.dropPlayerItemWithRandomChoice(new ItemStack(Blocks.dragon_egg, 1), false); event.player.playSound("mob.enderdragon.growl", 1.0f, 5.0f); diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java index df2a27c1..d9cd7412 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java @@ -12,7 +12,7 @@ import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.init.recipes.BackpackRecipesList; -import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.util.LogHelper; /** @@ -22,9 +22,9 @@ */ public class ModRecipes { - private static ItemStack bc(int damage) + private static ItemStack bc(int meta) { - return BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), damage); + return BackpackTypes.setBackpackSkinNameFromMeta(new ItemStack(ModItems.adventureBackpack), meta); } public static void init() @@ -259,15 +259,15 @@ public static void init() BackpackRecipesList br = new BackpackRecipesList(); int counter = 0; - for (int i = 0; i < BackpackNames.backpackNames.length; i++) + for (BackpackTypes type : BackpackTypes.values()) { for (Field field : BackpackRecipesList.class.getFields()) { try { - if (field.getName().equals((BackpackNames.backpackNames[i]))) + if (field.getName().equals(BackpackTypes.getSkinName(type))) { - GameRegistry.addRecipe(new ShapedOreRecipe(BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i), (Object[]) field.get(br))); + GameRegistry.addRecipe(new ShapedOreRecipe(BackpackTypes.setBackpackSkinNameFromMeta(new ItemStack(ModItems.adventureBackpack), BackpackTypes.getMeta(type)), (Object[]) field.get(br))); counter++; } } @@ -280,29 +280,6 @@ public static void init() } LogHelper.info("Loaded " + counter + " backpack recipes."); - - //GameRegistry.addRecipe(new AbstractBackpackRecipe()); - /*BackpackRecipes br = new BackpackRecipes(); - int i = 0; - for (Field field : BackpackRecipes.class.getFields()) - { - try - { - if (field.getType() == ItemStack[].class) - { - AbstractBackpackRecipeTwo recipe = new AbstractBackpackRecipeTwo(field.getName(), (ItemStack[]) field.get(br)); - GameRegistry.addRecipe(recipe); - //LogHelper.info("Loaded recipe for " + field.getName() + " backpack."); - i++; - } - } catch (Exception oops) - { - LogHelper.error("Huge mistake during reflection. Some bad things might happen."); - } - } - LogHelper.info("Loaded " + i + " backpack recipes."); - RecipeSorter.register(ModInfo.MOD_ID + ":adventureBackpack", AbstractBackpackRecipeTwo.class, RecipeSorter.Category.SHAPED, "after:minecraft:shapeless"); - */ } /*public static void conditionalInit() diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java b/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java index a79c0f9d..bcad4302 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java @@ -12,7 +12,13 @@ import cpw.mods.fml.common.registry.VillagerRegistry; import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.reference.BackpackTypes; + +import static com.darkona.adventurebackpack.reference.BackpackTypes.BAT; +import static com.darkona.adventurebackpack.reference.BackpackTypes.IRON_GOLEM; +import static com.darkona.adventurebackpack.reference.BackpackTypes.PIGMAN; +import static com.darkona.adventurebackpack.reference.BackpackTypes.STANDARD; +import static com.darkona.adventurebackpack.reference.BackpackTypes.VILLAGER; /** * Created on 24/12/2014 @@ -21,44 +27,36 @@ */ public class ModWorldGen { - public static void init() + public static void init() //TODO tested IronGolem and BonusChest - ok { - //Dungeon Generation - for (int i = 0; i < BackpackNames.backpackNames.length; i++) { - if (BackpackNames.backpackNames[i].equals("IronGolem") && ConfigHandler.allowGolemGen) - { - ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i); - ChestGenHooks.addItem(ChestGenHooks.VILLAGE_BLACKSMITH, new WeightedRandomChestContent(backpack, 1, 1, 2)); - } - else if (BackpackNames.backpackNames[i].equals("Bat") && ConfigHandler.allowBatGen) - { - ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i); - ChestGenHooks.addItem(ChestGenHooks.DUNGEON_CHEST, new WeightedRandomChestContent(backpack, 1, 1, 2)); - ChestGenHooks.addItem(ChestGenHooks.MINESHAFT_CORRIDOR, new WeightedRandomChestContent(backpack, 1, 1, 12)); - } - else if (BackpackNames.backpackNames[i].equals("Pigman") && ConfigHandler.allowPigmanGen) - { - ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i); - ChestGenHooks.addItem(ChestGenHooks.PYRAMID_DESERT_CHEST, new WeightedRandomChestContent(backpack, 1, 1, 12)); - VillagerRegistry.instance().registerVillageTradeHandler(i, new ModWorldGen.TradeHandler(backpack)); - } - else if (BackpackNames.backpackNames[i].equals("Villager")) - { - ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i); - VillagerRegistry.instance().registerVillageTradeHandler(1, new ModWorldGen.TradeHandler(backpack)); - VillagerRegistry.instance().registerVillageTradeHandler(2, new ModWorldGen.TradeHandler(backpack)); - VillagerRegistry.instance().registerVillageTradeHandler(3, new ModWorldGen.TradeHandler(backpack)); - } - else if (BackpackNames.backpackNames[i].equals("Standard") && ConfigHandler.allowBonusGen) - { - ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), i); - ChestGenHooks.addItem(ChestGenHooks.BONUS_CHEST, new WeightedRandomChestContent(backpack, 0, 1, 5)); - } + ItemStack backpack = BackpackTypes.setBackpackSkinNameFromMeta(new ItemStack(ModItems.adventureBackpack), BackpackTypes.getMeta(VILLAGER)); + VillagerRegistry.instance().registerVillageTradeHandler(1, new ModWorldGen.TradeHandler(backpack)); + VillagerRegistry.instance().registerVillageTradeHandler(2, new ModWorldGen.TradeHandler(backpack)); + VillagerRegistry.instance().registerVillageTradeHandler(3, new ModWorldGen.TradeHandler(backpack)); + } + if (ConfigHandler.allowGolemGen) + { + ItemStack backpack = BackpackTypes.setBackpackSkinNameFromMeta(new ItemStack(ModItems.adventureBackpack), BackpackTypes.getMeta(IRON_GOLEM)); + ChestGenHooks.addItem(ChestGenHooks.VILLAGE_BLACKSMITH, new WeightedRandomChestContent(backpack, 1, 1, 2)); + } + if (ConfigHandler.allowBatGen) + { + ItemStack backpack = BackpackTypes.setBackpackSkinNameFromMeta(new ItemStack(ModItems.adventureBackpack), BackpackTypes.getMeta(BAT)); + ChestGenHooks.addItem(ChestGenHooks.DUNGEON_CHEST, new WeightedRandomChestContent(backpack, 1, 1, 2)); + ChestGenHooks.addItem(ChestGenHooks.MINESHAFT_CORRIDOR, new WeightedRandomChestContent(backpack, 1, 1, 12)); + } + if (ConfigHandler.allowPigmanGen) + { + ItemStack backpack = BackpackTypes.setBackpackSkinNameFromMeta(new ItemStack(ModItems.adventureBackpack), BackpackTypes.getMeta(PIGMAN)); + ChestGenHooks.addItem(ChestGenHooks.PYRAMID_DESERT_CHEST, new WeightedRandomChestContent(backpack, 1, 1, 12)); + VillagerRegistry.instance().registerVillageTradeHandler(BackpackTypes.getMeta(PIGMAN), new ModWorldGen.TradeHandler(backpack)); + } + if (ConfigHandler.allowBonusGen) + { + ItemStack backpack = BackpackTypes.setBackpackSkinNameFromMeta(new ItemStack(ModItems.adventureBackpack), BackpackTypes.getMeta(STANDARD)); + ChestGenHooks.addItem(ChestGenHooks.BONUS_CHEST, new WeightedRandomChestContent(backpack, 0, 1, 5)); } - - //Villager Trade - } public static class TradeHandler implements VillagerRegistry.IVillageTradeHandler @@ -81,13 +79,13 @@ public void manipulateTradesForVillager(EntityVillager villager, MerchantRecipeL //0 Farmer, 1 Librarian, 2Priest, 3 Blacksmith, 4 Butcher if (villager.getProfession() == 1 || villager.getProfession() == 2) { - ItemStack payment = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), 0); + ItemStack payment = BackpackTypes.setBackpackSkinNameFromMeta(new ItemStack(ModItems.adventureBackpack), 0); recipeList.add(new MerchantRecipe(new ItemStack(Items.emerald, 10), payment, this.backpack)); } if (villager.getProfession() == 3) { ItemStack payment = new ItemStack(ModItems.adventureBackpack); - BackpackNames.setBackpackColorName(payment, "IronGolem"); + BackpackTypes.setBackpackColorName(payment, "IronGolem"); recipeList.add(new MerchantRecipe(new ItemStack(Items.emerald, 10), payment, this.backpack)); } } diff --git a/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipe.java b/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipe.java deleted file mode 100644 index 81a936e4..00000000 --- a/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipe.java +++ /dev/null @@ -1,170 +0,0 @@ -package com.darkona.adventurebackpack.init.recipes; - -import java.lang.reflect.Field; -import java.util.HashMap; -import java.util.Map; - -import net.minecraft.inventory.InventoryCrafting; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; - -import com.darkona.adventurebackpack.init.ModItems; -import com.darkona.adventurebackpack.reference.BackpackNames; -import com.darkona.adventurebackpack.util.LogHelper; - -/** - * Created on 20/10/2014 - * - * @author Darkona - */ -class AbstractBackpackRecipe implements IRecipe -{ - private final BackpackRecipes br = new BackpackRecipes(); - private ItemStack result; - private ItemStack[] recipe; - - private boolean compareStacksForColor(ItemStack stack1, ItemStack stack2) - { - - if (stack1 == null && stack2 == null) - { - return true; - } - else if (stack1 != null && stack2 != null) - { - if (stack1.getItem() != stack2.getItem()) - { - return false; - } - else - { - return (stack1.getItemDamage() == stack2.getItemDamage()); - } - } - return false; - } - - - public AbstractBackpackRecipe() - { - recipes = new HashMap(); - int i = 0; - for (Field field : BackpackRecipes.class.getFields()) - { - try - { - if (field.getType() == ItemStack[].class) - { - recipes.put(field.getName(), (ItemStack[]) field.get(br)); - i++; - } - } - catch (Exception oops) - { - LogHelper.error("Huge mistake during reflection. Some bad things might happen."); - } - } - LogHelper.info("Loaded " + i + " recipes for backpack coloration."); - } - - public HashMap recipes; - - public ItemStack makeBackpack(ItemStack backpackIn, String colorName) - { - if (backpackIn == null) return null; - - ItemStack newBackpack = backpackIn.copy(); //new ItemStack(ModItems.adventureBackpack,1); - if (backpackIn.stackTagCompound == null) - { - backpackIn.setTagCompound(new NBTTagCompound()); - backpackIn.stackTagCompound.setString("colorName", "Standard"); - } - NBTTagCompound compound = (NBTTagCompound) backpackIn.getTagCompound().copy(); - newBackpack.setTagCompound(compound); - newBackpack.stackTagCompound.setString("colorName", colorName); - return newBackpack; - } - - - public boolean match(ItemStack[] model, InventoryCrafting invC) - { - if (model == null || invC == null) return false; - for (int i = 0; i < invC.getSizeInventory(); i++) - { - ItemStack m = model[i]; - ItemStack c = invC.getStackInSlot(i); - if (!compareStacksForColor(m, c)) - { - return false; - } - if (i == 4) - { - if (!BackpackNames.getBackpackColorName(c).equals("Standard")) - { - return false; - } - } - } - - return true; - } - - @Override - public boolean matches(InventoryCrafting invC, World world) - { - result = null; - if (invC != null) - { - for (Map.Entry recipe : recipes.entrySet()) - { - if (match(recipe.getValue(), invC)) - { - result = makeBackpack(invC.getStackInSlot(4), recipe.getKey()); - break; - } - } - } - return result != null; - } - - /** - * Returns an Item that is the result of this recipe - */ - @Override - public ItemStack getCraftingResult(InventoryCrafting invC) - { - //result = null; - if (invC != null) - { - for (Map.Entry recipe : recipes.entrySet()) - { - if (match(recipe.getValue(), invC)) - { - return makeBackpack(invC.getStackInSlot(4), recipe.getKey()); - } - } - } - return this.result; - // return result.copy(); - } - - /** - * Returns the size of the recipe area - */ - @Override - public int getRecipeSize() - { - return 9; - } - - @Override - public ItemStack getRecipeOutput() - { - ItemStack backpack = new ItemStack(ModItems.adventureBackpack, 1); - backpack.setTagCompound(new NBTTagCompound()); - backpack.stackTagCompound.setString("colorName", "Standard"); - return backpack; - } -} diff --git a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipes.java deleted file mode 100644 index 1fde7926..00000000 --- a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipes.java +++ /dev/null @@ -1,682 +0,0 @@ -package com.darkona.adventurebackpack.init.recipes; - -import java.util.HashMap; -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - -import com.darkona.adventurebackpack.init.ModItems; - -/** - * Created on 20/10/2014 - * - * @author Darkona - */ -public class BackpackRecipes -{ - public List recipes; - - BackpackRecipes() - { - String[] covered = {"XXX", "XaX", "XXX"}; - Black = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 15), - 'a', ModItems.adventureBackpack - ); - - Blaze = reviewRecipe( - "BFB", - "BaB", - "PLP", - 'B', Items.blaze_rod, - 'F', Items.fire_charge, - 'a', ModItems.adventureBackpack, - 'P', Items.blaze_powder, - 'L', Items.lava_bucket - ); - - Blue = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 11), - 'a', ModItems.adventureBackpack - ); - - Bookshelf = reviewRecipe( - "BDB", - "BaB", - "bbb", - 'B', Blocks.bookshelf, - 'a', ModItems.adventureBackpack, - 'b', Items.book - ); - - Brown = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 12), - 'a', ModItems.adventureBackpack - ); - - BrownMushroom = reviewRecipe(covered, - 'X', Blocks.brown_mushroom, - 'a', ModItems.adventureBackpack - ); - - Cactus = reviewRecipe( - "CGC", - "CaC", - "SSS", - 'C', Blocks.cactus, - 'G', new ItemStack(Items.dye, 1, 2), - 'a', ModItems.adventureBackpack, - 'S', Blocks.sand - ); - - Cake = reviewRecipe( - "ECE", - "WaW", - "SmS", - 'a', ModItems.adventureBackpack, - 'E', Items.egg, - 'C', Items.cake, - 'W', Items.wheat, - 'S', Items.sugar, - 'm', Items.milk_bucket - ); - - ModdedNetwork = reviewRecipe( - "EEE", - "DaD", - "DDD", - 'a', ModItems.adventureBackpack, - 'E', Items.emerald, - 'D', Items.diamond - ); - - Chest = reviewRecipe( - "CWC", - "WaW", - "CWC", - 'C', Blocks.chest, - 'W', Blocks.planks, - 'a', ModItems.adventureBackpack - ); - - Chicken = reviewRecipe( - "FnF", - "FaF", - "nEn", - 'F', Items.feather, - 'n', Items.gold_nugget, - 'a', ModItems.adventureBackpack, - 'E', Items.egg - ); - - Coal = reviewRecipe( - "cCc", - "CaC", - "ccc", - 'c', Items.coal, - 'C', Blocks.coal_block, - 'a', ModItems.adventureBackpack - ); - - Cookie = reviewRecipe( - "cCc", - "WaW", - "ccc", - 'c', Items.cookie, - 'C', new ItemStack(Items.dye, 1, 3), - 'W', Items.wheat, - 'a', ModItems.adventureBackpack - ); - - Cow = reviewRecipe( - "BLB", - "BaB", - "LML", - 'B', Items.beef, - 'a', ModItems.adventureBackpack, - 'L', Items.leather, - 'M', Items.milk_bucket - ); - - Creeper = reviewRecipe( - "GHG", - "GaG", - "TNT",//see what I did there? ;D - 'G', Items.gunpowder, - 'H', new ItemStack(Items.skull, 1, 4), //Creeper Skull - 'a', ModItems.adventureBackpack, - 'T', Blocks.tnt, - 'N', Blocks.tnt - ); - - Cyan = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 9), - 'a', ModItems.adventureBackpack - ); - - Diamond = reviewRecipe( - "GDG", - "GaG", - "GdG", - 'G', Blocks.glass, - 'D', Blocks.diamond_block, - 'a', ModItems.adventureBackpack, - 'd', Items.diamond - ); - - Dragon = reviewRecipe( - "EDE", - "OaO", - "POP", - 'E', Blocks.end_stone, - 'D', new ItemStack(Blocks.dragon_egg, 1), - 'O', Blocks.obsidian, - 'a', ModItems.adventureBackpack, - 'P', Items.ender_pearl - ); - - Egg = reviewRecipe(covered, - 'X', Items.egg, - 'a', ModItems.adventureBackpack - ); - - Emerald = reviewRecipe( - "GEG", - "GaG", - "eGe", - 'G', Blocks.glass, - 'E', Blocks.emerald_block, - 'a', ModItems.adventureBackpack, - 'e', Items.emerald - ); - - End = reviewRecipe( - "eEe", - "EaE", - "eEe", - 'E', Blocks.end_stone, - 'e', Items.ender_eye, - 'a', ModItems.adventureBackpack - ); - - Enderman = reviewRecipe( - "PXP", - "XaX", - "PXP", - 'X', new ItemStack(Blocks.wool, 1, 15), - 'P', Items.ender_pearl, - 'a', ModItems.adventureBackpack - ); - - Ghast = reviewRecipe( - "GFG", - "TaT", - "GTG", - 'G', Items.ghast_tear, - 'F', Items.fire_charge, - 'T', Items.gunpowder, - 'a', ModItems.adventureBackpack - ); - - Glowstone = reviewRecipe( - "GgG", - "GaG", - "GgG", - 'G', Blocks.glowstone, - 'g', Items.glowstone_dust, - 'a', ModItems.adventureBackpack - ); - - Gold = reviewRecipe( - "FGF", - "FaF", - "gFg", - 'F', Blocks.glass, - 'G', Blocks.gold_block, - 'a', ModItems.adventureBackpack, - 'g', Items.gold_ingot - ); - - Gray = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 7), - 'a', ModItems.adventureBackpack - ); - - Green = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 13), - 'a', ModItems.adventureBackpack - ); - - Haybale = reviewRecipe(covered, - 'X', Blocks.hay_block, - 'a', ModItems.adventureBackpack - ); - - Iron = reviewRecipe( - "GIG", - "GaG", - "iGi", - 'G', Blocks.glass, - 'I', Blocks.iron_block, - 'a', ModItems.adventureBackpack, - 'i', Items.iron_ingot - ); - - Lapis = reviewRecipe( - "GLG", - "GaG", - "lGl", - 'G', Blocks.glass, - 'L', Blocks.lapis_block, - 'l', new ItemStack(Items.dye, 1, 4), - 'a', ModItems.adventureBackpack - ); - - Leather = reviewRecipe(covered, - 'X', Items.leather, - 'a', ModItems.adventureBackpack - ); - - LightBlue = reviewRecipe( - "XXX", - "XaX", - "XXX", - 'X', new ItemStack(Blocks.wool, 1, 3), - 'a', ModItems.adventureBackpack - ); - - LightGray = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 8), - 'a', ModItems.adventureBackpack - ); - - Lime = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 5), - 'a', ModItems.adventureBackpack - ); - - Magenta = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 2), - 'a', ModItems.adventureBackpack - ); - - MagmaCube = reviewRecipe( - "MLM", - "MaM", - "MLM", - 'M', Items.magma_cream, - 'a', ModItems.adventureBackpack, - 'L', Items.lava_bucket - ); - - Melon = reviewRecipe( - "mMm", - "mam", - "msm", - 'm', Items.melon, - 'M', Blocks.melon_block, - 'a', ModItems.adventureBackpack, - 's', Items.melon_seeds - ); - - Mooshroom = reviewRecipe( - "SRL", - "BaB", - "LRS", - 'R', Blocks.red_mushroom, - 'B', Blocks.brown_mushroom, - 'a', ModItems.adventureBackpack, - 'S', Items.mushroom_stew, - 'L', Blocks.mycelium - ); - - Nether = reviewRecipe( - "QwQ", - "NaN", - "QLQ", - 'Q', Items.quartz, - 'N', Blocks.netherrack, - 'w', Items.nether_wart, - 'L', Items.lava_bucket, - 'a', ModItems.adventureBackpack - ); - - Obsidian = reviewRecipe( - covered, - 'X', Blocks.obsidian, - 'a', ModItems.adventureBackpack - ); - - Ocelot = reviewRecipe( - "FYF", - "YaY", - "FYF", - 'F', Items.fish, - 'Y', new ItemStack(Blocks.wool, 1, 4), - 'a', ModItems.adventureBackpack - ); - - Orange = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 1), - 'a', ModItems.adventureBackpack - ); - - Pig = reviewRecipe(covered, - 'X', Items.porkchop, - 'a', ModItems.adventureBackpack - ); - - Pink = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 6), - 'a', ModItems.adventureBackpack - ); - - Pumpkin = reviewRecipe( - "PPP", - "PaP", - "PsP", - 'P', Blocks.pumpkin, - 'a', ModItems.adventureBackpack, - 's', Items.pumpkin_seeds - ); - - Purple = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 10), - 'a', ModItems.adventureBackpack - ); - - Quartz = reviewRecipe( - "QqQ", - "qaq", - "QqQ", - 'Q', Blocks.quartz_block, - 'q', Items.quartz, - 'a', ModItems.adventureBackpack - ); - - Rainbow = reviewRecipe( - "RCP", - "OaB", - "YGF", - 'R', new ItemStack(Items.dye, 1, 1), //RED - 'O', new ItemStack(Items.dye, 1, 14),//ORANGE - 'Y', new ItemStack(Items.dye, 1, 11),//YELLOW - 'G', new ItemStack(Items.dye, 1, 10),//LIME - 'F', new ItemStack(Items.dye, 1, 6),//CYAN - 'B', new ItemStack(Items.dye, 1, 4),//BLUE - 'P', new ItemStack(Items.dye, 1, 5),//PURPLE - 'C', Items.record_cat, - 'a', ModItems.adventureBackpack - ); - - Red = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 14), - 'a', ModItems.adventureBackpack - ); - - RedMushroom = reviewRecipe(covered, - 'X', Blocks.red_mushroom, - 'a', ModItems.adventureBackpack - ); - - Redstone = reviewRecipe( - "rRr", - "RaR", - "rRr", - 'R', Blocks.redstone_block, - 'r', Items.redstone, - 'a', ModItems.adventureBackpack - ); - - Sandstone = reviewRecipe( - "CSC", - "SaS", - "CSC", - 'S', new ItemStack(Blocks.sandstone, 1, 0), - 'C', new ItemStack(Blocks.sandstone, 1, 1), - 'a', ModItems.adventureBackpack - ); - - Sheep = reviewRecipe( - "WPW", - "WaW", - "WWW", - 'W', new ItemStack(Blocks.wool, 1, 0), - 'P', new ItemStack(Blocks.wool, 1, 6), - 'a', ModItems.adventureBackpack - ); - - Skeleton = reviewRecipe( - "BSB", - "bab", - "BAB", - 'B', Items.bone, - 'S', new ItemStack(Items.skull, 1, 0),//Skeleton skull - 'b', Items.bow, - 'A', Items.arrow, - 'a', ModItems.adventureBackpack - ); - - Slime = reviewRecipe(covered, - 'X', Items.slime_ball, - 'a', ModItems.adventureBackpack - ); - - Snow = reviewRecipe( - "sSs", - "SaS", - "sSs", - 'S', Blocks.snow, - 's', Items.snowball, - 'a', ModItems.adventureBackpack - ); - - Spider = reviewRecipe( - "ESE", - "LaL", - "ESE", - 'E', Items.spider_eye, - 'S', Items.string, - 'L', Blocks.ladder, - 'a', ModItems.adventureBackpack - ); - - White = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 0), - 'a', ModItems.adventureBackpack - ); - - Wither = reviewRecipe( - "SSS", - "sas", - "NsD", - 'S', new ItemStack(Items.skull, 1, 1),//WitherSkelleton Skull - 's', Blocks.soul_sand, - 'N', Items.nether_star, - 'D', Items.diamond, - 'a', ModItems.adventureBackpack - ); - - WitherSkeleton = reviewRecipe( - "BsB", - "SaS", - "CBC", - 'B', Items.bone, - 'S', Items.stone_sword, - 'a', ModItems.adventureBackpack, - 'C', Items.coal, - 's', new ItemStack(Items.skull, 1, 1) - ); - - Wolf = reviewRecipe( - "BWB", - "WaW", - "BWB", - 'B', Items.bone, - 'W', new ItemStack(Blocks.wool, 1, 0), - 'a', ModItems.adventureBackpack - ); - - Yellow = reviewRecipe(covered, - 'X', new ItemStack(Blocks.wool, 1, 4), - 'a', ModItems.adventureBackpack - ); - - Zombie = reviewRecipe( - "FSF", - "FaF", - "FFF", - 'F', Items.rotten_flesh, - 'S', new ItemStack(Items.skull, 1, 2), - 'a', ModItems.adventureBackpack - ); - } - - public final ItemStack[] Black; - public final ItemStack[] Blaze; - public final ItemStack[] Blue; - public final ItemStack[] Bookshelf; - public final ItemStack[] Brown; - public final ItemStack[] BrownMushroom; - public final ItemStack[] Cactus; - public final ItemStack[] Cake; - public final ItemStack[] Chicken; - public final ItemStack[] Chest; - public final ItemStack[] Coal; - public final ItemStack[] Cookie; - public final ItemStack[] Cow; - public final ItemStack[] Creeper; - public final ItemStack[] Cyan; - public final ItemStack[] Diamond; - public final ItemStack[] Dragon; - public final ItemStack[] Egg; - public final ItemStack[] Emerald; - public final ItemStack[] End; - public final ItemStack[] Enderman; - public final ItemStack[] Ghast; - public final ItemStack[] Glowstone; - public final ItemStack[] Gold; - public final ItemStack[] Gray; - public final ItemStack[] Green; - public final ItemStack[] Haybale; - public final ItemStack[] Iron; - public final ItemStack[] Lapis; - public final ItemStack[] Leather; - public final ItemStack[] LightBlue; - public final ItemStack[] LightGray; - public final ItemStack[] Lime; - public final ItemStack[] Magenta; - public final ItemStack[] MagmaCube; - public final ItemStack[] Melon; - public final ItemStack[] Mooshroom; - public final ItemStack[] Nether; - public final ItemStack[] Obsidian; - public final ItemStack[] Ocelot; - public final ItemStack[] Orange; - public final ItemStack[] Pig; - public final ItemStack[] Pink; - public final ItemStack[] Pumpkin; - public final ItemStack[] Purple; - public final ItemStack[] Quartz; - public final ItemStack[] Rainbow; - public final ItemStack[] Red; - public final ItemStack[] RedMushroom; - public final ItemStack[] Redstone; - public final ItemStack[] Sandstone; - public final ItemStack[] Sheep; - public final ItemStack[] Skeleton; - public final ItemStack[] Slime; - public final ItemStack[] Snow; - public final ItemStack[] Spider; - //public final ItemStack[] Sponge; - public final ItemStack[] White; - public final ItemStack[] Wither; - public final ItemStack[] WitherSkeleton; - public final ItemStack[] Wolf; - public final ItemStack[] Yellow; - public final ItemStack[] Zombie; - public final ItemStack[] ModdedNetwork; - - - @SuppressWarnings("unchecked") - public static ItemStack[] reviewRecipe(Object... objects) - { - String s = ""; - //BackpackRecipe recipe = new BackpackRecipe(); - int i = 0; - int j = 0; - int k = 0; - /*if(objects[i] instanceof String) - { - recipe.name = (String)objects[i]; - i++; - }*/ - if (objects[i] instanceof String[]) - { - String[] astring = (String[]) ((String[]) objects[i++]); - - for (int l = 0; l < astring.length; ++l) - { - String s1 = astring[l]; - ++k; - j = s1.length(); - s = s + s1; - } - } - else - { - while (objects[i] instanceof String) - { - String s2 = (String) objects[i++]; - ++k; - j = s2.length(); - s = s + s2; - } - } - - HashMap hashmap; - - for (hashmap = new HashMap(); i < objects.length; i += 2) - { - Character character = (Character) objects[i]; - ItemStack itemstack1 = null; - - if (objects[i + 1] instanceof Item) - { - itemstack1 = new ItemStack((Item) objects[i + 1]); - } - else if (objects[i + 1] instanceof Block) - { - itemstack1 = new ItemStack((Block) objects[i + 1], 1); - } - else if (objects[i + 1] instanceof ItemStack) - { - itemstack1 = (ItemStack) objects[i + 1]; - } - - hashmap.put(character, itemstack1); - } - - ItemStack[] aitemstack = new ItemStack[j * k]; - - for (int i1 = 0; i1 < j * k; ++i1) - { - char c0 = s.charAt(i1); - - if (hashmap.containsKey(Character.valueOf(c0))) - { - aitemstack[i1] = ((ItemStack) hashmap.get(Character.valueOf(c0))).copy(); - } - else - { - aitemstack[i1] = null; - } - } - //recipe.array = aitemstack; - return aitemstack; - } -} diff --git a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipesList.java b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipesList.java index 65f46732..22e9e249 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipesList.java +++ b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipesList.java @@ -7,7 +7,7 @@ import net.minecraft.item.ItemStack; import com.darkona.adventurebackpack.init.ModItems; -import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.reference.BackpackTypes; /** * Created on 20/10/2014 @@ -21,7 +21,7 @@ public class BackpackRecipesList public BackpackRecipesList() { String[] covered = {"XXX", "XaX", "XXX"}; - ItemStack backpack = BackpackNames.setBackpackColorNameFromDamage(new ItemStack(ModItems.adventureBackpack), 0); + ItemStack backpack = BackpackTypes.setBackpackSkinNameFromMeta(new ItemStack(ModItems.adventureBackpack), 0); ItemStack woolWhite = new ItemStack(Blocks.wool, 1, 0); ItemStack woolOrange = new ItemStack(Blocks.wool, 1, 1); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java index c0c6ec7b..bf58ffe3 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java @@ -6,6 +6,7 @@ import net.minecraftforge.fluids.FluidTank; import com.darkona.adventurebackpack.block.TileAdventureBackpack; +import com.darkona.adventurebackpack.reference.BackpackTypes; /** * Created by Darkona on 12/10/2014. @@ -22,7 +23,9 @@ public interface IInventoryAdventureBackpack extends IInventoryTanks ItemStack getParentItemStack(); - String getColorName(); + //String getColorName(); + + BackpackTypes getType(); int getLastTime(); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index 3bcb38a9..8c8a0e80 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -9,8 +9,8 @@ import net.minecraftforge.fluids.FluidTank; import com.darkona.adventurebackpack.block.TileAdventureBackpack; -import com.darkona.adventurebackpack.common.BackpackAbilities; import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.reference.BackpackTypes; import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_LEFT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_RIGHT; @@ -34,11 +34,11 @@ public class InventoryBackpack extends InventoryAdventureBackpack implements IIn private FluidTank leftTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); private FluidTank rightTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); + private BackpackTypes type = BackpackTypes.STANDARD; private boolean disableNVision = false; private boolean disableCycling = false; private boolean special = false; private int lastTime = 0; - private String colorName = "Standard"; public InventoryBackpack(ItemStack backpack) { @@ -77,9 +77,9 @@ public ItemStack getParentItemStack() } @Override - public String getColorName() + public BackpackTypes getType() { - return colorName; + return type; } @Override @@ -193,7 +193,7 @@ public void loadFromNBT(NBTTagCompound compound) } leftTank.readFromNBT(backpackTag.getCompoundTag(LEFT_TANK)); rightTank.readFromNBT(backpackTag.getCompoundTag(RIGHT_TANK)); - colorName = backpackTag.getString("colorName"); + type = BackpackTypes.getType(backpackTag.getString("colorName")); lastTime = backpackTag.getInteger("lastTime"); special = backpackTag.getBoolean("special"); extendedProperties = backpackTag.getCompoundTag("extendedProperties"); @@ -221,9 +221,9 @@ public void saveToNBT(NBTTagCompound compound) backpackTag.setTag(INVENTORY, items); backpackTag.setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); backpackTag.setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); - backpackTag.setString("colorName", colorName); + backpackTag.setString("colorName", BackpackTypes.getSkinName(type)); backpackTag.setInteger("lastTime", lastTime); - backpackTag.setBoolean("special", BackpackAbilities.hasAbility(colorName)); + backpackTag.setBoolean("special", BackpackTypes.isSpecial(type)); backpackTag.setTag("extendedProperties", extendedProperties); backpackTag.setBoolean("disableCycling", disableCycling); backpackTag.setBoolean("disableNVision", disableNVision); diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 7dd892eb..ee7ffb45 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -37,7 +37,6 @@ import com.darkona.adventurebackpack.network.GUIPacket; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.proxy.ClientProxy; -import com.darkona.adventurebackpack.reference.BackpackNames; import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.util.BackpackUtils; import com.darkona.adventurebackpack.util.EnchUtils; @@ -64,12 +63,15 @@ public ItemAdventureBackpack() @SideOnly(Side.CLIENT) public void getSubItems(Item item, CreativeTabs par2CreativeTabs, List subItems) { - for (int i = 0; i < BackpackNames.backpackNames.length; i++) + for (BackpackTypes type : BackpackTypes.values()) { + if (type == BackpackTypes.UNKNOWN) + continue; + ItemStack bp = new ItemStack(this, 1, 0); - bp.setItemDamage(i); + bp.setItemDamage(BackpackTypes.getMeta(type)); NBTTagCompound c = new NBTTagCompound(); - c.setString("colorName", BackpackNames.backpackNames[i]); + c.setString("colorName", BackpackTypes.getSkinName(type)); BackpackUtils.setBackpackTag(bp, c); subItems.add(bp); } @@ -113,7 +115,7 @@ public void addInformation(ItemStack stack, EntityPlayer player, List list, bool public void onCreated(ItemStack stack, World par2World, EntityPlayer par3EntityPlayer) { super.onCreated(stack, par2World, par3EntityPlayer); - BackpackNames.setBackpackColorNameFromDamage(stack, stack.getItemDamage()); + BackpackTypes.setBackpackSkinNameFromMeta(stack, stack.getItemDamage()); } @Override @@ -270,7 +272,7 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) if (!ConfigHandler.backpackAbilities || world == null || player == null || stack == null) return; - if (BackpackAbilities.hasAbility(BackpackNames.getBackpackColorName(stack))) + if (BackpackAbilities.hasAbility(BackpackTypes.getBackpackColorName(stack))) { BackpackAbilities.backpackAbilities.executeAbility(player, world, stack); } @@ -279,7 +281,7 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) @Override public void onUnequipped(World world, EntityPlayer player, ItemStack stack) { - if (BackpackAbilities.hasRemoval(BackpackNames.getBackpackColorName(stack))) + if (BackpackAbilities.hasRemoval(BackpackTypes.getBackpackColorName(stack))) { BackpackAbilities.backpackAbilities.executeRemoval(player, world, stack); } @@ -325,7 +327,7 @@ public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack stack, public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) { String modelTexture; - if (BackpackNames.getBackpackColorName(stack).equals("Standard")) + if (BackpackTypes.getBackpackColorName(stack).equals("Standard")) //TODO rework to type { modelTexture = Resources.backpackTextureFromString(ModDates.getHoliday()).toString(); } @@ -349,13 +351,13 @@ public ResourceLocation getWearableTexture(ItemStack wearable) { ResourceLocation modelTexture; - if (BackpackNames.getBackpackColorName(wearable).equals("Standard")) + if (BackpackTypes.getBackpackColorName(wearable).equals("Standard")) { modelTexture = Resources.backpackTextureFromString(ModDates.getHoliday()); } else { - modelTexture = Resources.backpackTextureFromString(BackpackNames.getBackpackColorName(wearable)); + modelTexture = Resources.backpackTextureFromString(BackpackTypes.getBackpackColorName(wearable)); } return modelTexture; } diff --git a/src/main/java/com/darkona/adventurebackpack/reference/BackpackNames.java b/src/main/java/com/darkona/adventurebackpack/reference/BackpackNames.java deleted file mode 100644 index 0373f0a3..00000000 --- a/src/main/java/com/darkona/adventurebackpack/reference/BackpackNames.java +++ /dev/null @@ -1,145 +0,0 @@ -package com.darkona.adventurebackpack.reference; - -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; - -import com.darkona.adventurebackpack.block.TileAdventureBackpack; -import com.darkona.adventurebackpack.item.ItemAdventureBackpack; -import com.darkona.adventurebackpack.util.BackpackUtils; - -/** - * Created on 15/10/2014 - * - * @author Darkona - */ -public class BackpackNames -{ - public static String[] backpackNames = { - "Standard", - "Cow", - "Bat", - "Black", - "Blaze", - "Carrot", - "Coal", - "Diamond", - "Emerald", - "Gold", - "Iron", - "IronGolem", - "Lapis", - "Redstone", - "Blue", - "Bookshelf", - "Brown", - "Cactus", - "Cake", - "Chest", - "Cookie", - "Cyan", - "Dragon", - "Egg", - "Electric", - "Deluxe", - "Enderman", - "End", - "Chicken", - "Ocelot", - "Ghast", - "Gray", - "Green", - "Haybale", - "Horse", - "Leather", - "LightBlue", - "Glowstone", - "LightGray", - "Lime", - "Magenta", - "MagmaCube", - "Melon", - "BrownMushroom", - "RedMushroom", - "Mooshroom", - "Nether", - "Wither", - "Obsidian", - "Orange", - "Overworld", - "Pigman", - "Pink", - "Pig", - "Pumpkin", - "Purple", - "Quartz", - "Rainbow", - "Red", - "Sandstone", - "Sheep", - "Silverfish", - "Squid", - "Sunflower", - "Creeper", - "Skeleton", - "WitherSkeleton", - "Slime", - "Snow", - "Spider", - "Sponge", - "Villager", - "White", - "Wolf", - "Yellow", - "Zombie", - "ModdedNetwork" - }; - - public static ItemStack setBackpackColorNameFromDamage(ItemStack backpack, int damage) - { - if (backpack == null) return null; - if (!(backpack.getItem() instanceof ItemAdventureBackpack)) return null; - NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(backpack) != null ? BackpackUtils.getBackpackTag(backpack) : new NBTTagCompound(); - backpack.setItemDamage(damage); - assert backpackTag != null; - backpackTag.setString("colorName", backpackNames[damage]); - BackpackUtils.setBackpackTag(backpack, backpackTag); - return backpack; - } - - public static int getBackpackDamageFromName(String name) - { - for (int i = 0; i < backpackNames.length; i++) - { - if (backpackNames[i].equals(name)) return i; - } - return 0; - } - - public static String getBackpackColorName(TileAdventureBackpack te) - { - return te.getColorName(); - } - - public static String getBackpackColorName(ItemStack backpack) - { - if (backpack == null) return ""; - NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(backpack) != null ? BackpackUtils.getBackpackTag(backpack) : new NBTTagCompound(); - assert backpackTag != null; - if (backpackTag.getString("colorName").isEmpty()) - { - backpackTag.setString("colorName", "Standard"); - } - return backpackTag.getString("colorName"); - } - - public static void setBackpackColorName(ItemStack backpack, String newName) - { - if (backpack != null) - { - NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(backpack) != null ? BackpackUtils.getBackpackTag(backpack) : new NBTTagCompound(); - assert backpackTag != null; - backpackTag.setString("colorName", newName); - BackpackUtils.setBackpackTag(backpack, backpackTag); - } - } -} diff --git a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java index daab9e4b..218c0cc2 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java @@ -10,6 +10,12 @@ import org.apache.commons.lang3.Validate; import org.apache.commons.lang3.text.WordUtils; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; + +import com.darkona.adventurebackpack.item.ItemAdventureBackpack; +import com.darkona.adventurebackpack.util.BackpackUtils; + import static com.darkona.adventurebackpack.reference.BackpackTypes.Props.NIGHT_VISION; import static com.darkona.adventurebackpack.reference.BackpackTypes.Props.REMOVAL; import static com.darkona.adventurebackpack.reference.BackpackTypes.Props.SPECIAL; @@ -39,8 +45,8 @@ public enum BackpackTypes CHEST ( 19), CHICKEN ( 28, SPECIAL), COAL ( 6), - COOKIE ( 20, SPECIAL), - COW ( 1), + COOKIE ( 20), + COW ( 1, SPECIAL), CREEPER ( 64, SPECIAL), CYAN ( 21), DELUXE ( 25), @@ -59,7 +65,7 @@ public enum BackpackTypes HAYBALE ( 33), HORSE ( 34), IRON ( 10), - IRON_GOLEM ( 11), + IRON_GOLEM ( 11), //TODO has other ability, need some prop LAPIS ( 12), LEATHER ( 35), LIGHT_BLUE ( 36), @@ -116,8 +122,7 @@ public enum BackpackTypes private final String skinName; // equivalent to current colorName private final Props[] props; - //TODO step1: replace BackpackNames by this , make it work - //TODO step2: add support for recipes (see BackpackRecipes[List]). new field 'Object[]'? + //TODO step2: add support for recipes (see BackpackRecipesList). new field 'Object[]'? //TODO step3: rework NBT for wearable packs. unificate and simplify structure. //TODO step4: remove all internal interactions by colorName (skinName), replace by enum. maybe remove NBT field too cuz we need only meta @@ -182,6 +187,11 @@ public static String getSkinName(BackpackTypes type) return type.skinName; } + public static String getSkinName(int meta) + { + return getType(meta).skinName; //TODO can be optimized? + } + public static byte getMeta(BackpackTypes type) { return type.meta; @@ -251,4 +261,44 @@ public enum Props //OTHER_ABILITY, // creeper or skeleton etc ; } + + + // --- + + public static ItemStack setBackpackSkinNameFromMeta(ItemStack backpack, int meta) + { + if (backpack == null || !(backpack.getItem() instanceof ItemAdventureBackpack)) + return null; + + NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(backpack); + backpack.setItemDamage(meta); + backpackTag.setString("colorName", getSkinName(meta)); + BackpackUtils.setBackpackTag(backpack, backpackTag); + + return backpack; + } + + public static String getBackpackColorName(ItemStack backpack) //TODO rework + { + if (backpack == null) + return ""; + + NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(backpack); + if (backpackTag.getString("colorName").isEmpty()) + { + backpackTag.setString("colorName", "Standard"); + } + + return backpackTag.getString("colorName"); + } + + public static void setBackpackColorName(ItemStack backpack, String newName) //TODO rework, del + { + if (backpack == null) + return; + + NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(backpack); + backpackTag.setString("colorName", newName); + BackpackUtils.setBackpackTag(backpack, backpackTag); + } } diff --git a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java index e7a0add3..8a2101ff 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java @@ -59,7 +59,7 @@ public static NBTTagCompound getBackpackTag(ItemStack backpack) { return backpack.stackTagCompound.getCompoundTag(Constants.COMPOUND_TAG); } - return null; + return new NBTTagCompound(); } public static void setBackpackTag(ItemStack stack, NBTTagCompound compound) diff --git a/src/main/java/com/darkona/adventurebackpack/util/Resources.java b/src/main/java/com/darkona/adventurebackpack/util/Resources.java index 7dae11a5..585205c9 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Resources.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Resources.java @@ -4,7 +4,7 @@ import net.minecraft.util.ResourceLocation; import com.darkona.adventurebackpack.inventory.IInventoryAdventureBackpack; -import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.reference.ModInfo; /** @@ -23,7 +23,7 @@ public static String modelTextureResourceString(String name) public static String backpackTexturesStringFromColor(ItemStack backpack) { - return new ResourceLocation(TEXTURE_LOCATION, "textures/backpack/" + BackpackNames.getBackpackColorName(backpack) + ".png").toString(); + return new ResourceLocation(TEXTURE_LOCATION, "textures/backpack/" + BackpackTypes.getBackpackColorName(backpack) + ".png").toString(); } public static ResourceLocation backpackTextureFromString(String color) @@ -33,7 +33,7 @@ public static ResourceLocation backpackTextureFromString(String color) public static ResourceLocation backpackTextureFromColor(IInventoryAdventureBackpack adventureBackpack) { - return new ResourceLocation(TEXTURE_LOCATION, "textures/backpack/" + adventureBackpack.getColorName() + ".png"); + return new ResourceLocation(TEXTURE_LOCATION, "textures/backpack/" + BackpackTypes.getSkinName(adventureBackpack.getType()) + ".png"); } public static ResourceLocation guiTextures(String name) diff --git a/src/main/java/com/darkona/adventurebackpack/util/Wearing.java b/src/main/java/com/darkona/adventurebackpack/util/Wearing.java index 09391ac9..f1d7c5f3 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Wearing.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Wearing.java @@ -15,7 +15,7 @@ import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.item.ItemPistonBoots; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; -import com.darkona.adventurebackpack.reference.BackpackNames; +import com.darkona.adventurebackpack.reference.BackpackTypes; /** * Created on 11/10/2014 @@ -64,7 +64,7 @@ public static boolean isWearingTheRightBackpack(EntityPlayer player, String... b { for (String name : backpacks) { - if (BackpackNames.getBackpackColorName(Wearing.getWearingBackpack(player)).equals(name)) + if (BackpackTypes.getBackpackColorName(Wearing.getWearingBackpack(player)).equals(name)) { return true; } From f3f6558fc09b593443e1d7b8ff0ea5a330fddbea Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Fri, 15 Sep 2017 07:41:22 +0700 Subject: [PATCH 412/462] BackpackTypes implementation step2 --- .../block/BlockAdventureBackpack.java | 9 +- .../block/TileAdventureBackpack.java | 52 ++++--- .../client/audio/NyanMovingSound.java | 3 +- .../RendererAdventureBackpackBlock.java | 2 +- .../render/RendererItemAdventureBackpack.java | 4 +- .../common/BackpackAbilities.java | 134 +++++------------- .../adventurebackpack/common/Constants.java | 20 ++- .../common/ServerActions.java | 13 +- .../entity/EntityFriendlySpider.java | 4 +- .../ai/EntityAIAvoidPlayerWithBackpack.java | 8 +- .../entity/ai/EntityAIHorseFollowOwner.java | 5 +- .../handlers/ClientEventHandler.java | 2 +- .../handlers/GeneralEventHandler.java | 7 +- .../handlers/PlayerEventHandler.java | 10 +- .../handlers/TooltipEventHandler.java | 19 ++- .../adventurebackpack/init/ModRecipes.java | 10 +- .../adventurebackpack/init/ModWorldGen.java | 16 +-- .../recipes/AbstractBackpackRecipeTwo.java | 26 ++-- .../init/recipes/BackpackRecipe.java | 8 +- .../init/recipes/BackpackRecipesList.java | 2 +- .../IInventoryAdventureBackpack.java | 4 - .../inventory/InventoryBackpack.java | 40 ++++-- .../inventory/InventoryCoalJetpack.java | 22 +-- .../item/ItemAdventureBackpack.java | 48 +++---- .../item/ItemCoalJetpack.java | 6 +- .../reference/BackpackTypes.java | 66 ++++----- .../adventurebackpack/util/Resources.java | 6 +- .../darkona/adventurebackpack/util/Utils.java | 2 +- .../adventurebackpack/util/Wearing.java | 8 +- 29 files changed, 254 insertions(+), 302 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java index 0f631019..9fdd0125 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java @@ -245,11 +245,16 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z, EntityPlayer player) { ItemStack backpack = new ItemStack(ModItems.adventureBackpack, 1); - //TODO look if can be simplified - BackpackTypes.setBackpackSkinNameFromMeta(backpack, BackpackTypes.getMeta(getAssociatedTileBackpackType(world, x, y, z))); + BackpackTypes.setBackpackTypeFromMeta(backpack, BackpackTypes.getMeta(getAssociatedTileBackpackType(world, x, y, z))); return backpack; } + /*@Override + public int damageDropped(int meta) + { + return meta; //TODO how to save meta from "tile->item" + }*/ + @Override public boolean hasTileEntity(int meta) { diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index e710d271..16cd21fe 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -49,26 +49,27 @@ */ public class TileAdventureBackpack extends TileEntity implements IInventoryAdventureBackpack, ISidedInventory { - public ItemStack[] inventory = new ItemStack[Constants.INVENTORY_SIZE]; + private ItemStack[] inventory = new ItemStack[Constants.INVENTORY_SIZE]; private FluidTank leftTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); private FluidTank rightTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); + private NBTTagList ench; private BackpackTypes type; private NBTTagCompound extendedProperties; - private NBTTagList ench; - private boolean special; //TODO rework, del cuz we need only type and type.isSpecail private boolean disableCycling; private boolean disableNVision; + private int lastTime; + private boolean sleepingBagDeployed; private int sbdir; private int sbx; private int sby; private int sbz; - private int checkTime = 0; - private int lastTime; private int luminosity; + private int checkTime = 0; + public TileAdventureBackpack() { sleepingBagDeployed = false; @@ -243,12 +244,6 @@ public boolean isSBDeployed() return this.sleepingBagDeployed; } - @Override - public boolean isSpecial() - { - return special; - } - //=======================================================NBT======================================================// @Override public void readFromNBT(NBTTagCompound compound) @@ -276,13 +271,35 @@ public void writeToNBT(NBTTagCompound compound) compound.setInteger("lumen", luminosity); } + private void convertFromOldNBTFormat(NBTTagCompound compound) + { + NBTTagCompound oldBackpackTag = compound.getCompoundTag("backpackData"); + NBTTagList oldItems = oldBackpackTag.getTagList("ABPItems", NBT.TAG_COMPOUND); + leftTank.readFromNBT(oldBackpackTag.getCompoundTag(LEFT_TANK)); + rightTank.readFromNBT(oldBackpackTag.getCompoundTag(RIGHT_TANK)); + type = BackpackTypes.getType(oldBackpackTag.getString("colorName")); + + NBTTagCompound newBackpackTag = new NBTTagCompound(); + newBackpackTag.setTag(INVENTORY, oldItems); + newBackpackTag.setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); + newBackpackTag.setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); + newBackpackTag.setByte("type", BackpackTypes.getMeta(type)); + + compound.setTag(COMPOUND_TAG, newBackpackTag); + compound.removeTag("backpackData"); + } + @Override public void loadFromNBT(NBTTagCompound compound) { + if (compound.hasKey("backpackData")) + convertFromOldNBTFormat(compound); + if (compound.hasKey("ench")) ench = compound.getTagList("ench", NBT.TAG_COMPOUND); NBTTagCompound backpackTag = compound.getCompoundTag(COMPOUND_TAG); + type = BackpackTypes.getType(backpackTag.getByte("type")); NBTTagList items = backpackTag.getTagList(INVENTORY, NBT.TAG_COMPOUND); for (int i = 0; i < items.tagCount(); i++) { @@ -295,12 +312,10 @@ public void loadFromNBT(NBTTagCompound compound) } leftTank.readFromNBT(backpackTag.getCompoundTag(LEFT_TANK)); rightTank.readFromNBT(backpackTag.getCompoundTag(RIGHT_TANK)); - type = BackpackTypes.getType(backpackTag.getString("colorName")); - lastTime = backpackTag.getInteger("lastTime"); - special = backpackTag.getBoolean("special"); extendedProperties = backpackTag.getCompoundTag("extended"); disableCycling = backpackTag.getBoolean("disableCycling"); disableNVision = backpackTag.getBoolean("disableNVision"); + lastTime = backpackTag.getInteger("lastTime"); } @Override @@ -310,6 +325,7 @@ public void saveToNBT(NBTTagCompound compound) compound.setTag("ench", ench); NBTTagCompound backpackTag = new NBTTagCompound(); + backpackTag.setByte("type", BackpackTypes.getMeta(type)); NBTTagList items = new NBTTagList(); for (int i = 0; i < inventory.length; i++) { @@ -323,14 +339,12 @@ public void saveToNBT(NBTTagCompound compound) } } backpackTag.setTag(INVENTORY, items); - backpackTag.setString("colorName", BackpackTypes.getSkinName(type)); - backpackTag.setInteger("lastTime", lastTime); - backpackTag.setBoolean("special", BackpackTypes.isSpecial(type)); //TODO isSpecial 2 methods in 2 classes, del - backpackTag.setTag("extended", extendedProperties); backpackTag.setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); backpackTag.setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); + backpackTag.setTag("extended", extendedProperties); backpackTag.setBoolean("disableCycling", disableCycling); backpackTag.setBoolean("disableNVision", disableNVision); + backpackTag.setInteger("lastTime", lastTime); compound.setTag(COMPOUND_TAG, backpackTag); } @@ -499,7 +513,7 @@ public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) public void updateEntity() { //Execute this backpack's ability. No, seriously. You might not infer that from the code. Just sayin' - if (ConfigHandler.backpackAbilities && BackpackAbilities.hasTileAbility(BackpackTypes.getSkinName(type))) //TODO + if (ConfigHandler.backpackAbilities && BackpackTypes.hasProperty(type, BackpackTypes.Props.TILE)) { BackpackAbilities.backpackAbilities.executeTileAbility(this.worldObj, this); } diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/NyanMovingSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/NyanMovingSound.java index bd663acd..14727933 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/NyanMovingSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/NyanMovingSound.java @@ -4,6 +4,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ResourceLocation; +import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.reference.ModInfo; import com.darkona.adventurebackpack.util.Wearing; @@ -55,7 +56,7 @@ public void update() } else { - if (Wearing.isWearingTheRightBackpack(player, "Rainbow")) + if (Wearing.isWearingTheRightBackpack(player, BackpackTypes.RAINBOW)) { this.volume = 0.8f; } diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java index 0bbf497e..4f2af03f 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java @@ -70,7 +70,7 @@ public void renderTileEntityAt(TileEntity te, double x, double y, double z, floa } else { - modelTexture = Resources.backpackTextureFromColor(tileBackpack); + modelTexture = Resources.backpackTextureFromSkin(tileBackpack); } bindTexture(modelTexture); diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java index b470741d..d8b396a8 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java @@ -71,13 +71,13 @@ public void renderItem(IItemRenderer.ItemRenderType type, ItemStack backpack, Ob { InventoryBackpack inv = new InventoryBackpack(backpack); ResourceLocation modelTexture; - if (BackpackTypes.getBackpackColorName(backpack).equals("Standard")) + if (BackpackTypes.getType(backpack) == BackpackTypes.STANDARD) //TODO check holiday textures { modelTexture = Resources.backpackTextureFromString(ModDates.getHoliday()); } else { - modelTexture = Resources.backpackTextureFromColor(inv); + modelTexture = Resources.backpackTextureFromSkin(inv); } switch (type) { diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java index 3f0db084..e307a958 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java @@ -24,7 +24,6 @@ import com.darkona.adventurebackpack.entity.ai.EntityAIAvoidPlayerWithBackpack; import com.darkona.adventurebackpack.init.ModFluids; import com.darkona.adventurebackpack.init.ModNetwork; -import com.darkona.adventurebackpack.inventory.IInventoryAdventureBackpack; import com.darkona.adventurebackpack.inventory.InventoryBackpack; import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; import com.darkona.adventurebackpack.reference.BackpackTypes; @@ -43,118 +42,54 @@ @SuppressWarnings("unused") public class BackpackAbilities { - /** - * These are the colorNames of the backpacks that have abilities when being worn. - */ - private static final String[] SPECIAL_BACKPACKS = {"Bat", "Cactus", "Chicken", "Cow", "Creeper", "Dragon", "Melon", - "Mooshroom", "Ocelot", "Pig", "Pigman", "Rainbow", "Slime", "Squid", "Sunflower", "Wolf",}; // TODO del - - private static final String[] REMOVAL_BACKPACKS = {"Bat", "Dragon", "Pigman", "Rainbow", "Squid",}; //TODO del - - /** - * These are the colorNames of the backpacks that have abilities while being blocks. Note that not all the - * backpacks that have particularities while in block form necessarily have abilities. - * - * @see com.darkona.adventurebackpack.block.BlockAdventureBackpack - */ - private static final String[] TILE_BACKPACKS = {"Cactus", "Melon",}; //TODO del - public static BackpackAbilities backpackAbilities = new BackpackAbilities(); public static BackpackRemovals backpackRemovals = new BackpackRemovals(); - public static boolean hasAbility(String colorName) - { - for (String valid : SPECIAL_BACKPACKS) - { - if (valid.equals(colorName)) - { - return true; - } - } - return false; - } - - public static boolean hasTileAbility(String colorName) + /** + * Executes the ability of any given backpack, be it on the ground or be it on a player. + */ + public void executeAbility(EntityPlayer player, World world, ItemStack backpack) { - for (String valid : TILE_BACKPACKS) + String skinName = BackpackTypes.getSkinName(backpack); + try { - if (valid.equals(colorName)) - { - return true; - } + //This is black magic and shouldn't be attempted by the faint of heart. + this.getClass() + .getMethod("item" + skinName, EntityPlayer.class, World.class, ItemStack.class) + .invoke(backpackAbilities, player, world, backpack); } - return false; - } - - public static boolean hasRemoval(String colorName) - { - for (String valid : REMOVAL_BACKPACKS) + catch (Exception oops) { - if (valid.equals(colorName)) - { - return true; - } + //NOBODY CARES } - return false; } - /** - * Executes the ability of any given backpack, be it on the ground or be it on a player. - * - * @param player An entity player, can be null in the case of the tile entity. - * @param world This is necessary, so get it from wherever you can inside the class you're calling this. - * @param backpack An object representing a backpack, either in its ItemStack form or its TileEntity form. - */ - public void executeAbility(EntityPlayer player, World world, Object backpack) + public void executeTileAbility(World world, TileAdventureBackpack backpack) { - if (backpack instanceof ItemStack) + String skinName = BackpackTypes.getSkinName(backpack.getType()); + try { - String skinName = BackpackTypes.getBackpackColorName((ItemStack) backpack); //TODO rework - try - { - //This is black magic and shouldn't be attempted by the faint of heart. - System.out.println("item" + skinName); //TODO del - this.getClass() - .getMethod("item" + skinName, EntityPlayer.class, World.class, ItemStack.class) - .invoke(backpackAbilities, player, world, backpack); - } - catch (Exception oops) - { - //NOBODY CARES - } + /* + This is witchery, witchery I say! + But seriously, if you want to know how this works just pay very close attention: + invoke will execute any method of a given class, okay? so this should be obvious. + Look at the names of the methods in this class and you'll figure it out. + You have to indicate exactly the classes that the method should use as parameters so + be very careful with "getMethod". + */ + this.getClass() + .getMethod("tile" + skinName, World.class, TileAdventureBackpack.class) + .invoke(backpackAbilities, world, backpack); } - } - - public void executeTileAbility(World world, Object backpack) - { - if (backpack instanceof TileAdventureBackpack) + catch (Exception oops) { - String skinName = BackpackTypes.getSkinName(((TileAdventureBackpack) backpack).getType()); - try - { - /* - This is witchery, witchery I say! - But seriously, if you want to know how this works just pay very close attention: - invoke will execute any method of a given class, okay? so this should be obvious. - Look at the names of the methods in this class and you'll figure it out. - You have to indicate exactly the classes that the method should use as parameters so - be very careful with "getMethod". - */ - System.out.println("tile" + skinName); //TODO del - this.getClass() - .getMethod("tile" + skinName, World.class, TileAdventureBackpack.class) - .invoke(backpackAbilities, world, backpack); - } - catch (Exception oops) - { - //Seriously, nobody cares if this can't work, this is just so the game won't explode. - } + //Seriously, nobody cares if this can't work, this is just so the game won't explode. } } public void executeRemoval(EntityPlayer player, World world, ItemStack backpack) { - String skinName = BackpackTypes.getBackpackColorName(backpack); //TODO + String skinName = BackpackTypes.getSkinName(backpack); try { //This is black magic and shouldn't be attempted by the faint of heart. @@ -562,8 +497,7 @@ public void itemCreeper(EntityPlayer player, World world, ItemStack backpack) */ public void itemCow(EntityPlayer player, World world, ItemStack backpack) { - if (world.isRemote) return; - System.out.println("COWWWW"); //TODO del + if (world.isRemote) return; //TODO not syncing properly with client if GUI is open InventoryBackpack inv = new InventoryBackpack(backpack); inv.openInventory(); @@ -752,8 +686,7 @@ public void itemOcelot(EntityPlayer player, World world, ItemStack backpack) for (EntityCreeper creeper : creepers) { boolean set = true; - EntityAIAvoidPlayerWithBackpack task = new EntityAIAvoidPlayerWithBackpack(creeper, EntityPlayer.class, 10.0F, 1.0, 1.3, "Ocelot"); - + EntityAIAvoidPlayerWithBackpack task = new EntityAIAvoidPlayerWithBackpack(creeper, EntityPlayer.class, 10.0F, 1.0, 1.3, BackpackTypes.OCELOT); for (Object entry : creeper.tasks.taskEntries) { if (((EntityAITasks.EntityAITaskEntry) entry).action instanceof EntityAIAvoidPlayerWithBackpack) @@ -802,12 +735,11 @@ public void tileCactus(World world, TileAdventureBackpack backpack) public void tileMelon(World world, TileAdventureBackpack backpack) { - //System.out.println("MELON!"); //TODO del fillWithRain(world, backpack, new FluidStack(ModFluids.melonJuice, 2), 5); } - public void tileCow(World world, TileAdventureBackpack backpack) + /*public void tileCow(World world, TileAdventureBackpack backpack) { IInventoryAdventureBackpack inv = backpack; //TODO make CowBackpack (and others) working in tile form - } + }*/ } diff --git a/src/main/java/com/darkona/adventurebackpack/common/Constants.java b/src/main/java/com/darkona/adventurebackpack/common/Constants.java index 7dcd0006..41d2c836 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/Constants.java +++ b/src/main/java/com/darkona/adventurebackpack/common/Constants.java @@ -16,11 +16,11 @@ public enum Source public static final int BUCKET = FluidContainerRegistry.BUCKET_VOLUME; - public static final int INVENTORY_SIZE = 45; - public static final String COMPOUND_TAG = "backpackData"; - public static final String INVENTORY = "ABPItems"; + public static final String COMPOUND_TAG = "wearableData"; + public static final String INVENTORY = "inventory"; - // Inventory Special Slots + // Inventory Slots + public static final int INVENTORY_SIZE = 45; public static final int END_OF_INVENTORY = INVENTORY_SIZE - 7; // 0 included public static final int INVENTORY_MAIN_SIZE = END_OF_INVENTORY + 1; // 0 excluded @@ -36,8 +36,8 @@ public enum Source public static final String RIGHT_TANK = "rightTank"; public static final String LEFT_TANK = "leftTank"; public static final int BASIC_TANK_CAPACITY = BUCKET * 4; - public static final int ADVANCED_TANK_CAPACITY = BUCKET * 8; // upgrade system? - public static final int HEROIC_TANK_CAPACITY = BUCKET * 12; + //public static final int ADVANCED_TANK_CAPACITY = BUCKET * 8; // upgrade system? + //public static final int HEROIC_TANK_CAPACITY = BUCKET * 12; // Jetpack public static final int JETPACK_INVENTORY_SIZE = 3; @@ -45,8 +45,8 @@ public enum Source public static final int JETPACK_BUCKET_OUT = 1; public static final int JETPACK_FUEL_SLOT = 2; - public static final String JETPACK_COMPOUND_TAG = "jetpackData"; - public static final String JETPACK_INVENTORY = "inventory"; + //public static final String COMPOUND_TAG = "jetpackData"; + //public static final String INVENTORY = "inventory"; public static final String JETPACK_STEAM_TANK = "steamTank"; public static final String JETPACK_WATER_TANK = "waterTank"; public static final int JETPACK_STEAM_CAPACITY = BUCKET * 12; @@ -61,8 +61,4 @@ public enum Source public static final String COPTER_FUEL_TANK = "fuelTank"; public static final int COPTER_FUEL_CAPACITY = BUCKET * 6; - - - // - public static final String[] NIGHTVISION_BACKPACKS = {"Bat", "Dragon", "Squid",}; } diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index e24667f5..52c46446 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -33,7 +33,7 @@ import com.darkona.adventurebackpack.util.Wearing; import static com.darkona.adventurebackpack.common.Constants.BUCKET; -import static com.darkona.adventurebackpack.common.Constants.JETPACK_COMPOUND_TAG; +import static com.darkona.adventurebackpack.common.Constants.COMPOUND_TAG; import static com.darkona.adventurebackpack.common.Constants.LOWER_TOOL; import static com.darkona.adventurebackpack.common.Constants.UPPER_TOOL; @@ -162,13 +162,14 @@ else if (direction < 0) public static void electrify(EntityPlayer player) { ItemStack backpack = Wearing.getWearingBackpack(player); - if (BackpackTypes.getBackpackColorName(backpack).equals("Pig")) //TODO rework to type + + if (BackpackTypes.getType(backpack) == BackpackTypes.PIG) { - BackpackTypes.setBackpackColorName(backpack, "Pigman"); + BackpackTypes.setBackpackType(backpack, BackpackTypes.PIGMAN); } - if (BackpackTypes.getBackpackColorName(backpack).equals("Diamond")) + if (BackpackTypes.getType(backpack) == BackpackTypes.DIAMOND) { - BackpackTypes.setBackpackColorName(backpack, "Electric"); + BackpackTypes.setBackpackType(backpack, BackpackTypes.ELECTRIC); } } @@ -364,7 +365,7 @@ public static void copterSoundAtLogin(EntityPlayer player) public static void jetpackSoundAtLogin(EntityPlayer player) { boolean isBoiling = BackpackProperty.get(player).getWearable().getTagCompound() - .getCompoundTag(JETPACK_COMPOUND_TAG).getBoolean("boiling"); + .getCompoundTag(COMPOUND_TAG).getBoolean("boiling"); if (!player.worldObj.isRemote && isBoiling) { diff --git a/src/main/java/com/darkona/adventurebackpack/entity/EntityFriendlySpider.java b/src/main/java/com/darkona/adventurebackpack/entity/EntityFriendlySpider.java index b429181e..0588df97 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/EntityFriendlySpider.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/EntityFriendlySpider.java @@ -24,6 +24,7 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; +import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.util.Wearing; /** @@ -226,10 +227,9 @@ public boolean canRiderInteract() @Override protected boolean interact(EntityPlayer player) { - try { - if (!this.worldObj.isRemote && Wearing.isWearingTheRightBackpack(player, "Spider")) + if (!this.worldObj.isRemote && Wearing.isWearingTheRightBackpack(player, BackpackTypes.SPIDER)) { player.mountEntity(this); return true; diff --git a/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIAvoidPlayerWithBackpack.java b/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIAvoidPlayerWithBackpack.java index ca1c0c3e..0c493dbe 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIAvoidPlayerWithBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIAvoidPlayerWithBackpack.java @@ -21,7 +21,7 @@ */ public class EntityAIAvoidPlayerWithBackpack extends EntityAIBase { - private String backpackName; + private BackpackTypes type; public final IEntitySelector field_98218_a = new AvoidEntitySelector(this); @@ -49,7 +49,7 @@ public class EntityAIAvoidPlayerWithBackpack extends EntityAIBase */ private Class targetEntityClass; - public EntityAIAvoidPlayerWithBackpack(EntityCreature par1EntityCreature, Class par2Class, float par3, double par4, double par6, String colorName) + public EntityAIAvoidPlayerWithBackpack(EntityCreature par1EntityCreature, Class par2Class, float par3, double par4, double par6, BackpackTypes type) { this.theEntity = par1EntityCreature; this.targetEntityClass = par2Class; @@ -58,7 +58,7 @@ public EntityAIAvoidPlayerWithBackpack(EntityCreature par1EntityCreature, Class this.nearSpeed = par6; this.entityPathNavigate = par1EntityCreature.getNavigator(); this.setMutexBits(1); - this.backpackName = colorName; + this.type = type; } /** @@ -83,7 +83,7 @@ public boolean shouldExecute() for (Object player : list) { - if (BackpackTypes.getBackpackColorName(Wearing.getWearingBackpack((EntityPlayer) player)).equals(backpackName)) + if (BackpackTypes.getType(Wearing.getWearingBackpack((EntityPlayer) player)) == type) { this.closestLivingEntity = (Entity) player; } diff --git a/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIHorseFollowOwner.java b/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIHorseFollowOwner.java index be51d5eb..29b98b63 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIHorseFollowOwner.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIHorseFollowOwner.java @@ -8,6 +8,7 @@ import net.minecraft.pathfinding.PathNavigate; import net.minecraft.world.World; +import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.util.Wearing; /** @@ -59,7 +60,7 @@ public boolean shouldExecute() return false; } } - if (!Wearing.isWearingTheRightBackpack(theOwner, "Horse")) return false; + if (!Wearing.isWearingTheRightBackpack(theOwner, BackpackTypes.HORSE)) return false; if (theHorse.getDistanceSqToEntity(theOwner) < minDist * minDist * 20) { return false; @@ -70,7 +71,7 @@ public boolean shouldExecute() @Override public boolean continueExecuting() { - return (Wearing.isWearingTheRightBackpack(theOwner, "Horse") && !this.petPathfinder.noPath() && theHorse.getDistanceSqToEntity(theOwner) > this.maxDist * this.maxDist * 2); + return (Wearing.isWearingTheRightBackpack(theOwner, BackpackTypes.HORSE) && !this.petPathfinder.noPath() && theHorse.getDistanceSqToEntity(theOwner) > this.maxDist * this.maxDist * 2); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java index 107ef6e5..a1636e05 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java @@ -50,7 +50,7 @@ public void mouseWheelDetect(MouseEvent event) Item theItem = heldItem.getItem(); if ((ConfigHandler.enableToolsCycling && !Wearing.getWearingBackpackInv(player).getDisableCycling() && SlotTool.isValidTool(heldItem)) - || (BackpackTypes.getBackpackColorName(backpack).equals("Skeleton") && theItem.equals(Items.bow))) + || (BackpackTypes.getType(backpack) == BackpackTypes.SKELETON && theItem.equals(Items.bow))) { ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(dWheel, slot, CycleToolPacket.CYCLE_TOOL_ACTION)); ServerActions.cycleTool(player, dWheel, slot); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java index 5183da81..27cedbaf 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java @@ -25,6 +25,7 @@ import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.inventory.InventoryBackpack; import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; +import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.util.Utils; import com.darkona.adventurebackpack.util.Wearing; @@ -44,7 +45,7 @@ public void eatGoldenApple(PlayerUseItemEvent.Finish event) { if (event.item.getItem() instanceof ItemAppleGold //&& ((ItemAppleGold) event.item.getItem()).getRarity(event.item) == EnumRarity.epic - && Wearing.isWearingTheRightBackpack(player, "Rainbow")) + && Wearing.isWearingTheRightBackpack(player, BackpackTypes.RAINBOW)) { InventoryBackpack inv = new InventoryBackpack(Wearing.getWearingBackpack(player)); if (inv.getLastTime() > 0) return; @@ -74,7 +75,7 @@ public void detectBow(ArrowNockEvent event) if (!ConfigHandler.backpackAbilities) return; - if (Wearing.isWearingTheRightBackpack(event.entityPlayer, "Skeleton")) + if (Wearing.isWearingTheRightBackpack(event.entityPlayer, BackpackTypes.SKELETON)) { InventoryBackpack backpack = new InventoryBackpack(Wearing.getWearingBackpack(event.entityPlayer)); if (backpack.hasItem(Items.arrow)) @@ -91,7 +92,7 @@ public void detectArrow(ArrowLooseEvent event) if (!ConfigHandler.backpackAbilities) return; - if (Wearing.isWearingTheRightBackpack(event.entityPlayer, "Skeleton")) + if (Wearing.isWearingTheRightBackpack(event.entityPlayer, BackpackTypes.SKELETON)) { InventoryBackpack backpack = new InventoryBackpack(Wearing.getWearingBackpack(event.entityPlayer)); if (backpack.hasItem(Items.arrow)) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index ba48a062..3a1952b2 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -195,7 +195,7 @@ public void onFall(LivingFallEvent event) { event.setCanceled(true); } - if (Wearing.isWearingTheRightBackpack((EntityPlayer) event.entityLiving, "IronGolem") && ConfigHandler.backpackAbilities) + if (Wearing.isWearingTheRightBackpack((EntityPlayer) event.entityLiving, BackpackTypes.IRON_GOLEM) && ConfigHandler.backpackAbilities) { event.setCanceled(true); } @@ -226,7 +226,7 @@ public void playerDies(LivingDeathEvent event) if (Wearing.isWearingWearable(player)) { - if (Wearing.isWearingTheRightBackpack(player, "Creeper")) + if (Wearing.isWearingTheRightBackpack(player, BackpackTypes.CREEPER)) { player.worldObj.createExplosion(player, player.posX, player.posY, player.posZ, 4.0F, false); } @@ -280,8 +280,8 @@ public void playerCraftsBackpack(PlayerEvent.ItemCraftedEvent event) { if (event.crafting.getItem() == ModItems.adventureBackpack) { - LogHelper.info("Player crafted a backpack, and that backpack's appearance is: " + event.crafting.getTagCompound().getString("colorName")); - if (BackpackTypes.getBackpackColorName(event.crafting).equals("Dragon") && !ConfigHandler.consumeDragonEgg) + LogHelper.info("Player crafted a backpack, and that backpack's appearance is: " + BackpackTypes.getSkinName(event.crafting.getTagCompound().getByte("type"))); + if (!ConfigHandler.consumeDragonEgg && BackpackTypes.getType(event.crafting) == BackpackTypes.DRAGON) { event.player.dropPlayerItemWithRandomChoice(new ItemStack(Blocks.dragon_egg, 1), false); event.player.playSound("mob.enderdragon.growl", 1.0f, 5.0f); @@ -297,7 +297,7 @@ public void interactWithCreatures(EntityInteractEvent event) { if (Utils.notNullAndInstanceOf(event.target, EntitySpider.class)) { - if (Wearing.isWearingTheRightBackpack(player, "Spider")) + if (Wearing.isWearingTheRightBackpack(player, BackpackTypes.SPIDER)) { EntityFriendlySpider pet = new EntityFriendlySpider(event.target.worldObj); pet.setLocationAndAngles(event.target.posX, event.target.posY, event.target.posZ, event.target.rotationYaw, event.target.rotationPitch); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java index 59e513f8..7b552c1e 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java @@ -25,6 +25,7 @@ import com.darkona.adventurebackpack.item.ItemCoalJetpack; import com.darkona.adventurebackpack.item.ItemCopterPack; import com.darkona.adventurebackpack.item.ItemHose; +import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.reference.GeneralReference; /** @@ -77,16 +78,12 @@ else if (!GuiScreen.isCtrlKeyDown()) makeTip(pressKeyFormat(actionKeyFormat()), locals("backpack.cycling.key"), " " + switchTooltip(!cycling, false)); - String color = backpackTag.getString("colorName"); - for (String valid : Constants.NIGHTVISION_BACKPACKS) + if (BackpackTypes.isNightVision(BackpackTypes.getType(backpackTag.getByte("type")))) { - if (color.equals(valid)) - { - boolean vision = !backpackTag.getBoolean("disableNVision"); - makeTip(local("backpack.vision") + ": " + switchTooltip(vision, true)); - makeTip(pressShiftKeyFormat(actionKeyFormat()), locals("backpack.vision.key"), - " " + switchTooltip(!vision, false)); - } + boolean vision = !backpackTag.getBoolean("disableNVision"); + makeTip(local("backpack.vision") + ": " + switchTooltip(vision, true)); + makeTip(pressShiftKeyFormat(actionKeyFormat()), locals("backpack.vision.key"), + " " + switchTooltip(!vision, false)); } } } @@ -94,11 +91,11 @@ else if (theItem instanceof ItemCoalJetpack) { FluidTank waterTank = new FluidTank(Constants.JETPACK_WATER_CAPACITY); FluidTank steamTank = new FluidTank(Constants.JETPACK_STEAM_CAPACITY); - NBTTagCompound jetpackTag = event.itemStack.stackTagCompound.getCompoundTag(Constants.JETPACK_COMPOUND_TAG); + NBTTagCompound jetpackTag = event.itemStack.stackTagCompound.getCompoundTag(Constants.COMPOUND_TAG); if (GuiScreen.isShiftKeyDown()) { - NBTTagList itemList = jetpackTag.getTagList(Constants.JETPACK_INVENTORY, NBT.TAG_COMPOUND); + NBTTagList itemList = jetpackTag.getTagList(Constants.INVENTORY, NBT.TAG_COMPOUND); makeTip(local("jetpack.fuel") + ": " + slotStackTooltip(itemList, Constants.JETPACK_FUEL_SLOT)); waterTank.readFromNBT(jetpackTag.getCompoundTag(Constants.JETPACK_WATER_TANK)); diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java index d9cd7412..80aaf934 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java @@ -24,7 +24,7 @@ public class ModRecipes { private static ItemStack bc(int meta) { - return BackpackTypes.setBackpackSkinNameFromMeta(new ItemStack(ModItems.adventureBackpack), meta); + return BackpackTypes.setBackpackTypeFromMeta(new ItemStack(ModItems.adventureBackpack), meta); } public static void init() @@ -53,7 +53,7 @@ public static void init() if (ConfigHandler.recipeCopterPack) { ItemStack copterStack = new ItemStack(ModItems.copterPack); - copterStack.setTagCompound(new NBTTagCompound()); + copterStack.setTagCompound(new NBTTagCompound()); //TODO rework GameRegistry.addRecipe(copterStack, "WBW", @@ -73,8 +73,8 @@ public static void init() { ItemStack jetpackStack = new ItemStack(ModItems.coalJetpack); NBTTagCompound jetpackCompound = new NBTTagCompound(); - jetpackCompound.setTag(Constants.JETPACK_COMPOUND_TAG, new NBTTagCompound()); - jetpackStack.setTagCompound(jetpackCompound); + jetpackCompound.setTag(Constants.COMPOUND_TAG, new NBTTagCompound()); + jetpackStack.setTagCompound(jetpackCompound); //TODO check GameRegistry.addRecipe(jetpackStack, "SWT", @@ -267,7 +267,7 @@ public static void init() { if (field.getName().equals(BackpackTypes.getSkinName(type))) { - GameRegistry.addRecipe(new ShapedOreRecipe(BackpackTypes.setBackpackSkinNameFromMeta(new ItemStack(ModItems.adventureBackpack), BackpackTypes.getMeta(type)), (Object[]) field.get(br))); + GameRegistry.addRecipe(new ShapedOreRecipe(BackpackTypes.setBackpackTypeFromMeta(new ItemStack(ModItems.adventureBackpack), BackpackTypes.getMeta(type)), (Object[]) field.get(br))); counter++; } } diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java b/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java index bcad4302..3c3df8d8 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java @@ -27,34 +27,34 @@ */ public class ModWorldGen { - public static void init() //TODO tested IronGolem and BonusChest - ok + public static void init() { { - ItemStack backpack = BackpackTypes.setBackpackSkinNameFromMeta(new ItemStack(ModItems.adventureBackpack), BackpackTypes.getMeta(VILLAGER)); + ItemStack backpack = BackpackTypes.setBackpackTypeFromMeta(new ItemStack(ModItems.adventureBackpack), BackpackTypes.getMeta(VILLAGER)); VillagerRegistry.instance().registerVillageTradeHandler(1, new ModWorldGen.TradeHandler(backpack)); VillagerRegistry.instance().registerVillageTradeHandler(2, new ModWorldGen.TradeHandler(backpack)); VillagerRegistry.instance().registerVillageTradeHandler(3, new ModWorldGen.TradeHandler(backpack)); } if (ConfigHandler.allowGolemGen) { - ItemStack backpack = BackpackTypes.setBackpackSkinNameFromMeta(new ItemStack(ModItems.adventureBackpack), BackpackTypes.getMeta(IRON_GOLEM)); + ItemStack backpack = BackpackTypes.setBackpackTypeFromMeta(new ItemStack(ModItems.adventureBackpack), BackpackTypes.getMeta(IRON_GOLEM)); ChestGenHooks.addItem(ChestGenHooks.VILLAGE_BLACKSMITH, new WeightedRandomChestContent(backpack, 1, 1, 2)); } if (ConfigHandler.allowBatGen) { - ItemStack backpack = BackpackTypes.setBackpackSkinNameFromMeta(new ItemStack(ModItems.adventureBackpack), BackpackTypes.getMeta(BAT)); + ItemStack backpack = BackpackTypes.setBackpackTypeFromMeta(new ItemStack(ModItems.adventureBackpack), BackpackTypes.getMeta(BAT)); ChestGenHooks.addItem(ChestGenHooks.DUNGEON_CHEST, new WeightedRandomChestContent(backpack, 1, 1, 2)); ChestGenHooks.addItem(ChestGenHooks.MINESHAFT_CORRIDOR, new WeightedRandomChestContent(backpack, 1, 1, 12)); } if (ConfigHandler.allowPigmanGen) { - ItemStack backpack = BackpackTypes.setBackpackSkinNameFromMeta(new ItemStack(ModItems.adventureBackpack), BackpackTypes.getMeta(PIGMAN)); + ItemStack backpack = BackpackTypes.setBackpackTypeFromMeta(new ItemStack(ModItems.adventureBackpack), BackpackTypes.getMeta(PIGMAN)); ChestGenHooks.addItem(ChestGenHooks.PYRAMID_DESERT_CHEST, new WeightedRandomChestContent(backpack, 1, 1, 12)); VillagerRegistry.instance().registerVillageTradeHandler(BackpackTypes.getMeta(PIGMAN), new ModWorldGen.TradeHandler(backpack)); } if (ConfigHandler.allowBonusGen) { - ItemStack backpack = BackpackTypes.setBackpackSkinNameFromMeta(new ItemStack(ModItems.adventureBackpack), BackpackTypes.getMeta(STANDARD)); + ItemStack backpack = BackpackTypes.setBackpackTypeFromMeta(new ItemStack(ModItems.adventureBackpack), BackpackTypes.getMeta(STANDARD)); ChestGenHooks.addItem(ChestGenHooks.BONUS_CHEST, new WeightedRandomChestContent(backpack, 0, 1, 5)); } } @@ -79,13 +79,13 @@ public void manipulateTradesForVillager(EntityVillager villager, MerchantRecipeL //0 Farmer, 1 Librarian, 2Priest, 3 Blacksmith, 4 Butcher if (villager.getProfession() == 1 || villager.getProfession() == 2) { - ItemStack payment = BackpackTypes.setBackpackSkinNameFromMeta(new ItemStack(ModItems.adventureBackpack), 0); + ItemStack payment = BackpackTypes.setBackpackTypeFromMeta(new ItemStack(ModItems.adventureBackpack), 0); recipeList.add(new MerchantRecipe(new ItemStack(Items.emerald, 10), payment, this.backpack)); } if (villager.getProfession() == 3) { ItemStack payment = new ItemStack(ModItems.adventureBackpack); - BackpackTypes.setBackpackColorName(payment, "IronGolem"); + BackpackTypes.setBackpackType(payment, IRON_GOLEM); recipeList.add(new MerchantRecipe(new ItemStack(Items.emerald, 10), payment, this.backpack)); } } diff --git a/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipeTwo.java b/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipeTwo.java index bf65be50..edc3d8f8 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipeTwo.java +++ b/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipeTwo.java @@ -7,6 +7,7 @@ import net.minecraft.world.World; import com.darkona.adventurebackpack.init.ModItems; +import com.darkona.adventurebackpack.reference.BackpackTypes; /** * Created on 24/12/2014 @@ -17,18 +18,17 @@ public class AbstractBackpackRecipeTwo implements IRecipe { private ItemStack result; private ItemStack[] recipe; - private String name; + private BackpackTypes type; - public AbstractBackpackRecipeTwo(String name, ItemStack[] recipe) + public AbstractBackpackRecipeTwo(BackpackTypes type, ItemStack[] recipe) { this.recipe = recipe; - this.name = name; - this.result = makeBackpack(new ItemStack(ModItems.adventureBackpack), this.name); + this.type = type; + this.result = makeBackpack(new ItemStack(ModItems.adventureBackpack), this.type); } - public boolean compareStacks(ItemStack stack1, ItemStack stack2) + private boolean compareStacks(ItemStack stack1, ItemStack stack2) { - if (stack1 == null && stack2 == null) { return true; @@ -37,35 +37,30 @@ else if (stack1 != null && stack2 != null) { if (stack1.getItem().equals(stack2.getItem())) { - /*if(stack1.getItem() instanceof ItemAdventureBackpack) - { - return stack1.stackTagCompound.getString("colorName").equals("Standard"); - }*/ return ((stack1.getItemDamage() == stack2.getItemDamage())); } } return false; } - public static ItemStack makeBackpack(ItemStack backpackIn, String colorName) + private static ItemStack makeBackpack(ItemStack backpackIn, BackpackTypes type) { if (backpackIn == null) return null; if (backpackIn.stackTagCompound == null) { backpackIn.setTagCompound(new NBTTagCompound()); - backpackIn.stackTagCompound.setString("colorName", colorName); + backpackIn.stackTagCompound.setByte("type", BackpackTypes.getMeta(type)); } ItemStack newBackpack = backpackIn.copy(); NBTTagCompound compound = (NBTTagCompound) backpackIn.getTagCompound().copy(); newBackpack.setTagCompound(compound); - newBackpack.stackTagCompound.setString("colorName", colorName); + newBackpack.stackTagCompound.setByte("type", BackpackTypes.getMeta(type)); return newBackpack; } @Override public boolean matches(InventoryCrafting invC, World world) { - //LogHelper.info("Matching recipe"); if (this.recipe == null || invC == null) return false; for (int i = 0; i < invC.getSizeInventory(); i++) { @@ -73,7 +68,6 @@ public boolean matches(InventoryCrafting invC, World world) { return false; } - } return true; } @@ -83,7 +77,7 @@ public ItemStack getCraftingResult(InventoryCrafting invC) { if (matches(invC, null)) { - return makeBackpack(invC.getStackInSlot(4), this.name); + return makeBackpack(invC.getStackInSlot(4), this.type); } return null; } diff --git a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipe.java b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipe.java index 373fc4ee..3dd3c2ee 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipe.java +++ b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipe.java @@ -2,6 +2,8 @@ import net.minecraft.item.ItemStack; +import com.darkona.adventurebackpack.reference.BackpackTypes; + /** * Created on 24/12/2014 * @@ -10,16 +12,16 @@ public class BackpackRecipe { public ItemStack[] array; - public String name; + public BackpackTypes type; BackpackRecipe() { } - BackpackRecipe(String name, ItemStack[] array) + BackpackRecipe(BackpackTypes type, ItemStack[] array) { - this.name = name; + this.type = type; this.array = array; } } diff --git a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipesList.java b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipesList.java index 22e9e249..81f3ee9c 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipesList.java +++ b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipesList.java @@ -21,7 +21,7 @@ public class BackpackRecipesList public BackpackRecipesList() { String[] covered = {"XXX", "XaX", "XXX"}; - ItemStack backpack = BackpackTypes.setBackpackSkinNameFromMeta(new ItemStack(ModItems.adventureBackpack), 0); + ItemStack backpack = BackpackTypes.setBackpackTypeFromMeta(new ItemStack(ModItems.adventureBackpack), 0); ItemStack woolWhite = new ItemStack(Blocks.wool, 1, 0); ItemStack woolOrange = new ItemStack(Blocks.wool, 1, 1); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java index bf58ffe3..4f609004 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java @@ -23,8 +23,6 @@ public interface IInventoryAdventureBackpack extends IInventoryTanks ItemStack getParentItemStack(); - //String getColorName(); - BackpackTypes getType(); int getLastTime(); @@ -33,8 +31,6 @@ public interface IInventoryAdventureBackpack extends IInventoryTanks void setExtendedProperties(NBTTagCompound properties); - boolean isSpecial(); - boolean hasItem(Item item); void consumeInventoryItem(Item item); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index 8c8a0e80..3f86aaed 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -35,17 +35,39 @@ public class InventoryBackpack extends InventoryAdventureBackpack implements IIn private FluidTank rightTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); private BackpackTypes type = BackpackTypes.STANDARD; + private boolean disableNVision = false; private boolean disableCycling = false; - private boolean special = false; private int lastTime = 0; public InventoryBackpack(ItemStack backpack) { containerStack = backpack; + detectAndConvertFromOldNBTFormat(containerStack.stackTagCompound); openInventory(); } + private void detectAndConvertFromOldNBTFormat(NBTTagCompound compound) // need only for compatibility with old saves + { + if (compound == null || !compound.hasKey("backpackData")) + return; + + NBTTagCompound oldBackpackTag = compound.getCompoundTag("backpackData"); + NBTTagList oldItems = oldBackpackTag.getTagList("ABPItems", NBT.TAG_COMPOUND); + leftTank.readFromNBT(oldBackpackTag.getCompoundTag(LEFT_TANK)); + rightTank.readFromNBT(oldBackpackTag.getCompoundTag(RIGHT_TANK)); + type = BackpackTypes.getType(oldBackpackTag.getString("colorName")); + // + NBTTagCompound newBackpackTag = new NBTTagCompound(); + newBackpackTag.setTag(INVENTORY, oldItems); + newBackpackTag.setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); + newBackpackTag.setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); + newBackpackTag.setByte("type", BackpackTypes.getMeta(type)); + + compound.setTag(COMPOUND_TAG, newBackpackTag); + compound.removeTag("backpackData"); + } + @Override public FluidTank getLeftTank() { @@ -100,12 +122,6 @@ public void setExtendedProperties(NBTTagCompound properties) this.extendedProperties = properties; } - @Override - public boolean isSpecial() - { - return special; - } - @Override public boolean hasItem(Item item) { @@ -181,6 +197,7 @@ public void loadFromNBT(NBTTagCompound compound) return; //this need for NEI trying to render tile.backpack and comes here w/o nbt NBTTagCompound backpackTag = compound.getCompoundTag(COMPOUND_TAG); + type = BackpackTypes.getType(backpackTag.getByte("type")); NBTTagList items = backpackTag.getTagList(INVENTORY, NBT.TAG_COMPOUND); for (int i = 0; i < items.tagCount(); i++) { @@ -193,18 +210,17 @@ public void loadFromNBT(NBTTagCompound compound) } leftTank.readFromNBT(backpackTag.getCompoundTag(LEFT_TANK)); rightTank.readFromNBT(backpackTag.getCompoundTag(RIGHT_TANK)); - type = BackpackTypes.getType(backpackTag.getString("colorName")); - lastTime = backpackTag.getInteger("lastTime"); - special = backpackTag.getBoolean("special"); extendedProperties = backpackTag.getCompoundTag("extendedProperties"); disableCycling = backpackTag.getBoolean("disableCycling"); disableNVision = backpackTag.getBoolean("disableNVision"); + lastTime = backpackTag.getInteger("lastTime"); } @Override public void saveToNBT(NBTTagCompound compound) { NBTTagCompound backpackTag = new NBTTagCompound(); + backpackTag.setByte("type", BackpackTypes.getMeta(type)); NBTTagList items = new NBTTagList(); for (int i = 0; i < inventory.length; i++) { @@ -221,12 +237,10 @@ public void saveToNBT(NBTTagCompound compound) backpackTag.setTag(INVENTORY, items); backpackTag.setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); backpackTag.setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); - backpackTag.setString("colorName", BackpackTypes.getSkinName(type)); - backpackTag.setInteger("lastTime", lastTime); - backpackTag.setBoolean("special", BackpackTypes.isSpecial(type)); backpackTag.setTag("extendedProperties", extendedProperties); backpackTag.setBoolean("disableCycling", disableCycling); backpackTag.setBoolean("disableNVision", disableNVision); + backpackTag.setInteger("lastTime", lastTime); compound.setTag(COMPOUND_TAG, backpackTag); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index c1be3af6..055a3206 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -9,11 +9,11 @@ import com.darkona.adventurebackpack.common.Constants; +import static com.darkona.adventurebackpack.common.Constants.COMPOUND_TAG; +import static com.darkona.adventurebackpack.common.Constants.INVENTORY; import static com.darkona.adventurebackpack.common.Constants.JETPACK_BUCKET_IN; import static com.darkona.adventurebackpack.common.Constants.JETPACK_BUCKET_OUT; -import static com.darkona.adventurebackpack.common.Constants.JETPACK_COMPOUND_TAG; import static com.darkona.adventurebackpack.common.Constants.JETPACK_FUEL_SLOT; -import static com.darkona.adventurebackpack.common.Constants.JETPACK_INVENTORY; import static com.darkona.adventurebackpack.common.Constants.JETPACK_STEAM_TANK; import static com.darkona.adventurebackpack.common.Constants.JETPACK_WATER_TANK; @@ -58,7 +58,7 @@ public int getBurnTimeRemainingScaled(int scale) @Override public void loadFromNBT(NBTTagCompound compound) { - NBTTagCompound jetpackTag = compound.getCompoundTag(JETPACK_COMPOUND_TAG); + NBTTagCompound jetpackTag = compound.getCompoundTag(COMPOUND_TAG); waterTank.readFromNBT(jetpackTag.getCompoundTag(JETPACK_WATER_TANK)); steamTank.readFromNBT(jetpackTag.getCompoundTag(JETPACK_STEAM_TANK)); temperature = jetpackTag.getInteger("temperature"); @@ -70,7 +70,7 @@ public void loadFromNBT(NBTTagCompound compound) boiling = jetpackTag.getBoolean("boiling"); leaking = jetpackTag.getBoolean("leaking"); currentItemBurnTime = jetpackTag.getInteger("currentBurn"); - NBTTagList items = jetpackTag.getTagList(JETPACK_INVENTORY, NBT.TAG_COMPOUND); + NBTTagList items = jetpackTag.getTagList(INVENTORY, NBT.TAG_COMPOUND); for (int i = 0; i < items.tagCount(); i++) { NBTTagCompound item = items.getCompoundTagAt(i); @@ -85,7 +85,7 @@ public void loadFromNBT(NBTTagCompound compound) @Override public void saveToNBT(NBTTagCompound compound) { - NBTTagCompound jetpackTag = compound.getCompoundTag(JETPACK_COMPOUND_TAG); + NBTTagCompound jetpackTag = compound.getCompoundTag(COMPOUND_TAG); jetpackTag.setTag(JETPACK_WATER_TANK, waterTank.writeToNBT(new NBTTagCompound())); jetpackTag.setTag(JETPACK_STEAM_TANK, steamTank.writeToNBT(new NBTTagCompound())); jetpackTag.setInteger("temperature", temperature); @@ -109,8 +109,8 @@ public void saveToNBT(NBTTagCompound compound) items.appendTag(item); } } - jetpackTag.setTag(JETPACK_INVENTORY, items); - compound.setTag(JETPACK_COMPOUND_TAG, jetpackTag); + jetpackTag.setTag(INVENTORY, items); + compound.setTag(COMPOUND_TAG, jetpackTag); } @Override @@ -147,19 +147,19 @@ public void dirtyInventory() items.appendTag(item); } } - containerStack.stackTagCompound.getCompoundTag(JETPACK_COMPOUND_TAG).setTag(JETPACK_INVENTORY, items); + containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).setTag(INVENTORY, items); } @Override public void dirtyTanks() { - containerStack.stackTagCompound.getCompoundTag(JETPACK_COMPOUND_TAG).setTag(JETPACK_WATER_TANK, waterTank.writeToNBT(new NBTTagCompound())); - containerStack.stackTagCompound.getCompoundTag(JETPACK_COMPOUND_TAG).setTag(JETPACK_STEAM_TANK, steamTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).setTag(JETPACK_WATER_TANK, waterTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).setTag(JETPACK_STEAM_TANK, steamTank.writeToNBT(new NBTTagCompound())); } public void dirtyBoiler() { - NBTTagCompound jetpackTag = containerStack.stackTagCompound.getCompoundTag(JETPACK_COMPOUND_TAG); + NBTTagCompound jetpackTag = containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG); jetpackTag.setBoolean("boiling", boiling); jetpackTag.setBoolean("leaking", leaking); jetpackTag.setInteger("temperature", temperature); diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index ee7ffb45..b7a80cb0 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -68,12 +68,12 @@ public void getSubItems(Item item, CreativeTabs par2CreativeTabs, List subItems) if (type == BackpackTypes.UNKNOWN) continue; - ItemStack bp = new ItemStack(this, 1, 0); - bp.setItemDamage(BackpackTypes.getMeta(type)); - NBTTagCompound c = new NBTTagCompound(); - c.setString("colorName", BackpackTypes.getSkinName(type)); - BackpackUtils.setBackpackTag(bp, c); - subItems.add(bp); + ItemStack backpackStack = new ItemStack(this, 1, 0); + backpackStack.setItemDamage(BackpackTypes.getMeta(type)); + NBTTagCompound compound = new NBTTagCompound(); + compound.setByte("type", BackpackTypes.getMeta(type)); + BackpackUtils.setBackpackTag(backpackStack, compound); + subItems.add(backpackStack); } } @@ -83,29 +83,29 @@ public void getSubItems(Item item, CreativeTabs par2CreativeTabs, List subItems) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4) { NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(stack); - if (backpackTag.hasKey("colorName")) + if (backpackTag.hasKey("type")) { - String color = backpackTag.getString("colorName"); - BackpackTypes type = BackpackTypes.getType(color); //TODO it seems to be good + BackpackTypes type = BackpackTypes.getType(backpackTag.getByte("type")); + String skinName = BackpackTypes.getSkinName(type); switch (type) { case BAT: - list.add(EnumChatFormatting.DARK_PURPLE + color); + list.add(EnumChatFormatting.DARK_PURPLE + skinName); break; case DRAGON: - list.add(EnumChatFormatting.LIGHT_PURPLE + color); + list.add(EnumChatFormatting.LIGHT_PURPLE + skinName); break; case PIGMAN: - list.add(EnumChatFormatting.RED + color); + list.add(EnumChatFormatting.RED + skinName); break; case RAINBOW: - list.add(Utils.makeItRainbow(color)); + list.add(Utils.makeItRainbow(skinName)); break; case SQUID: - list.add(EnumChatFormatting.DARK_AQUA + color); + list.add(EnumChatFormatting.DARK_AQUA + skinName); break; default: - list.add(color); + list.add(skinName); break; } } @@ -115,7 +115,7 @@ public void addInformation(ItemStack stack, EntityPlayer player, List list, bool public void onCreated(ItemStack stack, World par2World, EntityPlayer par3EntityPlayer) { super.onCreated(stack, par2World, par3EntityPlayer); - BackpackTypes.setBackpackSkinNameFromMeta(stack, stack.getItemDamage()); + BackpackTypes.setBackpackTypeFromMeta(stack, stack.getItemDamage()); } @Override @@ -194,9 +194,9 @@ private boolean placeBackpack(ItemStack stack, EntityPlayer player, World world, { if (stack.stackSize == 0 || !player.canPlayerEdit(x, y, z, side, stack)) return false; if (!stack.hasTagCompound()) stack.setTagCompound(new NBTTagCompound()); - if (!stack.stackTagCompound.hasKey("colorName") || stack.stackTagCompound.getString("colorName").isEmpty()) + if (!stack.stackTagCompound.hasKey("type")) { - stack.stackTagCompound.setString("colorName", "Standard"); + stack.stackTagCompound.setByte("type", BackpackTypes.getMeta(BackpackTypes.STANDARD)); } // world.spawnEntityInWorld(new EntityLightningBolt(world, x, y, z)); @@ -272,7 +272,7 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) if (!ConfigHandler.backpackAbilities || world == null || player == null || stack == null) return; - if (BackpackAbilities.hasAbility(BackpackTypes.getBackpackColorName(stack))) + if (BackpackTypes.isSpecial(BackpackTypes.getType(stack))) { BackpackAbilities.backpackAbilities.executeAbility(player, world, stack); } @@ -281,7 +281,7 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) @Override public void onUnequipped(World world, EntityPlayer player, ItemStack stack) { - if (BackpackAbilities.hasRemoval(BackpackTypes.getBackpackColorName(stack))) + if (BackpackTypes.hasProperty(BackpackTypes.getType(stack), BackpackTypes.Props.REMOVAL)) { BackpackAbilities.backpackAbilities.executeRemoval(player, world, stack); } @@ -327,13 +327,13 @@ public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack stack, public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) { String modelTexture; - if (BackpackTypes.getBackpackColorName(stack).equals("Standard")) //TODO rework to type + if (BackpackTypes.getType(stack) == BackpackTypes.STANDARD) { modelTexture = Resources.backpackTextureFromString(ModDates.getHoliday()).toString(); } else { - modelTexture = Resources.backpackTexturesStringFromColor(stack); + modelTexture = Resources.backpackTexturesStringFromSkin(stack); } return modelTexture; } @@ -351,13 +351,13 @@ public ResourceLocation getWearableTexture(ItemStack wearable) { ResourceLocation modelTexture; - if (BackpackTypes.getBackpackColorName(wearable).equals("Standard")) + if (BackpackTypes.getType(wearable) == BackpackTypes.STANDARD) { modelTexture = Resources.backpackTextureFromString(ModDates.getHoliday()); } else { - modelTexture = Resources.backpackTextureFromString(BackpackTypes.getBackpackColorName(wearable)); + modelTexture = Resources.backpackTextureFromString(BackpackTypes.getSkinName(wearable)); } return modelTexture; } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index e9c7e1ab..68c6a5e6 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -58,8 +58,8 @@ public void getSubItems(Item item, CreativeTabs tab, List list) NBTTagCompound jetpackTag = new NBTTagCompound(); //jetpackTag.setTag(Constants.JETPACK_WATER_TANK, new FluidTank(Constants.JETPACK_WATER_CAPACITY).writeToNBT(new NBTTagCompound())); //jetpackTag.setTag(Constants.JETPACK_STEAM_TANK, new FluidTank(Constants.JETPACK_STEAM_CAPACITY).writeToNBT(new NBTTagCompound())); - //jetpackTag.setTag(Constants.JETPACK_INVENTORY, new NBTTagList()); - compound.setTag(Constants.JETPACK_COMPOUND_TAG, jetpackTag); + //jetpackTag.setTag(Constants.INVENTORY, new NBTTagList()); + compound.setTag(Constants.COMPOUND_TAG, jetpackTag); list.add(iStack); } @@ -297,7 +297,7 @@ public double getDurabilityForDisplay(ItemStack stack) private int getTemperature(ItemStack jetpack) { - return jetpack.stackTagCompound.getCompoundTag(Constants.JETPACK_COMPOUND_TAG).getInteger("temperature"); + return jetpack.stackTagCompound.getCompoundTag(Constants.COMPOUND_TAG).getInteger("temperature"); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java index 218c0cc2..8cd43d34 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java @@ -124,7 +124,6 @@ public enum BackpackTypes //TODO step2: add support for recipes (see BackpackRecipesList). new field 'Object[]'? //TODO step3: rework NBT for wearable packs. unificate and simplify structure. - //TODO step4: remove all internal interactions by colorName (skinName), replace by enum. maybe remove NBT field too cuz we need only meta BackpackTypes(int meta, String skin, Props... props) { @@ -189,22 +188,17 @@ public static String getSkinName(BackpackTypes type) public static String getSkinName(int meta) { - return getType(meta).skinName; //TODO can be optimized? + return getType(meta).skinName; } - public static byte getMeta(BackpackTypes type) + public static String getSkinName(ItemStack backpack) { - return type.meta; + return getSkinName(getType(backpack)); } - public static BackpackTypes getType(String skinName) + public static byte getMeta(BackpackTypes type) { - for (BackpackTypes type : BackpackTypes.values()) - { - if (type.skinName.equals(skinName)) - return type; - } - return UNKNOWN; + return type.meta; } public static BackpackTypes getType(int meta) @@ -221,6 +215,29 @@ public static BackpackTypes getType(byte meta) return type != null ? type : UNKNOWN; } + public static BackpackTypes getType(String skinName) + { + for (BackpackTypes type : BackpackTypes.values()) + { + if (type.skinName.equals(skinName)) + return type; + } + return UNKNOWN; + } + + public static BackpackTypes getType(ItemStack backpack) + { + if (backpack == null) // well... Wearing.getWearingBackpack() may return null... + return null; + + NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(backpack); + if (backpackTag.getByte("type") == UNKNOWN.meta) //TODO remove? stay? + { + backpackTag.setByte("type", STANDARD.meta); + } + return getType(backpackTag.getByte("type")); + } + public static int getLowestUnusedMeta() { for (byte i = 0; i <= 126; i++) @@ -265,40 +282,23 @@ public enum Props // --- - public static ItemStack setBackpackSkinNameFromMeta(ItemStack backpack, int meta) + public static ItemStack setBackpackTypeFromMeta(ItemStack backpack, int meta) { if (backpack == null || !(backpack.getItem() instanceof ItemAdventureBackpack)) return null; NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(backpack); - backpack.setItemDamage(meta); - backpackTag.setString("colorName", getSkinName(meta)); + backpack.setItemDamage(meta); //TODO 0?? + backpackTag.setByte("type", (byte) meta); BackpackUtils.setBackpackTag(backpack, backpackTag); return backpack; } - public static String getBackpackColorName(ItemStack backpack) //TODO rework + public static void setBackpackType(ItemStack backpack, BackpackTypes type) { - if (backpack == null) - return ""; - - NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(backpack); - if (backpackTag.getString("colorName").isEmpty()) - { - backpackTag.setString("colorName", "Standard"); - } - - return backpackTag.getString("colorName"); - } - - public static void setBackpackColorName(ItemStack backpack, String newName) //TODO rework, del - { - if (backpack == null) - return; - NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(backpack); - backpackTag.setString("colorName", newName); + backpackTag.setByte("type", getMeta(type)); BackpackUtils.setBackpackTag(backpack, backpackTag); } } diff --git a/src/main/java/com/darkona/adventurebackpack/util/Resources.java b/src/main/java/com/darkona/adventurebackpack/util/Resources.java index 585205c9..17cef1df 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Resources.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Resources.java @@ -21,9 +21,9 @@ public static String modelTextureResourceString(String name) return new ResourceLocation(TEXTURE_LOCATION, "textures/models/" + name).toString(); } - public static String backpackTexturesStringFromColor(ItemStack backpack) + public static String backpackTexturesStringFromSkin(ItemStack backpack) { - return new ResourceLocation(TEXTURE_LOCATION, "textures/backpack/" + BackpackTypes.getBackpackColorName(backpack) + ".png").toString(); + return new ResourceLocation(TEXTURE_LOCATION, "textures/backpack/" + BackpackTypes.getSkinName(backpack) + ".png").toString(); } public static ResourceLocation backpackTextureFromString(String color) @@ -31,7 +31,7 @@ public static ResourceLocation backpackTextureFromString(String color) return new ResourceLocation(TEXTURE_LOCATION, "textures/backpack/" + color + ".png"); } - public static ResourceLocation backpackTextureFromColor(IInventoryAdventureBackpack adventureBackpack) + public static ResourceLocation backpackTextureFromSkin(IInventoryAdventureBackpack adventureBackpack) { return new ResourceLocation(TEXTURE_LOCATION, "textures/backpack/" + BackpackTypes.getSkinName(adventureBackpack.getType()) + ".png"); } diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index 13b35047..7e367dad 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -283,7 +283,7 @@ private static boolean areCoordinatesTheSame2D(int X1, int Z1, int X2, int Z2) * * @return true if the object is not null and is an instance of the supplied class. */ - public static boolean notNullAndInstanceOf(Object object, Class clazz) + public static boolean notNullAndInstanceOf(Object object, Class clazz) //TODO double check this { return object != null && clazz.isInstance(object); } diff --git a/src/main/java/com/darkona/adventurebackpack/util/Wearing.java b/src/main/java/com/darkona/adventurebackpack/util/Wearing.java index f1d7c5f3..9b0c23df 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Wearing.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Wearing.java @@ -58,16 +58,14 @@ public static boolean isWearingBackpack(EntityPlayer player) return BackpackProperty.get(player).getWearable() != null && BackpackProperty.get(player).getWearable().getItem() instanceof ItemAdventureBackpack; } - public static boolean isWearingTheRightBackpack(EntityPlayer player, String... backpacks) + public static boolean isWearingTheRightBackpack(EntityPlayer player, BackpackTypes... backpacks) { if (Wearing.isWearingBackpack(player)) { - for (String name : backpacks) + for (BackpackTypes type : backpacks) { - if (BackpackTypes.getBackpackColorName(Wearing.getWearingBackpack(player)).equals(name)) - { + if (BackpackTypes.getType(Wearing.getWearingBackpack(player)) == type) return true; - } } } return false; From 3cfa0b905baeb75fb6be8cb54047d6659eaf1aee Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 23 Jan 2018 04:38:57 +0700 Subject: [PATCH 413/462] Rework copter fuels config allowing add/delete fuels --- .../adventurebackpack/AdventureBackpack.java | 3 ++ .../config/ConfigHandler.java | 25 ++-------- .../adventurebackpack/init/ModFluids.java | 3 -- .../reference/GeneralReference.java | 47 ++++++++++++++----- 4 files changed, 42 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java index dca27a15..1973e37c 100644 --- a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java @@ -27,6 +27,7 @@ import com.darkona.adventurebackpack.init.ModRecipes; import com.darkona.adventurebackpack.init.ModWorldGen; import com.darkona.adventurebackpack.proxy.IProxy; +import com.darkona.adventurebackpack.reference.GeneralReference; import com.darkona.adventurebackpack.reference.ModInfo; import com.darkona.adventurebackpack.util.LogHelper; @@ -84,6 +85,8 @@ public void init(FMLInitializationEvent event) @Mod.EventHandler public void postInit(FMLPostInitializationEvent event) { + GeneralReference.init(); + ConfigHandler.IS_DEVENV = (Boolean) Launch.blackboard.get("fml.deobfuscatedEnvironment"); if (ConfigHandler.IS_DEVENV) diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 822441a1..b1a5d82f 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -54,6 +54,10 @@ public class ConfigHandler public static boolean enableItemFilters = false; public static String[] forbiddenDimensions; + public static String[] copterFuels; + public static String[] fuelsDefault = {"biodiesel, 1.0", "biofuel, 1.0", "bioethanol, 1.5", "creosote, 7.0", + "fuel, 0.8", "lava, 7.0", "liquid_light_oil, 3.0", "liquid_medium_oil, 3.0", "liquid_heavy_oil, 3.0", + "liquid_light_fuel, 1.0", "liquid_heavy_fuel, 1.3", "nitrofuel, 0.4", "oil, 3.0", "rocket_fuel, 0.8"}; public static String[] nameLocalized; public static String[] nameInternalID; @@ -61,16 +65,6 @@ public class ConfigHandler public static String[] nameUnlocalized; public static String[] nameDefault = {}; - public static float fuelRateBioFuel = 1.0f; - public static float fuelRateBioEthanol = 1.5f; - public static float fuelRateCreosote = 7.0f; - public static float fuelRateFuel = 0.8f; - public static float fuelRateFuelLight = 1.0f; - public static float fuelRateFuelHeavy = 1.3f; - public static float fuelRateFuelNitro = 0.4f; - public static float fuelRateLava = 5.0f; - public static float fuelRateOil = 3.0f; - public static boolean consumeDragonEgg = false; public static boolean recipeAdventuresSet = true; public static boolean recipeInflatableBoat = true; @@ -147,6 +141,7 @@ private static void loadConfiguration() // Items enableItemFilters = config.getBoolean("Enable Item Filters", "items", true, "Enable filters from Disallow category"); forbiddenDimensions = config.getStringList("Forbidden Dimensions", "items", nameDefault, "Disallow opening backpack inventory for specific dimension ID"); + copterFuels = config.getStringList("Valid Copter Fuels", "items", fuelsDefault, "List of valid fuels for Copter. Consumption rate range: 0.05 ~ 20.0. Format: 'fluid, rate', ex.: 'water, 0.0'"); // Items.Disallowed nameLocalized = config.getStringList("By Displayed Name", "items.disallowed", nameDefault, "Disallow items by displayed (localized) name. Not case sensitive. Worst option, use only when there is no choice. Example: Dirt"); @@ -154,16 +149,6 @@ private static void loadConfiguration() nameInternalIDs = config.getStringList("By Internal IDs", "items.disallowed", nameDefault, "Disallow items by internal ID. Case sensitive. Will be disallowed all items containing that word in their IDs. Use with caution. Example: minecraft:di"); nameUnlocalized = config.getStringList("By Internal Name", "items.disallowed", nameDefault, "Disallow items by internal (unlocalized) name. Not case sensitive. Example: tile.dirt"); - // Items.Fuel - fuelRateBioFuel = config.getFloat("BioFuel", "items.fuel", 1.0f, 0.05f, 20.0f, "BioFuel consumption rate"); - fuelRateBioEthanol = config.getFloat("BioEthanol", "items.fuel", 1.5f, 0.05f, 20.0f, "BioEthanol consumption rate"); - fuelRateCreosote = config.getFloat("Creosote", "items.fuel", 7.0f, 0.05f, 20.0f, "Creosote consumption rate"); - fuelRateFuel = config.getFloat("Fuel", "items.fuel", 0.8f, 0.05f, 20.0f, "Fuel / rocket fuel consumption rate"); - fuelRateFuelLight = config.getFloat("FuelLight", "items.fuel", 1.0f, 0.05f, 20.0f, "Light Fuel consumption rate"); - fuelRateFuelHeavy = config.getFloat("FuelHeavy", "items.fuel", 1.3f, 0.05f, 20.0f, "Heavy Fuel consumption rate"); - fuelRateFuelNitro = config.getFloat("FuelNitro", "items.fuel", 0.4f, 0.05f, 20.0f, "Nitro Fuel consumption rate"); - fuelRateLava = config.getFloat("Lava", "items.fuel", 5.0f, 0.05f, 20.0f, "Lava consumption rate"); - fuelRateOil = config.getFloat("Oil", "items.fuel", 3.0f, 0.05f, 20.0f, "Oil consumption rate"); // Items.Recipes consumeDragonEgg = config.getBoolean("Consume Dragon Egg", "items.recipes", false, "Consume Dragon Egg when Dragon backpack crafted?"); diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModFluids.java b/src/main/java/com/darkona/adventurebackpack/init/ModFluids.java index f48b04a5..adb334b6 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModFluids.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModFluids.java @@ -8,7 +8,6 @@ import com.darkona.adventurebackpack.fluids.FluidMelonJuice; import com.darkona.adventurebackpack.fluids.FluidMilk; import com.darkona.adventurebackpack.fluids.FluidMushroomStew; -import com.darkona.adventurebackpack.reference.GeneralReference; /** * Created on 12/10/2014. @@ -35,7 +34,5 @@ public static void init() FluidRegistry.registerFluid(mushroomStew); FluidContainerRegistry.registerFluidContainer(mushroomStew, new ItemStack(Items.mushroom_stew), new ItemStack(Items.bowl)); - - GeneralReference.init(); } } diff --git a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java index b03b6edc..c36b1476 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java @@ -3,8 +3,10 @@ import java.util.HashMap; import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidRegistry; import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.util.LogHelper; /** * Created on 16/01/2015 @@ -17,19 +19,38 @@ public class GeneralReference public static void init() { - liquidFuels.put("biofuel", ConfigHandler.fuelRateBioFuel); // ? - liquidFuels.put("bioethanol", ConfigHandler.fuelRateBioEthanol); // ic2 ethanol - liquidFuels.put("creosote", ConfigHandler.fuelRateCreosote); - liquidFuels.put("fuel", ConfigHandler.fuelRateFuel); - liquidFuels.put("lava", ConfigHandler.fuelRateLava); - liquidFuels.put("liquid_light_oil", ConfigHandler.fuelRateOil); - liquidFuels.put("liquid_medium_oil", ConfigHandler.fuelRateOil); - liquidFuels.put("liquid_heavy_oil", ConfigHandler.fuelRateOil); - liquidFuels.put("liquid_light_fuel", ConfigHandler.fuelRateFuelLight); - liquidFuels.put("liquid_heavy_fuel", ConfigHandler.fuelRateFuelHeavy); - liquidFuels.put("nitrofuel", ConfigHandler.fuelRateFuelNitro); - liquidFuels.put("oil", ConfigHandler.fuelRateOil); - liquidFuels.put("rocket_fuel", ConfigHandler.fuelRateFuel); + parseFuels(); + } + + private static void parseFuels() + { + for (String fuel : ConfigHandler.copterFuels) + { + String[] arrFuel = fuel + .replaceAll(" ", "") + .split(","); + + if (arrFuel.length == 2) + { + float rate; + + try + { + rate = Float.parseFloat(arrFuel[1]); + } + catch (NumberFormatException e) + { + rate = 100.0f; + LogHelper.error("Cannot parse consumption rate for " + arrFuel[0] + ". Ignored."); + } + + if ((rate >= 0.049f && rate <= 20.001f) && FluidRegistry.isFluidRegistered(arrFuel[0])) + { + liquidFuels.put(arrFuel[0], rate); + LogHelper.info("Registered " + arrFuel[0] + " as Copter fuel with consumption rate " + rate); + } + } + } } public static boolean isValidFuel(Fluid fluid) From 43a332586136a112654edc815006e71ceac04c26 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 23 Jan 2018 07:12:39 +0700 Subject: [PATCH 414/462] Lava rate correction --- .../com/darkona/adventurebackpack/config/ConfigHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index b1a5d82f..5c8f31db 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -56,7 +56,7 @@ public class ConfigHandler public static String[] forbiddenDimensions; public static String[] copterFuels; public static String[] fuelsDefault = {"biodiesel, 1.0", "biofuel, 1.0", "bioethanol, 1.5", "creosote, 7.0", - "fuel, 0.8", "lava, 7.0", "liquid_light_oil, 3.0", "liquid_medium_oil, 3.0", "liquid_heavy_oil, 3.0", + "fuel, 0.8", "lava, 5.0", "liquid_light_oil, 3.0", "liquid_medium_oil, 3.0", "liquid_heavy_oil, 3.0", "liquid_light_fuel, 1.0", "liquid_heavy_fuel, 1.3", "nitrofuel, 0.4", "oil, 3.0", "rocket_fuel, 0.8"}; public static String[] nameLocalized; From d074a72313d3bc85e8df9c066e02fac0b9b1d5ed Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 23 Jan 2018 08:37:06 +0700 Subject: [PATCH 415/462] Woo hoo! --- .../java/com/darkona/adventurebackpack/init/ModRecipes.java | 4 ++-- .../darkona/adventurebackpack/inventory/InventoryActions.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java index 80aaf934..79c1b54d 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java @@ -49,9 +49,9 @@ public static void init() 'x', Items.coal, 'c', "cobblestone")); - //Copter Pack if (ConfigHandler.recipeCopterPack) { + //Copter Pack ItemStack copterStack = new ItemStack(ModItems.copterPack); copterStack.setTagCompound(new NBTTagCompound()); //TODO rework @@ -68,9 +68,9 @@ public static void init() 'I', Items.iron_ingot); } - //CoalJetpack if (ConfigHandler.recipeCoalJetpack) { + //CoalJetpack ItemStack jetpackStack = new ItemStack(ModItems.coalJetpack); NBTTagCompound jetpackCompound = new NBTTagCompound(); jetpackCompound.setTag(Constants.COMPOUND_TAG, new NBTTagCompound()); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java index eee88f1b..6768c5c9 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java @@ -170,7 +170,7 @@ public static boolean hasBlockItem(IInventoryAdventureBackpack backpack, Block i public static boolean areContainersOfSameType(ItemStack stackIn, ItemStack stackOut) { - if (stackIn == null || stackOut == null || stackIn.getItem() == null || stackOut.getItem() == null) + if (stackIn == null || stackOut == null) return false; if (SlotFluid.isFilled(stackIn) && SlotFluid.isEmpty(stackOut)) From b22454d64720a05deda952505f930f348ab9f322 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 24 Jan 2018 05:15:03 +0700 Subject: [PATCH 416/462] Fixed Copter sound, clicks are removed --- .../adventurebackpack/AdventureBackpack.java | 4 +- .../client/audio/CopterPackSound.java | 2 +- .../config/ConfigHandler.java | 5 +-- .../reference/GeneralReference.java | 37 ++++++++++-------- .../assets/adventurebackpack/sounds.json | 10 ++--- .../adventurebackpack/sounds/helicopter3.ogg | Bin 0 -> 109732 bytes 6 files changed, 31 insertions(+), 27 deletions(-) create mode 100644 src/main/resources/assets/adventurebackpack/sounds/helicopter3.ogg diff --git a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java index 1973e37c..4584cda0 100644 --- a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java @@ -85,8 +85,6 @@ public void init(FMLInitializationEvent event) @Mod.EventHandler public void postInit(FMLPostInitializationEvent event) { - GeneralReference.init(); - ConfigHandler.IS_DEVENV = (Boolean) Launch.blackboard.get("fml.deobfuscatedEnvironment"); if (ConfigHandler.IS_DEVENV) @@ -100,6 +98,8 @@ public void postInit(FMLPostInitializationEvent event) if (ConfigHandler.IS_ENDERIO) LogHelper.info("EnderIO is present. Acting accordingly"); + GeneralReference.init(); + //ConditionalFluidEffect.init(); //ModItems.conditionalInit(); //ModRecipes.conditionalInit(); diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java index 055d817f..4ff64a4d 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java @@ -24,7 +24,7 @@ public class CopterPackSound extends MovingSound public CopterPackSound(EntityPlayer player) { - super(new ResourceLocation(ModInfo.MOD_ID, "helicopter")); + super(new ResourceLocation(ModInfo.MOD_ID, "helicopter3")); volume = 0.6f; pitch = 1.0F; thePlayer = player; diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 5c8f31db..90a55f15 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -55,7 +55,7 @@ public class ConfigHandler public static boolean enableItemFilters = false; public static String[] forbiddenDimensions; public static String[] copterFuels; - public static String[] fuelsDefault = {"biodiesel, 1.0", "biofuel, 1.0", "bioethanol, 1.5", "creosote, 7.0", + public static String[] defaultFuels = {"biodiesel, 1.0", "biofuel, 1.0", "bioethanol, 1.5", "creosote, 7.0", "fuel, 0.8", "lava, 5.0", "liquid_light_oil, 3.0", "liquid_medium_oil, 3.0", "liquid_heavy_oil, 3.0", "liquid_light_fuel, 1.0", "liquid_heavy_fuel, 1.3", "nitrofuel, 0.4", "oil, 3.0", "rocket_fuel, 0.8"}; @@ -141,7 +141,7 @@ private static void loadConfiguration() // Items enableItemFilters = config.getBoolean("Enable Item Filters", "items", true, "Enable filters from Disallow category"); forbiddenDimensions = config.getStringList("Forbidden Dimensions", "items", nameDefault, "Disallow opening backpack inventory for specific dimension ID"); - copterFuels = config.getStringList("Valid Copter Fuels", "items", fuelsDefault, "List of valid fuels for Copter. Consumption rate range: 0.05 ~ 20.0. Format: 'fluid, rate', ex.: 'water, 0.0'"); + copterFuels = config.getStringList("Valid Copter Fuels", "items", defaultFuels, "List of valid fuels for Copter. Consumption rate range: 0.05 ~ 20.0. Format: 'fluid, rate', ex.: 'water, 0.0'"); // Items.Disallowed nameLocalized = config.getStringList("By Displayed Name", "items.disallowed", nameDefault, "Disallow items by displayed (localized) name. Not case sensitive. Worst option, use only when there is no choice. Example: Dirt"); @@ -149,7 +149,6 @@ private static void loadConfiguration() nameInternalIDs = config.getStringList("By Internal IDs", "items.disallowed", nameDefault, "Disallow items by internal ID. Case sensitive. Will be disallowed all items containing that word in their IDs. Use with caution. Example: minecraft:di"); nameUnlocalized = config.getStringList("By Internal Name", "items.disallowed", nameDefault, "Disallow items by internal (unlocalized) name. Not case sensitive. Example: tile.dirt"); - // Items.Recipes consumeDragonEgg = config.getBoolean("Consume Dragon Egg", "items.recipes", false, "Consume Dragon Egg when Dragon backpack crafted?"); recipeAdventuresSet = config.getBoolean("Adventures Set", "items.recipes", true, "Enable/Disable recipe for Adventure's Hat, Suit and Pants"); diff --git a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java index c36b1476..17e8fc58 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java @@ -15,14 +15,20 @@ */ public class GeneralReference { - public static HashMap liquidFuels = new HashMap(); + public static HashMap liquidFuels = new HashMap<>(); + + private static final float MAX_RATE = 20.0f; + private static final float MIN_RATE = 0.05f; public static void init() { - parseFuels(); + parseFuelConfig(); + + if (ConfigHandler.IS_DEVENV) + liquidFuels.put("holywater", 0.0f); // shhh.. you did not see anything. hallelujah! } - private static void parseFuels() + private static void parseFuelConfig() { for (String fuel : ConfigHandler.copterFuels) { @@ -30,25 +36,26 @@ private static void parseFuels() .replaceAll(" ", "") .split(","); - if (arrFuel.length == 2) - { - float rate; + if (arrFuel.length != 2) + continue; + String fluid = arrFuel[0]; + float rate; + + if (FluidRegistry.isFluidRegistered(fluid)) + { try { rate = Float.parseFloat(arrFuel[1]); } catch (NumberFormatException e) { - rate = 100.0f; - LogHelper.error("Cannot parse consumption rate for " + arrFuel[0] + ". Ignored."); - } - - if ((rate >= 0.049f && rate <= 20.001f) && FluidRegistry.isFluidRegistered(arrFuel[0])) - { - liquidFuels.put(arrFuel[0], rate); - LogHelper.info("Registered " + arrFuel[0] + " as Copter fuel with consumption rate " + rate); + rate = MAX_RATE; + LogHelper.error("Cannot parse consumption rate for " + fluid + ". Setting MAX rate"); } + rate = rate < MIN_RATE ? MIN_RATE : (rate > MAX_RATE ? MAX_RATE : rate); + liquidFuels.put(fluid, rate); + LogHelper.info("Registered " + fluid + " as Copter fuel with consumption rate " + rate); } } } @@ -60,9 +67,7 @@ public static boolean isValidFuel(Fluid fluid) for (String fuel : liquidFuels.keySet()) { if (fuel.equals(fluid.getName())) - { return true; - } } } return false; diff --git a/src/main/resources/assets/adventurebackpack/sounds.json b/src/main/resources/assets/adventurebackpack/sounds.json index e9855cfb..b1e6bd0b 100644 --- a/src/main/resources/assets/adventurebackpack/sounds.json +++ b/src/main/resources/assets/adventurebackpack/sounds.json @@ -1,8 +1,8 @@ { "nyan":{"category":"player","sounds":[{"name":"nyan","stream":"true"}]}, - "helicopter":{"category":"player","sounds":[{"name":"helicopter","stream":"false"}]}, - "crossbowshot":{"category":"master","sounds":[{"name":"crossbowShot","stream":"false"}]}, - "s_jetpackon":{"category":"player","sounds":[{"name":"s_jetpackon","stream":"false"}]}, - "s_boiling":{"category":"player","sounds":[{"name":"s_boiling","stream":"false"}]}, - "s_background2":{"category":"player","sounds":[{"name":"s_background2","stream":"false"}]} + "helicopter3":{"category":"player","sounds":[{"name":"helicopter3","stream":"false"}]}, + "crossbowshot":{"category":"master","sounds":[{"name":"crossbowShot","stream":"false"}]}, + "s_jetpackon":{"category":"player","sounds":[{"name":"s_jetpackon","stream":"false"}]}, + "s_boiling":{"category":"player","sounds":[{"name":"s_boiling","stream":"false"}]}, + "s_background2":{"category":"player","sounds":[{"name":"s_background2","stream":"false"}]} } \ No newline at end of file diff --git a/src/main/resources/assets/adventurebackpack/sounds/helicopter3.ogg b/src/main/resources/assets/adventurebackpack/sounds/helicopter3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e0c5e75eb842b8011dfbaa2e2e7df01598c3edf8 GIT binary patch literal 109732 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 literal 0 HcmV?d00001 From fb112577842e60cb181d279e5287e9e0fe699619 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 24 Jan 2018 10:23:25 +0700 Subject: [PATCH 417/462] A bit more logging --- .../block/TileAdventureBackpack.java | 8 +++---- .../adventurebackpack/common/Constants.java | 4 ++-- .../common/ServerActions.java | 4 ++-- .../handlers/TooltipEventHandler.java | 4 ++-- .../adventurebackpack/init/ModRecipes.java | 2 +- .../inventory/InventoryBackpack.java | 22 +++++++++---------- .../inventory/InventoryCoalJetpack.java | 16 +++++++------- .../item/ItemAdventureBackpack.java | 2 +- .../item/ItemCoalJetpack.java | 4 ++-- .../reference/BackpackTypes.java | 3 +-- .../reference/GeneralReference.java | 18 +++++++++++++++ .../adventurebackpack/util/BackpackUtils.java | 6 ++--- 12 files changed, 55 insertions(+), 38 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 16cd21fe..50a29ae0 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -37,7 +37,7 @@ import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_RIGHT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_LEFT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_RIGHT; -import static com.darkona.adventurebackpack.common.Constants.COMPOUND_TAG; +import static com.darkona.adventurebackpack.common.Constants.WEARABLE_TAG; import static com.darkona.adventurebackpack.common.Constants.INVENTORY; import static com.darkona.adventurebackpack.common.Constants.LEFT_TANK; import static com.darkona.adventurebackpack.common.Constants.LOWER_TOOL; @@ -285,7 +285,7 @@ private void convertFromOldNBTFormat(NBTTagCompound compound) newBackpackTag.setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); newBackpackTag.setByte("type", BackpackTypes.getMeta(type)); - compound.setTag(COMPOUND_TAG, newBackpackTag); + compound.setTag(WEARABLE_TAG, newBackpackTag); compound.removeTag("backpackData"); } @@ -298,7 +298,7 @@ public void loadFromNBT(NBTTagCompound compound) if (compound.hasKey("ench")) ench = compound.getTagList("ench", NBT.TAG_COMPOUND); - NBTTagCompound backpackTag = compound.getCompoundTag(COMPOUND_TAG); + NBTTagCompound backpackTag = compound.getCompoundTag(WEARABLE_TAG); type = BackpackTypes.getType(backpackTag.getByte("type")); NBTTagList items = backpackTag.getTagList(INVENTORY, NBT.TAG_COMPOUND); for (int i = 0; i < items.tagCount(); i++) @@ -346,7 +346,7 @@ public void saveToNBT(NBTTagCompound compound) backpackTag.setBoolean("disableNVision", disableNVision); backpackTag.setInteger("lastTime", lastTime); - compound.setTag(COMPOUND_TAG, backpackTag); + compound.setTag(WEARABLE_TAG, backpackTag); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/common/Constants.java b/src/main/java/com/darkona/adventurebackpack/common/Constants.java index 41d2c836..c2f30f0f 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/Constants.java +++ b/src/main/java/com/darkona/adventurebackpack/common/Constants.java @@ -16,7 +16,7 @@ public enum Source public static final int BUCKET = FluidContainerRegistry.BUCKET_VOLUME; - public static final String COMPOUND_TAG = "wearableData"; + public static final String WEARABLE_TAG = "wearableData"; //TODO "wearable" public static final String INVENTORY = "inventory"; // Inventory Slots @@ -45,7 +45,7 @@ public enum Source public static final int JETPACK_BUCKET_OUT = 1; public static final int JETPACK_FUEL_SLOT = 2; - //public static final String COMPOUND_TAG = "jetpackData"; + //public static final String WEARABLE_TAG = "jetpackData"; //public static final String INVENTORY = "inventory"; public static final String JETPACK_STEAM_TANK = "steamTank"; public static final String JETPACK_WATER_TANK = "waterTank"; diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index 52c46446..975b1a56 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -33,7 +33,7 @@ import com.darkona.adventurebackpack.util.Wearing; import static com.darkona.adventurebackpack.common.Constants.BUCKET; -import static com.darkona.adventurebackpack.common.Constants.COMPOUND_TAG; +import static com.darkona.adventurebackpack.common.Constants.WEARABLE_TAG; import static com.darkona.adventurebackpack.common.Constants.LOWER_TOOL; import static com.darkona.adventurebackpack.common.Constants.UPPER_TOOL; @@ -365,7 +365,7 @@ public static void copterSoundAtLogin(EntityPlayer player) public static void jetpackSoundAtLogin(EntityPlayer player) { boolean isBoiling = BackpackProperty.get(player).getWearable().getTagCompound() - .getCompoundTag(COMPOUND_TAG).getBoolean("boiling"); + .getCompoundTag(WEARABLE_TAG).getBoolean("boiling"); if (!player.worldObj.isRemote && isBoiling) { diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java index 7b552c1e..20b7ae45 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java @@ -51,7 +51,7 @@ public void itemsTooltips(ItemTooltipEvent event) if (theItem instanceof ItemAdventureBackpack) { FluidTank tank = new FluidTank(Constants.BASIC_TANK_CAPACITY); - NBTTagCompound backpackTag = event.itemStack.stackTagCompound.getCompoundTag(Constants.COMPOUND_TAG); + NBTTagCompound backpackTag = event.itemStack.stackTagCompound.getCompoundTag(Constants.WEARABLE_TAG); if (GuiScreen.isShiftKeyDown()) { @@ -91,7 +91,7 @@ else if (theItem instanceof ItemCoalJetpack) { FluidTank waterTank = new FluidTank(Constants.JETPACK_WATER_CAPACITY); FluidTank steamTank = new FluidTank(Constants.JETPACK_STEAM_CAPACITY); - NBTTagCompound jetpackTag = event.itemStack.stackTagCompound.getCompoundTag(Constants.COMPOUND_TAG); + NBTTagCompound jetpackTag = event.itemStack.stackTagCompound.getCompoundTag(Constants.WEARABLE_TAG); if (GuiScreen.isShiftKeyDown()) { diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java index 79c1b54d..f9ceb697 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java @@ -73,7 +73,7 @@ public static void init() //CoalJetpack ItemStack jetpackStack = new ItemStack(ModItems.coalJetpack); NBTTagCompound jetpackCompound = new NBTTagCompound(); - jetpackCompound.setTag(Constants.COMPOUND_TAG, new NBTTagCompound()); + jetpackCompound.setTag(Constants.WEARABLE_TAG, new NBTTagCompound()); jetpackStack.setTagCompound(jetpackCompound); //TODO check GameRegistry.addRecipe(jetpackStack, diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index 3f86aaed..aa571800 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -16,7 +16,7 @@ import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_RIGHT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_LEFT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_RIGHT; -import static com.darkona.adventurebackpack.common.Constants.COMPOUND_TAG; +import static com.darkona.adventurebackpack.common.Constants.WEARABLE_TAG; import static com.darkona.adventurebackpack.common.Constants.INVENTORY; import static com.darkona.adventurebackpack.common.Constants.LEFT_TANK; import static com.darkona.adventurebackpack.common.Constants.RIGHT_TANK; @@ -64,7 +64,7 @@ private void detectAndConvertFromOldNBTFormat(NBTTagCompound compound) // need o newBackpackTag.setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); newBackpackTag.setByte("type", BackpackTypes.getMeta(type)); - compound.setTag(COMPOUND_TAG, newBackpackTag); + compound.setTag(WEARABLE_TAG, newBackpackTag); compound.removeTag("backpackData"); } @@ -149,14 +149,14 @@ public void setLastTime(int time) @Override public void dirtyTime() { - containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).setInteger("lastTime", lastTime); + containerStack.stackTagCompound.getCompoundTag(WEARABLE_TAG).setInteger("lastTime", lastTime); } @Override public void dirtyExtended() { - containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).removeTag("extendedProperties"); - containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).setTag("extendedProperties", extendedProperties); + containerStack.stackTagCompound.getCompoundTag(WEARABLE_TAG).removeTag("extendedProperties"); + containerStack.stackTagCompound.getCompoundTag(WEARABLE_TAG).setTag("extendedProperties", extendedProperties); } @Override @@ -196,7 +196,7 @@ public void loadFromNBT(NBTTagCompound compound) if (compound == null) return; //this need for NEI trying to render tile.backpack and comes here w/o nbt - NBTTagCompound backpackTag = compound.getCompoundTag(COMPOUND_TAG); + NBTTagCompound backpackTag = compound.getCompoundTag(WEARABLE_TAG); type = BackpackTypes.getType(backpackTag.getByte("type")); NBTTagList items = backpackTag.getTagList(INVENTORY, NBT.TAG_COMPOUND); for (int i = 0; i < items.tagCount(); i++) @@ -242,7 +242,7 @@ public void saveToNBT(NBTTagCompound compound) backpackTag.setBoolean("disableNVision", disableNVision); backpackTag.setInteger("lastTime", lastTime); - compound.setTag(COMPOUND_TAG, backpackTag); + compound.setTag(WEARABLE_TAG, backpackTag); } @Override @@ -281,15 +281,15 @@ public void dirtyInventory() items.appendTag(item); } } - containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).removeTag(INVENTORY); - containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).setTag(INVENTORY, items); + containerStack.stackTagCompound.getCompoundTag(WEARABLE_TAG).removeTag(INVENTORY); + containerStack.stackTagCompound.getCompoundTag(WEARABLE_TAG).setTag(INVENTORY, items); } @Override public void dirtyTanks() { - containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); - containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag(WEARABLE_TAG).setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag(WEARABLE_TAG).setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index 055a3206..aa92b025 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -9,7 +9,7 @@ import com.darkona.adventurebackpack.common.Constants; -import static com.darkona.adventurebackpack.common.Constants.COMPOUND_TAG; +import static com.darkona.adventurebackpack.common.Constants.WEARABLE_TAG; import static com.darkona.adventurebackpack.common.Constants.INVENTORY; import static com.darkona.adventurebackpack.common.Constants.JETPACK_BUCKET_IN; import static com.darkona.adventurebackpack.common.Constants.JETPACK_BUCKET_OUT; @@ -58,7 +58,7 @@ public int getBurnTimeRemainingScaled(int scale) @Override public void loadFromNBT(NBTTagCompound compound) { - NBTTagCompound jetpackTag = compound.getCompoundTag(COMPOUND_TAG); + NBTTagCompound jetpackTag = compound.getCompoundTag(WEARABLE_TAG); waterTank.readFromNBT(jetpackTag.getCompoundTag(JETPACK_WATER_TANK)); steamTank.readFromNBT(jetpackTag.getCompoundTag(JETPACK_STEAM_TANK)); temperature = jetpackTag.getInteger("temperature"); @@ -85,7 +85,7 @@ public void loadFromNBT(NBTTagCompound compound) @Override public void saveToNBT(NBTTagCompound compound) { - NBTTagCompound jetpackTag = compound.getCompoundTag(COMPOUND_TAG); + NBTTagCompound jetpackTag = compound.getCompoundTag(WEARABLE_TAG); jetpackTag.setTag(JETPACK_WATER_TANK, waterTank.writeToNBT(new NBTTagCompound())); jetpackTag.setTag(JETPACK_STEAM_TANK, steamTank.writeToNBT(new NBTTagCompound())); jetpackTag.setInteger("temperature", temperature); @@ -110,7 +110,7 @@ public void saveToNBT(NBTTagCompound compound) } } jetpackTag.setTag(INVENTORY, items); - compound.setTag(COMPOUND_TAG, jetpackTag); + compound.setTag(WEARABLE_TAG, jetpackTag); } @Override @@ -147,19 +147,19 @@ public void dirtyInventory() items.appendTag(item); } } - containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).setTag(INVENTORY, items); + containerStack.stackTagCompound.getCompoundTag(WEARABLE_TAG).setTag(INVENTORY, items); } @Override public void dirtyTanks() { - containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).setTag(JETPACK_WATER_TANK, waterTank.writeToNBT(new NBTTagCompound())); - containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG).setTag(JETPACK_STEAM_TANK, steamTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag(WEARABLE_TAG).setTag(JETPACK_WATER_TANK, waterTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag(WEARABLE_TAG).setTag(JETPACK_STEAM_TANK, steamTank.writeToNBT(new NBTTagCompound())); } public void dirtyBoiler() { - NBTTagCompound jetpackTag = containerStack.stackTagCompound.getCompoundTag(COMPOUND_TAG); + NBTTagCompound jetpackTag = containerStack.stackTagCompound.getCompoundTag(WEARABLE_TAG); jetpackTag.setBoolean("boiling", boiling); jetpackTag.setBoolean("leaking", leaking); jetpackTag.setInteger("temperature", temperature); diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index b7a80cb0..f6e54f93 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -295,7 +295,7 @@ public double getDurabilityForDisplay(ItemStack stack) private int getItemCount(ItemStack backpack) { - NBTTagCompound backpackTag = backpack.stackTagCompound.getCompoundTag(Constants.COMPOUND_TAG); + NBTTagCompound backpackTag = backpack.stackTagCompound.getCompoundTag(Constants.WEARABLE_TAG); NBTTagList itemList = backpackTag.getTagList(Constants.INVENTORY, NBT.TAG_COMPOUND); int itemCount = itemList.tagCount(); for (int i = itemCount - 1; i >= 0; i--) diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index 68c6a5e6..2885e6a1 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -59,7 +59,7 @@ public void getSubItems(Item item, CreativeTabs tab, List list) //jetpackTag.setTag(Constants.JETPACK_WATER_TANK, new FluidTank(Constants.JETPACK_WATER_CAPACITY).writeToNBT(new NBTTagCompound())); //jetpackTag.setTag(Constants.JETPACK_STEAM_TANK, new FluidTank(Constants.JETPACK_STEAM_CAPACITY).writeToNBT(new NBTTagCompound())); //jetpackTag.setTag(Constants.INVENTORY, new NBTTagList()); - compound.setTag(Constants.COMPOUND_TAG, jetpackTag); + compound.setTag(Constants.WEARABLE_TAG, jetpackTag); list.add(iStack); } @@ -297,7 +297,7 @@ public double getDurabilityForDisplay(ItemStack stack) private int getTemperature(ItemStack jetpack) { - return jetpack.stackTagCompound.getCompoundTag(Constants.COMPOUND_TAG).getInteger("temperature"); + return jetpack.stackTagCompound.getCompoundTag(Constants.WEARABLE_TAG).getInteger("temperature"); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java index 8cd43d34..fd7ace35 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java @@ -114,7 +114,7 @@ public enum BackpackTypes // @formatter:on public static final ImmutableBiMap BY_META; - public static final ImmutableSet SPECIAL_TYPES; + public static final ImmutableSet SPECIAL_TYPES; //TODO okay... how can we use all these sets? public static final ImmutableSet REMOVAL_TYPES; public static final ImmutableSet NIGHT_VISION_TYPES; @@ -279,7 +279,6 @@ public enum Props ; } - // --- public static ItemStack setBackpackTypeFromMeta(ItemStack backpack, int meta) diff --git a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java index 17e8fc58..d57f2741 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java @@ -30,6 +30,9 @@ public static void init() private static void parseFuelConfig() { + int wrong = 0; + int unregistered = 0; + for (String fuel : ConfigHandler.copterFuels) { String[] arrFuel = fuel @@ -37,7 +40,10 @@ private static void parseFuelConfig() .split(","); if (arrFuel.length != 2) + { + wrong++; continue; + } String fluid = arrFuel[0]; float rate; @@ -57,6 +63,18 @@ private static void parseFuelConfig() liquidFuels.put(fluid, rate); LogHelper.info("Registered " + fluid + " as Copter fuel with consumption rate " + rate); } + else + { + unregistered++; + } + } + + if (wrong > 0 || unregistered > 0) + { + LogHelper.info("Skipped " + + (wrong > 0 ? (wrong + " incorrect entr" + (wrong > 1 ? "ies" : "y")) : "") + + (wrong > 0 && unregistered > 0 ? " and " : "") + + (unregistered > 0 ? (unregistered + " unregistered fluid" + (unregistered > 1 ? "s" : "")) : "")); } } diff --git a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java index 8a2101ff..5bc75039 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java @@ -55,9 +55,9 @@ public static void unequipWearable(EntityPlayer player) public static NBTTagCompound getBackpackTag(ItemStack backpack) { - if (backpack.hasTagCompound() && backpack.stackTagCompound.hasKey(Constants.COMPOUND_TAG)) + if (backpack.hasTagCompound() && backpack.stackTagCompound.hasKey(Constants.WEARABLE_TAG)) { - return backpack.stackTagCompound.getCompoundTag(Constants.COMPOUND_TAG); + return backpack.stackTagCompound.getCompoundTag(Constants.WEARABLE_TAG); } return new NBTTagCompound(); } @@ -68,7 +68,7 @@ public static void setBackpackTag(ItemStack stack, NBTTagCompound compound) { stack.stackTagCompound = new NBTTagCompound(); } - stack.stackTagCompound.setTag(Constants.COMPOUND_TAG, compound); + stack.stackTagCompound.setTag(Constants.WEARABLE_TAG, compound); } private static class DelayUnequipTask extends TimerTask From bebdf33175f8a5bebbf69a29e9651c7d36d502a6 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 30 Jan 2018 14:37:24 +0700 Subject: [PATCH 418/462] Added support for Gregtech tools render Moved Tool icons in Tanks Overlay to left side of overlay --- .../adventurebackpack/AdventureBackpack.java | 3 ++ .../client/gui/GuiOverlay.java | 51 +++++++++++++++--- .../client/render/CopygirlRenderUtils.java | 15 +++--- .../client/render/RendererStack.java | 54 +++++++++++++++++-- .../config/ConfigHandler.java | 11 ++-- .../reference/BackpackTypes.java | 2 +- .../reference/GeneralReference.java | 18 +++---- 7 files changed, 120 insertions(+), 34 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java index 4584cda0..f2ea9ca0 100644 --- a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java @@ -92,11 +92,14 @@ public void postInit(FMLPostInitializationEvent event) ConfigHandler.IS_BUILDCRAFT = Loader.isModLoaded("BuildCraft|Core"); ConfigHandler.IS_ENDERIO = Loader.isModLoaded("EnderIO"); + ConfigHandler.IS_GREGTECH = Loader.isModLoaded("gregtech"); if (ConfigHandler.IS_BUILDCRAFT) LogHelper.info("Buildcraft is present. Acting accordingly"); if (ConfigHandler.IS_ENDERIO) LogHelper.info("EnderIO is present. Acting accordingly"); + if (ConfigHandler.IS_GREGTECH) + LogHelper.info("GregTech is present. Acting accordingly"); GeneralReference.init(); diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java index f20504df..c4dcb7e3 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java @@ -1,5 +1,6 @@ package com.darkona.adventurebackpack.client.gui; +import java.lang.reflect.Method; import java.util.Collection; import java.util.Iterator; @@ -18,6 +19,7 @@ import net.minecraft.potion.PotionEffect; import net.minecraft.util.IIcon; import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.IItemRenderer; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; @@ -123,7 +125,7 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) int textureWidth = 10; int xPos = ConfigHandler.tanksOverlayRight - ? screenWidth - (textureWidth * 3) - ConfigHandler.tanksOverlayIndentH + ? screenWidth - (textureWidth * 2) - ConfigHandler.tanksOverlayIndentH : ConfigHandler.tanksOverlayIndentH; int yPos = ConfigHandler.tanksOverlayBottom ? screenHeight - textureHeight - ConfigHandler.tanksOverlayIndentV @@ -169,7 +171,7 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) RenderHelper.enableStandardItemLighting(); RenderHelper.enableGUIStandardItemLighting(); GL11.glPushMatrix(); - GL11.glTranslatef(xStart[1] + textureWidth + 2, yStart[0], 0); + GL11.glTranslatef(xStart[0] - textureWidth, yStart[0], 0); GL11.glScalef(0.5f, 0.5f, 0.5f); if (ConfigHandler.enableToolsRender) { @@ -223,15 +225,48 @@ private void drawTank(FluidTank tank, int startX, int startY, int height, int wi private void drawItemStack(ItemStack stack, int x, int y) { - if (stack == null) return; - GL11.glTranslatef(0.0F, 0.0F, 32.0F); + if (stack == null) + return; + + boolean isGregtechTool = stack.getItem().getUnlocalizedName().equals("gt.metatool.01"); + + GL11.glTranslatef(isGregtechTool ? x : 0.0F, isGregtechTool ? y :0.0F, 32.0F); this.zLevel = 200.0F; itemRender.zLevel = 200.0F; - FontRenderer font = null; - font = stack.getItem().getFontRenderer(stack); - if (font == null) font = fontRendererObj; - itemRender.renderItemIntoGUI(font, mc.getTextureManager(), stack, x, y); + if (isGregtechTool) + { + renderGregtechToolIntoGUI(stack); + } + else + { + FontRenderer font = null; + font = stack.getItem().getFontRenderer(stack); + if (font == null) font = fontRendererObj; + itemRender.renderItemIntoGUI(font, mc.getTextureManager(), stack, x, y); + } this.zLevel = 0.0F; itemRender.zLevel = 0.0F; } + + private static Object gregtechToolRenderer; + private static Object[] emptyObjectArray = {}; + + private void renderGregtechToolIntoGUI(ItemStack stack) + { + if (!ConfigHandler.IS_GREGTECH) + return; + + try + { + Class clazz = Class.forName("gregtech.common.render.GT_MetaGenerated_Tool_Renderer"); + if (gregtechToolRenderer == null) + gregtechToolRenderer = clazz.newInstance(); + Method doRender = clazz.getMethod("renderItem", IItemRenderer.ItemRenderType.class, ItemStack.class, Object[].class); + doRender.invoke(gregtechToolRenderer, IItemRenderer.ItemRenderType.INVENTORY, stack, emptyObjectArray); + } + catch (Exception e) + { + //e.printStackTrace(); + } + } } diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/CopygirlRenderUtils.java b/src/main/java/com/darkona/adventurebackpack/client/render/CopygirlRenderUtils.java index 02154898..f68a2bea 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/CopygirlRenderUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/CopygirlRenderUtils.java @@ -71,12 +71,15 @@ public static void renderItemIn3d(ItemStack stack) { textureManager.bindTexture(((stack.getItemSpriteNumber() == 0) ? TextureMap.locationBlocksTexture : TextureMap.locationItemsTexture)); IIcon icon = item.getIcon(stack, pass); - float minU = icon.getMinU(); - float maxU = icon.getMaxU(); - float minV = icon.getMinV(); - float maxV = icon.getMaxV(); - CopygirlRenderUtils.setColorFromInt(item.getColorFromItemStack(stack, pass)); - ItemRenderer.renderItemIn2D(tessellator, maxU, minV, minU, maxV, icon.getIconWidth(), icon.getIconHeight(), 0.0625F); + if (icon != null) + { + float minU = icon.getMinU(); + float maxU = icon.getMaxU(); + float minV = icon.getMinV(); + float maxV = icon.getMaxV(); + CopygirlRenderUtils.setColorFromInt(item.getColorFromItemStack(stack, pass)); + ItemRenderer.renderItemIn2D(tessellator, maxU, minV, minU, maxV, icon.getIconWidth(), icon.getIconHeight(), 0.0625F); + } } if (stack.hasEffect(0)) diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java index c6c3ba46..f669f51a 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java @@ -1,13 +1,18 @@ package com.darkona.adventurebackpack.client.render; +import java.lang.reflect.Method; + import org.lwjgl.opengl.GL11; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import com.darkona.adventurebackpack.config.ConfigHandler; + public class RendererStack extends ModelRenderer { public ItemStack stack; @@ -35,6 +40,10 @@ public void render(float par1) { return; } + + boolean isGregtechTool = stack.getItem().getUnlocalizedName().equals("gt.metatool.01"); + int meta = stack.getItemDamage(); + GL11.glPushMatrix(); GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); if (which) @@ -42,21 +51,56 @@ public void render(float par1) GL11.glScalef(0.6F, 0.6F, 0.6F); GL11.glPushMatrix(); GL11.glRotatef(-90F, 0, 1, 0); - GL11.glRotatef(-225F, 0, 0, 1); - + GL11.glRotatef(isGregtechTool ? getGregtechToolRotationAngle(meta, which) : -225F, 0, 0, 1); } else { GL11.glScalef(0.7F, 0.7F, 0.7F); GL11.glPushMatrix(); - GL11.glRotatef(45F, 0, 0, 1); - + GL11.glRotatef(isGregtechTool ? getGregtechToolRotationAngle(meta, which) : 45F, 0, 0, 1); } - CopygirlRenderUtils.renderItemIn3d(stack); + + if (isGregtechTool) + renderGregtechTool(stack); + else + CopygirlRenderUtils.renderItemIn3d(stack); + GL11.glPopAttrib(); GL11.glPopMatrix(); GL11.glPopMatrix(); + } + } + private static Object gregtechToolRenderer; + private static Object[] emptyObjectArray = {}; + private static int[] gregtechTools90Degree = {10, 14, 18, 22, 34, 150, 160}; + + private static float getGregtechToolRotationAngle(int meta, boolean which) + { + for (int tool90 : gregtechTools90Degree) + { + if (meta == tool90) + return which? 45F : 135F; + } + return which ? -45F : 45F; + } + + private static void renderGregtechTool(ItemStack stack) + { + if (!ConfigHandler.IS_GREGTECH) + return; + + try + { + Class clazz = Class.forName("gregtech.common.render.GT_MetaGenerated_Tool_Renderer"); + if (gregtechToolRenderer == null) + gregtechToolRenderer = clazz.newInstance(); + Method doRender = clazz.getMethod("renderItem", IItemRenderer.ItemRenderType.class, ItemStack.class, Object[].class); + doRender.invoke(gregtechToolRenderer, IItemRenderer.ItemRenderType.ENTITY, stack, emptyObjectArray); + } + catch (Exception e) + { + //e.printStackTrace(); } } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 90a55f15..1cd78223 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -20,6 +20,7 @@ public class ConfigHandler public static boolean IS_DEVENV = false; public static boolean IS_BUILDCRAFT = false; public static boolean IS_ENDERIO = false; + public static boolean IS_GREGTECH = false; public static boolean allowSoulBound = true; public static boolean backpackDeathPlace = true; @@ -45,8 +46,8 @@ public class ConfigHandler public static boolean tanksOverlay = true; public static boolean tanksOverlayRight = true; public static boolean tanksOverlayBottom = true; - public static int tanksOverlayIndentH = 4; - public static int tanksOverlayIndentV = 2; + public static int tanksOverlayIndentH = 2; + public static int tanksOverlayIndentV = 1; public static boolean allowSoundCopter = true; public static boolean allowSoundJetpack = true; @@ -115,7 +116,7 @@ private static void loadConfiguration() typeTankRender = config.getInt("Tank Render Type", "graphics", 3, 1, 3, "1,2 or 3 for different rendering of fluids in the Backpack GUI"); enableFullnessBar = config.getBoolean("Enable Fullness Bar", "graphics", false, "Enable durability bar showing fullness of backpacks inventory"); enableTemperatureBar = config.getBoolean("Enable Temperature Bar", "graphics", false, "Enable durability bar showing temperature of jetpack"); - enableToolsRender = config.getBoolean("Enable Tools Render", "graphics", true, "Enable rendering for tools in the backpack tool slots. May cause visual glitches with Gregtech tools"); + enableToolsRender = config.getBoolean("Enable Tools Render", "graphics", true, "Enable rendering for tools in the backpack tool slots"); enableTooltips = config.getBoolean("Enable Tooltips", "graphics", true, "Enable tooltips? Client side"); tanksHoveringText = config.getBoolean("Hovering Text", "graphics", false, "Show hovering text on fluid tanks?"); @@ -130,8 +131,8 @@ private static void loadConfiguration() tanksOverlay = config.getBoolean("Enable Overlay", "graphics.tanks", true, "Show the different wearable overlays on screen?"); tanksOverlayRight = config.getBoolean("Stick To Right", "graphics.tanks", true, "Stick to right?"); tanksOverlayBottom = config.getBoolean("Stick To Bottom", "graphics.tanks", true, "Stick to bottom?"); - tanksOverlayIndentH = config.getInt("Indent Horizontal", "graphics.tanks", 4, -10, 1000, "Horizontal indent from the window border"); - tanksOverlayIndentV = config.getInt("Indent Vertical", "graphics.tanks", 2, 0, 500, "Vertical indent from the window border"); + tanksOverlayIndentH = config.getInt("Indent Horizontal", "graphics.tanks", 2, 0, 1000, "Horizontal indent from the window border"); + tanksOverlayIndentV = config.getInt("Indent Vertical", "graphics.tanks", 1, 0, 500, "Vertical indent from the window border"); // Sound allowSoundCopter = config.getBoolean("Copter Pack", "sound", true, "Allow playing the CopterPack sound (Client Only, other players may hear it)"); diff --git a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java index fd7ace35..bf5cea16 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java @@ -119,7 +119,7 @@ public enum BackpackTypes public static final ImmutableSet NIGHT_VISION_TYPES; private final byte meta; - private final String skinName; // equivalent to current colorName + private final String skinName; private final Props[] props; //TODO step2: add support for recipes (see BackpackRecipesList). new field 'Object[]'? diff --git a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java index d57f2741..7d6143db 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java @@ -30,8 +30,8 @@ public static void init() private static void parseFuelConfig() { - int wrong = 0; - int unregistered = 0; + int wrongCount = 0; + int unregCount = 0; for (String fuel : ConfigHandler.copterFuels) { @@ -41,7 +41,7 @@ private static void parseFuelConfig() if (arrFuel.length != 2) { - wrong++; + wrongCount++; continue; } @@ -54,7 +54,7 @@ private static void parseFuelConfig() { rate = Float.parseFloat(arrFuel[1]); } - catch (NumberFormatException e) + catch (NumberFormatException nfe) { rate = MAX_RATE; LogHelper.error("Cannot parse consumption rate for " + fluid + ". Setting MAX rate"); @@ -65,16 +65,16 @@ private static void parseFuelConfig() } else { - unregistered++; + unregCount++; } } - if (wrong > 0 || unregistered > 0) + if (wrongCount > 0 || unregCount > 0) { LogHelper.info("Skipped " - + (wrong > 0 ? (wrong + " incorrect entr" + (wrong > 1 ? "ies" : "y")) : "") - + (wrong > 0 && unregistered > 0 ? " and " : "") - + (unregistered > 0 ? (unregistered + " unregistered fluid" + (unregistered > 1 ? "s" : "")) : "")); + + (wrongCount > 0 ? (wrongCount + " incorrect entr" + (wrongCount > 1 ? "ies" : "y")) : "") + + (wrongCount > 0 && unregCount > 0 ? " and " : "") + + (unregCount > 0 ? (unregCount + " unregistered fluid" + (unregCount > 1 ? "s" : "")) : "")); } } From e01869396e8c653e9949ff9acd30cfdedd11f8c7 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 30 Jan 2018 15:17:33 +0700 Subject: [PATCH 419/462] Recipes will wait --- .../com/darkona/adventurebackpack/reference/BackpackTypes.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java index bf5cea16..72d39c47 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java @@ -122,8 +122,7 @@ public enum BackpackTypes private final String skinName; private final Props[] props; - //TODO step2: add support for recipes (see BackpackRecipesList). new field 'Object[]'? - //TODO step3: rework NBT for wearable packs. unificate and simplify structure. + //TODO rework NBT for wearable packs. unificate and simplify structure. BackpackTypes(int meta, String skin, Props... props) { From 8a2ae035d336ff03d0e8189b9e106f07715e4801 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 30 Jan 2018 17:21:28 +0700 Subject: [PATCH 420/462] Made GregtechUtils --- .../client/gui/GuiOverlay.java | 28 +-------- .../client/render/RendererStack.java | 56 +++--------------- .../adventurebackpack/inventory/SlotTool.java | 3 +- .../adventurebackpack/util/GregtechUtils.java | 58 +++++++++++++++++++ 4 files changed, 72 insertions(+), 73 deletions(-) create mode 100644 src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java index c4dcb7e3..5074dbee 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java @@ -1,6 +1,5 @@ package com.darkona.adventurebackpack.client.gui; -import java.lang.reflect.Method; import java.util.Collection; import java.util.Iterator; @@ -32,6 +31,7 @@ import com.darkona.adventurebackpack.inventory.IInventoryTanks; import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.reference.ModInfo; +import com.darkona.adventurebackpack.util.GregtechUtils; import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Wearing; @@ -228,14 +228,14 @@ private void drawItemStack(ItemStack stack, int x, int y) if (stack == null) return; - boolean isGregtechTool = stack.getItem().getUnlocalizedName().equals("gt.metatool.01"); + boolean isGregtechTool = GregtechUtils.isTool(stack); GL11.glTranslatef(isGregtechTool ? x : 0.0F, isGregtechTool ? y :0.0F, 32.0F); this.zLevel = 200.0F; itemRender.zLevel = 200.0F; if (isGregtechTool) { - renderGregtechToolIntoGUI(stack); + GregtechUtils.renderTool(stack, IItemRenderer.ItemRenderType.INVENTORY); } else { @@ -247,26 +247,4 @@ private void drawItemStack(ItemStack stack, int x, int y) this.zLevel = 0.0F; itemRender.zLevel = 0.0F; } - - private static Object gregtechToolRenderer; - private static Object[] emptyObjectArray = {}; - - private void renderGregtechToolIntoGUI(ItemStack stack) - { - if (!ConfigHandler.IS_GREGTECH) - return; - - try - { - Class clazz = Class.forName("gregtech.common.render.GT_MetaGenerated_Tool_Renderer"); - if (gregtechToolRenderer == null) - gregtechToolRenderer = clazz.newInstance(); - Method doRender = clazz.getMethod("renderItem", IItemRenderer.ItemRenderType.class, ItemStack.class, Object[].class); - doRender.invoke(gregtechToolRenderer, IItemRenderer.ItemRenderType.INVENTORY, stack, emptyObjectArray); - } - catch (Exception e) - { - //e.printStackTrace(); - } - } } diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java index f669f51a..e171ecff 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java @@ -1,7 +1,5 @@ package com.darkona.adventurebackpack.client.render; -import java.lang.reflect.Method; - import org.lwjgl.opengl.GL11; import net.minecraft.client.model.ModelBase; @@ -11,17 +9,17 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.util.GregtechUtils; public class RendererStack extends ModelRenderer { public ItemStack stack; - private boolean which; + private boolean isLowerSlot; - public RendererStack(ModelBase modelBase, boolean which) + public RendererStack(ModelBase modelBase, boolean isLowerSlot) { super(modelBase); - this.which = which; + this.isLowerSlot = isLowerSlot; addChild(new Thing(modelBase)); } @@ -37,31 +35,28 @@ public Thing(ModelBase modelBase) public void render(float par1) { if (stack == null) - { return; - } - boolean isGregtechTool = stack.getItem().getUnlocalizedName().equals("gt.metatool.01"); - int meta = stack.getItemDamage(); + boolean isGregtechTool = GregtechUtils.isTool(stack); GL11.glPushMatrix(); GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); - if (which) + if (isLowerSlot) { GL11.glScalef(0.6F, 0.6F, 0.6F); GL11.glPushMatrix(); GL11.glRotatef(-90F, 0, 1, 0); - GL11.glRotatef(isGregtechTool ? getGregtechToolRotationAngle(meta, which) : -225F, 0, 0, 1); + GL11.glRotatef(isGregtechTool ? GregtechUtils.getToolRotationAngle(stack, isLowerSlot) : -225F, 0, 0, 1); } else { GL11.glScalef(0.7F, 0.7F, 0.7F); GL11.glPushMatrix(); - GL11.glRotatef(isGregtechTool ? getGregtechToolRotationAngle(meta, which) : 45F, 0, 0, 1); + GL11.glRotatef(isGregtechTool ? GregtechUtils.getToolRotationAngle(stack, isLowerSlot) : 45F, 0, 0, 1); } if (isGregtechTool) - renderGregtechTool(stack); + GregtechUtils.renderTool(stack, IItemRenderer.ItemRenderType.ENTITY); else CopygirlRenderUtils.renderItemIn3d(stack); @@ -70,37 +65,4 @@ public void render(float par1) GL11.glPopMatrix(); } } - - private static Object gregtechToolRenderer; - private static Object[] emptyObjectArray = {}; - private static int[] gregtechTools90Degree = {10, 14, 18, 22, 34, 150, 160}; - - private static float getGregtechToolRotationAngle(int meta, boolean which) - { - for (int tool90 : gregtechTools90Degree) - { - if (meta == tool90) - return which? 45F : 135F; - } - return which ? -45F : 45F; - } - - private static void renderGregtechTool(ItemStack stack) - { - if (!ConfigHandler.IS_GREGTECH) - return; - - try - { - Class clazz = Class.forName("gregtech.common.render.GT_MetaGenerated_Tool_Renderer"); - if (gregtechToolRenderer == null) - gregtechToolRenderer = clazz.newInstance(); - Method doRender = clazz.getMethod("renderItem", IItemRenderer.ItemRenderType.class, ItemStack.class, Object[].class); - doRender.invoke(gregtechToolRenderer, IItemRenderer.ItemRenderType.ENTITY, stack, emptyObjectArray); - } - catch (Exception e) - { - //e.printStackTrace(); - } - } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java index 14b896a8..be1b96bd 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java @@ -11,6 +11,7 @@ import com.darkona.adventurebackpack.item.ItemAdventureBackpack; import com.darkona.adventurebackpack.item.ItemHose; +import com.darkona.adventurebackpack.util.GregtechUtils; /** * Created on 12/10/2014 @@ -59,7 +60,7 @@ public static boolean isValidTool(ItemStack stack) } //GregTech - if (name.equals("gt.metatool.01")) + if (GregtechUtils.isTool(stack)) { //0 = sword, 170 = turbines return !(stack.getItemDamage() == 0 || stack.getItemDamage() > 169); diff --git a/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java b/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java new file mode 100644 index 00000000..6d796fe3 --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java @@ -0,0 +1,58 @@ +package com.darkona.adventurebackpack.util; + +import java.lang.reflect.Method; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; + +import com.darkona.adventurebackpack.config.ConfigHandler; + +/** + * Created on 30.01.2018 + * + * @author Ugachaga + */ +public class GregtechUtils +{ + private static final int[] ROTATED_TOOLS = {10, 14, 18, 22, 34, 150, 160}; + private static final Object[] EMPTY_OBJECT = {}; + + private static Object toolRenderer; + + private GregtechUtils(){} + + public static boolean isTool(ItemStack stack) + { + return stack.getItem().getUnlocalizedName().equals("gt.metatool.01"); + } + + public static float getToolRotationAngle(ItemStack stack, boolean isLowerSlot) + { + int meta = stack.getItemDamage(); + for (int rotatedTool : ROTATED_TOOLS) + { + if (meta == rotatedTool) + return isLowerSlot ? 45F : 135F; + } + return isLowerSlot ? -45F : 45F; + } + + public static void renderTool(ItemStack stack, IItemRenderer.ItemRenderType renderType) + { + if (!ConfigHandler.IS_GREGTECH) + return; + + try + { + Class clazz = Class.forName("gregtech.common.render.GT_MetaGenerated_Tool_Renderer"); + if (toolRenderer == null) + toolRenderer = clazz.newInstance(); + Method doRender = clazz.getMethod("renderItem", IItemRenderer.ItemRenderType.class, ItemStack.class, Object[].class); + doRender.invoke(toolRenderer, renderType, stack, EMPTY_OBJECT); + } + catch (Exception e) + { + //e.printStackTrace(); + } + } +} From bb6f9cf26fbd1540a00b723b5152de853fa85fc4 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 31 Jan 2018 21:03:08 +0700 Subject: [PATCH 421/462] Sleep by 1-click, not finished --- .../client/gui/GuiAdvBackpack.java | 63 ++++---- .../common/ServerActions.java | 111 ++++++++------ .../adventurebackpack/init/ModDates.java | 1 + .../network/SleepingBagPacket.java | 8 +- .../adventurebackpack/util/GregtechUtils.java | 35 +++-- .../darkona/adventurebackpack/util/Utils.java | 139 ++++++++++++------ .../assets/adventurebackpack/lang/en_US.lang | 1 + 7 files changed, 229 insertions(+), 129 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index b045c5f9..6b6dc961 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -3,7 +3,9 @@ import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; +import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fluids.FluidTank; import cpw.mods.fml.relauncher.Side; @@ -68,7 +70,8 @@ protected void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); // Buttons and button highlight - if (source == Source.TILE) + if (source == Source.TILE + || source == Source.WEARING && GuiScreen.isCtrlKeyDown()) { if (bedButton.inButton(this, mouseX, mouseY)) { @@ -79,29 +82,26 @@ protected void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) bedButton.draw(this, 1, 227); } } - else + else if (source == Source.WEARING) { - if (source == Source.WEARING) + if (unequipButton.inButton(this, mouseX, mouseY)) { - if (unequipButton.inButton(this, mouseX, mouseY)) - { - unequipButton.draw(this, 96, 227); - } - else - { - unequipButton.draw(this, 77, 227); - } + unequipButton.draw(this, 96, 227); } - else if (source == Source.HOLDING) + else { - if (equipButton.inButton(this, mouseX, mouseY)) - { - equipButton.draw(this, 96, 208); - } - else - { - equipButton.draw(this, 77, 208); - } + unequipButton.draw(this, 77, 227); + } + } + else if (source == Source.HOLDING) + { + if (equipButton.inButton(this, mouseX, mouseY)) + { + equipButton.draw(this, 96, 208); + } + else + { + equipButton.draw(this, 77, 208); } } //zLevel +=1; @@ -169,16 +169,29 @@ protected GuiImageButtonNormal getUnequipButton() @Override protected void mouseClicked(int mouseX, int mouseY, int button) { - if (source == Source.TILE) + if (source == Source.TILE + || source == Source.WEARING && GuiScreen.isCtrlKeyDown()) { if (bedButton.inButton(this, mouseX, mouseY)) { - TileAdventureBackpack te = (TileAdventureBackpack) inventory; - ModNetwork.net.sendToServer(new SleepingBagPacket.SleepingBagMessage(te.xCoord, te.yCoord, te.zCoord)); + if (source == Source.TILE) + { + TileAdventureBackpack te = (TileAdventureBackpack) inventory; + ModNetwork.net.sendToServer(new SleepingBagPacket.SleepingBagMessage(true, te.xCoord, te.yCoord, te.zCoord)); + } + else + { + final int posX = MathHelper.floor_double(player.posX); + final int posY = MathHelper.floor_double(player.posY) - 1; + final int posZ = MathHelper.floor_double(player.posZ); + ModNetwork.net.sendToServer(new SleepingBagPacket.SleepingBagMessage(false, posX, posY, posZ)); + } } } - - super.mouseClicked(mouseX, mouseY, button); + else + { + super.mouseClicked(mouseX, mouseY, button); + } } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index 975b1a56..fb516d4b 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -2,6 +2,7 @@ import java.util.Random; +import net.minecraft.block.Block; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.player.EntityPlayer; @@ -11,13 +12,17 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; +import net.minecraft.world.WorldProviderEnd; +import net.minecraft.world.WorldProviderHell; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; +import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.inventory.InventoryBackpack; import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; @@ -33,9 +38,9 @@ import com.darkona.adventurebackpack.util.Wearing; import static com.darkona.adventurebackpack.common.Constants.BUCKET; -import static com.darkona.adventurebackpack.common.Constants.WEARABLE_TAG; import static com.darkona.adventurebackpack.common.Constants.LOWER_TOOL; import static com.darkona.adventurebackpack.common.Constants.UPPER_TOOL; +import static com.darkona.adventurebackpack.common.Constants.WEARABLE_TAG; /** * Created on 23/12/2014 @@ -247,15 +252,22 @@ public static void leakArrow(EntityPlayer player, ItemStack bow, int charge) } } - public static void toggleSleepingBag(EntityPlayer player, int coordX, int coordY, int coordZ) + public static void toggleSleepingBag(EntityPlayer player, boolean isTile, int cX, int cY, int cZ) { World world = player.worldObj; - if (world.getTileEntity(coordX, coordY, coordZ) instanceof TileAdventureBackpack) + + if (world.provider instanceof WorldProviderHell || world.provider instanceof WorldProviderEnd) { - TileAdventureBackpack te = (TileAdventureBackpack) world.getTileEntity(coordX, coordY, coordZ); + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.cant.sleep.here")); + return; + } + + if (isTile && world.getTileEntity(cX, cY, cZ) instanceof TileAdventureBackpack) + { + TileAdventureBackpack te = (TileAdventureBackpack) world.getTileEntity(cX, cY, cZ); if (!te.isSBDeployed()) { - int can[] = canDeploySleepingBag(world, coordX, coordY, coordZ); + int can[] = canDeploySleepingBag(world, player, cX, cY, cZ, isTile); if (can[0] > -1) { if (te.deploySleepingBag(player, world, can[1], can[2], can[3], can[0])) @@ -274,65 +286,72 @@ else if (!world.isRemote) } player.closeScreen(); } + else if (!isTile && Wearing.isWearingBackpack(player)) + { + int can[] = canDeploySleepingBag(world, player, cX, cY, cZ, isTile); + if (can[0] > -1) + { + if (deploySleepingBag(player, world, can[1], can[2], can[3], can[0])) + { + player.closeScreen(); + } + } + else if (!world.isRemote) + { + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.backpack.cant.bag")); + } + } + } + private static int[] canDeploySleepingBag(World world, EntityPlayer player, int cX, int cY, int cZ, boolean isTile) + { + int switchBy = -1; + if (isTile) + { + TileAdventureBackpack te = (TileAdventureBackpack) world.getTileEntity(cX, cY, cZ); + if (!te.isSBDeployed()) + switchBy = world.getBlockMetadata(cX, cY, cZ) & 3; + } + else + { + InventoryBackpack backpack = Wearing.getWearingBackpackInv(player); + if (!backpack.isSBDeployed()) //TODO add boolean and behavior + switchBy = MathHelper.floor_double((double)((player.rotationYaw * 4F) / 360F) + 0.5D) & 3; + } + return Utils.getDirectionAndCoordsForSleepingBag(switchBy, world, cX, cY, cZ, isTile); } - public static int[] canDeploySleepingBag(World world, int coordX, int coordY, int coordZ) + //TODO it's copy from tile.backpack. move to item.backpack? + private static boolean deploySleepingBag(EntityPlayer player, World world, int cX, int cY, int cZ, int meta) { - TileAdventureBackpack te = (TileAdventureBackpack) world.getTileEntity(coordX, coordY, coordZ); - int newMeta = -1; + if (world.isRemote) + return false; - if (!te.isSBDeployed()) + Block sleepingBag = ModBlocks.blockSleepingBag; + if (world.setBlock(cX, cY, cZ, sleepingBag, meta, 3)) { - int meta = world.getBlockMetadata(coordX, coordY, coordZ); + world.playSoundAtEntity(player, Block.soundTypeCloth.func_150496_b(), 0.5f, 1.0f); switch (meta & 3) { case 0: - --coordZ; - if (world.isAirBlock(coordX, coordY, coordZ) && world.getBlock(coordX, coordY - 1, coordZ).getMaterial().isSolid()) - { - if (world.isAirBlock(coordX, coordY, coordZ - 1) && world.getBlock(coordX, coordY - 1, coordZ - 1).getMaterial().isSolid()) - { - newMeta = 2; - } - } + ++cZ; break; case 1: - ++coordX; - if (world.isAirBlock(coordX, coordY, coordZ) && world.getBlock(coordX, coordY - 1, coordZ).getMaterial().isSolid()) - { - if (world.isAirBlock(coordX + 1, coordY, coordZ) && world.getBlock(coordX + 1, coordY - 1, coordZ).getMaterial().isSolid()) - { - newMeta = 3; - } - } + --cX; break; case 2: - ++coordZ; - if (world.isAirBlock(coordX, coordY, coordZ) && world.getBlock(coordX, coordY - 1, coordZ).getMaterial().isSolid()) - { - if (world.isAirBlock(coordX, coordY, coordZ + 1) && world.getBlock(coordX, coordY - 1, coordZ + 1).getMaterial().isSolid()) - { - newMeta = 0; - } - } + --cZ; break; case 3: - --coordX; - if (world.isAirBlock(coordX, coordY, coordZ) && world.getBlock(coordX, coordY - 1, coordZ).getMaterial().isSolid()) - { - if (world.isAirBlock(coordX - 1, coordY, coordZ) && world.getBlock(coordX - 1, coordY - 1, coordZ).getMaterial().isSolid()) - { - newMeta = 1; - } - } - break; - default: + ++cX; break; } + boolean sleepingBagDeployed = world.setBlock(cX, cY, cZ, sleepingBag, meta + 8, 3); + //LogHelper.info("deploySleepingBag() => SleepingBagDeployed is: " + sleepingBagDeployed); + world.markBlockForUpdate(cX, cY, cZ); + return sleepingBagDeployed; } - int result[] = {newMeta, coordX, coordY, coordZ}; - return result; + return false; } /** diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModDates.java b/src/main/java/com/darkona/adventurebackpack/init/ModDates.java index fd7e1166..05bc2111 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModDates.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModDates.java @@ -20,6 +20,7 @@ public static void init() public static String getHoliday() { + //TODO add check for current day, change skin if new day is holiday return holiday; } diff --git a/src/main/java/com/darkona/adventurebackpack/network/SleepingBagPacket.java b/src/main/java/com/darkona/adventurebackpack/network/SleepingBagPacket.java index dc6d581b..e2c591fb 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/SleepingBagPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/SleepingBagPacket.java @@ -20,13 +20,14 @@ public IMessage onMessage(SleepingBagMessage message, MessageContext ctx) { if (ctx.side.isServer()) { - ServerActions.toggleSleepingBag(ctx.getServerHandler().playerEntity, message.x, message.y, message.z); + ServerActions.toggleSleepingBag(ctx.getServerHandler().playerEntity, message.isTile, message.x, message.y, message.z); } return null; } public static class SleepingBagMessage implements IMessage { + public boolean isTile; public int x; public int y; public int z; @@ -36,8 +37,9 @@ public SleepingBagMessage() } - public SleepingBagMessage(int X, int Y, int Z) + public SleepingBagMessage(boolean isTile, int X, int Y, int Z) { + this.isTile = isTile; this.x = X; this.y = Y; this.z = Z; @@ -46,6 +48,7 @@ public SleepingBagMessage(int X, int Y, int Z) @Override public void fromBytes(ByteBuf buf) { + isTile = buf.readBoolean(); x = buf.readInt(); y = buf.readInt(); z = buf.readInt(); @@ -54,6 +57,7 @@ public void fromBytes(ByteBuf buf) @Override public void toBytes(ByteBuf buf) { + buf.writeBoolean(isTile); buf.writeInt(x); buf.writeInt(y); buf.writeInt(z); diff --git a/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java b/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java index 6d796fe3..f7f65768 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java @@ -1,7 +1,5 @@ package com.darkona.adventurebackpack.util; -import java.lang.reflect.Method; - import net.minecraft.item.ItemStack; import net.minecraftforge.client.IItemRenderer; @@ -14,16 +12,34 @@ */ public class GregtechUtils { - private static final int[] ROTATED_TOOLS = {10, 14, 18, 22, 34, 150, 160}; + private static final String RENDERER_CLASS = "gregtech.common.render.GT_MetaGenerated_Tool_Renderer"; + private static final String RENDERER_METHOD = "renderItem"; + private static final String TOOLS_NAME = "gt.metatool.01"; private static final Object[] EMPTY_OBJECT = {}; + private static final int[] ROTATED_TOOLS = {10, 14, 18, 22, 34, 150, 160}; private static Object toolRenderer; private GregtechUtils(){} + static + { + if (ConfigHandler.IS_GREGTECH) + { + try + { + toolRenderer = Class.forName(RENDERER_CLASS).newInstance(); + } + catch (Exception e) + { + LogHelper.error("Error getting instance of GT_MetaGenerated_Tool_Renderer: " + e.getMessage()); + } + } + } + public static boolean isTool(ItemStack stack) { - return stack.getItem().getUnlocalizedName().equals("gt.metatool.01"); + return ConfigHandler.IS_GREGTECH && stack.getItem().getUnlocalizedName().equals(TOOLS_NAME); } public static float getToolRotationAngle(ItemStack stack, boolean isLowerSlot) @@ -39,16 +55,11 @@ public static float getToolRotationAngle(ItemStack stack, boolean isLowerSlot) public static void renderTool(ItemStack stack, IItemRenderer.ItemRenderType renderType) { - if (!ConfigHandler.IS_GREGTECH) - return; - try { - Class clazz = Class.forName("gregtech.common.render.GT_MetaGenerated_Tool_Renderer"); - if (toolRenderer == null) - toolRenderer = clazz.newInstance(); - Method doRender = clazz.getMethod("renderItem", IItemRenderer.ItemRenderType.class, ItemStack.class, Object[].class); - doRender.invoke(toolRenderer, renderType, stack, EMPTY_OBJECT); + Class.forName(RENDERER_CLASS) + .getMethod(RENDERER_METHOD, IItemRenderer.ItemRenderType.class, ItemStack.class, Object[].class) + .invoke(toolRenderer, renderType, stack, EMPTY_OBJECT); } catch (Exception e) { diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index 7e367dad..9591c59d 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -47,28 +47,28 @@ public static int isBlockRegisteredAsFluid(Block block) return fluidID; } - public static ChunkCoordinates findBlock2D(World world, int x, int y, int z, Block block, int range) + public static ChunkCoordinates findBlock2D(World world, int cX, int cY, int cZ, Block block, int range) { - for (int i = x - range; i <= x + range; i++) + for (int i = cX - range; i <= cX + range; i++) { - for (int j = z - range; j <= z + range; j++) + for (int j = cZ - range; j <= cZ + range; j++) { - if (world.getBlock(i, y, j) == block) + if (world.getBlock(i, cY, j) == block) { - return new ChunkCoordinates(i, y, j); + return new ChunkCoordinates(i, cY, j); } } } return null; } - public static ChunkCoordinates findBlock3D(World world, int x, int y, int z, Block block, int hRange, int vRange) + public static ChunkCoordinates findBlock3D(World world, int cX, int cY, int cZ, Block block, int hRange, int vRange) { - for (int i = (y - vRange); i <= (y + vRange); i++) + for (int i = (cY - vRange); i <= (cY + vRange); i++) { - for (int j = (x - hRange); j <= (x + hRange); j++) + for (int j = (cX - hRange); j <= (cX + hRange); j++) { - for (int k = (z - hRange); k <= (z + hRange); k++) + for (int k = (cZ - hRange); k <= (cZ + hRange); k++) { if (world.getBlock(j, i, k) == block) { @@ -112,9 +112,9 @@ public static MovingObjectPosition getMovingObjectPositionFromPlayersHat(World w return world.func_147447_a/*rayTraceBlocks_do_do*/(vecPlayer, vecPoint, flag, !flag, flag); } - public static String printCoordinates(int x, int y, int z) + public static String printCoordinates(int cX, int cY, int cZ) { - return "X= " + x + ", Y= " + y + ", Z= " + z; + return "X= " + cX + ", Y= " + cY + ", Z= " + cZ; } public static int secondsToTicks(int seconds) @@ -133,33 +133,33 @@ public static boolean inServer() return side == Side.SERVER; } - private static ChunkCoordinates checkCoordsForBackpack(IBlockAccess world, int origX, int origZ, int x, int y, int z, boolean except) + private static ChunkCoordinates checkCoordsForBackpack(IBlockAccess world, int origX, int origZ, int cX, int cY, int cZ, boolean except) { - if (world.isAirBlock(x, y, z) || isReplaceable(world, x, y, z)) + if (world.isAirBlock(cX, cY, cZ) || isReplaceable(world, cX, cY, cZ)) { - return new ChunkCoordinates(x, y, z); + return new ChunkCoordinates(cX, cY, cZ); } return null; } - public static boolean isReplaceable(IBlockAccess world, int x, int y, int z) + public static boolean isReplaceable(IBlockAccess world, int cX, int cY, int cZ) { - Block block = world.getBlock(x, y, z); - return block.isReplaceable(world, x, y, z); + Block block = world.getBlock(cX, cY, cZ); + return block.isReplaceable(world, cX, cY, cZ); } - private static ChunkCoordinates checkCoordsForPlayer(IBlockAccess world, int origX, int origZ, int x, int y, int z, boolean except) + private static ChunkCoordinates checkCoordsForPlayer(IBlockAccess world, int origX, int origZ, int cX, int cY, int cZ, boolean except) { - LogHelper.info("Checking coordinates in X=" + x + ", Y=" + y + ", Z=" + z); - if (except && world.isSideSolid(x, y - 1, z, ForgeDirection.UP, true) && world.isAirBlock(x, y, z) && world.isAirBlock(x, y + 1, z) && !areCoordinatesTheSame2D(origX, origZ, x, z)) + LogHelper.info("Checking coordinates in X=" + cX + ", Y=" + cY + ", Z=" + cZ); + if (except && world.isSideSolid(cX, cY - 1, cZ, ForgeDirection.UP, true) && world.isAirBlock(cX, cY, cZ) && world.isAirBlock(cX, cY + 1, cZ) && !areCoordinatesTheSame2D(origX, origZ, cX, cZ)) { LogHelper.info("Found spot with the exception of the origin point"); - return new ChunkCoordinates(x, y, z); + return new ChunkCoordinates(cX, cY, cZ); } - if (!except && world.isSideSolid(x, y - 1, z, ForgeDirection.UP, true) && world.isAirBlock(x, y, z) && world.isAirBlock(x, y + 1, z)) + if (!except && world.isSideSolid(cX, cY - 1, cZ, ForgeDirection.UP, true) && world.isAirBlock(cX, cY, cZ) && world.isAirBlock(cX, cY + 1, cZ)) { LogHelper.info("Found spot without exceptions"); - return new ChunkCoordinates(x, y, z); + return new ChunkCoordinates(cX, cY, cZ); } return null; } @@ -170,11 +170,11 @@ private static ChunkCoordinates checkCoordsForPlayer(IBlockAccess world, int ori * This is a spiral search, will begin at close range and move out. * * @param world The world object. - * @param origX Original X coordinate - * @param origZ Original Z coordinate - * @param X Moving X coordinate, should be the same as origX when called. - * @param Y Y coordinate, does not move. - * @param Z Moving Z coordinate, should be the same as origZ when called. + * @param origX Original cX coordinate + * @param origZ Original cZ coordinate + * @param cX Moving cX coordinate, should be the same as origX when called. + * @param cY cY coordinate, does not move. + * @param cZ Moving cZ coordinate, should be the same as origZ when called. * @param radius The radius of the search. If set to high numbers, will create a ton of lag * @param except Wether to include the origin of the search as a valid block. * @param steps Number of steps of the recursive recursiveness that recurses through the recursion. It is the first size of the spiral, should be one (1) always at the first call. @@ -182,36 +182,36 @@ private static ChunkCoordinates checkCoordsForPlayer(IBlockAccess world, int ori * @param type True = for player, False = for backpack * @return The coordinates of the block in the chunk of the world of the game of the server of the owner of the computer, where you can place something above it. */ - public static ChunkCoordinates getNearestEmptyChunkCoordinatesSpiral(IBlockAccess world, int origX, int origZ, int X, int Y, int Z, int radius, boolean except, int steps, byte pass, boolean type) + public static ChunkCoordinates getNearestEmptyChunkCoordinatesSpiral(IBlockAccess world, int origX, int origZ, int cX, int cY, int cZ, int radius, boolean except, int steps, byte pass, boolean type) { //Spiral search, because I'm awesome :) //This is so the backpack tries to get placed near the death point first //And then goes looking farther away at each step - //Steps mod 2 == 0 => X++, Z-- - //Steps mod 2 == 1 => X--, Z++ + //Steps mod 2 == 0 => cX++, cZ-- + //Steps mod 2 == 1 => cX--, cZ++ if (steps >= radius) return null; - int i = X, j = Z; + int i = cX, j = cZ; if (steps % 2 == 0) { if (pass == 0) { - for (; i <= X + steps; i++) + for (; i <= cX + steps; i++) { - ChunkCoordinates coords = type ? checkCoordsForPlayer(world, origX, origZ, X, Y, Z, except) : checkCoordsForBackpack(world, origX, origZ, X, Y, Z, except); + ChunkCoordinates coords = type ? checkCoordsForPlayer(world, origX, origZ, cX, cY, cZ, except) : checkCoordsForBackpack(world, origX, origZ, cX, cY, cZ, except); if (coords != null) { return coords; } } pass++; - return getNearestEmptyChunkCoordinatesSpiral(world, origX, origZ, i, Y, j, radius, except, steps, pass, type); + return getNearestEmptyChunkCoordinatesSpiral(world, origX, origZ, i, cY, j, radius, except, steps, pass, type); } if (pass == 1) { - for (; j >= Z - steps; j--) + for (; j >= cZ - steps; j--) { - ChunkCoordinates coords = type ? checkCoordsForPlayer(world, origX, origZ, X, Y, Z, except) : checkCoordsForBackpack(world, origX, origZ, X, Y, Z, except); + ChunkCoordinates coords = type ? checkCoordsForPlayer(world, origX, origZ, cX, cY, cZ, except) : checkCoordsForBackpack(world, origX, origZ, cX, cY, cZ, except); if (coords != null) { return coords; @@ -219,7 +219,7 @@ public static ChunkCoordinates getNearestEmptyChunkCoordinatesSpiral(IBlockAcces } pass--; steps++; - return getNearestEmptyChunkCoordinatesSpiral(world, origX, origZ, i, Y, j, radius, except, steps, pass, type); + return getNearestEmptyChunkCoordinatesSpiral(world, origX, origZ, i, cY, j, radius, except, steps, pass, type); } } @@ -227,22 +227,22 @@ public static ChunkCoordinates getNearestEmptyChunkCoordinatesSpiral(IBlockAcces { if (pass == 0) { - for (; i >= X - steps; i--) + for (; i >= cX - steps; i--) { - ChunkCoordinates coords = type ? checkCoordsForPlayer(world, origX, origZ, X, Y, Z, except) : checkCoordsForBackpack(world, origX, origZ, X, Y, Z, except); + ChunkCoordinates coords = type ? checkCoordsForPlayer(world, origX, origZ, cX, cY, cZ, except) : checkCoordsForBackpack(world, origX, origZ, cX, cY, cZ, except); if (coords != null) { return coords; } } pass++; - return getNearestEmptyChunkCoordinatesSpiral(world, origX, origZ, i, Y, j, radius, except, steps, pass, type); + return getNearestEmptyChunkCoordinatesSpiral(world, origX, origZ, i, cY, j, radius, except, steps, pass, type); } if (pass == 1) { - for (; j <= Z + steps; j++) + for (; j <= cZ + steps; j++) { - ChunkCoordinates coords = type ? checkCoordsForPlayer(world, origX, origZ, X, Y, Z, except) : checkCoordsForBackpack(world, origX, origZ, X, Y, Z, except); + ChunkCoordinates coords = type ? checkCoordsForPlayer(world, origX, origZ, cX, cY, cZ, except) : checkCoordsForBackpack(world, origX, origZ, cX, cY, cZ, except); if (coords != null) { return coords; @@ -250,13 +250,64 @@ public static ChunkCoordinates getNearestEmptyChunkCoordinatesSpiral(IBlockAcces } pass--; steps++; - return getNearestEmptyChunkCoordinatesSpiral(world, origX, origZ, i, Y, j, radius, except, steps, pass, type); + return getNearestEmptyChunkCoordinatesSpiral(world, origX, origZ, i, cY, j, radius, except, steps, pass, type); } } return null; } + public static int[] getDirectionAndCoordsForSleepingBag(int switchBy, World world, int cX, int cY, int cZ, boolean isTile) + { + int direction = -1; + switch (switchBy) + { + case 0: + cZ = isTile ? --cZ : ++cZ; + if (world.isAirBlock(cX, cY, cZ) && world.getBlock(cX, cY - 1, cZ).getMaterial().isSolid()) + { + if (world.isAirBlock(cX, cY, cZ - 1) && world.getBlock(cX, cY - 1, cZ - 1).getMaterial().isSolid()) + { + direction = isTile ? 2 : 0; + } + } + break; + case 1: + cX = isTile ? ++cX : --cX; + if (world.isAirBlock(cX, cY, cZ) && world.getBlock(cX, cY - 1, cZ).getMaterial().isSolid()) + { + if (world.isAirBlock(cX + 1, cY, cZ) && world.getBlock(cX + 1, cY - 1, cZ).getMaterial().isSolid()) + { + direction = isTile ? 3 : 1; + } + } + break; + case 2: + cZ = isTile ? ++cZ : --cZ; + if (world.isAirBlock(cX, cY, cZ) && world.getBlock(cX, cY - 1, cZ).getMaterial().isSolid()) + { + if (world.isAirBlock(cX, cY, cZ + 1) && world.getBlock(cX, cY - 1, cZ + 1).getMaterial().isSolid()) + { + direction = isTile ? 0 : 2; + } + } + break; + case 3: + cX = isTile ? --cX : ++cX; + if (world.isAirBlock(cX, cY, cZ) && world.getBlock(cX, cY - 1, cZ).getMaterial().isSolid()) + { + if (world.isAirBlock(cX - 1, cY, cZ) && world.getBlock(cX - 1, cY - 1, cZ).getMaterial().isSolid()) + { + direction = isTile ? 1 : 3; + } + } + break; + default: + break; + } + return new int[] {direction, cX, cY, cZ}; + } + /** * Compares two coordinates. Heh. * diff --git a/src/main/resources/assets/adventurebackpack/lang/en_US.lang b/src/main/resources/assets/adventurebackpack/lang/en_US.lang index 861f39d5..bbaf3742 100644 --- a/src/main/resources/assets/adventurebackpack/lang/en_US.lang +++ b/src/main/resources/assets/adventurebackpack/lang/en_US.lang @@ -65,6 +65,7 @@ adventurebackpack:messages.already.equipped.copterpack=You are already equipping adventurebackpack:messages.already.equipped.jetpack=You are already equipping a Coal Jetpack. adventurebackpack:messages.already.impossibru=You aren't wearing any backpacks. adventurebackpack:messages.backpack.cant.bag=Can't deploy the sleeping bag! Check the surrounding area. +adventurebackpack:messages.cant.sleep.here=Ancient forces do not welcome sleep in this dimension. adventurebackpack:messages.copterpack.hover=CopterPack: Hover Mode. adventurebackpack:messages.copterpack.normal=CopterPack: Normal Mode. adventurebackpack:messages.copterpack.outoffuel=CopterPack: Out of fuel. From 1f6a451791d88fca413a93d2939d708765e18e79 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 1 Feb 2018 19:50:08 +0700 Subject: [PATCH 422/462] 1-click sleep is working, still not finished --- .../block/BlockAdventureBackpack.java | 3 +- .../block/BlockCampFire.java | 4 +- .../block/BlockSleepingBag.java | 6 +- .../block/TileAdventureBackpack.java | 50 +-- .../client/gui/GuiAdvBackpack.java | 79 ++--- .../client/models/ModelBackpackBlock.java | 4 +- .../adventurebackpack/common/Constants.java | 10 +- .../common/ServerActions.java | 103 +++--- .../inventory/ContainerBackpack.java | 3 +- .../IInventoryAdventureBackpack.java | 4 +- .../inventory/InventoryBackpack.java | 70 +++- .../item/ItemAdventureBackpack.java | 3 +- .../EquipUnequipBackWearablePacket.java | 6 +- .../network/PlayerActionPacket.java | 7 +- .../network/SleepingBagPacket.java | 30 +- .../network/SyncPropertiesPacket.java | 6 +- .../network/WearableModePacket.java | 1 - .../messages/EntityParticlePacket.java | 1 - .../network/messages/EntitySoundPacket.java | 1 - .../adventurebackpack/util/CoordsUtils.java | 306 ++++++++++++++++++ .../darkona/adventurebackpack/util/Utils.java | 232 ------------- 21 files changed, 498 insertions(+), 431 deletions(-) create mode 100644 src/main/java/com/darkona/adventurebackpack/util/CoordsUtils.java diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java index 9fdd0125..1123997e 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java @@ -35,6 +35,7 @@ import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.reference.ModInfo; +import com.darkona.adventurebackpack.util.CoordsUtils; import com.darkona.adventurebackpack.util.Utils; import static com.darkona.adventurebackpack.reference.BackpackTypes.BOOKSHELF; @@ -67,7 +68,7 @@ public void randomDisplayTick(World world, int x, int y, int z, Random random) { if (getAssociatedTileBackpackType(world, x, y, z) == BOOKSHELF) { - ChunkCoordinates enchTable = Utils.findBlock3D(world, x, y, z, Blocks.enchanting_table, 2, 2); + ChunkCoordinates enchTable = CoordsUtils.findBlock3D(world, x, y, z, Blocks.enchanting_table, 2, 2); if (enchTable != null) { if (!world.isAirBlock((enchTable.posX - x) / 2 + x, enchTable.posY, (enchTable.posZ - z) / 2 + z)) diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java b/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java index 48cde960..89e4977b 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java @@ -17,7 +17,7 @@ import com.darkona.adventurebackpack.CreativeTabAB; import com.darkona.adventurebackpack.reference.ModInfo; -import com.darkona.adventurebackpack.util.Utils; +import com.darkona.adventurebackpack.util.CoordsUtils; /** * Created on 05/01/2015 @@ -155,7 +155,7 @@ public ChunkCoordinates getBedSpawnPosition(IBlockAccess world, int x, int y, in { for (int i = y - 5; i <= y + 5; i++) { - ChunkCoordinates spawn = Utils.getNearestEmptyChunkCoordinatesSpiral(world, x, z, x, i, z, 8, true, 1, (byte) 0, true); + ChunkCoordinates spawn = CoordsUtils.getNearestEmptyChunkCoordinatesSpiral(world, x, z, x, i, z, 8, true, 1, (byte) 0, true); if (spawn != null) { diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java b/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java index 38bf66b6..d2548c6f 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java @@ -26,9 +26,9 @@ import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; +import com.darkona.adventurebackpack.util.CoordsUtils; import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Resources; -import com.darkona.adventurebackpack.util.Utils; /** * Created on 14/10/2014 @@ -164,8 +164,8 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p //This is so the wake up event can detect it. It fires before the player wakes up. //and the bed location isn't set until then, normally. player.setSpawnChunk(new ChunkCoordinates(x, y, z), true, player.dimension); - LogHelper.info("Looking for a campfire nearby..."); - ChunkCoordinates campfire = Utils.findBlock3D(world, x, y, z, ModBlocks.blockCampFire, 8, 2); + LogHelper.info("Looking for a campfire nearby..."); //TODO + ChunkCoordinates campfire = CoordsUtils.findBlock3D(world, x, y, z, ModBlocks.blockCampFire, 8, 2); if (campfire != null) { LogHelper.info("Campfire Found, saving coordinates. " + LogHelper.print3DCoords(campfire)); diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 50a29ae0..54ae1ab5 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -1,6 +1,5 @@ package com.darkona.adventurebackpack.block; -import net.minecraft.block.Block; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; @@ -30,6 +29,7 @@ import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.util.BackpackUtils; +import com.darkona.adventurebackpack.util.CoordsUtils; import com.darkona.adventurebackpack.util.Utils; import com.darkona.adventurebackpack.util.Wearing; @@ -37,12 +37,12 @@ import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_RIGHT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_LEFT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_RIGHT; -import static com.darkona.adventurebackpack.common.Constants.WEARABLE_TAG; import static com.darkona.adventurebackpack.common.Constants.INVENTORY; import static com.darkona.adventurebackpack.common.Constants.LEFT_TANK; import static com.darkona.adventurebackpack.common.Constants.LOWER_TOOL; import static com.darkona.adventurebackpack.common.Constants.RIGHT_TANK; import static com.darkona.adventurebackpack.common.Constants.UPPER_TOOL; +import static com.darkona.adventurebackpack.common.Constants.WEARABLE_TAG; /** * Created by Darkona on 12/10/2014. @@ -103,44 +103,20 @@ public NBTTagCompound getExtendedProperties() return extendedProperties; } - @Override - public void setExtendedProperties(NBTTagCompound extendedProperties) + public boolean deploySleepingBag(EntityPlayer player, World world, int meta, int cX, int cY, int cZ) { - this.extendedProperties = extendedProperties; - } + if (world.isRemote) + return false; - public boolean deploySleepingBag(EntityPlayer player, World world, int x, int y, int z, int meta) - { - if (world.isRemote) return false; - Block sleepingBag = ModBlocks.blockSleepingBag; - if (world.setBlock(x, y, z, sleepingBag, meta, 3)) + sleepingBagDeployed = CoordsUtils.spawnSleepingBag(player, world, meta, cX, cY, cZ); + if (sleepingBagDeployed) { - world.playSoundAtEntity(player, Block.soundTypeCloth.func_150496_b(), 0.5f, 1.0f); - sbx = x; - sby = y; - sbz = z; + sbx = cX; + sby = cY; + sbz = cZ; sbdir = meta; - switch (meta & 3) - { - case 0: - ++z; - break; - case 1: - --x; - break; - case 2: - --z; - break; - case 3: - ++x; - break; - } - sleepingBagDeployed = world.setBlock(x, y, z, sleepingBag, meta + 8, 3); - //LogHelper.info("deploySleepingBag() => SleepingBagDeployed is: " + sleepingBagDeployed); - world.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); - return sleepingBagDeployed; } - return false; + return sleepingBagDeployed; } public void setSleepingBagDeployed(boolean state) @@ -239,7 +215,7 @@ public boolean isUseableByPlayer(EntityPlayer player) } @Override - public boolean isSBDeployed() + public boolean isSleepingBagDeployed() { return this.sleepingBagDeployed; } @@ -271,7 +247,7 @@ public void writeToNBT(NBTTagCompound compound) compound.setInteger("lumen", luminosity); } - private void convertFromOldNBTFormat(NBTTagCompound compound) + private void convertFromOldNBTFormat(NBTTagCompound compound) // backwards compatibility { NBTTagCompound oldBackpackTag = compound.getCompoundTag("backpackData"); NBTTagList oldItems = oldBackpackTag.getTagList("ABPItems", NBT.TAG_COMPOUND); diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index 6b6dc961..82018de1 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -12,6 +12,7 @@ import cpw.mods.fml.relauncher.SideOnly; import com.darkona.adventurebackpack.block.TileAdventureBackpack; +import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.common.Constants.Source; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.init.ModNetwork; @@ -62,6 +63,11 @@ public GuiAdvBackpack(EntityPlayer player, InventoryBackpack inventoryBackpack, ySize = 207; } + private boolean isBedButtonCase() + { + return source == Source.TILE || (source == Source.WEARING && GuiScreen.isCtrlKeyDown()); + } + @Override protected void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) { @@ -70,52 +76,34 @@ protected void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); // Buttons and button highlight - if (source == Source.TILE - || source == Source.WEARING && GuiScreen.isCtrlKeyDown()) + if (isBedButtonCase()) { if (bedButton.inButton(this, mouseX, mouseY)) - { bedButton.draw(this, 20, 227); - } else - { bedButton.draw(this, 1, 227); - } } else if (source == Source.WEARING) { if (unequipButton.inButton(this, mouseX, mouseY)) - { unequipButton.draw(this, 96, 227); - } else - { unequipButton.draw(this, 77, 227); - } } else if (source == Source.HOLDING) { if (equipButton.inButton(this, mouseX, mouseY)) - { equipButton.draw(this, 96, 208); - } else - { equipButton.draw(this, 77, 208); - } } - //zLevel +=1; if (ConfigHandler.tanksHoveringText) { if (tankLeft.inTank(this, mouseX, mouseY)) - { drawHoveringText(tankLeft.getTankTooltip(), mouseX, mouseY, fontRendererObj); - } if (tankRight.inTank(this, mouseX, mouseY)) - { drawHoveringText(tankRight.getTankTooltip(), mouseX, mouseY, fontRendererObj); - } } } @@ -129,29 +117,6 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) tankRight.draw(this, rgt); GL11.glDisable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_BLEND); - - /*if (!ConfigHandler.tanksHoveringText); - { - GL11.glPushMatrix(); - //GL11.glTranslatef(8f,64f,0f); - GL11.glScalef(0.6f, 0.6f, 0.6f); - String name = (lft.getFluid() != null) ? lft.getFluid().getLocalizedName() : "None"; - String amount = (lft.getFluid() != null ? lft.getFluid().amount : "Empty").toString(); - String capacity = Integer.toString(inventory.getLeftTank().getCapacity()); - int offsetY = 32; - int offsetX = 8; - fontRendererObj.drawString(Utils.getFirstWord(name), 1 + offsetX, 64 + offsetY, 0x373737, false); - fontRendererObj.drawString(amount, 1 + offsetX, 79 + offsetY, 0x373737, false); - fontRendererObj.drawString(capacity, 1 + offsetX, 94 + offsetY, 0x373737, false); - - name = (rgt.getFluid() != null) ? rgt.getFluid().getLocalizedName() : "None"; - amount = (rgt.getFluid() != null ? rgt.getFluid().amount : "Empty").toString(); - fontRendererObj.drawString(Utils.getFirstWord(name), 369 + offsetX, 64 + offsetY, 0x373737, false); - fontRendererObj.drawString(amount, 369 + offsetX, 79 + offsetY, 0x373737, false); - fontRendererObj.drawString(capacity, 369 + offsetX, 94 + offsetY, 0x373737, false); - - GL11.glPopMatrix(); - }*/ } @Override @@ -169,23 +134,19 @@ protected GuiImageButtonNormal getUnequipButton() @Override protected void mouseClicked(int mouseX, int mouseY, int button) { - if (source == Source.TILE - || source == Source.WEARING && GuiScreen.isCtrlKeyDown()) + if (isBedButtonCase() && bedButton.inButton(this, mouseX, mouseY)) { - if (bedButton.inButton(this, mouseX, mouseY)) + if (source == Source.TILE) + { + TileAdventureBackpack te = (TileAdventureBackpack) inventory; + ModNetwork.net.sendToServer(new SleepingBagPacket.SleepingBagMessage(true, te.xCoord, te.yCoord, te.zCoord)); + } + else { - if (source == Source.TILE) - { - TileAdventureBackpack te = (TileAdventureBackpack) inventory; - ModNetwork.net.sendToServer(new SleepingBagPacket.SleepingBagMessage(true, te.xCoord, te.yCoord, te.zCoord)); - } - else - { - final int posX = MathHelper.floor_double(player.posX); - final int posY = MathHelper.floor_double(player.posY) - 1; - final int posZ = MathHelper.floor_double(player.posZ); - ModNetwork.net.sendToServer(new SleepingBagPacket.SleepingBagMessage(false, posX, posY, posZ)); - } + int posX = MathHelper.floor_double(player.posX); + int posY = MathHelper.floor_double(player.posY) - 1; //TODO + int posZ = MathHelper.floor_double(player.posZ); + ModNetwork.net.sendToServer(new SleepingBagPacket.SleepingBagMessage(false, posX, posY, posZ)); } } else @@ -205,7 +166,7 @@ public void updateScreen() { isHoldingSpace = true; ModNetwork.net.sendToServer(new PlayerActionPacket.ActionMessage(PlayerActionPacket.GUI_HOLDING_SPACE)); - inventory.getExtendedProperties().setBoolean("holdingSpace", true); + inventory.getExtendedProperties().setBoolean(Constants.HOLDING_SPACE_TAG, true); } } else @@ -214,7 +175,7 @@ public void updateScreen() { isHoldingSpace = false; ModNetwork.net.sendToServer(new PlayerActionPacket.ActionMessage(PlayerActionPacket.GUI_NOT_HOLDING_SPACE)); - inventory.getExtendedProperties().removeTag("holdingSpace"); + inventory.getExtendedProperties().removeTag(Constants.HOLDING_SPACE_TAG); } } } diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java index dad83c34..b6cbea98 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java @@ -271,7 +271,7 @@ public ModelBackpackBlock() public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float scale, IInventoryAdventureBackpack backpack) { //scale*=0.9; - boolean sleepingbag = backpack.isSBDeployed(); + boolean sleepingbag = backpack.isSleepingBagDeployed(); FluidTank tankLeft = backpack.getLeftTank(); FluidTank tankRight = backpack.getRightTank(); setRotationAngles(f, f1, f2, f3, f4, scale, entity); @@ -388,7 +388,7 @@ private void renderBackpack(IInventoryAdventureBackpack backpack, float scale) tankLeftTop.render(scale); tankRightTop.render(scale); - if (!backpack.isSBDeployed()) bed.render(scale); + if (!backpack.isSleepingBagDeployed()) bed.render(scale); if (type == PIG || type == HORSE) { diff --git a/src/main/java/com/darkona/adventurebackpack/common/Constants.java b/src/main/java/com/darkona/adventurebackpack/common/Constants.java index c2f30f0f..33118c3f 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/Constants.java +++ b/src/main/java/com/darkona/adventurebackpack/common/Constants.java @@ -9,7 +9,7 @@ */ public class Constants { - public enum Source + public enum Source //TODO move to separate class? { TILE, HOLDING, WEARING } @@ -33,13 +33,17 @@ public enum Source public static final int BUCKET_OUT_RIGHT = BUCKET_IN_RIGHT + 1; // Tanks - public static final String RIGHT_TANK = "rightTank"; + public static final String RIGHT_TANK = "rightTank"; //TODO RIGHT_TANK_TAG and so on public static final String LEFT_TANK = "leftTank"; public static final int BASIC_TANK_CAPACITY = BUCKET * 4; //public static final int ADVANCED_TANK_CAPACITY = BUCKET * 8; // upgrade system? //public static final int HEROIC_TANK_CAPACITY = BUCKET * 12; - // Jetpack + + // NBT: Extended Properties + public static final String HOLDING_SPACE_TAG = "holdingSpace"; + + // Jetpack //TODO subclass jetpack and simplify names? and copter? public static final int JETPACK_INVENTORY_SIZE = 3; public static final int JETPACK_BUCKET_IN = 0; public static final int JETPACK_BUCKET_OUT = 1; diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index fb516d4b..dece0c81 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -1,8 +1,8 @@ package com.darkona.adventurebackpack.common; +import java.lang.reflect.Field; import java.util.Random; -import net.minecraft.block.Block; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.player.EntityPlayer; @@ -11,8 +11,9 @@ import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.play.server.S0APacketUseBed; import net.minecraft.util.ChatComponentTranslation; -import net.minecraft.util.MathHelper; +import net.minecraft.util.ChunkCoordinates; import net.minecraft.world.World; import net.minecraft.world.WorldProviderEnd; import net.minecraft.world.WorldProviderHell; @@ -22,7 +23,6 @@ import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; -import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.inventory.InventoryBackpack; import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; @@ -33,6 +33,7 @@ import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.reference.BackpackTypes; +import com.darkona.adventurebackpack.util.CoordsUtils; import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Utils; import com.darkona.adventurebackpack.util.Wearing; @@ -265,12 +266,12 @@ public static void toggleSleepingBag(EntityPlayer player, boolean isTile, int cX if (isTile && world.getTileEntity(cX, cY, cZ) instanceof TileAdventureBackpack) { TileAdventureBackpack te = (TileAdventureBackpack) world.getTileEntity(cX, cY, cZ); - if (!te.isSBDeployed()) + if (!te.isSleepingBagDeployed()) { - int can[] = canDeploySleepingBag(world, player, cX, cY, cZ, isTile); + int can[] = CoordsUtils.canDeploySleepingBag(world, player, cX, cY, cZ, true); if (can[0] > -1) { - if (te.deploySleepingBag(player, world, can[1], can[2], can[3], can[0])) + if (te.deploySleepingBag(player, world, can[0], can[1], can[2], can[3])) { player.closeScreen(); } @@ -288,70 +289,70 @@ else if (!world.isRemote) } else if (!isTile && Wearing.isWearingBackpack(player)) { - int can[] = canDeploySleepingBag(world, player, cX, cY, cZ, isTile); + int can[] = CoordsUtils.canDeploySleepingBag(world, player, cX, cY, cZ, false); if (can[0] > -1) { - if (deploySleepingBag(player, world, can[1], can[2], can[3], can[0])) - { - player.closeScreen(); - } + Wearing.getWearingBackpackInv(player).deploySleepingBag(player, world, can[0], can[1], can[2], can[3]); + //canPlayerSleep + //storeOriginalSpawn + //storeOriginalPosition + //TAG_SLEEPING true + + sleepSafe((EntityPlayerMP) player, world, can[1], can[2], can[3]); + //TODO remove sleeping bag after sleep + + //restoreSpawn + //restorePosition + //TAG_SLEEPING false } else if (!world.isRemote) { player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.backpack.cant.bag")); } + player.closeScreen(); } } - private static int[] canDeploySleepingBag(World world, EntityPlayer player, int cX, int cY, int cZ, boolean isTile) + // shamelessly copied from OpenBlocks SleepingBag + private static void sleepSafe(EntityPlayerMP player, World world, int cX, int cY, int cZ) { - int switchBy = -1; - if (isTile) - { - TileAdventureBackpack te = (TileAdventureBackpack) world.getTileEntity(cX, cY, cZ); - if (!te.isSBDeployed()) - switchBy = world.getBlockMetadata(cX, cY, cZ) & 3; - } - else + if (player.isRiding()) + player.mountEntity(null); + + if (setSleeping(player)) { - InventoryBackpack backpack = Wearing.getWearingBackpackInv(player); - if (!backpack.isSBDeployed()) //TODO add boolean and behavior - switchBy = MathHelper.floor_double((double)((player.rotationYaw * 4F) / 360F) + 0.5D) & 3; + player.playerLocation = new ChunkCoordinates(cX, cY, cZ); + + player.motionX = player.motionZ = player.motionY = 0.0D; + world.updateAllPlayersSleepingFlag(); + + S0APacketUseBed sleepPacket = new S0APacketUseBed(player, cX, cY, cZ); + player.getServerForPlayer().getEntityTracker().func_151247_a(player, sleepPacket); + player.playerNetServerHandler.sendPacket(sleepPacket); } - return Utils.getDirectionAndCoordsForSleepingBag(switchBy, world, cX, cY, cZ, isTile); } - //TODO it's copy from tile.backpack. move to item.backpack? - private static boolean deploySleepingBag(EntityPlayer player, World world, int cX, int cY, int cZ, int meta) + private static boolean setSleeping(EntityPlayer player) { - if (world.isRemote) - return false; + try + { + Class clazz = Class.forName("net.minecraft.entity.player.EntityPlayer"); + + Field field = clazz.getDeclaredField(ConfigHandler.IS_DEVENV ? "sleeping" : "field_71083_bS"); + field.setAccessible(true); + field.set(player, true); - Block sleepingBag = ModBlocks.blockSleepingBag; - if (world.setBlock(cX, cY, cZ, sleepingBag, meta, 3)) + field = clazz.getDeclaredField(ConfigHandler.IS_DEVENV ? "sleepTimer" : "field_71076_b"); + field.setAccessible(true); + field.set(player, 0); + + return true; + } + catch (Throwable e) { - world.playSoundAtEntity(player, Block.soundTypeCloth.func_150496_b(), 0.5f, 1.0f); - switch (meta & 3) - { - case 0: - ++cZ; - break; - case 1: - --cX; - break; - case 2: - --cZ; - break; - case 3: - ++cX; - break; - } - boolean sleepingBagDeployed = world.setBlock(cX, cY, cZ, sleepingBag, meta + 8, 3); - //LogHelper.info("deploySleepingBag() => SleepingBagDeployed is: " + sleepingBagDeployed); - world.markBlockForUpdate(cX, cY, cZ); - return sleepingBagDeployed; + //e.printStackTrace(); + return false; } - return false; } /** diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index dbb2923c..a8b105fd 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -11,6 +11,7 @@ import net.minecraft.item.crafting.CraftingManager; import net.minecraftforge.fluids.FluidTank; +import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.common.Constants.Source; import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_LEFT; @@ -196,7 +197,7 @@ private boolean mergeRightBucket(ItemStack stack) private boolean isHoldingSpace() { - return inventory.getExtendedProperties().hasKey("holdingSpace"); + return inventory.getExtendedProperties().hasKey(Constants.HOLDING_SPACE_TAG); } private boolean transferFluidContainer(ItemStack container) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java index 4f609004..9a45f731 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java @@ -29,13 +29,11 @@ public interface IInventoryAdventureBackpack extends IInventoryTanks NBTTagCompound getExtendedProperties(); - void setExtendedProperties(NBTTagCompound properties); - boolean hasItem(Item item); void consumeInventoryItem(Item item); - boolean isSBDeployed(); + boolean isSleepingBagDeployed(); void setLastTime(int time); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index aa571800..da35594f 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -1,25 +1,29 @@ package com.darkona.adventurebackpack.inventory; import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import net.minecraft.world.World; import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.fluids.FluidTank; import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.reference.BackpackTypes; +import com.darkona.adventurebackpack.util.CoordsUtils; import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_LEFT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_RIGHT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_LEFT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_RIGHT; -import static com.darkona.adventurebackpack.common.Constants.WEARABLE_TAG; import static com.darkona.adventurebackpack.common.Constants.INVENTORY; import static com.darkona.adventurebackpack.common.Constants.LEFT_TANK; import static com.darkona.adventurebackpack.common.Constants.RIGHT_TANK; +import static com.darkona.adventurebackpack.common.Constants.WEARABLE_TAG; /** * Created on 12/10/2014 @@ -36,6 +40,12 @@ public class InventoryBackpack extends InventoryAdventureBackpack implements IIn private BackpackTypes type = BackpackTypes.STANDARD; + private boolean sleepingBagDeployed = false; + private int sbx; + private int sby; + private int sbz; + //private int sbDimension; //TODO? + private boolean disableNVision = false; private boolean disableCycling = false; private int lastTime = 0; @@ -47,7 +57,7 @@ public InventoryBackpack(ItemStack backpack) openInventory(); } - private void detectAndConvertFromOldNBTFormat(NBTTagCompound compound) // need only for compatibility with old saves + private void detectAndConvertFromOldNBTFormat(NBTTagCompound compound) // backwards compatibility { if (compound == null || !compound.hasKey("backpackData")) return; @@ -57,7 +67,7 @@ private void detectAndConvertFromOldNBTFormat(NBTTagCompound compound) // need o leftTank.readFromNBT(oldBackpackTag.getCompoundTag(LEFT_TANK)); rightTank.readFromNBT(oldBackpackTag.getCompoundTag(RIGHT_TANK)); type = BackpackTypes.getType(oldBackpackTag.getString("colorName")); - // + NBTTagCompound newBackpackTag = new NBTTagCompound(); newBackpackTag.setTag(INVENTORY, oldItems); newBackpackTag.setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); @@ -116,12 +126,6 @@ public NBTTagCompound getExtendedProperties() return extendedProperties; } - @Override - public void setExtendedProperties(NBTTagCompound properties) - { - this.extendedProperties = properties; - } - @Override public boolean hasItem(Item item) { @@ -135,9 +139,39 @@ public void consumeInventoryItem(Item item) } @Override - public boolean isSBDeployed() + public boolean isSleepingBagDeployed() + { + return sleepingBagDeployed; + } + + public boolean deploySleepingBag(EntityPlayer player, World world, int meta, int cX, int cY, int cZ) + { + if (world.isRemote) + return false; + + if (sleepingBagDeployed) + removeSleepingBag(world); + + sleepingBagDeployed = CoordsUtils.spawnSleepingBag(player, world, meta, cX, cY, cZ); + if (sleepingBagDeployed) + { + sbx = cX; + sby = cY; + sbz = cZ; + markDirty(); + } + return sleepingBagDeployed; + } + + public void removeSleepingBag(World world) { - return false; + if (this.sleepingBagDeployed) + { + if (world.getBlock(sbx, sby, sbz) == ModBlocks.blockSleepingBag) + world.func_147480_a(sbx, sby, sbz, false); + } + this.sleepingBagDeployed = false; + markDirty(); } @Override @@ -211,6 +245,13 @@ public void loadFromNBT(NBTTagCompound compound) leftTank.readFromNBT(backpackTag.getCompoundTag(LEFT_TANK)); rightTank.readFromNBT(backpackTag.getCompoundTag(RIGHT_TANK)); extendedProperties = backpackTag.getCompoundTag("extendedProperties"); + sleepingBagDeployed = extendedProperties.getBoolean("sleepingbag"); + if (sleepingBagDeployed) + { + sbx = extendedProperties.getInteger("sbx"); + sby = extendedProperties.getInteger("sby"); + sbz = extendedProperties.getInteger("sbz"); + } disableCycling = backpackTag.getBoolean("disableCycling"); disableNVision = backpackTag.getBoolean("disableNVision"); lastTime = backpackTag.getInteger("lastTime"); @@ -238,6 +279,13 @@ public void saveToNBT(NBTTagCompound compound) backpackTag.setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); backpackTag.setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); backpackTag.setTag("extendedProperties", extendedProperties); + extendedProperties.setBoolean("sleepingbag", sleepingBagDeployed); + if (sleepingBagDeployed) + { + extendedProperties.setInteger("sbx", sbx); + extendedProperties.setInteger("sby", sby); + extendedProperties.setInteger("sbz", sbz); + } backpackTag.setBoolean("disableCycling", disableCycling); backpackTag.setBoolean("disableNVision", disableNVision); backpackTag.setInteger("lastTime", lastTime); diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index f6e54f93..57f04788 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -39,6 +39,7 @@ import com.darkona.adventurebackpack.proxy.ClientProxy; import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.util.BackpackUtils; +import com.darkona.adventurebackpack.util.CoordsUtils; import com.darkona.adventurebackpack.util.EnchUtils; import com.darkona.adventurebackpack.util.Resources; import com.darkona.adventurebackpack.util.Utils; @@ -180,7 +181,7 @@ private boolean tryPlace(World world, EntityPlayer player, ItemStack backpack) { if (Y + shiftY >= 1) { - ChunkCoordinates spawn = Utils.getNearestEmptyChunkCoordinatesSpiral(world, X, Z, X, Y + shiftY, Z, 6, true, 1, (byte) 0, false); + ChunkCoordinates spawn = CoordsUtils.getNearestEmptyChunkCoordinatesSpiral(world, X, Z, X, Y + shiftY, Z, 6, true, 1, (byte) 0, false); if (spawn != null) { return placeBackpack(backpack, player, world, spawn.posX, spawn.posY, spawn.posZ, ForgeDirection.UP.ordinal(), false); diff --git a/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java b/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java index 85bdbcae..ac898b3f 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java @@ -61,6 +61,10 @@ else if (Wearing.isWearingJetpack(player)) } if (message.action == UNEQUIP_WEARABLE) { + if (Wearing.isWearingBackpack(player)) + { + Wearing.getWearingBackpackInv(player).removeSleepingBag(player.worldObj); //TODO temporally solution + } BackpackUtils.unequipWearable(player); } } @@ -70,7 +74,7 @@ else if (Wearing.isWearingJetpack(player)) public static class Message implements IMessage { private byte action; - private boolean force; + private boolean force; //TODO remove completely public Message() { diff --git a/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java b/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java index eaad57cf..f493c418 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java @@ -7,6 +7,7 @@ import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.entity.EntityFriendlySpider; import com.darkona.adventurebackpack.inventory.ContainerBackpack; import com.darkona.adventurebackpack.inventory.IInventoryAdventureBackpack; @@ -59,11 +60,11 @@ public IMessage onMessage(ActionMessage message, MessageContext ctx) if (message.type == GUI_HOLDING_SPACE) { - inv.getExtendedProperties().setBoolean("holdingSpace", true); + inv.getExtendedProperties().setBoolean(Constants.HOLDING_SPACE_TAG, true); } - else + else if (message.type == GUI_NOT_HOLDING_SPACE) { - inv.getExtendedProperties().removeTag("holdingSpace"); + inv.getExtendedProperties().removeTag(Constants.HOLDING_SPACE_TAG); } } } diff --git a/src/main/java/com/darkona/adventurebackpack/network/SleepingBagPacket.java b/src/main/java/com/darkona/adventurebackpack/network/SleepingBagPacket.java index e2c591fb..6bdc3984 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/SleepingBagPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/SleepingBagPacket.java @@ -20,47 +20,47 @@ public IMessage onMessage(SleepingBagMessage message, MessageContext ctx) { if (ctx.side.isServer()) { - ServerActions.toggleSleepingBag(ctx.getServerHandler().playerEntity, message.isTile, message.x, message.y, message.z); + ServerActions.toggleSleepingBag(ctx.getServerHandler().playerEntity, message.isTile, message.cX, message.cY, message.cZ); } return null; } public static class SleepingBagMessage implements IMessage { - public boolean isTile; - public int x; - public int y; - public int z; + private boolean isTile; + private int cX; + private int cY; + private int cZ; public SleepingBagMessage() { } - public SleepingBagMessage(boolean isTile, int X, int Y, int Z) + public SleepingBagMessage(boolean isTile, int cX, int cY, int cZ) { this.isTile = isTile; - this.x = X; - this.y = Y; - this.z = Z; + this.cX = cX; + this.cY = cY; + this.cZ = cZ; } @Override public void fromBytes(ByteBuf buf) { isTile = buf.readBoolean(); - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); + cX = buf.readInt(); + cY = buf.readInt(); + cZ = buf.readInt(); } @Override public void toBytes(ByteBuf buf) { buf.writeBoolean(isTile); - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); + buf.writeInt(cX); + buf.writeInt(cY); + buf.writeInt(cZ); } } } diff --git a/src/main/java/com/darkona/adventurebackpack/network/SyncPropertiesPacket.java b/src/main/java/com/darkona/adventurebackpack/network/SyncPropertiesPacket.java index 863a8614..d665306e 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/SyncPropertiesPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/SyncPropertiesPacket.java @@ -48,9 +48,9 @@ public Message onMessage(Message message, MessageContext ctx) public static class Message implements IMessage { - int ID; - byte type; - NBTTagCompound properties; + private int ID; + private byte type; + private NBTTagCompound properties; public Message() { diff --git a/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java b/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java index f1a4d5c7..ceeb58a7 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java @@ -55,7 +55,6 @@ public Message onMessage(Message message, MessageContext ctx) public static class Message implements IMessage { - private byte type; private String playerID; diff --git a/src/main/java/com/darkona/adventurebackpack/network/messages/EntityParticlePacket.java b/src/main/java/com/darkona/adventurebackpack/network/messages/EntityParticlePacket.java index 8b9235d6..0e3f95a8 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/messages/EntityParticlePacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/messages/EntityParticlePacket.java @@ -40,7 +40,6 @@ public Message onMessage(Message message, MessageContext ctx) public static class Message implements IMessage { - private byte particleCode; private int entityID; diff --git a/src/main/java/com/darkona/adventurebackpack/network/messages/EntitySoundPacket.java b/src/main/java/com/darkona/adventurebackpack/network/messages/EntitySoundPacket.java index df762159..42c09c1e 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/messages/EntitySoundPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/messages/EntitySoundPacket.java @@ -44,7 +44,6 @@ public Message onMessage(Message message, MessageContext ctx) public static class Message implements IMessage { - private byte soundCode; private int entityID; diff --git a/src/main/java/com/darkona/adventurebackpack/util/CoordsUtils.java b/src/main/java/com/darkona/adventurebackpack/util/CoordsUtils.java new file mode 100644 index 00000000..65ee2ca0 --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/util/CoordsUtils.java @@ -0,0 +1,306 @@ +package com.darkona.adventurebackpack.util; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ChunkCoordinates; +import net.minecraft.util.MathHelper; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +import com.darkona.adventurebackpack.block.TileAdventureBackpack; +import com.darkona.adventurebackpack.init.ModBlocks; + +/** + * Created on 31.01.2018 + * + * @author Ugachaga + */ +public class CoordsUtils +{ + private CoordsUtils() {} + + public static ChunkCoordinates findBlock2D(World world, int cX, int cY, int cZ, Block block, int range) + { + for (int i = cX - range; i <= cX + range; i++) + { + for (int j = cZ - range; j <= cZ + range; j++) + { + if (world.getBlock(i, cY, j) == block) + { + return new ChunkCoordinates(i, cY, j); + } + } + } + return null; + } + + public static ChunkCoordinates findBlock3D(World world, int cX, int cY, int cZ, Block block, int hRange, int vRange) + { + for (int i = (cY - vRange); i <= (cY + vRange); i++) + { + for (int j = (cX - hRange); j <= (cX + hRange); j++) + { + for (int k = (cZ - hRange); k <= (cZ + hRange); k++) + { + if (world.getBlock(j, i, k) == block) + { + return new ChunkCoordinates(j, i, k); + } + } + } + } + return null; + } + + private static ChunkCoordinates checkCoordsForBackpack(IBlockAccess world, int origX, int origZ, int cX, int cY, int cZ, boolean except) + { + if (world.isAirBlock(cX, cY, cZ) || isReplaceable(world, cX, cY, cZ)) + { + return new ChunkCoordinates(cX, cY, cZ); + } + return null; + } + + public static boolean isReplaceable(IBlockAccess world, int cX, int cY, int cZ) + { + Block block = world.getBlock(cX, cY, cZ); + return block.isReplaceable(world, cX, cY, cZ); + } + + private static ChunkCoordinates checkCoordsForPlayer(IBlockAccess world, int origX, int origZ, int cX, int cY, int cZ, boolean except) + { + LogHelper.info("Checking coordinates in X=" + cX + ", Y=" + cY + ", Z=" + cZ); + if (except && world.isSideSolid(cX, cY - 1, cZ, ForgeDirection.UP, true) && world.isAirBlock(cX, cY, cZ) && world.isAirBlock(cX, cY + 1, cZ) && !areCoordinatesTheSame2D(origX, origZ, cX, cZ)) + { + LogHelper.info("Found spot with the exception of the origin point"); + return new ChunkCoordinates(cX, cY, cZ); + } + if (!except && world.isSideSolid(cX, cY - 1, cZ, ForgeDirection.UP, true) && world.isAirBlock(cX, cY, cZ) && world.isAirBlock(cX, cY + 1, cZ)) + { + LogHelper.info("Found spot without exceptions"); + return new ChunkCoordinates(cX, cY, cZ); + } + return null; + } + + /** + * Gets you the nearest Empty Chunk Coordinates, free of charge! Looks in two dimensions and finds a block + * that a: can have stuff placed on it and b: has space above it. + * This is a spiral search, will begin at close range and move out. + * + * @param world The world object. + * @param origX Original cX coordinate + * @param origZ Original cZ coordinate + * @param cX Moving cX coordinate, should be the same as origX when called. + * @param cY cY coordinate, does not move. + * @param cZ Moving cZ coordinate, should be the same as origZ when called. + * @param radius The radius of the search. If set to high numbers, will create a ton of lag + * @param except Wether to include the origin of the search as a valid block. + * @param steps Number of steps of the recursive recursiveness that recurses through the recursion. It is the first size of the spiral, should be one (1) always at the first call. + * @param pass Pass switch for the witchcraft I can't quite explain. Set to 0 always at the beggining. + * @param type True = for player, False = for backpack + * @return The coordinates of the block in the chunk of the world of the game of the server of the owner of the computer, where you can place something above it. + */ + public static ChunkCoordinates getNearestEmptyChunkCoordinatesSpiral(IBlockAccess world, int origX, int origZ, int cX, int cY, int cZ, int radius, boolean except, int steps, byte pass, boolean type) + { + //Spiral search, because I'm awesome :) + //This is so the backpack tries to get placed near the death point first + //And then goes looking farther away at each step + //Steps mod 2 == 0 => cX++, cZ-- + //Steps mod 2 == 1 => cX--, cZ++ + + if (steps >= radius) return null; + int i = cX, j = cZ; + if (steps % 2 == 0) + { + if (pass == 0) + { + for (; i <= cX + steps; i++) + { + ChunkCoordinates coords = type ? checkCoordsForPlayer(world, origX, origZ, cX, cY, cZ, except) : checkCoordsForBackpack(world, origX, origZ, cX, cY, cZ, except); + if (coords != null) + { + return coords; + } + } + pass++; + return getNearestEmptyChunkCoordinatesSpiral(world, origX, origZ, i, cY, j, radius, except, steps, pass, type); + } + if (pass == 1) + { + for (; j >= cZ - steps; j--) + { + ChunkCoordinates coords = type ? checkCoordsForPlayer(world, origX, origZ, cX, cY, cZ, except) : checkCoordsForBackpack(world, origX, origZ, cX, cY, cZ, except); + if (coords != null) + { + return coords; + } + } + pass--; + steps++; + return getNearestEmptyChunkCoordinatesSpiral(world, origX, origZ, i, cY, j, radius, except, steps, pass, type); + } + } + + if (steps % 2 == 1) + { + if (pass == 0) + { + for (; i >= cX - steps; i--) + { + ChunkCoordinates coords = type ? checkCoordsForPlayer(world, origX, origZ, cX, cY, cZ, except) : checkCoordsForBackpack(world, origX, origZ, cX, cY, cZ, except); + if (coords != null) + { + return coords; + } + } + pass++; + return getNearestEmptyChunkCoordinatesSpiral(world, origX, origZ, i, cY, j, radius, except, steps, pass, type); + } + if (pass == 1) + { + for (; j <= cZ + steps; j++) + { + ChunkCoordinates coords = type ? checkCoordsForPlayer(world, origX, origZ, cX, cY, cZ, except) : checkCoordsForBackpack(world, origX, origZ, cX, cY, cZ, except); + if (coords != null) + { + return coords; + } + } + pass--; + steps++; + return getNearestEmptyChunkCoordinatesSpiral(world, origX, origZ, i, cY, j, radius, except, steps, pass, type); + } + } + + return null; + } + + public static int[] canDeploySleepingBag(World world, EntityPlayer player, int cX, int cY, int cZ, boolean isTile) + { + int switchBy = -1; + if (isTile) + { + TileAdventureBackpack te = (TileAdventureBackpack) world.getTileEntity(cX, cY, cZ); + if (!te.isSleepingBagDeployed()) + switchBy = world.getBlockMetadata(cX, cY, cZ) & 3; + } + else + { + int playerDirection = MathHelper.floor_double((double) ((player.rotationYaw * 4F) / 360F) + 0.5D) & 3; + int[] tileSequence = {2, 3, 0, 1}; + for (int i = 0; i < tileSequence.length; i++) // converts to use isTile format + { + if (playerDirection == i) + { + switchBy = tileSequence[i]; + break; + } + } + } + return getDirectionAndCoordsForSleepingBag(switchBy, world, cX, cY, cZ); + } + + private static int[] getDirectionAndCoordsForSleepingBag(int switchBy, World world, int cX, int cY, int cZ) + { + int direction = -1; + switch (switchBy) + { + case 0: + --cZ; + if (world.isAirBlock(cX, cY, cZ) && world.getBlock(cX, cY - 1, cZ).getMaterial().isSolid()) + { + if (world.isAirBlock(cX, cY, cZ - 1) && world.getBlock(cX, cY - 1, cZ - 1).getMaterial().isSolid()) + { + direction = 2; + } + } + break; + case 1: + ++cX; + if (world.isAirBlock(cX, cY, cZ) && world.getBlock(cX, cY - 1, cZ).getMaterial().isSolid()) + { + if (world.isAirBlock(cX + 1, cY, cZ) && world.getBlock(cX + 1, cY - 1, cZ).getMaterial().isSolid()) + { + direction = 3; + } + } + break; + case 2: + ++cZ; + if (world.isAirBlock(cX, cY, cZ) && world.getBlock(cX, cY - 1, cZ).getMaterial().isSolid()) + { + if (world.isAirBlock(cX, cY, cZ + 1) && world.getBlock(cX, cY - 1, cZ + 1).getMaterial().isSolid()) + { + direction = 0; + } + } + break; + case 3: + --cX; + if (world.isAirBlock(cX, cY, cZ) && world.getBlock(cX, cY - 1, cZ).getMaterial().isSolid()) + { + if (world.isAirBlock(cX - 1, cY, cZ) && world.getBlock(cX - 1, cY - 1, cZ).getMaterial().isSolid()) + { + direction = 1; + } + } + break; + default: + break; + } + return new int[]{direction, cX, cY, cZ}; + } + + public static boolean spawnSleepingBag(EntityPlayer player, World world, int meta, int cX, int cY, int cZ) + { + Block sleepingBag = ModBlocks.blockSleepingBag; + if (world.setBlock(cX, cY, cZ, sleepingBag, meta, 3)) + { + world.playSoundAtEntity(player, Block.soundTypeCloth.func_150496_b(), 0.5f, 1.0f); + switch (meta & 3) + { + case 0: + ++cZ; + break; + case 1: + --cX; + break; + case 2: + --cZ; + break; + case 3: + ++cX; + break; + } + if (world.setBlock(cX, cY, cZ, sleepingBag, meta + 8, 3)) + { + world.markBlockForUpdate(cX, cY, cZ); + return true; + } + } + return false; + } + + /** + * Compares two coordinates. Heh. + * + * @param cX1 First coordinate X. + * @param cY1 First coordinate Y. + * @param cZ1 First coordinate Z. + * @param cX2 Second coordinate X. + * @param cY2 Second coordinate Y. + * @param cZ2 Second coordinate Z. I really didn't need to type all that, its obvious. + * @return If both coordinates are the same, returns true. This is the least helpful javadoc ever. + */ + private static boolean areCoordinatesTheSame(int cX1, int cY1, int cZ1, int cX2, int cY2, int cZ2) + { + return (cX1 == cX2 && cY1 == cY2 && cZ1 == cZ2); + } + + private static boolean areCoordinatesTheSame2D(int cX1, int cZ1, int cX2, int cZ2) + { + return (cX1 == cX2 && cZ1 == cZ2); + } +} diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index 9591c59d..afbee9eb 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -2,13 +2,10 @@ import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.ChunkCoordinates; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; -import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidRegistry; import cpw.mods.fml.common.FMLCommonHandler; @@ -47,39 +44,6 @@ public static int isBlockRegisteredAsFluid(Block block) return fluidID; } - public static ChunkCoordinates findBlock2D(World world, int cX, int cY, int cZ, Block block, int range) - { - for (int i = cX - range; i <= cX + range; i++) - { - for (int j = cZ - range; j <= cZ + range; j++) - { - if (world.getBlock(i, cY, j) == block) - { - return new ChunkCoordinates(i, cY, j); - } - } - } - return null; - } - - public static ChunkCoordinates findBlock3D(World world, int cX, int cY, int cZ, Block block, int hRange, int vRange) - { - for (int i = (cY - vRange); i <= (cY + vRange); i++) - { - for (int j = (cX - hRange); j <= (cX + hRange); j++) - { - for (int k = (cZ - hRange); k <= (cZ + hRange); k++) - { - if (world.getBlock(j, i, k) == block) - { - return new ChunkCoordinates(j, i, k); - } - } - } - } - return null; - } - public static String capitalize(String s) { // Character.toUpperCase(itemName.charAt(0)) + itemName.substring(1); @@ -133,202 +97,6 @@ public static boolean inServer() return side == Side.SERVER; } - private static ChunkCoordinates checkCoordsForBackpack(IBlockAccess world, int origX, int origZ, int cX, int cY, int cZ, boolean except) - { - if (world.isAirBlock(cX, cY, cZ) || isReplaceable(world, cX, cY, cZ)) - { - return new ChunkCoordinates(cX, cY, cZ); - } - return null; - } - - public static boolean isReplaceable(IBlockAccess world, int cX, int cY, int cZ) - { - Block block = world.getBlock(cX, cY, cZ); - return block.isReplaceable(world, cX, cY, cZ); - } - - private static ChunkCoordinates checkCoordsForPlayer(IBlockAccess world, int origX, int origZ, int cX, int cY, int cZ, boolean except) - { - LogHelper.info("Checking coordinates in X=" + cX + ", Y=" + cY + ", Z=" + cZ); - if (except && world.isSideSolid(cX, cY - 1, cZ, ForgeDirection.UP, true) && world.isAirBlock(cX, cY, cZ) && world.isAirBlock(cX, cY + 1, cZ) && !areCoordinatesTheSame2D(origX, origZ, cX, cZ)) - { - LogHelper.info("Found spot with the exception of the origin point"); - return new ChunkCoordinates(cX, cY, cZ); - } - if (!except && world.isSideSolid(cX, cY - 1, cZ, ForgeDirection.UP, true) && world.isAirBlock(cX, cY, cZ) && world.isAirBlock(cX, cY + 1, cZ)) - { - LogHelper.info("Found spot without exceptions"); - return new ChunkCoordinates(cX, cY, cZ); - } - return null; - } - - /** - * Gets you the nearest Empty Chunk Coordinates, free of charge! Looks in two dimensions and finds a block - * that a: can have stuff placed on it and b: has space above it. - * This is a spiral search, will begin at close range and move out. - * - * @param world The world object. - * @param origX Original cX coordinate - * @param origZ Original cZ coordinate - * @param cX Moving cX coordinate, should be the same as origX when called. - * @param cY cY coordinate, does not move. - * @param cZ Moving cZ coordinate, should be the same as origZ when called. - * @param radius The radius of the search. If set to high numbers, will create a ton of lag - * @param except Wether to include the origin of the search as a valid block. - * @param steps Number of steps of the recursive recursiveness that recurses through the recursion. It is the first size of the spiral, should be one (1) always at the first call. - * @param pass Pass switch for the witchcraft I can't quite explain. Set to 0 always at the beggining. - * @param type True = for player, False = for backpack - * @return The coordinates of the block in the chunk of the world of the game of the server of the owner of the computer, where you can place something above it. - */ - public static ChunkCoordinates getNearestEmptyChunkCoordinatesSpiral(IBlockAccess world, int origX, int origZ, int cX, int cY, int cZ, int radius, boolean except, int steps, byte pass, boolean type) - { - //Spiral search, because I'm awesome :) - //This is so the backpack tries to get placed near the death point first - //And then goes looking farther away at each step - //Steps mod 2 == 0 => cX++, cZ-- - //Steps mod 2 == 1 => cX--, cZ++ - - if (steps >= radius) return null; - int i = cX, j = cZ; - if (steps % 2 == 0) - { - if (pass == 0) - { - for (; i <= cX + steps; i++) - { - ChunkCoordinates coords = type ? checkCoordsForPlayer(world, origX, origZ, cX, cY, cZ, except) : checkCoordsForBackpack(world, origX, origZ, cX, cY, cZ, except); - if (coords != null) - { - return coords; - } - } - pass++; - return getNearestEmptyChunkCoordinatesSpiral(world, origX, origZ, i, cY, j, radius, except, steps, pass, type); - } - if (pass == 1) - { - for (; j >= cZ - steps; j--) - { - ChunkCoordinates coords = type ? checkCoordsForPlayer(world, origX, origZ, cX, cY, cZ, except) : checkCoordsForBackpack(world, origX, origZ, cX, cY, cZ, except); - if (coords != null) - { - return coords; - } - } - pass--; - steps++; - return getNearestEmptyChunkCoordinatesSpiral(world, origX, origZ, i, cY, j, radius, except, steps, pass, type); - } - } - - if (steps % 2 == 1) - { - if (pass == 0) - { - for (; i >= cX - steps; i--) - { - ChunkCoordinates coords = type ? checkCoordsForPlayer(world, origX, origZ, cX, cY, cZ, except) : checkCoordsForBackpack(world, origX, origZ, cX, cY, cZ, except); - if (coords != null) - { - return coords; - } - } - pass++; - return getNearestEmptyChunkCoordinatesSpiral(world, origX, origZ, i, cY, j, radius, except, steps, pass, type); - } - if (pass == 1) - { - for (; j <= cZ + steps; j++) - { - ChunkCoordinates coords = type ? checkCoordsForPlayer(world, origX, origZ, cX, cY, cZ, except) : checkCoordsForBackpack(world, origX, origZ, cX, cY, cZ, except); - if (coords != null) - { - return coords; - } - } - pass--; - steps++; - return getNearestEmptyChunkCoordinatesSpiral(world, origX, origZ, i, cY, j, radius, except, steps, pass, type); - } - } - - return null; - } - - public static int[] getDirectionAndCoordsForSleepingBag(int switchBy, World world, int cX, int cY, int cZ, boolean isTile) - { - int direction = -1; - switch (switchBy) - { - case 0: - cZ = isTile ? --cZ : ++cZ; - if (world.isAirBlock(cX, cY, cZ) && world.getBlock(cX, cY - 1, cZ).getMaterial().isSolid()) - { - if (world.isAirBlock(cX, cY, cZ - 1) && world.getBlock(cX, cY - 1, cZ - 1).getMaterial().isSolid()) - { - direction = isTile ? 2 : 0; - } - } - break; - case 1: - cX = isTile ? ++cX : --cX; - if (world.isAirBlock(cX, cY, cZ) && world.getBlock(cX, cY - 1, cZ).getMaterial().isSolid()) - { - if (world.isAirBlock(cX + 1, cY, cZ) && world.getBlock(cX + 1, cY - 1, cZ).getMaterial().isSolid()) - { - direction = isTile ? 3 : 1; - } - } - break; - case 2: - cZ = isTile ? ++cZ : --cZ; - if (world.isAirBlock(cX, cY, cZ) && world.getBlock(cX, cY - 1, cZ).getMaterial().isSolid()) - { - if (world.isAirBlock(cX, cY, cZ + 1) && world.getBlock(cX, cY - 1, cZ + 1).getMaterial().isSolid()) - { - direction = isTile ? 0 : 2; - } - } - break; - case 3: - cX = isTile ? --cX : ++cX; - if (world.isAirBlock(cX, cY, cZ) && world.getBlock(cX, cY - 1, cZ).getMaterial().isSolid()) - { - if (world.isAirBlock(cX - 1, cY, cZ) && world.getBlock(cX - 1, cY - 1, cZ).getMaterial().isSolid()) - { - direction = isTile ? 1 : 3; - } - } - break; - default: - break; - } - return new int[] {direction, cX, cY, cZ}; - } - - /** - * Compares two coordinates. Heh. - * - * @param X1 First coordinate X. - * @param Y1 First coordinate Y. - * @param Z1 First coordinate Z. - * @param X2 Second coordinate X. - * @param Y2 Second coordinate Y. - * @param Z2 Second coordinate Z. I really didn't need to type all that, its obvious. - * @return If both coordinates are the same, returns true. This is the least helpful javadoc ever. - */ - private static boolean areCoordinatesTheSame(int X1, int Y1, int Z1, int X2, int Y2, int Z2) - { - return (X1 == X2 && Y1 == Y2 && Z1 == Z2); - } - - private static boolean areCoordinatesTheSame2D(int X1, int Z1, int X2, int Z2) - { - return (X1 == X2 && Z1 == Z2); - } - /** * Seriously why doesn't Java's instanceof check for null? * From 097eaebaa86914dabe0d081334b46c1d22b12014 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Fri, 2 Feb 2018 21:54:42 +0700 Subject: [PATCH 423/462] Portable Sleeping Bag is ready and waiting --- .../block/BlockSleepingBag.java | 110 +++++++++++++----- .../client/gui/GuiAdvBackpack.java | 5 +- .../client/gui/GuiWithTanks.java | 6 +- .../adventurebackpack/common/Constants.java | 4 +- .../common/ServerActions.java | 40 +++---- .../config/ConfigHandler.java | 2 + .../handlers/PlayerEventHandler.java | 43 +++++-- .../inventory/InventoryBackpack.java | 39 ++++--- .../EquipUnequipBackWearablePacket.java | 15 +-- .../network/SleepingBagPacket.java | 6 +- .../playerProperties/BackpackProperty.java | 16 ++- 11 files changed, 190 insertions(+), 96 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java b/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java index d2548c6f..663de9a5 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java @@ -12,6 +12,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.ChunkCoordinates; import net.minecraft.util.Direction; @@ -20,15 +21,17 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.chunk.IChunkProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.init.ModBlocks; +import com.darkona.adventurebackpack.inventory.InventoryBackpack; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.util.CoordsUtils; import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Resources; +import com.darkona.adventurebackpack.util.Wearing; /** * Created on 14/10/2014 @@ -79,25 +82,70 @@ private static boolean isBlockHeadOfBed(int meta) return (meta & 8) != 0; } - public static ChunkCoordinates verifyRespawnCoordinatesOnBlock(World world, ChunkCoordinates chunkCoordinates, boolean forced) + public static boolean isSleepingInPortableBag(EntityPlayer player) { - IChunkProvider ichunkprovider = world.getChunkProvider(); - ichunkprovider.loadChunk(chunkCoordinates.posX - 3 >> 4, chunkCoordinates.posZ - 3 >> 4); - ichunkprovider.loadChunk(chunkCoordinates.posX + 3 >> 4, chunkCoordinates.posZ - 3 >> 4); - ichunkprovider.loadChunk(chunkCoordinates.posX - 3 >> 4, chunkCoordinates.posZ + 3 >> 4); - ichunkprovider.loadChunk(chunkCoordinates.posX + 3 >> 4, chunkCoordinates.posZ + 3 >> 4); + return Wearing.isWearingBackpack(player) + && Wearing.getWearingBackpackInv(player).getExtendedProperties().hasKey(Constants.TAG_SLEEPING_IN_BAG); + } + + public static void packPortableSleepingBag(EntityPlayer player) + { + if (isSleepingInPortableBag(player)) + { + InventoryBackpack inv = Wearing.getWearingBackpackInv(player); + inv.removeSleepingBag(player.worldObj); + inv.getExtendedProperties().removeTag(Constants.TAG_SLEEPING_IN_BAG); + } + } - if (world.getBlock(chunkCoordinates.posX, chunkCoordinates.posY, chunkCoordinates.posZ).isBed(world, chunkCoordinates.posX, chunkCoordinates.posY, chunkCoordinates.posZ, null)) + public static void storeOriginalSpawn(EntityPlayer player, NBTTagCompound tag) + { + ChunkCoordinates spawn = player.getBedLocation(player.worldObj.provider.dimensionId); + if (spawn != null) + { + NBTTagCompound storedSpawn = new NBTTagCompound(); + storedSpawn.setInteger("posX", spawn.posX); + storedSpawn.setInteger("posY", spawn.posY); + storedSpawn.setInteger("posZ", spawn.posZ); + tag.setTag(Constants.TAG_STORED_SPAWN, storedSpawn); + LogHelper.info("Stored spawn data for " + player.getDisplayName() + " : " + spawn.toString() + + " dimID: " + player.worldObj.provider.dimensionId); + } + else + { + LogHelper.warn("Cannot store spawn data for " + player.getDisplayName()); + } + } + + public static void restoreOriginalSpawn(EntityPlayer player, NBTTagCompound tag) + { + if (tag.hasKey(Constants.TAG_STORED_SPAWN)) { - ChunkCoordinates newChunkCoords = world.getBlock(chunkCoordinates.posX, chunkCoordinates.posY, chunkCoordinates.posZ).getBedSpawnPosition(world, chunkCoordinates.posX, chunkCoordinates.posY, chunkCoordinates.posZ, null); - return newChunkCoords; + NBTTagCompound storedSpawn = tag.getCompoundTag(Constants.TAG_STORED_SPAWN); + ChunkCoordinates coords = new ChunkCoordinates( + storedSpawn.getInteger("posX"), + storedSpawn.getInteger("posY"), + storedSpawn.getInteger("posZ")); + player.setSpawnChunk(coords, false, player.worldObj.provider.dimensionId); + tag.removeTag(Constants.TAG_STORED_SPAWN); + LogHelper.info("Restored spawn data for" + player.getDisplayName() + " : " + coords.toString() + + " dimID: " + player.worldObj.provider.dimensionId); } + else + { + LogHelper.warn("No spawn data to restore for " + player.getDisplayName()); + } + } - Material material = world.getBlock(chunkCoordinates.posX, chunkCoordinates.posY, chunkCoordinates.posZ).getMaterial(); - Material material1 = world.getBlock(chunkCoordinates.posX, chunkCoordinates.posY + 1, chunkCoordinates.posZ).getMaterial(); - boolean flag1 = (!material.isSolid()) && (!material.isLiquid()); - boolean flag2 = (!material1.isSolid()) && (!material1.isLiquid()); - return (forced) && (flag1) && (flag2) ? chunkCoordinates : null; + public void onPortableBlockActivated(World world, EntityPlayer player, int cX, int cY, int cZ) + { + if (world.isRemote) + return; + if (!isSleepingInPortableBag(player)) + return; + + if (!onBlockActivated(world, cX, cY, cZ, player, 1, 0f, 0f, 0f)) + packPortableSleepingBag(player); } @Override @@ -117,9 +165,9 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p x += footBlockToHeadBlockMap[dir][0]; z += footBlockToHeadBlockMap[dir][1]; - if (world.getBlock(x, y, z) != this) + if (world.getBlock(x, y, z) != ModBlocks.blockSleepingBag) { - return true; + return false; } meta = world.getBlockMetadata(x, y, z); @@ -150,7 +198,7 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p if (entityplayer1 != null) { player.addChatComponentMessage(new ChatComponentTranslation("tile.bed.occupied", new Object[0])); - return true; + return false; } setBedOccupied(world, x, y, z, false); @@ -163,13 +211,22 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p setBedOccupied(world, x, y, z, true); //This is so the wake up event can detect it. It fires before the player wakes up. //and the bed location isn't set until then, normally. - player.setSpawnChunk(new ChunkCoordinates(x, y, z), true, player.dimension); - LogHelper.info("Looking for a campfire nearby..."); //TODO - ChunkCoordinates campfire = CoordsUtils.findBlock3D(world, x, y, z, ModBlocks.blockCampFire, 8, 2); - if (campfire != null) + + if (isSleepingInPortableBag(player)) { - LogHelper.info("Campfire Found, saving coordinates. " + LogHelper.print3DCoords(campfire)); - BackpackProperty.get(player).setCampFire(campfire); + storeOriginalSpawn(player, Wearing.getWearingBackpackInv(player).getExtendedProperties()); + player.setSpawnChunk(new ChunkCoordinates(x, y, z), true, player.dimension); + } + else + { + player.setSpawnChunk(new ChunkCoordinates(x, y, z), true, player.dimension); + LogHelper.info("Looking for a campfire nearby..."); + ChunkCoordinates campfire = CoordsUtils.findBlock3D(world, x, y, z, ModBlocks.blockCampFire, 8, 2); + if (campfire != null) + { + LogHelper.info("Campfire Found, saving coordinates. " + LogHelper.print3DCoords(campfire)); + BackpackProperty.get(player).setCampFire(campfire); + } } return true; } @@ -184,7 +241,7 @@ else if (enumstatus == EntityPlayer.EnumStatus.NOT_SAFE) player.addChatComponentMessage(new ChatComponentTranslation("tile.bed.notSafe", new Object[0])); } - return true; + return false; } } else @@ -206,7 +263,8 @@ else if (enumstatus == EntityPlayer.EnumStatus.NOT_SAFE) } world.newExplosion((Entity) null, (double) ((float) x + 0.5F), (double) ((float) y + 0.5F), (double) ((float) z + 0.5F), 5.0F, true, true); - return true; + + return false; } } } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index 82018de1..60021029 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -65,7 +65,8 @@ public GuiAdvBackpack(EntityPlayer player, InventoryBackpack inventoryBackpack, private boolean isBedButtonCase() { - return source == Source.TILE || (source == Source.WEARING && GuiScreen.isCtrlKeyDown()); + return source == Source.TILE + || (ConfigHandler.allowPortableSleepingBag && source == Source.WEARING && GuiScreen.isShiftKeyDown()); } @Override @@ -144,7 +145,7 @@ protected void mouseClicked(int mouseX, int mouseY, int button) else { int posX = MathHelper.floor_double(player.posX); - int posY = MathHelper.floor_double(player.posY) - 1; //TODO + int posY = MathHelper.floor_double(player.posY) - 1; int posZ = MathHelper.floor_double(player.posZ); ModNetwork.net.sendToServer(new SleepingBagPacket.SleepingBagMessage(false, posX, posY, posZ)); } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java index 4b04d331..b5c9c6ce 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java @@ -48,12 +48,11 @@ float getZLevel() @Override protected void mouseClicked(int mouseX, int mouseY, int mouseButton) { - //int sneakKey = Minecraft.getMinecraft().gameSettings.keyBindSneak.getKeyCode(); if (source == Source.WEARING) { if (getUnequipButton().inButton(this, mouseX, mouseY)) { - ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.UNEQUIP_WEARABLE, false)); + ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.UNEQUIP_WEARABLE)); player.closeScreen(); } } @@ -61,8 +60,7 @@ else if (source == Source.HOLDING) { if (getEquipButton().inButton(this, mouseX, mouseY)) { - ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, false)); - //ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE, Keyboard.isKeyDown(sneakKey))); + ModNetwork.net.sendToServer(new EquipUnequipBackWearablePacket.Message(EquipUnequipBackWearablePacket.EQUIP_WEARABLE)); player.closeScreen(); } } diff --git a/src/main/java/com/darkona/adventurebackpack/common/Constants.java b/src/main/java/com/darkona/adventurebackpack/common/Constants.java index 33118c3f..5577c208 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/Constants.java +++ b/src/main/java/com/darkona/adventurebackpack/common/Constants.java @@ -16,7 +16,7 @@ public enum Source //TODO move to separate class? public static final int BUCKET = FluidContainerRegistry.BUCKET_VOLUME; - public static final String WEARABLE_TAG = "wearableData"; //TODO "wearable" + public static final String WEARABLE_TAG = "wearableData"; //TODO "wearablePack" public static final String INVENTORY = "inventory"; // Inventory Slots @@ -42,6 +42,8 @@ public enum Source //TODO move to separate class? // NBT: Extended Properties public static final String HOLDING_SPACE_TAG = "holdingSpace"; + public static final String TAG_SLEEPING_IN_BAG = "sleepingInBag"; + public static final String TAG_STORED_SPAWN = "storedSpawn"; // Jetpack //TODO subclass jetpack and simplify names? and copter? public static final int JETPACK_INVENTORY_SIZE = 3; diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index dece0c81..a34f5a63 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -1,8 +1,8 @@ package com.darkona.adventurebackpack.common; -import java.lang.reflect.Field; import java.util.Random; +import net.minecraft.block.Block; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.player.EntityPlayer; @@ -11,15 +11,14 @@ import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.play.server.S0APacketUseBed; import net.minecraft.util.ChatComponentTranslation; -import net.minecraft.util.ChunkCoordinates; import net.minecraft.world.World; import net.minecraft.world.WorldProviderEnd; import net.minecraft.world.WorldProviderHell; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; +import com.darkona.adventurebackpack.block.BlockSleepingBag; import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.fluids.FluidEffectRegistry; @@ -260,6 +259,7 @@ public static void toggleSleepingBag(EntityPlayer player, boolean isTile, int cX if (world.provider instanceof WorldProviderHell || world.provider instanceof WorldProviderEnd) { player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.cant.sleep.here")); + player.closeScreen(); return; } @@ -292,18 +292,17 @@ else if (!isTile && Wearing.isWearingBackpack(player)) int can[] = CoordsUtils.canDeploySleepingBag(world, player, cX, cY, cZ, false); if (can[0] > -1) { - Wearing.getWearingBackpackInv(player).deploySleepingBag(player, world, can[0], can[1], can[2], can[3]); - //canPlayerSleep - //storeOriginalSpawn - //storeOriginalPosition - //TAG_SLEEPING true - - sleepSafe((EntityPlayerMP) player, world, can[1], can[2], can[3]); - //TODO remove sleeping bag after sleep - - //restoreSpawn - //restorePosition - //TAG_SLEEPING false + InventoryBackpack inv = Wearing.getWearingBackpackInv(player); + if (inv.deploySleepingBag(player, world, can[0], can[1], can[2], can[3])) + { + Block portableBag = world.getBlock(can[1], can[2], can[3]); + if (portableBag instanceof BlockSleepingBag) + { + inv.getExtendedProperties().setBoolean(Constants.TAG_SLEEPING_IN_BAG, true); + ((BlockSleepingBag) portableBag).onPortableBlockActivated(world, player, can[1], can[2], can[3]); + } + } + //sleepSafe((EntityPlayerMP) player, world, can[1], can[2], can[3]); } else if (!world.isRemote) { @@ -314,12 +313,12 @@ else if (!world.isRemote) } // shamelessly copied from OpenBlocks SleepingBag - private static void sleepSafe(EntityPlayerMP player, World world, int cX, int cY, int cZ) + /*public static void sleepSafe(EntityPlayerMP player, World world, int cX, int cY, int cZ) { if (player.isRiding()) player.mountEntity(null); - if (setSleeping(player)) + if (setPlayerSleeping(player)) { player.playerLocation = new ChunkCoordinates(cX, cY, cZ); @@ -330,9 +329,9 @@ private static void sleepSafe(EntityPlayerMP player, World world, int cX, int cY player.getServerForPlayer().getEntityTracker().func_151247_a(player, sleepPacket); player.playerNetServerHandler.sendPacket(sleepPacket); } - } + }*/ - private static boolean setSleeping(EntityPlayer player) + /*public static boolean setPlayerSleeping(EntityPlayer player) { try { @@ -350,10 +349,11 @@ private static boolean setSleeping(EntityPlayer player) } catch (Throwable e) { + LogHelper.error("Reflection error while setSleep: " + e.getMessage()); //e.printStackTrace(); return false; } - } + }*/ /** * Adds vertical inertia to the movement in the Y axis of the player, and makes Newton's Laws cry. diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 1cd78223..df1a1150 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -23,6 +23,7 @@ public class ConfigHandler public static boolean IS_GREGTECH = false; public static boolean allowSoulBound = true; + public static boolean allowPortableSleepingBag = true; public static boolean backpackDeathPlace = true; public static boolean backpackAbilities = true; public static boolean enableCampfireSpawn = false; @@ -104,6 +105,7 @@ private static void loadConfiguration() { // Gameplay allowSoulBound = config.getBoolean("Allow SoulBound", "gameplay", true, "Allow SoulBound enchant on wearable packs"); + allowPortableSleepingBag = config.getBoolean("Allow Portable Sleeping Bag", "gameplay", true, "Allows to use sleeping bag directly from wearing backpacks. Sleep by one touch."); backpackAbilities = config.getBoolean("Backpack Abilities", "gameplay", true, "Allow the backpacks to execute their special abilities, or be only cosmetic (Doesn't affect lightning transformation) Must be " + "disabled in both Client and Server to work properly"); backpackDeathPlace = config.getBoolean("Backpack Death Place", "gameplay", true, "Place backpacks as a block when you die?"); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 3a1952b2..080e812e 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -26,6 +26,7 @@ import cpw.mods.fml.common.gameevent.PlayerEvent; import cpw.mods.fml.common.gameevent.TickEvent; +import com.darkona.adventurebackpack.block.BlockSleepingBag; import com.darkona.adventurebackpack.common.ServerActions; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.entity.EntityFriendlySpider; @@ -51,8 +52,6 @@ */ public class PlayerEventHandler { - private static int tickCounter = 0; - @SubscribeEvent public void registerBackpackProperty(EntityEvent.EntityConstructing event) { @@ -332,29 +331,53 @@ public void interactWithCreatures(EntityInteractEvent event) @SubscribeEvent public void playerWokeUp(PlayerWakeUpEvent event) { - if (event.entity.worldObj.isRemote) return; - ChunkCoordinates bedLocation = event.entityPlayer.getBedLocation(event.entityPlayer.dimension); - if (bedLocation != null && event.entityPlayer.worldObj.getBlock(bedLocation.posX, bedLocation.posY, bedLocation.posZ) == ModBlocks.blockSleepingBag) + if (event.entity.worldObj.isRemote) + return; + + EntityPlayer player = event.entityPlayer; + ChunkCoordinates bedLocation = player.getBedLocation(player.dimension); + if (bedLocation != null && player.worldObj.getBlock(bedLocation.posX, bedLocation.posY, bedLocation.posZ) == ModBlocks.blockSleepingBag) { //If the player wakes up in one of those super confortable SleepingBags (tm) (Patent Pending) - BackpackProperty.get(event.entityPlayer).setForceCampFire(true); - LogHelper.info("Player just woke up in a sleeping bag, forcing respawn in the last lighted campfire, if there's any"); + if (BlockSleepingBag.isSleepingInPortableBag(player)) + { + BlockSleepingBag.packPortableSleepingBag(player); + BackpackProperty.get(player).setWakingUpInPortableBag(true); + LogHelper.info("Player just woke up in a portable sleeping bag."); + } + else + { + BackpackProperty.get(player).setForceCampFire(true); + LogHelper.info("Player just woke up in a sleeping bag, forcing respawn in the last lighted campfire, if there's any"); + } } else { //If it's a regular bed or whatever - BackpackProperty.get(event.entityPlayer).setForceCampFire(false); + BackpackProperty.get(player).setForceCampFire(false); } } @SubscribeEvent public void tickPlayer(TickEvent.PlayerTickEvent event) { - if (event.player != null && !event.player.isDead && Wearing.isWearingWearable(event.player)) + EntityPlayer player = event.player; + if (player != null && !player.isDead && Wearing.isWearingWearable(player)) { if (event.phase == TickEvent.Phase.START) { - BackpackProperty.get(event.player).executeWearableUpdateProtocol(); + BackpackProperty.get(player).executeWearableUpdateProtocol(); + } + if (event.phase == TickEvent.Phase.END) + { + if (!player.worldObj.isRemote) + { + if (BackpackProperty.get(player).isWakingUpInPortableBag() && Wearing.isWearingBackpack(player)) + { + BlockSleepingBag.restoreOriginalSpawn(player, Wearing.getWearingBackpackInv(player).getExtendedProperties()); + BackpackProperty.get(player).setWakingUpInPortableBag(false); + } + } } } } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index da35594f..010e9674 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -41,10 +41,9 @@ public class InventoryBackpack extends InventoryAdventureBackpack implements IIn private BackpackTypes type = BackpackTypes.STANDARD; private boolean sleepingBagDeployed = false; - private int sbx; - private int sby; - private int sbz; - //private int sbDimension; //TODO? + private int sleepingBagX; + private int sleepingBagY; + private int sleepingBagZ; private boolean disableNVision = false; private boolean disableCycling = false; @@ -155,9 +154,9 @@ public boolean deploySleepingBag(EntityPlayer player, World world, int meta, int sleepingBagDeployed = CoordsUtils.spawnSleepingBag(player, world, meta, cX, cY, cZ); if (sleepingBagDeployed) { - sbx = cX; - sby = cY; - sbz = cZ; + sleepingBagX = cX; + sleepingBagY = cY; + sleepingBagZ = cZ; markDirty(); } return sleepingBagDeployed; @@ -167,8 +166,8 @@ public void removeSleepingBag(World world) { if (this.sleepingBagDeployed) { - if (world.getBlock(sbx, sby, sbz) == ModBlocks.blockSleepingBag) - world.func_147480_a(sbx, sby, sbz, false); + if (world.getBlock(sleepingBagX, sleepingBagY, sleepingBagZ) == ModBlocks.blockSleepingBag) + world.func_147480_a(sleepingBagX, sleepingBagY, sleepingBagZ, false); } this.sleepingBagDeployed = false; markDirty(); @@ -245,12 +244,12 @@ public void loadFromNBT(NBTTagCompound compound) leftTank.readFromNBT(backpackTag.getCompoundTag(LEFT_TANK)); rightTank.readFromNBT(backpackTag.getCompoundTag(RIGHT_TANK)); extendedProperties = backpackTag.getCompoundTag("extendedProperties"); - sleepingBagDeployed = extendedProperties.getBoolean("sleepingbag"); + sleepingBagDeployed = extendedProperties.getBoolean("sleepingBagDeployed"); if (sleepingBagDeployed) { - sbx = extendedProperties.getInteger("sbx"); - sby = extendedProperties.getInteger("sby"); - sbz = extendedProperties.getInteger("sbz"); + sleepingBagX = extendedProperties.getInteger("sleepingBagX"); + sleepingBagY = extendedProperties.getInteger("sleepingBagY"); + sleepingBagZ = extendedProperties.getInteger("sleepingBagZ"); } disableCycling = backpackTag.getBoolean("disableCycling"); disableNVision = backpackTag.getBoolean("disableNVision"); @@ -279,12 +278,18 @@ public void saveToNBT(NBTTagCompound compound) backpackTag.setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); backpackTag.setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); backpackTag.setTag("extendedProperties", extendedProperties); - extendedProperties.setBoolean("sleepingbag", sleepingBagDeployed); + extendedProperties.setBoolean("sleepingBagDeployed", sleepingBagDeployed); if (sleepingBagDeployed) { - extendedProperties.setInteger("sbx", sbx); - extendedProperties.setInteger("sby", sby); - extendedProperties.setInteger("sbz", sbz); + extendedProperties.setInteger("sleepingBagX", sleepingBagX); + extendedProperties.setInteger("sleepingBagY", sleepingBagY); + extendedProperties.setInteger("sleepingBagZ", sleepingBagZ); + } + else + { + extendedProperties.removeTag("sleepingBagX"); + extendedProperties.removeTag("sleepingBagY"); + extendedProperties.removeTag("sleepingBagZ"); } backpackTag.setBoolean("disableCycling", disableCycling); backpackTag.setBoolean("disableNVision", disableNVision); diff --git a/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java b/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java index ac898b3f..7e8081a2 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java @@ -30,11 +30,6 @@ public Message onMessage(Message message, MessageContext ctx) EntityPlayer player = ctx.getServerHandler().playerEntity; if (message.action == EQUIP_WEARABLE) { - //before reenable make sure to takes into account the delay in unequipWearable() - /*if (message.force && Wearing.isWearingWearable(player)) - { - BackpackUtils.unequipWearable(player); - } else */ if (Wearing.isHoldingWearable(player) && !Wearing.isWearingWearable(player)) { if (BackpackUtils.equipWearable(player.getCurrentEquippedItem(), player) == BackpackUtils.Reasons.SUCCESSFUL) @@ -61,10 +56,6 @@ else if (Wearing.isWearingJetpack(player)) } if (message.action == UNEQUIP_WEARABLE) { - if (Wearing.isWearingBackpack(player)) - { - Wearing.getWearingBackpackInv(player).removeSleepingBag(player.worldObj); //TODO temporally solution - } BackpackUtils.unequipWearable(player); } } @@ -74,31 +65,27 @@ else if (Wearing.isWearingJetpack(player)) public static class Message implements IMessage { private byte action; - private boolean force; //TODO remove completely public Message() { } - public Message(byte action, boolean force) + public Message(byte action) { this.action = action; - this.force = force; } @Override public void fromBytes(ByteBuf buf) { action = buf.readByte(); - force = buf.readBoolean(); } @Override public void toBytes(ByteBuf buf) { buf.writeByte(action); - buf.writeBoolean(force); } } } diff --git a/src/main/java/com/darkona/adventurebackpack/network/SleepingBagPacket.java b/src/main/java/com/darkona/adventurebackpack/network/SleepingBagPacket.java index 6bdc3984..639d1f5b 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/SleepingBagPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/SleepingBagPacket.java @@ -7,6 +7,7 @@ import cpw.mods.fml.common.network.simpleimpl.MessageContext; import com.darkona.adventurebackpack.common.ServerActions; +import com.darkona.adventurebackpack.config.ConfigHandler; /** * Created on 19/10/2014 @@ -20,7 +21,10 @@ public IMessage onMessage(SleepingBagMessage message, MessageContext ctx) { if (ctx.side.isServer()) { - ServerActions.toggleSleepingBag(ctx.getServerHandler().playerEntity, message.isTile, message.cX, message.cY, message.cZ); + if (message.isTile || ConfigHandler.allowPortableSleepingBag) // serverside check + { + ServerActions.toggleSleepingBag(ctx.getServerHandler().playerEntity, message.isTile, message.cX, message.cY, message.cZ); + } } return null; } diff --git a/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java b/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java index c7159db6..0033d409 100644 --- a/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java +++ b/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java @@ -29,6 +29,18 @@ public class BackpackProperty implements IExtendedEntityProperties private boolean forceCampFire = false; private int dimension = 0; + private boolean isWakingUpInPortableBag = false; + + public void setWakingUpInPortableBag(boolean b) + { + this.isWakingUpInPortableBag = b; + } + + public boolean isWakingUpInPortableBag() + { + return this.isWakingUpInPortableBag; + } + public NBTTagCompound getWearableData() { return wearableData; @@ -47,7 +59,9 @@ private static void syncToNear(EntityPlayerMP player) //Thanks diesieben07!!! try { - player.getServerForPlayer().getEntityTracker().func_151248_b(player, ModNetwork.net.getPacketFrom(new SyncPropertiesPacket.Message(player.getEntityId(), get(player).getData()))); + player.getServerForPlayer().getEntityTracker() + .func_151248_b(player, ModNetwork.net.getPacketFrom(new SyncPropertiesPacket + .Message(player.getEntityId(), get(player).getData()))); } catch (Exception ex) { From b168c05aec22f4d20dcb2c1aef11c093d31d26df Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sat, 3 Feb 2018 05:38:14 +0700 Subject: [PATCH 424/462] Added repairing Tinkers Construct tools in backpacks as if it's Crafting Station --- .../adventurebackpack/AdventureBackpack.java | 3 + .../block/BlockSleepingBag.java | 8 +- .../client/gui/GuiAdvBackpack.java | 8 ++ .../client/gui/GuiWithTanks.java | 2 +- .../config/ConfigHandler.java | 3 + .../inventory/ContainerBackpack.java | 17 +++- .../adventurebackpack/util/GregtechUtils.java | 12 +-- .../adventurebackpack/util/TinkersUtils.java | 87 +++++++++++++++++++ 8 files changed, 128 insertions(+), 12 deletions(-) create mode 100644 src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java diff --git a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java index f2ea9ca0..fe16f96e 100644 --- a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java @@ -93,6 +93,7 @@ public void postInit(FMLPostInitializationEvent event) ConfigHandler.IS_BUILDCRAFT = Loader.isModLoaded("BuildCraft|Core"); ConfigHandler.IS_ENDERIO = Loader.isModLoaded("EnderIO"); ConfigHandler.IS_GREGTECH = Loader.isModLoaded("gregtech"); + ConfigHandler.IS_TCONSTRUCT = Loader.isModLoaded("TConstruct"); if (ConfigHandler.IS_BUILDCRAFT) LogHelper.info("Buildcraft is present. Acting accordingly"); @@ -100,6 +101,8 @@ public void postInit(FMLPostInitializationEvent event) LogHelper.info("EnderIO is present. Acting accordingly"); if (ConfigHandler.IS_GREGTECH) LogHelper.info("GregTech is present. Acting accordingly"); + if (ConfigHandler.IS_TCONSTRUCT) + LogHelper.info("Tinkers Construct is present. Acting accordingly"); GeneralReference.init(); diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java b/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java index 663de9a5..d87a41d7 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java @@ -38,7 +38,7 @@ * * @author Darkona */ -public class BlockSleepingBag extends BlockDirectional +public class BlockSleepingBag extends BlockDirectional //TODO should we extend BlockBed instead? { private static final int[][] footBlockToHeadBlockMap = new int[][]{{0, 1}, {-1, 0}, {0, -1}, {1, 0}}; @@ -108,7 +108,7 @@ public static void storeOriginalSpawn(EntityPlayer player, NBTTagCompound tag) storedSpawn.setInteger("posY", spawn.posY); storedSpawn.setInteger("posZ", spawn.posZ); tag.setTag(Constants.TAG_STORED_SPAWN, storedSpawn); - LogHelper.info("Stored spawn data for " + player.getDisplayName() + " : " + spawn.toString() + LogHelper.info("Stored spawn data for " + player.getDisplayName() + ": " + spawn.toString() + " dimID: " + player.worldObj.provider.dimensionId); } else @@ -128,7 +128,7 @@ public static void restoreOriginalSpawn(EntityPlayer player, NBTTagCompound tag) storedSpawn.getInteger("posZ")); player.setSpawnChunk(coords, false, player.worldObj.provider.dimensionId); tag.removeTag(Constants.TAG_STORED_SPAWN); - LogHelper.info("Restored spawn data for" + player.getDisplayName() + " : " + coords.toString() + LogHelper.info("Restored spawn data for" + player.getDisplayName() + ": " + coords.toString() + " dimID: " + player.worldObj.provider.dimensionId); } else @@ -165,7 +165,7 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p x += footBlockToHeadBlockMap[dir][0]; z += footBlockToHeadBlockMap[dir][1]; - if (world.getBlock(x, y, z) != ModBlocks.blockSleepingBag) + if (world.getBlock(x, y, z) != this) { return false; } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index 60021029..24386690 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -22,6 +22,7 @@ import com.darkona.adventurebackpack.network.PlayerActionPacket; import com.darkona.adventurebackpack.network.SleepingBagPacket; import com.darkona.adventurebackpack.util.Resources; +import com.darkona.adventurebackpack.util.TinkersUtils; /** * Created on 12/10/2014 @@ -32,6 +33,7 @@ public class GuiAdvBackpack extends GuiWithTanks { private static final ResourceLocation TEXTURE = Resources.guiTextures("guiBackpackNew"); + private static final ResourceLocation TINKERS_ICONS = TinkersUtils.getTinkersIcons(); private static GuiImageButtonNormal bedButton = new GuiImageButtonNormal(5, 91, 18, 18); private static GuiImageButtonNormal equipButton = new GuiImageButtonNormal(5, 91, 18, 18); @@ -106,6 +108,12 @@ else if (source == Source.HOLDING) if (tankRight.inTank(this, mouseX, mouseY)) drawHoveringText(tankRight.getTankTooltip(), mouseX, mouseY, fontRendererObj); } + + if (ConfigHandler.IS_TCONSTRUCT && ConfigHandler.allowRepairTinkerTools) + { + this.mc.getTextureManager().bindTexture(TINKERS_ICONS); + this.drawTexturedModalRect(this.guiLeft + 168, this.guiTop + 77, 0, 233, 18, 18); + } } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java index b5c9c6ce..0e40b728 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java @@ -82,7 +82,7 @@ protected void keyTyped(char key, int keycode) @Override public void handleMouseInput() { - if (Mouse.getEventDWheel() != 0) + if (Mouse.getEventDWheel() != 0) //TODO { return; // forbid mouseWheel, preventing glitches with Shift+Wheel on fluid containers and so on } diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index df1a1150..06b72e11 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -21,9 +21,11 @@ public class ConfigHandler public static boolean IS_BUILDCRAFT = false; public static boolean IS_ENDERIO = false; public static boolean IS_GREGTECH = false; + public static boolean IS_TCONSTRUCT = false; public static boolean allowSoulBound = true; public static boolean allowPortableSleepingBag = true; + public static boolean allowRepairTinkerTools = true; public static boolean backpackDeathPlace = true; public static boolean backpackAbilities = true; public static boolean enableCampfireSpawn = false; @@ -106,6 +108,7 @@ private static void loadConfiguration() // Gameplay allowSoulBound = config.getBoolean("Allow SoulBound", "gameplay", true, "Allow SoulBound enchant on wearable packs"); allowPortableSleepingBag = config.getBoolean("Allow Portable Sleeping Bag", "gameplay", true, "Allows to use sleeping bag directly from wearing backpacks. Sleep by one touch."); + allowRepairTinkerTools = config.getBoolean("Allow Repair Tinker Tools", "gameplay", true, "Allows to repair Tinkers Construct tools in backpacks as if it's Crafting Station."); backpackAbilities = config.getBoolean("Backpack Abilities", "gameplay", true, "Allow the backpacks to execute their special abilities, or be only cosmetic (Doesn't affect lightning transformation) Must be " + "disabled in both Client and Server to work properly"); backpackDeathPlace = config.getBoolean("Backpack Death Place", "gameplay", true, "Place backpacks as a block when you die?"); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index a8b105fd..20334feb 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -13,6 +13,8 @@ import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.common.Constants.Source; +import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.util.TinkersUtils; import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_LEFT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_RIGHT; @@ -270,6 +272,19 @@ protected void dropContentOnClose() @Override public void onCraftMatrixChanged(IInventory inventory) { - craftResult.setInventorySlotContents(0, CraftingManager.getInstance().findMatchingRecipe(craftMatrix, player.worldObj)); + if (ConfigHandler.allowRepairTinkerTools && TinkersUtils.isTool(craftMatrix.getStackInSlot(4))) + { + ItemStack tinkersResult = TinkersUtils.getTinkersRecipe(craftMatrix); + + if (tinkersResult != null) + { + craftResult.setInventorySlotContents(0, tinkersResult); + return; + } + } + + craftResult.setInventorySlotContents(0, + CraftingManager.getInstance().findMatchingRecipe(craftMatrix, player.worldObj)); } + } diff --git a/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java b/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java index f7f65768..b14be257 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java @@ -12,8 +12,8 @@ */ public class GregtechUtils { - private static final String RENDERER_CLASS = "gregtech.common.render.GT_MetaGenerated_Tool_Renderer"; - private static final String RENDERER_METHOD = "renderItem"; + private static final String CLASS_RENDERER = "gregtech.common.render.GT_MetaGenerated_Tool_Renderer"; + private static final String METHOD_RENDERER = "renderItem"; private static final String TOOLS_NAME = "gt.metatool.01"; private static final Object[] EMPTY_OBJECT = {}; private static final int[] ROTATED_TOOLS = {10, 14, 18, 22, 34, 150, 160}; @@ -28,11 +28,11 @@ private GregtechUtils(){} { try { - toolRenderer = Class.forName(RENDERER_CLASS).newInstance(); + toolRenderer = Class.forName(CLASS_RENDERER).newInstance(); } catch (Exception e) { - LogHelper.error("Error getting instance of GT_MetaGenerated_Tool_Renderer: " + e.getMessage()); + LogHelper.error("Error getting instance of Gregtech: " + e.getMessage()); } } } @@ -57,8 +57,8 @@ public static void renderTool(ItemStack stack, IItemRenderer.ItemRenderType rend { try { - Class.forName(RENDERER_CLASS) - .getMethod(RENDERER_METHOD, IItemRenderer.ItemRenderType.class, ItemStack.class, Object[].class) + Class.forName(CLASS_RENDERER) + .getMethod(METHOD_RENDERER, IItemRenderer.ItemRenderType.class, ItemStack.class, Object[].class) .invoke(toolRenderer, renderType, stack, EMPTY_OBJECT); } catch (Exception e) diff --git a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java new file mode 100644 index 00000000..50c603d4 --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java @@ -0,0 +1,87 @@ +package com.darkona.adventurebackpack.util; + +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.InventoryCrafting; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +import com.darkona.adventurebackpack.config.ConfigHandler; + +/** + * Created on 03.02.2018 + * + * @author Ugachaga + */ +public class TinkersUtils +{ + private static final String CLASS_CRAFTING_LOGIC = "tconstruct.tools.logic.CraftingStationLogic"; + private static final String CLASS_CRAFTING_STATION = "tconstruct.tools.inventory.CraftingStationContainer"; + private static final String METHOD_ON_CRAFT_CHANGED = "onCraftMatrixChanged"; + private static final String FIELD_CRAFT_MATRIX = "craftMatrix"; + private static final String FIELD_CRAFT_RESULT = "craftResult"; + private static final String TAG_INFI_TOOL = "InfiTool"; + + private static Class craftingStation; + private static Object craftingStationInstance; + + private TinkersUtils() {} + + static + { + if (ConfigHandler.IS_TCONSTRUCT) + { + try + { + Class craftingLogic = Class.forName(CLASS_CRAFTING_LOGIC); + Object craftingLogicInstance = craftingLogic.newInstance(); + + craftingStation = Class.forName(CLASS_CRAFTING_STATION); + craftingStationInstance = craftingStation + .getConstructor(InventoryPlayer.class, craftingLogic, int.class, int.class, int.class) + .newInstance(new InventoryPlayer(null), craftingLogicInstance, 0, 0, 0); + } + catch (Exception e) + { + LogHelper.error("Error getting instance of Tinkers Construct: " + e.getMessage()); + } + } + } + + public static boolean isTool(ItemStack stack) + { + return ConfigHandler.IS_TCONSTRUCT + && stack != null && stack.hasTagCompound() && stack.stackTagCompound.hasKey(TAG_INFI_TOOL); + } + + public static ItemStack getTinkersRecipe(InventoryCrafting craftMatrix) + { + try + { + craftingStation + .getField(FIELD_CRAFT_MATRIX) + .set(craftingStationInstance, craftMatrix); + + craftingStation + .getMethod(METHOD_ON_CRAFT_CHANGED, IInventory.class) + .invoke(craftingStationInstance, craftMatrix); + + return ((IInventory) craftingStation + .getField(FIELD_CRAFT_RESULT) + .get(craftingStationInstance)) + .getStackInSlot(0); + } + catch (Throwable e) + { + LogHelper.error("Error during reflection in TinkersUtils"); + //e.printStackTrace(); + return null; + } + } + + public static ResourceLocation getTinkersIcons() + { + return new ResourceLocation("tinker", "textures/gui/icons.png"); + } + +} From cb11e0bd20f7541dc74e6692ea05aa3252ee846c Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sat, 3 Feb 2018 17:21:06 +0700 Subject: [PATCH 425/462] Added support for WAILA --- build.gradle | 13 +++ gradle.properties | 6 +- .../adventurebackpack/AdventureBackpack.java | 55 ++++----- .../client/gui/GuiAdvBackpack.java | 2 +- .../common/ServerActions.java | 7 +- .../handlers/TooltipEventHandler.java | 46 ++++---- .../inventory/ContainerBackpack.java | 1 - .../item/ItemAdventureBackpack.java | 24 +--- .../adventurebackpack/reference/WailaAB.java | 109 ++++++++++++++++++ .../adventurebackpack/util/TinkersUtils.java | 2 +- .../darkona/adventurebackpack/util/Utils.java | 29 +++++ .../assets/adventurebackpack/lang/en_US.lang | 2 +- 12 files changed, 208 insertions(+), 88 deletions(-) create mode 100644 src/main/java/com/darkona/adventurebackpack/reference/WailaAB.java diff --git a/build.gradle b/build.gradle index 5e054f27..d22791c1 100644 --- a/build.gradle +++ b/build.gradle @@ -7,6 +7,17 @@ buildscript { dependencies { classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT' } } +repositories { + maven { // WAILA + name "Mobius Repo" + url "http://mobiusstrip.eu/maven" + } + maven { // NEI + name 'CB Repo' + url "http://chickenbones.net/maven/" + } +} + apply plugin: 'forge' group = "com.darkona.adventurebackpack" // http://maven.apache.org/guides/mini/guide-naming-conventions.html @@ -27,6 +38,8 @@ minecraft { dependencies { compile "codechicken:CodeChickenLib:${minecraft_version}-${ccl_version}:dev" + compile "mcp.mobius.waila:Waila:${waila_version}_${minecraft_version}" + compile "codechicken:NotEnoughItems:${minecraft_version}-${nei_version}:dev" //compile "codechicken:CodeChickenCore:${minecraft_version}-${ccc_version}:dev" //compile "com.azanor.baubles:Baubles:${baubles_version}:deobf" diff --git a/gradle.properties b/gradle.properties index 2c2d658d..9677991a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,10 +1,10 @@ -buildnumber=1 +buildnumber=21 mod_version=0.9g minecraft_version=1.7.10 forge_version=10.13.4.1614-1.7.10 -forgeDep_version=10.13.4.1448 ccc_version=1.0.7.47 ccl_version=1.1.3.138 -baubles_version=1.0.1.10 \ No newline at end of file +nei_version=1.0.5.120 +waila_version=1.5.10 \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java index fe16f96e..6a23a4fa 100644 --- a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java @@ -5,8 +5,10 @@ import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.Mod; +import cpw.mods.fml.common.ModContainer; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; +import cpw.mods.fml.common.event.FMLInterModComms; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.network.NetworkRegistry; @@ -80,53 +82,44 @@ public void init(FMLInitializationEvent event) //GUIs NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandler()); + + //Waila + FMLInterModComms.sendMessage("Waila", "register", "com.darkona.adventurebackpack.reference.WailaAB.callbackRegister"); } @Mod.EventHandler public void postInit(FMLPostInitializationEvent event) { - ConfigHandler.IS_DEVENV = (Boolean) Launch.blackboard.get("fml.deobfuscatedEnvironment"); - - if (ConfigHandler.IS_DEVENV) + if ((Boolean) Launch.blackboard.get("fml.deobfuscatedEnvironment")) + { + ConfigHandler.IS_DEVENV = true; LogHelper.info("Dev environment detected. All hail the creator"); + } - ConfigHandler.IS_BUILDCRAFT = Loader.isModLoaded("BuildCraft|Core"); - ConfigHandler.IS_ENDERIO = Loader.isModLoaded("EnderIO"); - ConfigHandler.IS_GREGTECH = Loader.isModLoaded("gregtech"); - ConfigHandler.IS_TCONSTRUCT = Loader.isModLoaded("TConstruct"); - - if (ConfigHandler.IS_BUILDCRAFT) - LogHelper.info("Buildcraft is present. Acting accordingly"); - if (ConfigHandler.IS_ENDERIO) - LogHelper.info("EnderIO is present. Acting accordingly"); - if (ConfigHandler.IS_GREGTECH) - LogHelper.info("GregTech is present. Acting accordingly"); - if (ConfigHandler.IS_TCONSTRUCT) - LogHelper.info("Tinkers Construct is present. Acting accordingly"); + ConfigHandler.IS_BUILDCRAFT = registerMod("BuildCraft|Core"); + ConfigHandler.IS_ENDERIO = registerMod("EnderIO"); + ConfigHandler.IS_GREGTECH = registerMod("gregtech"); + ConfigHandler.IS_TCONSTRUCT = registerMod("TConstruct"); GeneralReference.init(); //ConditionalFluidEffect.init(); //ModItems.conditionalInit(); //ModRecipes.conditionalInit(); + } - /*LogHelper.info("DUMPING FLUID INFORMATION"); - LogHelper.info("-------------------------------------------------------------------------"); - for(Fluid fluid : FluidRegistry.getRegisteredFluids().values()) - { - - LogHelper.info("Unlocalized name: " + fluid.getUnlocalizedName()); - LogHelper.info("Name: " + fluid.getName()); - LogHelper.info(""); - } - LogHelper.info("-------------------------------------------------------------------------");*/ + private static boolean registerMod(String modID) + { + if (!Loader.isModLoaded(modID)) + return false; - /*LogHelper.info("DUMPING TILE INFORMATION"); - LogHelper.info("-------------------------------------------------------------------------"); - for (Block block : GameData.getBlockRegistry().typeSafeIterable()) + String modName = modID; + for (ModContainer mod : Loader.instance().getModList()) { - LogHelper.info("Block= " + block.getUnlocalizedName()); + if (mod.getModId().equals(modID)) + modName = mod.getName(); } - LogHelper.info("-------------------------------------------------------------------------");*/ + LogHelper.info(modName + " is present. Acting accordingly"); + return true; } } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index 24386690..fccea9b4 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -112,7 +112,7 @@ else if (source == Source.HOLDING) if (ConfigHandler.IS_TCONSTRUCT && ConfigHandler.allowRepairTinkerTools) { this.mc.getTextureManager().bindTexture(TINKERS_ICONS); - this.drawTexturedModalRect(this.guiLeft + 168, this.guiTop + 77, 0, 233, 18, 18); + this.drawTexturedModalRect(this.guiLeft + 169, this.guiTop + 77, 0, 233, 18, 18); } } diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index a34f5a63..8c9422e0 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -13,8 +13,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.world.World; -import net.minecraft.world.WorldProviderEnd; -import net.minecraft.world.WorldProviderHell; +import net.minecraft.world.biome.BiomeGenBase; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; @@ -256,7 +255,7 @@ public static void toggleSleepingBag(EntityPlayer player, boolean isTile, int cX { World world = player.worldObj; - if (world.provider instanceof WorldProviderHell || world.provider instanceof WorldProviderEnd) + if (!world.provider.canRespawnHere() || world.getBiomeGenForCoords(cX, cZ) == BiomeGenBase.hell) { player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.cant.sleep.here")); player.closeScreen(); @@ -347,7 +346,7 @@ else if (!world.isRemote) return true; } - catch (Throwable e) + catch (Exception e) { LogHelper.error("Reflection error while setSleep: " + e.getMessage()); //e.printStackTrace(); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java index 20b7ae45..29e15766 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java @@ -160,7 +160,7 @@ else if (theItem instanceof ItemHose) } } - private String holdShift() + private static String holdShift() { return holdThe(true); } @@ -173,38 +173,38 @@ private void shiftFooter() makeTip(holdCtrl()); } - private String holdCtrl() + private static String holdCtrl() { return holdThe(false); } - private String holdThe(boolean button) + private static String holdThe(boolean button) { return whiteFormat(EnumChatFormatting.ITALIC + "<" + (button ? local("hold.shift") : local("hold.ctrl")) + ">"); } - private String whiteFormat(String theString) + private static String whiteFormat(String theString) { return EnumChatFormatting.WHITE + theString + EnumChatFormatting.GRAY; } - private String actionKeyFormat() + private static String actionKeyFormat() { return whiteFormat(Keybindings.getActionKeyName()); } - private String pressKeyFormat(String button) + private static String pressKeyFormat(String button) { return local("press") + " '" + button + "' "; } - private String pressShiftKeyFormat(String button) + private static String pressShiftKeyFormat(String button) { return local("press") + " Shift+'" + button + "' "; } - private String inventoryTooltip(NBTTagList itemList) + public static String inventoryTooltip(NBTTagList itemList) { int itemCount = itemList.tagCount(); boolean toolSlotU = false; @@ -225,12 +225,12 @@ else if (slotAtI == Constants.LOWER_TOOL) return toolSlotFormat(toolSlotU) + toolSlotFormat(toolSlotL) + " " + mainSlotsFormat(itemCount); } - private String toolSlotFormat(boolean isTool) + private static String toolSlotFormat(boolean isTool) { return (isTool ? EnumChatFormatting.WHITE : EnumChatFormatting.DARK_GRAY) + "[]"; } - private String mainSlotsFormat(int slotsUsed) + private static String mainSlotsFormat(int slotsUsed) { String slotsFormatted = Integer.toString(slotsUsed); if (slotsUsed == 0) @@ -242,19 +242,19 @@ else if (slotsUsed == Constants.INVENTORY_MAIN_SIZE) return slotsFormatted + "/" + Constants.INVENTORY_MAIN_SIZE; } - private String tankTooltip(FluidTank tank) + public static String tankTooltip(FluidTank tank) { return tankTooltip(tank, true); } - private String tankTooltip(FluidTank tank, boolean attachName) + private static String tankTooltip(FluidTank tank, boolean attachName) { String fluidAmount = fluidAmountFormat(tank.getFluidAmount(), tank.getCapacity()); String fluidName = tank.getFluid() == null ? "" : attachName ? fluidNameFormat(tank.getFluid()) : " "; return fluidAmount + (tank.getFluidAmount() > 0 ? "/" + tank.getCapacity() : "") + fluidName; } - private String fluidAmountFormat(int fluidAmount, int tankCapacity) + private static String fluidAmountFormat(int fluidAmount, int tankCapacity) { String amountFormatted = Integer.toString(fluidAmount); if (fluidAmount == tankCapacity) @@ -264,7 +264,7 @@ else if (fluidAmount == 0) return amountFormatted; } - private String fluidNameFormat(FluidStack fluid) + private static String fluidNameFormat(FluidStack fluid) { String nameUnlocalized = fluid.getUnlocalizedName().toLowerCase(); String nameFormatted = " "; @@ -285,19 +285,19 @@ else if (nameUnlocalized.contains("xpjuice")) return nameFormatted + fluid.getLocalizedName(); } - private String switchTooltip(boolean status, boolean doFormat) + private static String switchTooltip(boolean status, boolean doFormat) { return doFormat ? switchFormat(status) : status ? local("on") : local("off"); } - private String switchFormat(boolean status) + private static String switchFormat(boolean status) { String switchFormatted = status ? EnumChatFormatting.WHITE + local("on") : EnumChatFormatting.DARK_GRAY + local("off"); return "[" + switchFormatted + EnumChatFormatting.GRAY + "]"; } - private String slotStackTooltip(NBTTagList itemList, int slot) + private static String slotStackTooltip(NBTTagList itemList, int slot) { int slotID, slotMeta, slotCount = slotID = slotMeta = 0; for (int i = 0; i <= slot; i++) @@ -314,7 +314,7 @@ private String slotStackTooltip(NBTTagList itemList, int slot) return stackDataFormat(slotID, slotMeta, slotCount); } - private String stackDataFormat(int id, int meta, int count) + private static String stackDataFormat(int id, int meta, int count) { if (count == 0) return emptyFormat(); @@ -333,12 +333,12 @@ private String stackDataFormat(int id, int meta, int count) return dataFormatted; } - private String stackSizeFormat(ItemStack stack, int count) + private static String stackSizeFormat(ItemStack stack, int count) { return stack.getMaxStackSize() == count ? whiteFormat(Integer.toString(count)) : Integer.toString(count); } - private String fuelConsumptionTooltip(FluidTank tank) + private static String fuelConsumptionTooltip(FluidTank tank) { if (tank.getFluidAmount() > 0 && GeneralReference.isValidFuel(tank.getFluid().getFluid())) { @@ -347,17 +347,17 @@ private String fuelConsumptionTooltip(FluidTank tank) return EnumChatFormatting.DARK_GRAY + "-"; } - private String emptyFormat() + private static String emptyFormat() { return EnumChatFormatting.DARK_GRAY.toString() + EnumChatFormatting.ITALIC + local("empty"); } - private String local(String tip) + public static String local(String tip) { return StatCollector.translateToLocal("adventurebackpack:tooltips." + tip); } - private String[] locals(String tips) + private static String[] locals(String tips) { return local(tips).split("@", 5); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 20334feb..60634a5e 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -275,7 +275,6 @@ public void onCraftMatrixChanged(IInventory inventory) if (ConfigHandler.allowRepairTinkerTools && TinkersUtils.isTool(craftMatrix.getStackInSlot(4))) { ItemStack tinkersResult = TinkersUtils.getTinkersRecipe(craftMatrix); - if (tinkersResult != null) { craftResult.setInventorySlotContents(0, tinkersResult); diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 57f04788..a03f13f2 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -13,7 +13,6 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.util.ChunkCoordinates; -import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; @@ -87,28 +86,7 @@ public void addInformation(ItemStack stack, EntityPlayer player, List list, bool if (backpackTag.hasKey("type")) { BackpackTypes type = BackpackTypes.getType(backpackTag.getByte("type")); - String skinName = BackpackTypes.getSkinName(type); - switch (type) - { - case BAT: - list.add(EnumChatFormatting.DARK_PURPLE + skinName); - break; - case DRAGON: - list.add(EnumChatFormatting.LIGHT_PURPLE + skinName); - break; - case PIGMAN: - list.add(EnumChatFormatting.RED + skinName); - break; - case RAINBOW: - list.add(Utils.makeItRainbow(skinName)); - break; - case SQUID: - list.add(EnumChatFormatting.DARK_AQUA + skinName); - break; - default: - list.add(skinName); - break; - } + list.add(Utils.getColoredSkinName(type)); } } diff --git a/src/main/java/com/darkona/adventurebackpack/reference/WailaAB.java b/src/main/java/com/darkona/adventurebackpack/reference/WailaAB.java new file mode 100644 index 00000000..7deb69dd --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/reference/WailaAB.java @@ -0,0 +1,109 @@ +package com.darkona.adventurebackpack.reference; + +import java.util.List; + +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraftforge.common.util.Constants.NBT; +import net.minecraftforge.fluids.FluidTank; + +import com.darkona.adventurebackpack.block.TileAdventureBackpack; +import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.handlers.TooltipEventHandler; +import com.darkona.adventurebackpack.util.Utils; + +import mcp.mobius.waila.api.IWailaConfigHandler; +import mcp.mobius.waila.api.IWailaDataAccessor; +import mcp.mobius.waila.api.IWailaDataProvider; +import mcp.mobius.waila.api.IWailaRegistrar; + +/** + * Created on 03.02.2018 + * + * @author Ugachaga + */ +public class WailaAB implements IWailaDataProvider +{ + /*public void init() + { + FMLInterModComms.sendMessage("Waila", "register", "com.darkona.adventurebackpack.reference.WailaAB.callbackRegister"); + }*/ + + public static void callbackRegister(IWailaRegistrar registrar) + { + registrar.registerHeadProvider(new WailaAB(), TileAdventureBackpack.class); + registrar.registerBodyProvider(new WailaAB(), TileAdventureBackpack.class); + } + + @Override + public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) + { + return null; + } + + @Override + public List getWailaHead(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) + { + currenttip.remove(0); + NBTTagCompound backpackTag = accessor.getNBTData().getCompoundTag(Constants.WEARABLE_TAG); + BackpackTypes type = BackpackTypes.getType(backpackTag.getByte("type")); + String skin = ""; + if (type != BackpackTypes.STANDARD) + skin = " [" + Utils.getColoredSkinName(type) + EnumChatFormatting.WHITE + "]"; + currenttip.add(EnumChatFormatting.WHITE + "Adventure Backpack" + skin); + return currenttip; + } + + @Override + public List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) + { + addTipToBackpack(currenttip, accessor); + return currenttip; + } + + private static void addTipToBackpack(List currenttip, IWailaDataAccessor accessor) + { + TileEntity te = accessor.getTileEntity(); + if (te instanceof TileAdventureBackpack) + { + if (accessor.getNBTData().hasKey(Constants.WEARABLE_TAG)) + { + NBTTagCompound backpackTag = accessor.getNBTData().getCompoundTag(Constants.WEARABLE_TAG); + addTipToBackpack(currenttip, backpackTag); + } + } + } + + private static void addTipToBackpack(List currenttip, NBTTagCompound backpackTag) + { + NBTTagList itemList = backpackTag.getTagList(Constants.INVENTORY, NBT.TAG_COMPOUND); + currenttip.add(TooltipEventHandler.local("backpack.slots.used") + ": " + TooltipEventHandler.inventoryTooltip(itemList)); + + FluidTank tank = new FluidTank(Constants.BASIC_TANK_CAPACITY); + + tank.readFromNBT(backpackTag.getCompoundTag(Constants.LEFT_TANK)); + currenttip.add(EnumChatFormatting.RESET + TooltipEventHandler.local("backpack.tank.left") + + ": " + TooltipEventHandler.tankTooltip(tank)); + + tank.readFromNBT(backpackTag.getCompoundTag(Constants.RIGHT_TANK)); + currenttip.add(EnumChatFormatting.RESET + TooltipEventHandler.local("backpack.tank.right") + + ": " + TooltipEventHandler.tankTooltip(tank)); + } + + @Override + public List getWailaTail(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) + { + return null; + } + + @Override + public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, int x, int y, int z) + { + return null; + } +} diff --git a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java index 50c603d4..067e2c79 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java @@ -71,7 +71,7 @@ public static ItemStack getTinkersRecipe(InventoryCrafting craftMatrix) .get(craftingStationInstance)) .getStackInSlot(0); } - catch (Throwable e) + catch (Exception e) { LogHelper.error("Error during reflection in TinkersUtils"); //e.printStackTrace(); diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index afbee9eb..5a4fb781 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -12,6 +12,7 @@ import cpw.mods.fml.relauncher.Side; import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.reference.BackpackTypes; /** * Created on 12/10/2014 @@ -156,4 +157,32 @@ public static int[] createSlotArray(int first, int count) } return slots; } + + public static String getColoredSkinName(BackpackTypes type) + { + String result = ""; + String skinName = BackpackTypes.getSkinName(type); + switch (type) + { + case BAT: + result += EnumChatFormatting.DARK_PURPLE + skinName; + break; + case DRAGON: + result += EnumChatFormatting.LIGHT_PURPLE + skinName; + break; + case PIGMAN: + result += EnumChatFormatting.RED + skinName; + break; + case RAINBOW: + result += Utils.makeItRainbow(skinName); + break; + case SQUID: + result += EnumChatFormatting.DARK_AQUA + skinName; + break; + default: + result += skinName; + break; + } + return result; + } } diff --git a/src/main/resources/assets/adventurebackpack/lang/en_US.lang b/src/main/resources/assets/adventurebackpack/lang/en_US.lang index bbaf3742..29287e66 100644 --- a/src/main/resources/assets/adventurebackpack/lang/en_US.lang +++ b/src/main/resources/assets/adventurebackpack/lang/en_US.lang @@ -65,7 +65,7 @@ adventurebackpack:messages.already.equipped.copterpack=You are already equipping adventurebackpack:messages.already.equipped.jetpack=You are already equipping a Coal Jetpack. adventurebackpack:messages.already.impossibru=You aren't wearing any backpacks. adventurebackpack:messages.backpack.cant.bag=Can't deploy the sleeping bag! Check the surrounding area. -adventurebackpack:messages.cant.sleep.here=Ancient forces do not welcome sleep in this dimension. +adventurebackpack:messages.cant.sleep.here=Ancient forces do not welcome sleep here. adventurebackpack:messages.copterpack.hover=CopterPack: Hover Mode. adventurebackpack:messages.copterpack.normal=CopterPack: Normal Mode. adventurebackpack:messages.copterpack.outoffuel=CopterPack: Out of fuel. From c098c150e969076213f1dbab024817e7273363a2 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 5 Feb 2018 03:48:52 +0700 Subject: [PATCH 426/462] Reworked Backpack Container layout, inventory increased to 48 Slots Added support for Tinkers Construct tools render Fixed mouseWheel was disabled even when mouse not over GUI --- build.gradle | 12 +- gradle.properties | 4 +- .../adventurebackpack/AdventureBackpack.java | 6 +- .../client/gui/GuiOverlay.java | 18 ++- .../client/gui/GuiWithTanks.java | 16 +- .../client/render/RendererStack.java | 31 +++- .../adventurebackpack/common/Constants.java | 2 +- .../handlers/TooltipEventHandler.java | 86 +++++------ .../inventory/ContainerBackpack.java | 146 +++++++++++------- .../inventory/InventoryBackpack.java | 28 ++-- .../inventory/InventoryCraftingBackpack.java | 23 +++ .../inventory/SlotCraftMatrix.java | 30 ++++ .../inventory/SlotCraftResult.java | 30 ++++ ...B.java => WailaTileAdventureBackpack.java} | 32 +++- .../adventurebackpack/util/GregtechUtils.java | 3 +- .../adventurebackpack/util/TinkersUtils.java | 56 ++++++- .../META-INF/adventurebackpack_at.cfg | 1 + 17 files changed, 387 insertions(+), 137 deletions(-) create mode 100644 src/main/java/com/darkona/adventurebackpack/inventory/InventoryCraftingBackpack.java create mode 100644 src/main/java/com/darkona/adventurebackpack/inventory/SlotCraftMatrix.java create mode 100644 src/main/java/com/darkona/adventurebackpack/inventory/SlotCraftResult.java rename src/main/java/com/darkona/adventurebackpack/reference/{WailaAB.java => WailaTileAdventureBackpack.java} (79%) create mode 100644 src/main/resources/META-INF/adventurebackpack_at.cfg diff --git a/build.gradle b/build.gradle index d22791c1..86d96b02 100644 --- a/build.gradle +++ b/build.gradle @@ -23,7 +23,7 @@ apply plugin: 'forge' group = "com.darkona.adventurebackpack" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "adventurebackpack" -version = "${minecraft_version}-${mod_version}beta${buildnumber}" +version = "${minecraft_version}-${mod_version}-${buildnumber}" sourceCompatibility = 1.7 targetCompatibility = 1.7 @@ -37,10 +37,10 @@ minecraft { dependencies { + compile "codechicken:CodeChickenCore:${minecraft_version}-${ccc_version}:dev" compile "codechicken:CodeChickenLib:${minecraft_version}-${ccl_version}:dev" - compile "mcp.mobius.waila:Waila:${waila_version}_${minecraft_version}" compile "codechicken:NotEnoughItems:${minecraft_version}-${nei_version}:dev" - //compile "codechicken:CodeChickenCore:${minecraft_version}-${ccc_version}:dev" + compile "mcp.mobius.waila:Waila:${waila_version}_${minecraft_version}" //compile "com.azanor.baubles:Baubles:${baubles_version}:deobf" @@ -69,6 +69,12 @@ processResources { } } +jar { + manifest { + attributes 'FMLAT': 'adventurebackpack_at.cfg' + } +} + if (JavaVersion.current().isJava8Compatible()) { allprojects { tasks.withType(Javadoc) { diff --git a/gradle.properties b/gradle.properties index 9677991a..81047f4b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ -buildnumber=21 -mod_version=0.9g +buildnumber=1pre2 +mod_version=0.9h minecraft_version=1.7.10 forge_version=10.13.4.1614-1.7.10 diff --git a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java index 6a23a4fa..8696f0cf 100644 --- a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java @@ -8,7 +8,6 @@ import cpw.mods.fml.common.ModContainer; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; -import cpw.mods.fml.common.event.FMLInterModComms; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.network.NetworkRegistry; @@ -31,6 +30,7 @@ import com.darkona.adventurebackpack.proxy.IProxy; import com.darkona.adventurebackpack.reference.GeneralReference; import com.darkona.adventurebackpack.reference.ModInfo; +import com.darkona.adventurebackpack.reference.WailaTileAdventureBackpack; import com.darkona.adventurebackpack.util.LogHelper; /** @@ -79,12 +79,10 @@ public void init(FMLInitializationEvent event) proxy.init(); ModRecipes.init(); ModWorldGen.init(); + WailaTileAdventureBackpack.init(); //GUIs NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandler()); - - //Waila - FMLInterModComms.sendMessage("Waila", "register", "com.darkona.adventurebackpack.reference.WailaAB.callbackRegister"); } @Mod.EventHandler diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java index 5074dbee..1bdc7611 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java @@ -12,6 +12,7 @@ import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; @@ -33,6 +34,7 @@ import com.darkona.adventurebackpack.reference.ModInfo; import com.darkona.adventurebackpack.util.GregtechUtils; import com.darkona.adventurebackpack.util.LogHelper; +import com.darkona.adventurebackpack.util.TinkersUtils; import com.darkona.adventurebackpack.util.Wearing; /** @@ -228,17 +230,27 @@ private void drawItemStack(ItemStack stack, int x, int y) if (stack == null) return; - boolean isGregtechTool = GregtechUtils.isTool(stack); - - GL11.glTranslatef(isGregtechTool ? x : 0.0F, isGregtechTool ? y :0.0F, 32.0F); this.zLevel = 200.0F; itemRender.zLevel = 200.0F; + + boolean isGregtechTool = GregtechUtils.isTool(stack); + boolean isTinkersTool = TinkersUtils.isTool(stack); + if (isGregtechTool) { + GL11.glTranslatef(x, y, 32.0F); GregtechUtils.renderTool(stack, IItemRenderer.ItemRenderType.INVENTORY); } + else if (isTinkersTool) + { + TextureManager tm = mc.getTextureManager(); + tm.bindTexture(tm.getResourceLocation(stack.getItemSpriteNumber())); + GL11.glTranslatef(x, y, 32.0F); + TinkersUtils.renderTool(stack, IItemRenderer.ItemRenderType.INVENTORY); + } else { + GL11.glTranslatef(0F, 0F, 32.0F); FontRenderer font = null; font = stack.getItem().getFontRenderer(stack); if (font == null) font = fontRendererObj; diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java index 0e40b728..091f1e40 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java @@ -82,9 +82,21 @@ protected void keyTyped(char key, int keycode) @Override public void handleMouseInput() { - if (Mouse.getEventDWheel() != 0) //TODO + int i = Mouse.getEventX() * this.width / this.mc.displayWidth; + int j = this.height - Mouse.getEventY() * this.height / this.mc.displayHeight - 1; + int marginX = (width - xSize) / 2; + int marginY = (height - ySize) / 2; + + if (i > marginX && i < marginX + xSize) { - return; // forbid mouseWheel, preventing glitches with Shift+Wheel on fluid containers and so on + if (j > marginY && j < marginY + ySize) + { + if (Mouse.getEventDWheel() != 0) + { + return; // forbid mouseWheel when mouse over our GUI, + // Shift+Wheel on stacks of fluid containers places them to clients bucket slots, causes desync + } + } } super.handleMouseInput(); diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java index e171ecff..40729f01 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java @@ -2,17 +2,22 @@ import org.lwjgl.opengl.GL11; +import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; +import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.item.ItemStack; import net.minecraftforge.client.IItemRenderer; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import com.darkona.adventurebackpack.util.GregtechUtils; +import com.darkona.adventurebackpack.util.TinkersUtils; public class RendererStack extends ModelRenderer { + private static final Minecraft MC = Minecraft.getMinecraft(); + public ItemStack stack; private boolean isLowerSlot; @@ -37,7 +42,9 @@ public void render(float par1) if (stack == null) return; + boolean isGregtechTool = GregtechUtils.isTool(stack); + boolean isTinkersTool = TinkersUtils.isTool(stack); GL11.glPushMatrix(); GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); @@ -46,17 +53,30 @@ public void render(float par1) GL11.glScalef(0.6F, 0.6F, 0.6F); GL11.glPushMatrix(); GL11.glRotatef(-90F, 0, 1, 0); - GL11.glRotatef(isGregtechTool ? GregtechUtils.getToolRotationAngle(stack, isLowerSlot) : -225F, 0, 0, 1); + + if (isGregtechTool || isTinkersTool) + GL11.glRotatef(getToolRotationAngle(stack, true, isGregtechTool), 0, 0, 1); + else + GL11.glRotatef(-225F, 0, 0, 1); } else { GL11.glScalef(0.7F, 0.7F, 0.7F); GL11.glPushMatrix(); - GL11.glRotatef(isGregtechTool ? GregtechUtils.getToolRotationAngle(stack, isLowerSlot) : 45F, 0, 0, 1); + if (isGregtechTool || isTinkersTool) + GL11.glRotatef(getToolRotationAngle(stack, false, isGregtechTool), 0, 0, 1); + else + GL11.glRotatef(45F, 0, 0, 1); } if (isGregtechTool) GregtechUtils.renderTool(stack, IItemRenderer.ItemRenderType.ENTITY); + else if (isTinkersTool) + { + TextureManager tm = MC.getTextureManager(); + tm.bindTexture(tm.getResourceLocation(stack.getItemSpriteNumber())); + TinkersUtils.renderTool(stack, IItemRenderer.ItemRenderType.ENTITY); + } else CopygirlRenderUtils.renderItemIn3d(stack); @@ -64,5 +84,12 @@ public void render(float par1) GL11.glPopMatrix(); GL11.glPopMatrix(); } + + private float getToolRotationAngle(ItemStack stack, boolean isLowerSlot, boolean isGregtech) + { + return isGregtech + ? GregtechUtils.getToolRotationAngle(stack, isLowerSlot) + : TinkersUtils.getToolRotationAngle(stack, isLowerSlot); + } } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/common/Constants.java b/src/main/java/com/darkona/adventurebackpack/common/Constants.java index 5577c208..65cb6d66 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/Constants.java +++ b/src/main/java/com/darkona/adventurebackpack/common/Constants.java @@ -20,7 +20,7 @@ public enum Source //TODO move to separate class? public static final String INVENTORY = "inventory"; // Inventory Slots - public static final int INVENTORY_SIZE = 45; + public static final int INVENTORY_SIZE = 54; public static final int END_OF_INVENTORY = INVENTORY_SIZE - 7; // 0 included public static final int INVENTORY_MAIN_SIZE = END_OF_INVENTORY + 1; // 0 excluded diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java index 29e15766..ad957353 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java @@ -160,11 +160,6 @@ else if (theItem instanceof ItemHose) } } - private static String holdShift() - { - return holdThe(true); - } - private void shiftFooter() { if (GuiScreen.isCtrlKeyDown()) @@ -173,6 +168,47 @@ private void shiftFooter() makeTip(holdCtrl()); } + private void makeTip(String tooltip) + { + eventTip.add(tooltip); + } + + private void makeTip(String[] tooltips) + { + makeTip(null, tooltips, null); + } + + private void makeTip(String before, String[] tooltips) + { + makeTip(before, tooltips, null); + } + + private void makeTip(String before, String[] tooltips, String after) + { + for (int i = 0; i < tooltips.length; i++) + { + String tip = ""; + if (i == 0 && before != null) + tip += before; + tip += tooltips[i]; + if (i == tooltips.length - 1 && after != null) + tip += after; + eventTip.add(tip); + } + } + + private void makeEmptyTip() + { + makeTip(""); + } + + // Static things --- + + private static String holdShift() + { + return holdThe(true); + } + private static String holdCtrl() { return holdThe(false); @@ -361,42 +397,4 @@ private static String[] locals(String tips) { return local(tips).split("@", 5); } - - private void makeTip(String tooltip) - { - eventTip.add(tooltip); - } - - private void makeTip(String[] tooltips) - { - makeTip(null, tooltips, null); - } - - private void makeTip(String before, String[] tooltips) - { - makeTip(before, tooltips, null); - } - - private void makeTip(String before, String[] tooltips, String after) - { - for (int i = 0; i < tooltips.length; i++) - { - String tip = ""; - - if (i == 0 && before != null) - tip += before; - - tip += tooltips[i]; - - if (i == tooltips.length - 1 && after != null) - tip += after; - - eventTip.add(tip); - } - } - - private void makeEmptyTip() - { - makeTip(""); - } -} +} \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 60634a5e..91f7de97 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -4,9 +4,6 @@ import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.InventoryCraftResult; -import net.minecraft.inventory.InventoryCrafting; -import net.minecraft.inventory.Slot; -import net.minecraft.inventory.SlotCrafting; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; import net.minecraftforge.fluids.FluidTank; @@ -28,16 +25,21 @@ * * @author Darkona */ +//@invtweaks.api.container.ChestContainer (showButtons=true, rowSize=8) public class ContainerBackpack extends ContainerAdventureBackpack { + private static final int BACK_INV_ROWS = 6; + private static final int BACK_INV_COLUMNS = 8; private static final int BACK_INV_START = PLAYER_INV_END + 1; - private static final int BACK_INV_END = BACK_INV_START + 38; + private static final int BACK_INV_END = PLAYER_INV_END + (BACK_INV_ROWS * BACK_INV_COLUMNS); private static final int TOOL_START = BACK_INV_END + 1; private static final int TOOL_END = TOOL_START + 1; private static final int BUCKET_LEFT = TOOL_END + 1; private static final int BUCKET_RIGHT = BUCKET_LEFT + 2; + private static final int MATRIX_DIMENSION = 3; + private static final int[] CRAFT_MATRIX_EMULATION = findCraftMatrixEmulationIDs(); - private InventoryCrafting craftMatrix = new InventoryCrafting(this, 3, 3); + private InventoryCraftingBackpack craftMatrix = new InventoryCraftingBackpack(this, MATRIX_DIMENSION, MATRIX_DIMENSION); private IInventory craftResult = new InventoryCraftResult(); private IInventoryAdventureBackpack inventory; @@ -45,8 +47,6 @@ public class ContainerBackpack extends ContainerAdventureBackpack private int rightAmount; private int invCount; - //IDEA redesign container layout/craft slots behavior, so it will be rectangular and compatible with invTweaks. this also makes more slots available cuz craft ones will not drop content on close - public ContainerBackpack(EntityPlayer player, IInventoryAdventureBackpack backpack, Source source) { this.player = player; @@ -69,52 +69,45 @@ public IInventoryTanks getInventoryTanks() private void makeSlots(InventoryPlayer invPlayer) { - bindPlayerInventory(invPlayer, 44, 125); + bindPlayerInventory(invPlayer, 44, 125); // 4*9 playerInventory, 36 Slots [0-35] int startX = 62; int startY = 7; int slot = 0; - for (int i = 0; i < 3; i++) // upper 8*3, 24 Slots (1-24) + for (int row = 0; row < BACK_INV_ROWS; row++) // 6*8 inventory, 48 Slots (#1-#48) [36-83] { - for (int j = 0; j < 8; j++) + for (int col = 0; col < BACK_INV_COLUMNS; col++) { - int offsetX = startX + (18 * j); - int offsetY = startY + (18 * i); - addSlotToContainer(new SlotBackpack(inventory, slot++, offsetX, offsetY)); - } - } + int offsetX = startX + (18 * col); + int offsetY = startY + (18 * row); - startY = 61; - for (int i = 0; i < 3; i++) // lower 5*3, 15 Slots (25-39) - { - for (int j = 0; j < 5; j++) - { - int offsetX = startX + (18 * j); - int offsetY = startY + (18 * i); addSlotToContainer(new SlotBackpack(inventory, slot++, offsetX, offsetY)); } } - addSlotToContainer(new SlotTool(inventory, UPPER_TOOL, 44, 79)); // #40 - addSlotToContainer(new SlotTool(inventory, LOWER_TOOL, 44, 97)); // #41 + addSlotToContainer(new SlotTool(inventory, UPPER_TOOL, 44, 79)); // #49 [84] + addSlotToContainer(new SlotTool(inventory, LOWER_TOOL, 44, 97)); // #50 [85] - addSlotToContainer(new SlotFluid(inventory, BUCKET_IN_LEFT, 6, 7)); // #42 - addSlotToContainer(new SlotFluid(inventory, BUCKET_OUT_LEFT, 6, 37)); // #43 - addSlotToContainer(new SlotFluid(inventory, BUCKET_IN_RIGHT, 226, 7)); // #44 - addSlotToContainer(new SlotFluid(inventory, BUCKET_OUT_RIGHT, 226, 37)); // #45 + addSlotToContainer(new SlotFluid(inventory, BUCKET_IN_LEFT, 6, 7)); // #51 [86] + addSlotToContainer(new SlotFluid(inventory, BUCKET_OUT_LEFT, 6, 37)); // #52 [87] + addSlotToContainer(new SlotFluid(inventory, BUCKET_IN_RIGHT, 226, 7)); // #53 [88] + addSlotToContainer(new SlotFluid(inventory, BUCKET_OUT_RIGHT, 226, 37)); // #54 [89] - startX = 152; - for (int y = 0; y < 3; y++) // Craft Matrix - 3*3, 9 slots + startX = 215; + //startY = -12500; + startY = ConfigHandler.IS_DEVENV ? 125 : -12500; + for (int row = 0; row < MATRIX_DIMENSION; row++) // craftMatrix, usually 9 slots, [90-98] { - for (int x = 0; x < 3; x++) + for (int col = 0; col < MATRIX_DIMENSION; col++) { - int offsetX = startX + (18 * x); - int offsetY = startY + (18 * y); - addSlotToContainer(new Slot(craftMatrix, (x + y * 3), offsetX, offsetY)); + int offsetX = startX + (18 * col); + int offsetY = startY + (18 * row); + addSlotToContainer(new SlotCraftMatrix(craftMatrix, (row * MATRIX_DIMENSION + col), offsetX, offsetY)); } } - addSlotToContainer(new SlotCrafting(invPlayer.player, craftMatrix, craftResult, 0, 226, 97)); + addSlotToContainer(new SlotCraftResult(this, invPlayer.player, craftMatrix, craftResult, 0, 226, 97)); // craftResult [99] + syncCraftMatrixToInventory(); this.onCraftMatrixChanged(craftMatrix); } @@ -254,19 +247,23 @@ else if (leftStackOut == null && rightStackOut == null && SlotBackpack.isValidIt } @Override - protected void dropContentOnClose() + public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) { - super.dropContentOnClose(); + final ItemStack result = super.slotClick(slot, button, flag, player); + syncCraftMatrixToInventory(); + return result; + } - for (int i = 0; i < 9; i++) + @Override + protected void dropContentOnClose() + { + for (int i = 0; i < craftMatrix.getSizeInventory(); i++) { - ItemStack itemstack = this.craftMatrix.getStackInSlotOnClosing(i); - - if (itemstack != null) - { - player.dropPlayerItemWithRandomChoice(itemstack, false); - } + this.craftMatrix.setInventorySlotContentsNoUpdate(i, null); } + onCraftMatrixChanged(craftMatrix); + + super.dropContentOnClose(); } @Override @@ -274,16 +271,59 @@ public void onCraftMatrixChanged(IInventory inventory) { if (ConfigHandler.allowRepairTinkerTools && TinkersUtils.isTool(craftMatrix.getStackInSlot(4))) { - ItemStack tinkersResult = TinkersUtils.getTinkersRecipe(craftMatrix); - if (tinkersResult != null) - { - craftResult.setInventorySlotContents(0, tinkersResult); - return; - } + craftResult.setInventorySlotContents(0, TinkersUtils.getTinkersRecipe(craftMatrix)); + return; } - craftResult.setInventorySlotContents(0, - CraftingManager.getInstance().findMatchingRecipe(craftMatrix, player.worldObj)); + craftResult.setInventorySlotContents(0, CraftingManager.getInstance().findMatchingRecipe(craftMatrix, player.worldObj)); + } + + protected void syncCraftMatrixToInventory() + { + for (int craftSlotID = 0; craftSlotID < CRAFT_MATRIX_EMULATION.length; craftSlotID++) + { + int invSlotID = CRAFT_MATRIX_EMULATION[craftSlotID]; + final ItemStack invStack = inventory.getStackInSlot(invSlotID); + craftMatrix.setInventorySlotContentsNoUpdate(craftSlotID, invStack); + } + onCraftMatrixChanged(craftMatrix); + } + + protected void syncInventoryToCraftMatrix() + { + for (int craftSlotID = 0; craftSlotID < CRAFT_MATRIX_EMULATION.length; craftSlotID++) + { + int invSlotID = CRAFT_MATRIX_EMULATION[craftSlotID]; + final ItemStack craftStack = craftMatrix.getStackInSlot(craftSlotID); + inventory.setInventorySlotContentsNoSave(invSlotID, craftStack); + } + inventory.markDirty(); } -} + /*@ContainerSectionCallback //TODO deal with invTweaks + public Map> getContainerSections() + { + Map> slotMap = new HashMap<>(); + slotMap.put(ContainerSection.CHEST, inventorySlots.subList(BACK_INV_START, BACK_INV_END + 1)); + return slotMap; + }*/ + + /** + * Returns the array of inventory slotIDs, emulates the craftMatrix in the lower right corner of the inventory. + */ + private static int[] findCraftMatrixEmulationIDs() + { + int[] slotsArray = new int[MATRIX_DIMENSION * MATRIX_DIMENSION]; + for (int row = 0; row < MATRIX_DIMENSION; row++) + { + for (int col = 0; col < MATRIX_DIMENSION; col++) + { + int id = row * MATRIX_DIMENSION + col; + int fullRowSum = (BACK_INV_ROWS - (MATRIX_DIMENSION - 1) + row) * BACK_INV_COLUMNS; + int columnShift = (MATRIX_DIMENSION - 1) - col; + slotsArray[id] = fullRowSum - columnShift - 1; + } + } + return slotsArray; + } +} \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index 010e9674..9ff39c52 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -195,14 +195,19 @@ public void dirtyExtended() @Override public void setInventorySlotContentsNoSave(int slot, ItemStack stack) { - if (slot > inventory.length) + if (slot >= this.getSizeInventory()) return; - inventory[slot] = stack; - if (stack != null && stack.stackSize > this.getInventoryStackLimit()) + if (stack != null) { - stack.stackSize = this.getInventoryStackLimit(); + if (stack.stackSize > this.getInventoryStackLimit()) + stack.stackSize = this.getInventoryStackLimit(); + + if(stack.stackSize == 0) + stack = null; } + + this.inventory[slot] = stack; } @Override @@ -388,15 +393,20 @@ public ItemStack getStackInSlotOnClosing(int slot) @Override public void setInventorySlotContents(int slot, ItemStack stack) { - if (slot > inventory.length) + if (slot >= this.getSizeInventory()) return; - inventory[slot] = stack; - if (stack != null && stack.stackSize > getInventoryStackLimit()) + if (stack != null) { - stack.stackSize = getInventoryStackLimit(); + if (stack.stackSize > this.getInventoryStackLimit()) + stack.stackSize = this.getInventoryStackLimit(); + + if(stack.stackSize == 0) + stack = null; } - dirtyInventory(); + + this.inventory[slot] = stack; + this.dirtyInventory(); } public boolean hasBlock(Block block) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCraftingBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCraftingBackpack.java new file mode 100644 index 00000000..a0ca0602 --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCraftingBackpack.java @@ -0,0 +1,23 @@ +package com.darkona.adventurebackpack.inventory; + +import net.minecraft.inventory.Container; +import net.minecraft.inventory.InventoryCrafting; +import net.minecraft.item.ItemStack; + +/** + * Created on 04.02.2018 + * + * @author Ugachaga + */ +public class InventoryCraftingBackpack extends InventoryCrafting +{ + public InventoryCraftingBackpack(Container eventHandler, int columns, int rows) + { + super(eventHandler, columns, rows); + } + + public void setInventorySlotContentsNoUpdate(int slotID, ItemStack stack) + { + this.stackList[slotID] = stack; + } +} \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotCraftMatrix.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotCraftMatrix.java new file mode 100644 index 00000000..98394628 --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotCraftMatrix.java @@ -0,0 +1,30 @@ +package com.darkona.adventurebackpack.inventory; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; + +/** + * Created on 04.02.2018 + * + * @author Ugachaga + */ +public class SlotCraftMatrix extends SlotAdventureBackpack +{ + SlotCraftMatrix(IInventory craftMatrix, int slotIndex, int posX, int posY) + { + super(craftMatrix, slotIndex, posX, posY); + } + + @Override + public boolean isItemValid(ItemStack stack) + { + return false; + } + + @Override + public boolean canTakeStack(EntityPlayer player) + { + return false; + } +} \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotCraftResult.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotCraftResult.java new file mode 100644 index 00000000..32ef03e5 --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotCraftResult.java @@ -0,0 +1,30 @@ +package com.darkona.adventurebackpack.inventory; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.SlotCrafting; +import net.minecraft.item.ItemStack; + +/** + * Created on 04.02.2018 + * + * @author Ugachaga + */ +public class SlotCraftResult extends SlotCrafting +{ + private ContainerBackpack eventHandler; + + public SlotCraftResult(ContainerBackpack container, EntityPlayer player, IInventory craftMatrix, IInventory inventory, int slotIndex, int posX, int posY) + { + super(player, craftMatrix, inventory, slotIndex, posX, posY); + this.eventHandler = container; + } + + @Override + public void onPickupFromSlot(EntityPlayer player, ItemStack stack) + { + eventHandler.syncCraftMatrixToInventory(); // pre craft sync + super.onPickupFromSlot(player, stack); + eventHandler.syncInventoryToCraftMatrix(); // post craft sync + } +} diff --git a/src/main/java/com/darkona/adventurebackpack/reference/WailaAB.java b/src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java similarity index 79% rename from src/main/java/com/darkona/adventurebackpack/reference/WailaAB.java rename to src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java index 7deb69dd..c9798884 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/WailaAB.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java @@ -11,6 +11,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.fluids.FluidTank; +import cpw.mods.fml.common.event.FMLInterModComms; import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.common.Constants; @@ -27,17 +28,19 @@ * * @author Ugachaga */ -public class WailaAB implements IWailaDataProvider +public class WailaTileAdventureBackpack implements IWailaDataProvider { - /*public void init() + public static void init() { - FMLInterModComms.sendMessage("Waila", "register", "com.darkona.adventurebackpack.reference.WailaAB.callbackRegister"); - }*/ + FMLInterModComms.sendMessage("Waila", "register", "com.darkona.adventurebackpack.reference.WailaTileAdventureBackpack.callbackRegister"); + } + + //TODO change icon public static void callbackRegister(IWailaRegistrar registrar) { - registrar.registerHeadProvider(new WailaAB(), TileAdventureBackpack.class); - registrar.registerBodyProvider(new WailaAB(), TileAdventureBackpack.class); + registrar.registerHeadProvider(new WailaTileAdventureBackpack(), TileAdventureBackpack.class); + registrar.registerBodyProvider(new WailaTileAdventureBackpack(), TileAdventureBackpack.class); } @Override @@ -48,15 +51,28 @@ public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler @Override public List getWailaHead(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) + { + addHeadToBackpack(currenttip, accessor); + return currenttip; + } + + private static void addHeadToBackpack(List currenttip, IWailaDataAccessor accessor) + { + if (accessor.getNBTData().hasKey(Constants.WEARABLE_TAG)) + { + NBTTagCompound backpackTag = accessor.getNBTData().getCompoundTag(Constants.WEARABLE_TAG); + addHeadToBackpack(currenttip, backpackTag); + } + } + + private static void addHeadToBackpack(List currenttip, NBTTagCompound backpackTag) { currenttip.remove(0); - NBTTagCompound backpackTag = accessor.getNBTData().getCompoundTag(Constants.WEARABLE_TAG); BackpackTypes type = BackpackTypes.getType(backpackTag.getByte("type")); String skin = ""; if (type != BackpackTypes.STANDARD) skin = " [" + Utils.getColoredSkinName(type) + EnumChatFormatting.WHITE + "]"; currenttip.add(EnumChatFormatting.WHITE + "Adventure Backpack" + skin); - return currenttip; } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java b/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java index b14be257..263f965c 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java @@ -14,8 +14,9 @@ public class GregtechUtils { private static final String CLASS_RENDERER = "gregtech.common.render.GT_MetaGenerated_Tool_Renderer"; private static final String METHOD_RENDERER = "renderItem"; - private static final String TOOLS_NAME = "gt.metatool.01"; private static final Object[] EMPTY_OBJECT = {}; + + private static final String TOOLS_NAME = "gt.metatool.01"; private static final int[] ROTATED_TOOLS = {10, 14, 18, 22, 34, 150, 160}; private static Object toolRenderer; diff --git a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java index 067e2c79..934b004a 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java @@ -1,13 +1,21 @@ package com.darkona.adventurebackpack.util; +import java.util.UUID; + import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.InventoryCrafting; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import net.minecraft.world.WorldServer; +import net.minecraftforge.client.IItemRenderer; +import net.minecraftforge.common.util.FakePlayer; +import cpw.mods.fml.common.FMLCommonHandler; import com.darkona.adventurebackpack.config.ConfigHandler; +import com.mojang.authlib.GameProfile; + /** * Created on 03.02.2018 * @@ -17,13 +25,20 @@ public class TinkersUtils { private static final String CLASS_CRAFTING_LOGIC = "tconstruct.tools.logic.CraftingStationLogic"; private static final String CLASS_CRAFTING_STATION = "tconstruct.tools.inventory.CraftingStationContainer"; - private static final String METHOD_ON_CRAFT_CHANGED = "onCraftMatrixChanged"; + private static final String METHOD_ON_CRAFT_CHANGED = ConfigHandler.IS_DEVENV ? "onCraftMatrixChanged" : "func_75130_a"; private static final String FIELD_CRAFT_MATRIX = "craftMatrix"; private static final String FIELD_CRAFT_RESULT = "craftResult"; + + private static final String CLASS_RENDERER = "tconstruct.client.FlexibleToolRenderer"; + //private static final String CLASS_RENDERER = "tconstruct.client.ToolCoreRenderer"; + private static final String METHOD_RENDERER = "renderItem"; + private static final Object[] EMPTY_OBJECT = {}; + private static final String TAG_INFI_TOOL = "InfiTool"; private static Class craftingStation; private static Object craftingStationInstance; + private static Object toolRendererInstance; private TinkersUtils() {} @@ -36,14 +51,27 @@ private TinkersUtils() {} Class craftingLogic = Class.forName(CLASS_CRAFTING_LOGIC); Object craftingLogicInstance = craftingLogic.newInstance(); + WorldServer world = FMLCommonHandler.instance().getMinecraftServerInstance().worldServers[0]; + UUID FAKE_UUID = UUID.fromString("521e749d-2ac0-3459-af7a-160b4be5c62b"); + GameProfile FAKE_PROFILE = new GameProfile(FAKE_UUID, "[Adventurer]"); + craftingStation = Class.forName(CLASS_CRAFTING_STATION); craftingStationInstance = craftingStation .getConstructor(InventoryPlayer.class, craftingLogic, int.class, int.class, int.class) - .newInstance(new InventoryPlayer(null), craftingLogicInstance, 0, 0, 0); + .newInstance(new InventoryPlayer(new FakePlayer(world, FAKE_PROFILE)), craftingLogicInstance, 0, 0, 0); } catch (Exception e) { - LogHelper.error("Error getting instance of Tinkers Construct: " + e.getMessage()); + LogHelper.error("Error getting Tinkers Crafting Station instance: " + e.getMessage()); + } + + try + { + toolRendererInstance = Class.forName(CLASS_RENDERER).newInstance(); + } + catch (Exception e) + { + LogHelper.error("Error getting Tinkers Tool Renderer instance: " + e.getMessage()); } } } @@ -73,15 +101,33 @@ public static ItemStack getTinkersRecipe(InventoryCrafting craftMatrix) } catch (Exception e) { - LogHelper.error("Error during reflection in TinkersUtils"); + LogHelper.error("Error during reflection in getTinkersRecipe: " + e.getMessage()); //e.printStackTrace(); return null; } } + public static float getToolRotationAngle(ItemStack stack, boolean isLowerSlot) + { + return isLowerSlot ? -45F : 45F; + } + + public static void renderTool(ItemStack stack, IItemRenderer.ItemRenderType renderType) + { + try + { + Class.forName(CLASS_RENDERER) + .getMethod(METHOD_RENDERER, IItemRenderer.ItemRenderType.class, ItemStack.class, Object[].class) + .invoke(toolRendererInstance, renderType, stack, EMPTY_OBJECT); + } + catch (Exception e) + { + //e.printStackTrace(); + } + } + public static ResourceLocation getTinkersIcons() { return new ResourceLocation("tinker", "textures/gui/icons.png"); } - } diff --git a/src/main/resources/META-INF/adventurebackpack_at.cfg b/src/main/resources/META-INF/adventurebackpack_at.cfg new file mode 100644 index 00000000..4b3e57ad --- /dev/null +++ b/src/main/resources/META-INF/adventurebackpack_at.cfg @@ -0,0 +1 @@ +public net.minecraft.inventory.InventoryCrafting field_70466_a # stackList \ No newline at end of file From dca6fa78e10b52bc1388d0ce21730f2a5f1a7df3 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 5 Feb 2018 17:05:19 +0700 Subject: [PATCH 427/462] Cleaning up Utils --- .../block/BlockAdventureBackpack.java | 4 +- .../block/BlockSleepingBag.java | 2 +- .../block/TileAdventureBackpack.java | 2 +- .../client/gui/GuiCoalJetpack.java | 6 +- .../client/gui/GuiCopterPack.java | 4 +- .../client/gui/GuiWithTanks.java | 16 ++-- .../client/models/ModelCoalJetpack.java | 20 ++--- .../client/models/ModelInflatableBoat.java | 3 +- .../common/ServerActions.java | 3 +- .../config/ConfigHandler.java | 13 +++ .../handlers/PlayerEventHandler.java | 32 ++++---- .../inventory/ContainerBackpack.java | 1 - .../inventory/InventoryCoalJetpack.java | 2 +- .../adventurebackpack/item/ItemHose.java | 18 ++--- .../adventurebackpack/network/GUIPacket.java | 4 +- .../playerProperties/BackpackProperty.java | 9 +-- .../adventurebackpack/proxy/ClientProxy.java | 3 +- .../adventurebackpack/util/BackpackUtils.java | 2 + .../adventurebackpack/util/LogHelper.java | 35 +------- .../darkona/adventurebackpack/util/Utils.java | 79 +++---------------- 20 files changed, 88 insertions(+), 170 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java index 1123997e..9163e7f0 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java @@ -31,12 +31,12 @@ import com.darkona.adventurebackpack.AdventureBackpack; import com.darkona.adventurebackpack.client.Icons; +import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.handlers.GuiHandler; import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.reference.ModInfo; import com.darkona.adventurebackpack.util.CoordsUtils; -import com.darkona.adventurebackpack.util.Utils; import static com.darkona.adventurebackpack.reference.BackpackTypes.BOOKSHELF; import static com.darkona.adventurebackpack.reference.BackpackTypes.CACTUS; @@ -234,7 +234,7 @@ public boolean canConnectRedstone(IBlockAccess world, int x, int y, int z, int s @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if (!world.isRemote && Utils.isDimensionAllowed(player.worldObj.provider.dimensionId)) + if (!world.isRemote && ConfigHandler.isDimensionAllowed(player.worldObj.provider.dimensionId)) { FMLNetworkHandler.openGui(player, AdventureBackpack.instance, GuiHandler.BACKPACK_TILE, world, x, y, z); return true; diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java b/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java index d87a41d7..50353063 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java @@ -224,7 +224,7 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p ChunkCoordinates campfire = CoordsUtils.findBlock3D(world, x, y, z, ModBlocks.blockCampFire, 8, 2); if (campfire != null) { - LogHelper.info("Campfire Found, saving coordinates. " + LogHelper.print3DCoords(campfire)); + LogHelper.info("Campfire Found, saving coordinates. " + campfire.toString()); BackpackProperty.get(player).setCampFire(campfire); } } diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 54ae1ab5..995d8270 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -622,7 +622,7 @@ public void dirtyInventory() @Override public int[] getAccessibleSlotsFromSide(int side) { - if (Utils.isDimensionAllowed(this.worldObj.provider.dimensionId)) + if (ConfigHandler.isDimensionAllowed(this.worldObj.provider.dimensionId)) { return SLOTS; } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java index ec59d057..fa4a1f87 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java @@ -1,5 +1,6 @@ package com.darkona.adventurebackpack.client.gui; +import org.apache.commons.lang3.text.WordUtils; import org.lwjgl.opengl.GL11; import net.minecraft.entity.player.EntityPlayer; @@ -13,7 +14,6 @@ import com.darkona.adventurebackpack.inventory.ContainerJetpack; import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; import com.darkona.adventurebackpack.util.Resources; -import com.darkona.adventurebackpack.util.Utils; /** * Created on 15/01/2015 @@ -113,7 +113,7 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) float factor = 0.7f; - String show = ((water.getFluidAmount() > 0) ? Utils.capitalize(FluidRegistry.getFluidName(water.getFluid())) : "None") + "-" + water.getFluidAmount(); + String show = ((water.getFluidAmount() > 0) ? WordUtils.capitalize(FluidRegistry.getFluidName(water.getFluid())) : "None") + "-" + water.getFluidAmount(); GL11.glPushMatrix(); GL11.glTranslatef(70, 10, 0); @@ -122,7 +122,7 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) GL11.glScalef(1, 1, 1); GL11.glPopMatrix(); - show = ((steam.getFluidAmount() > 0) ? Utils.capitalize(FluidRegistry.getFluidName(steam.getFluid())) : "None") + "-" + steam.getFluidAmount(); + show = ((steam.getFluidAmount() > 0) ? WordUtils.capitalize(FluidRegistry.getFluidName(steam.getFluid())) : "None") + "-" + steam.getFluidAmount(); GL11.glPushMatrix(); GL11.glTranslatef(70, 20, 0); diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java index 9cab83c4..18ee4f9c 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java @@ -1,5 +1,6 @@ package com.darkona.adventurebackpack.client.gui; +import org.apache.commons.lang3.text.WordUtils; import org.lwjgl.opengl.GL11; import net.minecraft.entity.player.EntityPlayer; @@ -12,7 +13,6 @@ import com.darkona.adventurebackpack.inventory.InventoryCopterPack; import com.darkona.adventurebackpack.reference.GeneralReference; import com.darkona.adventurebackpack.util.Resources; -import com.darkona.adventurebackpack.util.Utils; /** * Created on 03/01/2015 @@ -80,7 +80,7 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) fuelTank.draw(this, fuel); GL11.glPushMatrix(); - String name = (fuel.getFluid() != null) ? Utils.capitalize(fuel.getFluid().getFluid().getName()) : "None"; + String name = (fuel.getFluid() != null) ? WordUtils.capitalize(fuel.getFluid().getFluid().getName()) : "None"; String amount = (fuel.getFluid() != null) ? "" + fuel.getFluid().amount : "0"; String capacity = Integer.toString(fuel.getCapacity()); int offsetY = 8; diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java index 091f1e40..5bd3901b 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java @@ -82,16 +82,16 @@ protected void keyTyped(char key, int keycode) @Override public void handleMouseInput() { - int i = Mouse.getEventX() * this.width / this.mc.displayWidth; - int j = this.height - Mouse.getEventY() * this.height / this.mc.displayHeight - 1; - int marginX = (width - xSize) / 2; - int marginY = (height - ySize) / 2; - - if (i > marginX && i < marginX + xSize) + if (Mouse.getEventDWheel() != 0) { - if (j > marginY && j < marginY + ySize) + int i = Mouse.getEventX() * this.width / this.mc.displayWidth; + int j = this.height - Mouse.getEventY() * this.height / this.mc.displayHeight - 1; + int marginX = (width - xSize) / 2; + int marginY = (height - ySize) / 2; + + if (i > marginX && i < marginX + xSize) { - if (Mouse.getEventDWheel() != 0) + if (j > marginY && j < marginY + ySize) { return; // forbid mouseWheel when mouse over our GUI, // Shift+Wheel on stacks of fluid containers places them to clients bucket slots, causes desync diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelCoalJetpack.java index 92b557b7..1a9d135d 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelCoalJetpack.java @@ -14,7 +14,7 @@ public class ModelCoalJetpack extends ModelWearable { - public ModelRenderer Base; + public ModelRenderer base; public ModelRenderer tubeStraightLeft; public ModelRenderer tubeStraightRight; public ModelRenderer tubeEndLeft; @@ -60,9 +60,9 @@ public ModelCoalJetpack() this.tubeEndRight.setRotationPoint(-7.7F, 1.6F, 8.3F); this.tubeEndRight.addBox(-1.0F, 0.0F, 0.0F, 1, 4, 1, -0.1F); this.setRotateAngle(tubeEndRight, 0.0F, 0.0F, 0.2617993877991494F); - this.Base = new ModelRenderer(this, 0, 0); - this.Base.setRotationPoint(0.0F, 0.0F, 0.0F); - this.Base.addBox(-4.0F, 0.0F, 2.0F, 8, 12, 1, 0.0F); + this.base = new ModelRenderer(this, 0, 0); + this.base.setRotationPoint(0.0F, 0.0F, 0.0F); + this.base.addBox(-4.0F, 0.0F, 2.0F, 8, 12, 1, 0.0F); this.waterTube1 = new ModelRenderer(this, 10, 17); this.waterTube1.setRotationPoint(0.0F, 1.0F, 0.0F); this.waterTube1.addBox(-2.0F, 1.0F, 1.0F, 1, 1, 1, 0.0F); @@ -89,16 +89,16 @@ public ModelCoalJetpack() this.tubeStraightLeft.setRotationPoint(2.7F, 1.0F, 8.3F); this.tubeStraightLeft.addBox(0.0F, 0.0F, 0.0F, 6, 1, 1, 0.0F); - this.Base.addChild(this.tankBottom); + this.base.addChild(this.tankBottom); this.pressureTank.addChild(this.tubeBendLeft); this.waterTube1.addChild(this.waterTube2); this.tankBottom.addChild(this.waterTube1); this.pressureTank.addChild(this.tubeBendRight); - this.Base.addChild(this.pressureTank); - this.Base.addChild(this.fireBox); - this.Base.addChild(this.tankTop); + this.base.addChild(this.pressureTank); + this.base.addChild(this.fireBox); + this.base.addChild(this.tankTop); - bipedBody.addChild(Base); + bipedBody.addChild(base); bipedBody.addChild(tubeStraightLeft); bipedBody.addChild(tubeStraightRight); bipedBody.addChild(tubeEndLeft); @@ -190,7 +190,7 @@ public void renderCoalJetpack(float f5) tubeStraightRight.render(f5); tubeEndLeft.render(f5); tubeEndRight.render(f5); - Base.render(f5); + base.render(f5); tankWallLeft.render(f5); tankWallRight.render(f5); tubeStraightLeft.render(f5); diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelInflatableBoat.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelInflatableBoat.java index e8c248a8..a20c3ba5 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelInflatableBoat.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelInflatableBoat.java @@ -7,7 +7,6 @@ import net.minecraft.entity.Entity; import com.darkona.adventurebackpack.entity.EntityInflatableBoat; -import com.darkona.adventurebackpack.util.Utils; /** * InflatableBoat - Darkona @@ -126,7 +125,7 @@ public ModelInflatableBoat() @Override public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - if (Utils.notNullAndInstanceOf(entity, EntityInflatableBoat.class)) + if (entity instanceof EntityInflatableBoat) { EntityInflatableBoat theBoat = (EntityInflatableBoat) entity; diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index 8c9422e0..982d1d56 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -33,7 +33,6 @@ import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.util.CoordsUtils; import com.darkona.adventurebackpack.util.LogHelper; -import com.darkona.adventurebackpack.util.Utils; import com.darkona.adventurebackpack.util.Wearing; import static com.darkona.adventurebackpack.common.Constants.BUCKET; @@ -62,7 +61,7 @@ public class ServerActions //Using @Sir-Will dupe fixed public static void cycleTool(EntityPlayer player, int direction, int slot) { - if (!Utils.isDimensionAllowed(player.worldObj.provider.dimensionId)) + if (!ConfigHandler.isDimensionAllowed(player.worldObj.provider.dimensionId)) { return; } diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 06b72e11..2c1410ae 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -197,4 +197,17 @@ public void onConfigChangeEvent(ConfigChangedEvent.OnConfigChangedEvent event) loadConfiguration(); } } + + public static boolean isDimensionAllowed(int dimensionID) + { + String currentDimID = String.valueOf(dimensionID); + for (String forbiddenID : forbiddenDimensions) + { + if (currentDimID.equals(forbiddenID)) + { + return false; + } + } + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 080e812e..9b1d28f6 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -40,7 +40,6 @@ import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.util.EnchUtils; import com.darkona.adventurebackpack.util.LogHelper; -import com.darkona.adventurebackpack.util.Utils; import com.darkona.adventurebackpack.util.Wearing; /** @@ -68,19 +67,16 @@ public void registerBackpackProperty(EntityEvent.EntityConstructing event) @SubscribeEvent public void joinPlayer(EntityJoinWorldEvent event) { - if (!event.world.isRemote) + if (!event.world.isRemote && event.entity instanceof EntityPlayer) { - if (Utils.notNullAndInstanceOf(event.entity, EntityPlayer.class)) + EntityPlayer player = (EntityPlayer) event.entity; + LogHelper.info("Joined EntityPlayer of name: " + event.entity.getCommandSenderName()); + NBTTagCompound playerData = ServerProxy.extractPlayerProps(player.getUniqueID()); + if (playerData != null) { - EntityPlayer player = (EntityPlayer) event.entity; - LogHelper.info("Joined EntityPlayer of name: " + event.entity.getCommandSenderName()); - NBTTagCompound playerData = ServerProxy.extractPlayerProps(player.getUniqueID()); - if (playerData != null) - { - BackpackProperty.get(player).loadNBTData(playerData); - BackpackProperty.sync(player); - LogHelper.info("Stored properties retrieved"); - } + BackpackProperty.get(player).loadNBTData(playerData); + BackpackProperty.sync(player); + LogHelper.info("Stored properties retrieved"); } } } @@ -205,7 +201,7 @@ public void onFall(LivingFallEvent event) @SubscribeEvent(priority = EventPriority.LOW) public void playerDies(LivingDeathEvent event) { - if (Utils.notNullAndInstanceOf(event.entity, EntityPlayer.class)) + if (event.entity instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) event.entity; @@ -292,9 +288,10 @@ public void playerCraftsBackpack(PlayerEvent.ItemCraftedEvent event) public void interactWithCreatures(EntityInteractEvent event) { EntityPlayer player = event.entityPlayer; - if (!event.entityPlayer.worldObj.isRemote) + + if (!player.worldObj.isRemote) { - if (Utils.notNullAndInstanceOf(event.target, EntitySpider.class)) + if (event.target instanceof EntitySpider) { if (Wearing.isWearingTheRightBackpack(player, BackpackTypes.SPIDER)) { @@ -305,10 +302,11 @@ public void interactWithCreatures(EntityInteractEvent event) event.entityPlayer.mountEntity(pet); } } - if (Utils.notNullAndInstanceOf(event.target, EntityHorse.class)) + if (event.target instanceof EntityHorse) { - ItemStack stack = player.getCurrentEquippedItem(); EntityHorse horse = (EntityHorse) event.target; + ItemStack stack = player.getCurrentEquippedItem(); + if (stack != null && stack.getItem() != null && stack.getItem() instanceof ItemNameTag && stack.hasDisplayName()) { if (horse.getCustomNameTag() == null || horse.getCustomNameTag().equals("") && horse.isTame()) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 91f7de97..992881b8 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -108,7 +108,6 @@ private void makeSlots(InventoryPlayer invPlayer) } addSlotToContainer(new SlotCraftResult(this, invPlayer.player, craftMatrix, craftResult, 0, 226, 97)); // craftResult [99] syncCraftMatrixToInventory(); - this.onCraftMatrixChanged(craftMatrix); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index aa92b025..9757dcbf 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -363,7 +363,7 @@ public ItemStack[] getInventory() public void setInventory(ItemStack[] inventory) { - this.inventory = inventory; + this.inventory = inventory; //TODO wtf } public int getIncreasingFactor() diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java b/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java index 5e1ed39a..b5782cf6 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java @@ -1,5 +1,7 @@ package com.darkona.adventurebackpack.item; +import org.apache.commons.lang3.text.WordUtils; + import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; @@ -31,7 +33,6 @@ import com.darkona.adventurebackpack.init.ModFluids; import com.darkona.adventurebackpack.inventory.InventoryBackpack; import com.darkona.adventurebackpack.util.Resources; -import com.darkona.adventurebackpack.util.Utils; import com.darkona.adventurebackpack.util.Wearing; import static com.darkona.adventurebackpack.common.Constants.BUCKET; @@ -41,13 +42,12 @@ */ public class ItemHose extends ItemAB { - - IIcon drinkIcon; - IIcon spillIcon; - IIcon suckIcon; - final byte HOSE_SUCK_MODE = 0; - final byte HOSE_SPILL_MODE = 1; - final byte HOSE_DRINK_MODE = 2; + private IIcon drinkIcon; + private IIcon spillIcon; + private IIcon suckIcon; + private static final byte HOSE_SUCK_MODE = 0; + private static final byte HOSE_SPILL_MODE = 1; + private static final byte HOSE_DRINK_MODE = 2; public ItemHose() { @@ -171,7 +171,7 @@ public void onUpdate(ItemStack stack, World world, Entity entity, int inv_slot, FluidTank tank = nbt.getInteger("tank") == 0 ? inv.getLeftTank() : inv.getRightTank(); if (tank != null && tank.getFluid() != null) { - nbt.setString("fluid", Utils.capitalize(tank.getFluid().getFluid().getName())); + nbt.setString("fluid", WordUtils.capitalize(tank.getFluid().getFluid().getName())); nbt.setInteger("amount", tank.getFluidAmount()); } else diff --git a/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java b/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java index 7a78f9b9..2fc72974 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java @@ -11,9 +11,9 @@ import com.darkona.adventurebackpack.AdventureBackpack; import com.darkona.adventurebackpack.block.TileAdventureBackpack; +import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.handlers.GuiHandler; import com.darkona.adventurebackpack.inventory.ContainerBackpack; -import com.darkona.adventurebackpack.util.Utils; import com.darkona.adventurebackpack.util.Wearing; /** @@ -83,7 +83,7 @@ public IMessage onMessage(GUImessage message, MessageContext ctx) } if (message.type == BACKPACK_GUI) { - if (!Utils.isDimensionAllowed(player.worldObj.provider.dimensionId)) + if (!ConfigHandler.isDimensionAllowed(player.worldObj.provider.dimensionId)) { return null; } diff --git a/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java b/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java index 0033d409..3a9698a1 100644 --- a/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java +++ b/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java @@ -12,7 +12,6 @@ import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.item.IBackWearableItem; import com.darkona.adventurebackpack.network.SyncPropertiesPacket; -import com.darkona.adventurebackpack.util.Utils; /** * Created on 24/10/2014 @@ -200,7 +199,7 @@ public void setForceCampFire(boolean forceCampFire) //Scary names for methods because why not public void executeWearableUpdateProtocol() { - if (Utils.notNullAndInstanceOf(wearable.getItem(), IBackWearableItem.class)) + if (wearable.getItem() instanceof IBackWearableItem) { ((IBackWearableItem) wearable.getItem()).onEquippedUpdate(player.getEntityWorld(), player, wearable); } @@ -208,7 +207,7 @@ public void executeWearableUpdateProtocol() public void executeWearableDeathProtocol() { - if (Utils.notNullAndInstanceOf(wearable.getItem(), IBackWearableItem.class)) + if (wearable.getItem() instanceof IBackWearableItem) { ((IBackWearableItem) wearable.getItem()).onPlayerDeath(player.getEntityWorld(), player, wearable); } @@ -216,7 +215,7 @@ public void executeWearableDeathProtocol() public void executeWearableEquipProtocol() { - if (Utils.notNullAndInstanceOf(wearable.getItem(), IBackWearableItem.class)) + if (wearable.getItem() instanceof IBackWearableItem) { ((IBackWearableItem) wearable.getItem()).onEquipped(player.getEntityWorld(), player, wearable); } @@ -224,7 +223,7 @@ public void executeWearableEquipProtocol() public void executeWearableUnequipProtocol() { - if (Utils.notNullAndInstanceOf(wearable.getItem(), IBackWearableItem.class)) + if (wearable.getItem() instanceof IBackWearableItem) { ((IBackWearableItem) wearable.getItem()).onUnequipped(player.getEntityWorld(), player, wearable); } diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java index bebcc25a..ae9b3307 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java @@ -35,7 +35,6 @@ import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; -import com.darkona.adventurebackpack.util.Utils; /** * Created on 10/10/2014 @@ -74,7 +73,7 @@ public void synchronizePlayer(int id, NBTTagCompound properties) { Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(id); - if (Utils.notNullAndInstanceOf(entity, EntityPlayer.class) && properties != null) + if (entity instanceof EntityPlayer && properties != null) { EntityPlayer player = (EntityPlayer) entity; diff --git a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java index 5bc75039..dde495ff 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java @@ -53,6 +53,8 @@ public static void unequipWearable(EntityPlayer player) timer.schedule(unequipTask, 200); } + + //TODO as we unificate NTB structure for all wearables, have to remake this to getWearableTag public static NBTTagCompound getBackpackTag(ItemStack backpack) { if (backpack.hasTagCompound() && backpack.stackTagCompound.hasKey(Constants.WEARABLE_TAG)) diff --git a/src/main/java/com/darkona/adventurebackpack/util/LogHelper.java b/src/main/java/com/darkona/adventurebackpack/util/LogHelper.java index 21a17ccc..a8590dfc 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/LogHelper.java +++ b/src/main/java/com/darkona/adventurebackpack/util/LogHelper.java @@ -2,7 +2,6 @@ import org.apache.logging.log4j.Level; -import net.minecraft.util.ChunkCoordinates; import cpw.mods.fml.common.FMLLog; import com.darkona.adventurebackpack.reference.ModInfo; @@ -17,21 +16,6 @@ public static void log(Level logLevel, Object object) FMLLog.log(ModInfo.MOD_NAME, logLevel, String.valueOf(object)); } - public static String print3DCoords(int x, int y, int z) - { - return "Coords: X= " + x + ", Y= " + y + ", Z=" + z; - } - - public static String print3DCoords(ChunkCoordinates coords) - { - return print3DCoords(coords.posX, coords.posY, coords.posZ); - } - - public static void all(Object object) - { - log(Level.ALL, object); - } - public static void debug(Object object) { log(Level.DEBUG, object); @@ -42,28 +26,13 @@ public static void error(Object object) log(Level.ERROR, object); } - public static void fatal(Object object) + public static void warn(Object object) { - log(Level.FATAL, object); + log(Level.WARN, object); } public static void info(Object object) { log(Level.INFO, object); } - - public static void off(Object object) - { - log(Level.OFF, object); - } - - public static void trace(Object object) - { - log(Level.TRACE, object); - } - - public static void warn(Object object) - { - log(Level.WARN, object); - } } diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index 5a4fb781..18ecb27e 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -11,7 +11,6 @@ import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; -import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.reference.BackpackTypes; /** @@ -31,6 +30,11 @@ public static float radiansToDegrees(float radians) return radians * 57.2957795f; } + public static int secondsToTicks(int seconds) + { + return seconds * 20; + } + public static int isBlockRegisteredAsFluid(Block block) { int fluidID = -1; @@ -45,17 +49,6 @@ public static int isBlockRegisteredAsFluid(Block block) return fluidID; } - public static String capitalize(String s) - { - // Character.toUpperCase(itemName.charAt(0)) + itemName.substring(1); - return s.substring(0, 1).toUpperCase().concat(s.substring(1)); - } - - public static int getOppositeCardinalFromMeta(int meta) - { - return (meta % 2 == 0) ? (meta == 0) ? 2 : 0 : ((meta + 1) % 4) + 1; - } - //This is some black magic that returns a block or entity as far as the argument reach goes. public static MovingObjectPosition getMovingObjectPositionFromPlayersHat(World world, EntityPlayer player, boolean flag, double reach) { @@ -77,77 +70,25 @@ public static MovingObjectPosition getMovingObjectPositionFromPlayersHat(World w return world.func_147447_a/*rayTraceBlocks_do_do*/(vecPlayer, vecPoint, flag, !flag, flag); } - public static String printCoordinates(int cX, int cY, int cZ) - { - return "X= " + cX + ", Y= " + cY + ", Z= " + cZ; - } - - public static int secondsToTicks(int seconds) - { - return seconds * 20; - } - - public static int secondsToTicks(float seconds) - { - return (int) seconds * 20; - } - public static boolean inServer() { - Side side = FMLCommonHandler.instance().getEffectiveSide(); - return side == Side.SERVER; + return FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER; } - /** - * Seriously why doesn't Java's instanceof check for null? - * - * @return true if the object is not null and is an instance of the supplied class. - */ - public static boolean notNullAndInstanceOf(Object object, Class clazz) //TODO double check this - { - return object != null && clazz.isInstance(object); - } - - public static String getFirstWord(String text) - { - if (text.indexOf(' ') > -1) - { // Check if there is more than one word. - String firstWord = text.substring(0, text.indexOf(' ')); - String secondWord = text.substring(text.indexOf(' ') + 1); - return firstWord.equals("Molten") ? secondWord : firstWord; // Extract first word. - } - else - { - return text; // Text is the first word itself. - } - } + private static final EnumChatFormatting[] RAINBOW_SEQUENCE = {EnumChatFormatting.RED, EnumChatFormatting.GOLD, + EnumChatFormatting.YELLOW, EnumChatFormatting.GREEN, EnumChatFormatting.AQUA, EnumChatFormatting.BLUE, + EnumChatFormatting.DARK_PURPLE}; public static String makeItRainbow(String theString) { - EnumChatFormatting[] rainbowSequence = {EnumChatFormatting.RED, EnumChatFormatting.GOLD, EnumChatFormatting.YELLOW, - EnumChatFormatting.GREEN, EnumChatFormatting.AQUA, EnumChatFormatting.BLUE, EnumChatFormatting.DARK_PURPLE}; - StringBuilder rainbowed = new StringBuilder(); for (int i = 0; i < theString.length(); i++) { - rainbowed.append(rainbowSequence[i % 7]).append(theString.charAt(i)); + rainbowed.append(RAINBOW_SEQUENCE[i % RAINBOW_SEQUENCE.length]).append(theString.charAt(i)); } return rainbowed.toString(); } - public static boolean isDimensionAllowed(int dimensionID) - { - String currentDimID = String.valueOf(dimensionID); - for (String forbiddenID : ConfigHandler.forbiddenDimensions) - { - if (currentDimID.equals(forbiddenID)) - { - return false; - } - } - return true; - } - public static int[] createSlotArray(int first, int count) { int[] slots = new int[count]; From 723c70dd5f4e79cfe1cc32f00513403936b32981 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 6 Feb 2018 06:24:15 +0700 Subject: [PATCH 428/462] Added support for Thaumcraft wands render --- .../adventurebackpack/AdventureBackpack.java | 1 + .../block/BlockAdventureBackpack.java | 4 +- .../block/TileAdventureBackpack.java | 3 +- .../client/gui/GuiCopterPack.java | 22 +- .../client/gui/GuiOverlay.java | 18 ++ .../client/render/RendererStack.java | 67 ++++-- .../common/ServerActions.java | 3 +- .../config/ConfigHandler.java | 13 +- .../handlers/TooltipEventHandler.java | 8 +- .../inventory/ContainerBackpack.java | 4 +- .../inventory/SlotFluidFuel.java | 2 +- .../adventurebackpack/inventory/SlotFuel.java | 2 +- .../adventurebackpack/inventory/SlotTool.java | 200 ++++++++---------- .../item/ItemCopterPack.java | 7 +- .../adventurebackpack/network/GUIPacket.java | 4 +- .../reference/GeneralReference.java | 64 ++++-- .../reference/WailaTileAdventureBackpack.java | 2 +- .../adventurebackpack/util/GregtechUtils.java | 11 +- .../util/ThaumcraftUtils.java | 70 ++++++ .../adventurebackpack/util/TinkersUtils.java | 10 +- 20 files changed, 322 insertions(+), 193 deletions(-) create mode 100644 src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java diff --git a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java index 8696f0cf..26f753a6 100644 --- a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java @@ -98,6 +98,7 @@ public void postInit(FMLPostInitializationEvent event) ConfigHandler.IS_ENDERIO = registerMod("EnderIO"); ConfigHandler.IS_GREGTECH = registerMod("gregtech"); ConfigHandler.IS_TCONSTRUCT = registerMod("TConstruct"); + ConfigHandler.IS_THAUMCRAFT = registerMod("Thaumcraft"); GeneralReference.init(); diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java index 9163e7f0..0ff1079c 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java @@ -31,10 +31,10 @@ import com.darkona.adventurebackpack.AdventureBackpack; import com.darkona.adventurebackpack.client.Icons; -import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.handlers.GuiHandler; import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.reference.BackpackTypes; +import com.darkona.adventurebackpack.reference.GeneralReference; import com.darkona.adventurebackpack.reference.ModInfo; import com.darkona.adventurebackpack.util.CoordsUtils; @@ -234,7 +234,7 @@ public boolean canConnectRedstone(IBlockAccess world, int x, int y, int z, int s @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if (!world.isRemote && ConfigHandler.isDimensionAllowed(player.worldObj.provider.dimensionId)) + if (!world.isRemote && GeneralReference.isDimensionAllowed(player.worldObj.provider.dimensionId)) { FMLNetworkHandler.openGui(player, AdventureBackpack.instance, GuiHandler.BACKPACK_TILE, world, x, y, z); return true; diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 995d8270..d5b7e11e 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -28,6 +28,7 @@ import com.darkona.adventurebackpack.inventory.SlotTool; import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.reference.BackpackTypes; +import com.darkona.adventurebackpack.reference.GeneralReference; import com.darkona.adventurebackpack.util.BackpackUtils; import com.darkona.adventurebackpack.util.CoordsUtils; import com.darkona.adventurebackpack.util.Utils; @@ -622,7 +623,7 @@ public void dirtyInventory() @Override public int[] getAccessibleSlotsFromSide(int side) { - if (ConfigHandler.isDimensionAllowed(this.worldObj.provider.dimensionId)) + if (GeneralReference.isDimensionAllowed(this.worldObj.provider.dimensionId)) { return SLOTS; } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java index 18ee4f9c..2b7a6145 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCopterPack.java @@ -76,27 +76,25 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) GL11.glDisable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_BLEND); inventory.openInventory(); - FluidTank fuel = inventory.getFuelTank(); - fuelTank.draw(this, fuel); + FluidTank tank = inventory.getFuelTank(); + fuelTank.draw(this, tank); GL11.glPushMatrix(); - String name = (fuel.getFluid() != null) ? WordUtils.capitalize(fuel.getFluid().getFluid().getName()) : "None"; - String amount = (fuel.getFluid() != null) ? "" + fuel.getFluid().amount : "0"; - String capacity = Integer.toString(fuel.getCapacity()); + boolean isFilled = tank.getFluid() != null; + String name = isFilled ? WordUtils.capitalize(tank.getFluid().getFluid().getName()) : "None"; + String amount = isFilled ? "" + tank.getFluid().amount : "0"; + String capacity = Integer.toString(tank.getCapacity()); int offsetY = 8; int offsetX = 83; fontRendererObj.drawString(name, 1 + offsetX, offsetY, 0x373737, false); fontRendererObj.drawString(amount, 1 + offsetX, 10 + offsetY, 0x373737, false); fontRendererObj.drawString(capacity, 1 + offsetX, 20 + offsetY, 0x373737, false); - if (fuel.getFluid() != null) + if (isFilled) { - Float f = GeneralReference.liquidFuels.get(name.toLowerCase()); - String conLev = (f != null) ? f.toString() : "0"; - if (conLev != null && !conLev.isEmpty()) - { - fontRendererObj.drawString("Consumption: " + conLev, 1 + offsetX, 40 + offsetY, 0x373737, false); - } + Float rate = GeneralReference.getFuelRate(name.toLowerCase()); + String conLev = (rate != null) ? rate.toString() : "0"; + fontRendererObj.drawString("Consumption: " + conLev, 1 + offsetX, 40 + offsetY, 0x373737, false); } GL11.glPopMatrix(); } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java index 1bdc7611..ba045637 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java @@ -34,6 +34,7 @@ import com.darkona.adventurebackpack.reference.ModInfo; import com.darkona.adventurebackpack.util.GregtechUtils; import com.darkona.adventurebackpack.util.LogHelper; +import com.darkona.adventurebackpack.util.ThaumcraftUtils; import com.darkona.adventurebackpack.util.TinkersUtils; import com.darkona.adventurebackpack.util.Wearing; @@ -235,6 +236,7 @@ private void drawItemStack(ItemStack stack, int x, int y) boolean isGregtechTool = GregtechUtils.isTool(stack); boolean isTinkersTool = TinkersUtils.isTool(stack); + boolean isThaumcraftTool = ThaumcraftUtils.isTool(stack); if (isGregtechTool) { @@ -248,6 +250,22 @@ else if (isTinkersTool) GL11.glTranslatef(x, y, 32.0F); TinkersUtils.renderTool(stack, IItemRenderer.ItemRenderType.INVENTORY); } + else if (isThaumcraftTool) + { + // Forge PreRender: net.minecraftforge.client.ForgeHooksClient.renderInventoryItem + GL11.glPushMatrix(); + GL11.glTranslatef(x - 2, y + 3, -3.0F + zLevel); + GL11.glScalef(10F, 10F, 10F); + GL11.glTranslatef(1.0F, 0.5F, 1.0F); + GL11.glScalef(1.0F, 1.0F, -1F); + GL11.glRotatef(210F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(-135F, 0.0F, 1.0F, 0.0F); + + // Thaumcraft Render + ThaumcraftUtils.renderTool(stack, IItemRenderer.ItemRenderType.INVENTORY); + + GL11.glPopMatrix(); + } else { GL11.glTranslatef(0F, 0F, 32.0F); diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java index 40729f01..d9ae58c1 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java @@ -12,6 +12,7 @@ import cpw.mods.fml.relauncher.SideOnly; import com.darkona.adventurebackpack.util.GregtechUtils; +import com.darkona.adventurebackpack.util.ThaumcraftUtils; import com.darkona.adventurebackpack.util.TinkersUtils; public class RendererStack extends ModelRenderer @@ -28,6 +29,15 @@ public RendererStack(ModelBase modelBase, boolean isLowerSlot) addChild(new Thing(modelBase)); } + public enum ToolHandler + { + VANILLA, + GREGTECH, + TINKERS_CONSTRUCT, + THAUMCRAFT, + ; + } + private class Thing extends ModelRenderer { public Thing(ModelBase modelBase) @@ -42,9 +52,7 @@ public void render(float par1) if (stack == null) return; - - boolean isGregtechTool = GregtechUtils.isTool(stack); - boolean isTinkersTool = TinkersUtils.isTool(stack); + ToolHandler toolHandler = getToolHandler(stack); GL11.glPushMatrix(); GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); @@ -53,43 +61,66 @@ public void render(float par1) GL11.glScalef(0.6F, 0.6F, 0.6F); GL11.glPushMatrix(); GL11.glRotatef(-90F, 0, 1, 0); - - if (isGregtechTool || isTinkersTool) - GL11.glRotatef(getToolRotationAngle(stack, true, isGregtechTool), 0, 0, 1); - else - GL11.glRotatef(-225F, 0, 0, 1); + GL11.glRotatef(getToolRotationAngle(stack, true, toolHandler), 0, 0, 1); } else { GL11.glScalef(0.7F, 0.7F, 0.7F); GL11.glPushMatrix(); - if (isGregtechTool || isTinkersTool) - GL11.glRotatef(getToolRotationAngle(stack, false, isGregtechTool), 0, 0, 1); - else - GL11.glRotatef(45F, 0, 0, 1); + GL11.glRotatef(getToolRotationAngle(stack, false, toolHandler), 0, 0, 1); } - if (isGregtechTool) + if (toolHandler == ToolHandler.GREGTECH) + { GregtechUtils.renderTool(stack, IItemRenderer.ItemRenderType.ENTITY); - else if (isTinkersTool) + } + else if (toolHandler == ToolHandler.TINKERS_CONSTRUCT) { TextureManager tm = MC.getTextureManager(); tm.bindTexture(tm.getResourceLocation(stack.getItemSpriteNumber())); + GL11.glTranslatef(-0.06F, -0.1F, 0F); TinkersUtils.renderTool(stack, IItemRenderer.ItemRenderType.ENTITY); } + else if (toolHandler == ToolHandler.THAUMCRAFT) + { + GL11.glTranslatef(0F, -0.375F, 0F); + ThaumcraftUtils.renderTool(stack, IItemRenderer.ItemRenderType.ENTITY); + } else + { CopygirlRenderUtils.renderItemIn3d(stack); + } GL11.glPopAttrib(); GL11.glPopMatrix(); GL11.glPopMatrix(); } - private float getToolRotationAngle(ItemStack stack, boolean isLowerSlot, boolean isGregtech) + private float getToolRotationAngle(ItemStack stack, boolean isLowerSlot, ToolHandler toolHandler) + { + switch (toolHandler) + { + case GREGTECH: + return GregtechUtils.getToolRotationAngle(stack, isLowerSlot); + case TINKERS_CONSTRUCT: + return TinkersUtils.getToolRotationAngle(stack, isLowerSlot); + case THAUMCRAFT: + return ThaumcraftUtils.getToolRotationAngle(stack, isLowerSlot); + case VANILLA: + default: + return isLowerSlot ? -225F : 45F; + } + } + + private ToolHandler getToolHandler(ItemStack stack) { - return isGregtech - ? GregtechUtils.getToolRotationAngle(stack, isLowerSlot) - : TinkersUtils.getToolRotationAngle(stack, isLowerSlot); + if (GregtechUtils.isTool(stack)) + return ToolHandler.GREGTECH; + if (TinkersUtils.isTool(stack)) + return ToolHandler.TINKERS_CONSTRUCT; + if (ThaumcraftUtils.isTool(stack)) + return ToolHandler.THAUMCRAFT; + return ToolHandler.VANILLA; } } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index 982d1d56..367b2a0c 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -31,6 +31,7 @@ import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.reference.BackpackTypes; +import com.darkona.adventurebackpack.reference.GeneralReference; import com.darkona.adventurebackpack.util.CoordsUtils; import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Wearing; @@ -61,7 +62,7 @@ public class ServerActions //Using @Sir-Will dupe fixed public static void cycleTool(EntityPlayer player, int direction, int slot) { - if (!ConfigHandler.isDimensionAllowed(player.worldObj.provider.dimensionId)) + if (!GeneralReference.isDimensionAllowed(player.worldObj.provider.dimensionId)) { return; } diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 2c1410ae..1e62d128 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -22,6 +22,7 @@ public class ConfigHandler public static boolean IS_ENDERIO = false; public static boolean IS_GREGTECH = false; public static boolean IS_TCONSTRUCT = false; + public static boolean IS_THAUMCRAFT = false; public static boolean allowSoulBound = true; public static boolean allowPortableSleepingBag = true; @@ -198,16 +199,4 @@ public void onConfigChangeEvent(ConfigChangedEvent.OnConfigChangedEvent event) } } - public static boolean isDimensionAllowed(int dimensionID) - { - String currentDimID = String.valueOf(dimensionID); - for (String forbiddenID : forbiddenDimensions) - { - if (currentDimID.equals(forbiddenID)) - { - return false; - } - } - return true; - } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java index ad957353..d4cc307e 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java @@ -376,11 +376,9 @@ private static String stackSizeFormat(ItemStack stack, int count) private static String fuelConsumptionTooltip(FluidTank tank) { - if (tank.getFluidAmount() > 0 && GeneralReference.isValidFuel(tank.getFluid().getFluid())) - { - return String.format("x%.2f", GeneralReference.liquidFuels.get(tank.getFluid().getFluid().getName())); - } - return EnumChatFormatting.DARK_GRAY + "-"; + return (tank.getFluid() != null) + ? String.format("x%.2f", GeneralReference.getFuelRate(tank.getFluid().getFluid().getName())) + : EnumChatFormatting.DARK_GRAY + "-" ; } private static String emptyFormat() diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 992881b8..538bf74c 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -95,8 +95,8 @@ private void makeSlots(InventoryPlayer invPlayer) addSlotToContainer(new SlotFluid(inventory, BUCKET_OUT_RIGHT, 226, 37)); // #54 [89] startX = 215; - //startY = -12500; - startY = ConfigHandler.IS_DEVENV ? 125 : -12500; + //startY = -2500; + startY = ConfigHandler.IS_DEVENV ? 125 : -2500; for (int row = 0; row < MATRIX_DIMENSION; row++) // craftMatrix, usually 9 slots, [90-98] { for (int col = 0; col < MATRIX_DIMENSION; col++) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidFuel.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidFuel.java index 9d78ff5a..0954bee0 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidFuel.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidFuel.java @@ -21,7 +21,7 @@ public class SlotFluidFuel extends SlotFluid private static boolean isValidContainer(ItemStack stack) { - return isEmpty(stack) || (isFilled(stack) && GeneralReference.isValidFuel(getFluid(stack))); + return isEmpty(stack) || (isFilled(stack) && GeneralReference.isValidFuel(getFluid(stack).getName())); } static boolean isValidItem(ItemStack stack) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java index 2f975dff..5afb2a6c 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java @@ -18,7 +18,7 @@ public class SlotFuel extends SlotAdventureBackpack static boolean isValidItem(ItemStack stack) { - return TileEntityFurnace.isItemFuel(stack) && !SlotFluid.isContainer(stack); //fuel slot accept only solid fuel + return TileEntityFurnace.isItemFuel(stack) && !SlotFluid.isContainer(stack); // fuel slot accepts only solid fuel } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java index be1b96bd..9f38745d 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java @@ -12,6 +12,8 @@ import com.darkona.adventurebackpack.item.ItemAdventureBackpack; import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.util.GregtechUtils; +import com.darkona.adventurebackpack.util.ThaumcraftUtils; +import com.darkona.adventurebackpack.util.TinkersUtils; /** * Created on 12/10/2014 @@ -20,6 +22,14 @@ */ public class SlotTool extends SlotAdventureBackpack { + private static final String[] VALID_TOOL_NAMES = {"axe", "crowbar", "drill", "grafter", "hammer", "scoop", "shovel", + "wrench",}; + + private static final String[] INVALID_TOOL_NAMES = {"bow", "bucket", "shield", "sword",}; + + private static final String[] INVALID_TINKER_NAMES = {"battleaxe", "bow", "cleaver", "cutlass", "dagger", "rapier", + "sabre", "shield", "sign", "sword",}; + SlotTool(IInventory inventory, int slotIndex, int posX, int posY) { super(inventory, slotIndex, posX, posY); @@ -31,122 +41,88 @@ public boolean isItemValid(ItemStack stack) return isValidTool(stack); } - private static final String[] VALID_TOOL_NAMES = {"axe", "crowbar", "drill", "grafter", "hammer", "mattock", - "scoop", "shovel", "wrench",}; - - private static final String[] INVALID_TOOL_NAMES = {"bow", "bucket", "cutlass", "dagger", "disassembler", "rapier", - "robit", "sabre", "shield", "sword", "whip",}; - public static boolean isValidTool(ItemStack stack) { - if (stack != null && stack.getMaxStackSize() == 1) + if (stack == null || stack.getMaxStackSize() != 1) + return false; + + Item item = stack.getItem(); + String itemName = item.getUnlocalizedName().toLowerCase(); + String objectName = Item.itemRegistry.getNameForObject(item); + String clazzName = item.getClass().getName(); + + // Vanilla + if (item instanceof ItemTool || item instanceof ItemHoe || item instanceof ItemShears + || item instanceof ItemFishingRod || item instanceof ItemFlintAndSteel) { - Item item = stack.getItem(); - String name = item.getUnlocalizedName().toLowerCase(); - String nameObj = Item.itemRegistry.getNameForObject(item); - String clazz = item.getClass().getName(); - - // Vanilla - if (item instanceof ItemTool || item instanceof ItemHoe || item instanceof ItemShears - || item instanceof ItemFishingRod || item instanceof ItemFlintAndSteel) - { - return true; - } - - //Adventure Backpack duh! - if (item instanceof ItemHose || item instanceof ItemAdventureBackpack) - { - return false; - } - - //GregTech - if (GregtechUtils.isTool(stack)) - { - //0 = sword, 170 = turbines - return !(stack.getItemDamage() == 0 || stack.getItemDamage() > 169); - } - //Charged baterries and such - if (name.startsWith("gt.metaitem")) return false; - - //Ender IO - //Yeta Wrench uses shift+Scroll for switch own modes - if (nameObj.equals("EnderIO:itemYetaWrench")) return false; - - //Extra Utilities - if (clazz.equals("com.rwtema.extrautils.item.ItemBuildersWand")) return true; - - // Better builders Wands - if (nameObj.startsWith("betterbuilderswands:wand")) return true; - - // Just for extra compatibility and/or security and/or less annoyance - for (String toolName : VALID_TOOL_NAMES) - { - if (name.contains(toolName)) return true; - } - - for (String toolName : INVALID_TOOL_NAMES) - { - if (name.contains(toolName)) return false; - } - - //And also this because I'm a badass - try - { - // Tinker's Construct - if (clazz.contains("tconstruct.items.tools")) return true; - } - catch (Exception oops) - { - // oops.printStackTrace(); - } - try - { - // Mekanism - if (clazz.contains("mekanism.common.item")) return true; - } - catch (Exception oops) - { - // oops.printStackTrace(); - } - try - { - //Buildcraft - if (java.lang.Class.forName("buildcraft.api.tools.IToolWrench").isInstance(item)) return true; - } - catch (Exception oops) - { - // oops.printStackTrace(); - } - try - { - //IndustrialCraft - if (java.lang.Class.forName("ic2.api.item.IElectricItem").isInstance(item)) return true; - } - catch (Exception oops) - { - // oops.printStackTrace(); - } - try - { - //Thaumcraft - if (java.lang.Class.forName("thaumcraft.common.items.wands.ItemWandCasting").isInstance(item)) - return true; - } - catch (Exception oops) - { - // oops.printStackTrace(); - } - try - { - //Thermal Expansion - if (java.lang.Class.forName("cofh.core.item.tool").isInstance(item)) return true; - if (java.lang.Class.forName("thermalexpansion.item.tool").isInstance(item)) return true; - } - catch (Exception oops) - { - // oops.printStackTrace(); - } + return true; } + + // Adventure Backpack duh! + if (item instanceof ItemHose || item instanceof ItemAdventureBackpack) + return false; + + // GregTech + if (GregtechUtils.isTool(itemName)) + return !(stack.getItemDamage() == 0 || stack.getItemDamage() > 169); // 0 = sword, 170 = turbines + if (itemName.startsWith("gt.metaitem")) return false; // charged baterries and such + + // Tinkers Construct + if (TinkersUtils.isTool(clazzName)) + { + for (String toolName : INVALID_TINKER_NAMES) + if (itemName.contains(toolName)) return false; + return true; + } + + // Thaumcraft + if (ThaumcraftUtils.isTool(stack)) return true; + + // Ender IO + // Yeta Wrench uses Shift+Scroll for switch own modes + if (objectName.equals("EnderIO:itemYetaWrench")) return false; + + // Extra Utilities + if (clazzName.equals("com.rwtema.extrautils.item.ItemBuildersWand")) return true; + + // Better builders Wands + if (objectName.startsWith("betterbuilderswands:wand")) return true; + + // Just for extra compatibility and/or security and/or less annoyance + for (String toolName : INVALID_TOOL_NAMES) + if (itemName.contains(toolName)) return false; + + for (String toolName : VALID_TOOL_NAMES) + if (itemName.contains(toolName)) return true; + + // Mekanism + if (clazzName.startsWith("mekanism.common.item")) + return !itemName.contains("disassembler") && !itemName.contains("robit"); + + // And also this because I'm a badass + try + { + // Buildcraft + if (java.lang.Class.forName("buildcraft.api.tools.IToolWrench").isInstance(item)) return true; + } + catch (ClassNotFoundException e) + { /* */ } + try + { + // IndustrialCraft + if (java.lang.Class.forName("ic2.api.item.IElectricItem").isInstance(item)) return true; + } + catch (ClassNotFoundException e) + { /* */ } + try + { + // Thermal Expansion + if (java.lang.Class.forName("cofh.core.item.tool").isInstance(item)) return true; + if (java.lang.Class.forName("thermalexpansion.item.tool").isInstance(item)) return true; + } + catch (ClassNotFoundException e) + { /* */ } + return false; } } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java index 6e5998fd..22434dab 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java @@ -17,6 +17,7 @@ import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; +import net.minecraftforge.fluids.FluidTank; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -201,9 +202,10 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) fuelConsumption *= 2; } int ticks = inv.tickCounter - 1; - if (inv.getFuelTank().getFluid() != null && GeneralReference.isValidFuel(inv.getFuelTank().getFluid().getFluid())) + FluidTank tank = inv.getFuelTank(); + if (tank.getFluid() != null && GeneralReference.isValidFuel(tank.getFluid().getFluid().getName())) { - fuelConsumption = fuelConsumption * GeneralReference.liquidFuels.get(inv.getFuelTank().getFluid().getFluid().getName()); + fuelConsumption = fuelConsumption * GeneralReference.getFuelRate(tank.getFluid().getFluid().getName()); } if (ticks <= 0) { @@ -216,7 +218,6 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) inv.tickCounter = ticks; } } - //if(!world.isRemote)inv.closeInventory(); inv.closeInventory(); } diff --git a/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java b/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java index 2fc72974..29449276 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java @@ -11,9 +11,9 @@ import com.darkona.adventurebackpack.AdventureBackpack; import com.darkona.adventurebackpack.block.TileAdventureBackpack; -import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.handlers.GuiHandler; import com.darkona.adventurebackpack.inventory.ContainerBackpack; +import com.darkona.adventurebackpack.reference.GeneralReference; import com.darkona.adventurebackpack.util.Wearing; /** @@ -83,7 +83,7 @@ public IMessage onMessage(GUImessage message, MessageContext ctx) } if (message.type == BACKPACK_GUI) { - if (!ConfigHandler.isDimensionAllowed(player.worldObj.provider.dimensionId)) + if (!GeneralReference.isDimensionAllowed(player.worldObj.provider.dimensionId)) { return null; } diff --git a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java index 7d6143db..e88e85eb 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java @@ -1,8 +1,11 @@ package com.darkona.adventurebackpack.reference; +import javax.annotation.Nullable; import java.util.HashMap; +import java.util.HashSet; +import java.util.Set; -import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.common.DimensionManager; import net.minecraftforge.fluids.FluidRegistry; import com.darkona.adventurebackpack.config.ConfigHandler; @@ -15,20 +18,49 @@ */ public class GeneralReference { - public static HashMap liquidFuels = new HashMap<>(); + private static HashMap liquidFuels = new HashMap<>(); + private static Set dimensionBlacklist = new HashSet<>(); private static final float MAX_RATE = 20.0f; private static final float MIN_RATE = 0.05f; public static void init() { - parseFuelConfig(); + parseLiquidFuelsConfig(); + parseDimensionBlacklistConfig(); if (ConfigHandler.IS_DEVENV) liquidFuels.put("holywater", 0.0f); // shhh.. you did not see anything. hallelujah! } - private static void parseFuelConfig() + private static void parseDimensionBlacklistConfig() + { + for (String dim : ConfigHandler.forbiddenDimensions) + { + int dimID; + try + { + dimID = Integer.parseInt(dim); + } + catch (NumberFormatException nfe) + { + LogHelper.error("Cannot parse Forbidden Dimension ID for " + dim + ". Ignored"); + continue; + } + + if (DimensionManager.isDimensionRegistered(dimID)) + { + dimensionBlacklist.add(dimID); + LogHelper.info("Dimension " + dimID + " is registered as Forbidden for Adventure Backpack"); + } + else + { + LogHelper.info("Not found dimension " + dimID + ". Skipped"); + } + } + } + + private static void parseLiquidFuelsConfig() { int wrongCount = 0; int unregCount = 0; @@ -78,16 +110,20 @@ private static void parseFuelConfig() } } - public static boolean isValidFuel(Fluid fluid) + public static boolean isDimensionAllowed(int dimID) { - if (fluid != null) - { - for (String fuel : liquidFuels.keySet()) - { - if (fuel.equals(fluid.getName())) - return true; - } - } - return false; + return !dimensionBlacklist.contains(dimID); } + + public static boolean isValidFuel(String fluidName) + { + return liquidFuels.containsKey(fluidName); + } + + @Nullable + public static Float getFuelRate(String fluidName) + { + return liquidFuels.get(fluidName); + } + } diff --git a/src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java index c9798884..4d71be14 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java @@ -35,7 +35,7 @@ public static void init() FMLInterModComms.sendMessage("Waila", "register", "com.darkona.adventurebackpack.reference.WailaTileAdventureBackpack.callbackRegister"); } - //TODO change icon + //TODO fix the icon. for some reason WAILA shows "standard" icon for all of backpacks. in the same time NEI tooltips shows right icon public static void callbackRegister(IWailaRegistrar registrar) { diff --git a/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java b/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java index 263f965c..68b74975 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java @@ -19,7 +19,7 @@ public class GregtechUtils private static final String TOOLS_NAME = "gt.metatool.01"; private static final int[] ROTATED_TOOLS = {10, 14, 18, 22, 34, 150, 160}; - private static Object toolRenderer; + private static Object toolRendererInstance; private GregtechUtils(){} @@ -29,7 +29,7 @@ private GregtechUtils(){} { try { - toolRenderer = Class.forName(CLASS_RENDERER).newInstance(); + toolRendererInstance = Class.forName(CLASS_RENDERER).newInstance(); } catch (Exception e) { @@ -43,6 +43,11 @@ public static boolean isTool(ItemStack stack) return ConfigHandler.IS_GREGTECH && stack.getItem().getUnlocalizedName().equals(TOOLS_NAME); } + public static boolean isTool(String itemName) + { + return ConfigHandler.IS_GREGTECH && itemName.equals(TOOLS_NAME); + } + public static float getToolRotationAngle(ItemStack stack, boolean isLowerSlot) { int meta = stack.getItemDamage(); @@ -60,7 +65,7 @@ public static void renderTool(ItemStack stack, IItemRenderer.ItemRenderType rend { Class.forName(CLASS_RENDERER) .getMethod(METHOD_RENDERER, IItemRenderer.ItemRenderType.class, ItemStack.class, Object[].class) - .invoke(toolRenderer, renderType, stack, EMPTY_OBJECT); + .invoke(toolRendererInstance, renderType, stack, EMPTY_OBJECT); } catch (Exception e) { diff --git a/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java b/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java new file mode 100644 index 00000000..a1338a80 --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java @@ -0,0 +1,70 @@ +package com.darkona.adventurebackpack.util; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; + +import com.darkona.adventurebackpack.config.ConfigHandler; + +/** + * Created on 06.02.2018 + * + * @author Ugachaga + */ +public class ThaumcraftUtils +{ + private static final String CLASS_RENDERER = "thaumcraft.client.renderers.item.ItemWandRenderer"; + private static final String METHOD_RENDERER = "renderItem"; + private static final Object[] EMPTY_OBJECT = {}; + + private static final String CLASS_WANDS = "thaumcraft.common.items.wands.ItemWandCasting"; + + private static Object toolRendererInstance; + + private ThaumcraftUtils(){} + + static + { + try + { + toolRendererInstance = Class.forName(CLASS_RENDERER).newInstance(); + } + catch (Exception e) + { + LogHelper.error("Error getting Thaumcraft Wands Renderer instance: " + e.getMessage()); + } + } + + public static boolean isTool(ItemStack stack) + { + if (!ConfigHandler.IS_THAUMCRAFT || stack == null) + return false; + + try + { + return java.lang.Class.forName(CLASS_WANDS).isInstance(stack.getItem()); + } + catch (ClassNotFoundException e) + { + return false; + } + } + + public static float getToolRotationAngle(ItemStack stack, boolean isLowerSlot) + { + return isLowerSlot ? 0F : 90F; + } + + public static void renderTool(ItemStack stack, IItemRenderer.ItemRenderType renderType) + { + try + { + Class.forName(CLASS_RENDERER) + .getMethod(METHOD_RENDERER, IItemRenderer.ItemRenderType.class, ItemStack.class, Object[].class) + .invoke(toolRendererInstance, renderType, stack, EMPTY_OBJECT); + } + catch (Exception e) + { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java index 934b004a..5cb75a4c 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java @@ -30,11 +30,10 @@ public class TinkersUtils private static final String FIELD_CRAFT_RESULT = "craftResult"; private static final String CLASS_RENDERER = "tconstruct.client.FlexibleToolRenderer"; - //private static final String CLASS_RENDERER = "tconstruct.client.ToolCoreRenderer"; private static final String METHOD_RENDERER = "renderItem"; private static final Object[] EMPTY_OBJECT = {}; - private static final String TAG_INFI_TOOL = "InfiTool"; + private static final String PACKAGE_INFI_TOOLS = "tconstruct.items.tools"; private static Class craftingStation; private static Object craftingStationInstance; @@ -79,7 +78,12 @@ private TinkersUtils() {} public static boolean isTool(ItemStack stack) { return ConfigHandler.IS_TCONSTRUCT - && stack != null && stack.hasTagCompound() && stack.stackTagCompound.hasKey(TAG_INFI_TOOL); + && stack != null && stack.getItem().getClass().getName().startsWith(PACKAGE_INFI_TOOLS); + } + + public static boolean isTool(String clazzName) + { + return ConfigHandler.IS_TCONSTRUCT && clazzName.startsWith(PACKAGE_INFI_TOOLS); } public static ItemStack getTinkersRecipe(InventoryCrafting craftMatrix) From 1c586e74ed84a778fe4a2fac27923d493b269b62 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 6 Feb 2018 19:01:47 +0700 Subject: [PATCH 429/462] Refactorings --- .../client/gui/GuiAdvBackpack.java | 4 +- .../client/gui/GuiOverlay.java | 78 +++++++++---------- .../client/models/ModelBackpackArmor.java | 7 +- .../client/models/ModelClockworkCrossbow.java | 3 +- .../client/render/RendererStack.java | 67 +++++++--------- .../config/ConfigHandler.java | 12 +-- .../inventory/ContainerBackpack.java | 2 +- .../inventory/InventoryCraftingBackpack.java | 4 +- .../adventurebackpack/inventory/SlotTool.java | 12 +-- .../network/SleepingBagPacket.java | 2 +- .../reference/ToolHandler.java | 35 +++++++++ .../adventurebackpack/util/GregtechUtils.java | 2 +- .../util/ThaumcraftUtils.java | 4 +- .../adventurebackpack/util/TinkersUtils.java | 2 + 14 files changed, 126 insertions(+), 108 deletions(-) create mode 100644 src/main/java/com/darkona/adventurebackpack/reference/ToolHandler.java diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index fccea9b4..dc2a6235 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -68,7 +68,7 @@ public GuiAdvBackpack(EntityPlayer player, InventoryBackpack inventoryBackpack, private boolean isBedButtonCase() { return source == Source.TILE - || (ConfigHandler.allowPortableSleepingBag && source == Source.WEARING && GuiScreen.isShiftKeyDown()); + || (ConfigHandler.portableSleepingBag && source == Source.WEARING && GuiScreen.isShiftKeyDown()); } @Override @@ -109,7 +109,7 @@ else if (source == Source.HOLDING) drawHoveringText(tankRight.getTankTooltip(), mouseX, mouseY, fontRendererObj); } - if (ConfigHandler.IS_TCONSTRUCT && ConfigHandler.allowRepairTinkerTools) + if (ConfigHandler.IS_TCONSTRUCT && ConfigHandler.tinkerToolsMaintenance) { this.mc.getTextureManager().bindTexture(TINKERS_ICONS); this.drawTexturedModalRect(this.guiLeft + 169, this.guiTop + 77, 0, 233, 18, 18); diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java index ba045637..c9bc436a 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java @@ -32,6 +32,7 @@ import com.darkona.adventurebackpack.inventory.IInventoryTanks; import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.reference.ModInfo; +import com.darkona.adventurebackpack.reference.ToolHandler; import com.darkona.adventurebackpack.util.GregtechUtils; import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.ThaumcraftUtils; @@ -178,8 +179,10 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) GL11.glScalef(0.5f, 0.5f, 0.5f); if (ConfigHandler.enableToolsRender) { - drawItemStack(inv.getStackInSlot(Constants.UPPER_TOOL), 0, 0); - drawItemStack(inv.getStackInSlot(Constants.LOWER_TOOL), 0, 16); + ItemStack upperStack = inv.getStackInSlot(Constants.UPPER_TOOL); + ItemStack lowerStack = inv.getStackInSlot(Constants.LOWER_TOOL); + drawItemStack(upperStack, ToolHandler.getToolHandler(upperStack),0, 0); + drawItemStack(lowerStack, ToolHandler.getToolHandler(lowerStack), 0, 16); } GL11.glPopMatrix(); RenderHelper.disableStandardItemLighting(); @@ -226,7 +229,7 @@ private void drawTank(FluidTank tank, int startX, int startY, int height, int wi } } - private void drawItemStack(ItemStack stack, int x, int y) + private void drawItemStack(ItemStack stack, ToolHandler toolHandler, int x, int y) { if (stack == null) return; @@ -234,46 +237,41 @@ private void drawItemStack(ItemStack stack, int x, int y) this.zLevel = 200.0F; itemRender.zLevel = 200.0F; - boolean isGregtechTool = GregtechUtils.isTool(stack); - boolean isTinkersTool = TinkersUtils.isTool(stack); - boolean isThaumcraftTool = ThaumcraftUtils.isTool(stack); - - if (isGregtechTool) - { - GL11.glTranslatef(x, y, 32.0F); - GregtechUtils.renderTool(stack, IItemRenderer.ItemRenderType.INVENTORY); - } - else if (isTinkersTool) + switch (toolHandler) { - TextureManager tm = mc.getTextureManager(); - tm.bindTexture(tm.getResourceLocation(stack.getItemSpriteNumber())); - GL11.glTranslatef(x, y, 32.0F); - TinkersUtils.renderTool(stack, IItemRenderer.ItemRenderType.INVENTORY); + case GREGTECH: + GL11.glTranslatef(x, y, 32.0F); + GregtechUtils.renderTool(stack, IItemRenderer.ItemRenderType.INVENTORY); + break; + case TCONSTRUCT: + TextureManager tm = mc.getTextureManager(); + tm.bindTexture(tm.getResourceLocation(stack.getItemSpriteNumber())); + GL11.glTranslatef(x, y, 32.0F); + TinkersUtils.renderTool(stack, IItemRenderer.ItemRenderType.INVENTORY); + break; + case THAUMCRAFT: + // Forge PreRender: net.minecraftforge.client.ForgeHooksClient.renderInventoryItem + GL11.glPushMatrix(); + GL11.glTranslatef(x - 2, y + 3, -3.0F + zLevel); + GL11.glScalef(10F, 10F, 10F); + GL11.glTranslatef(1.0F, 0.5F, 1.0F); + GL11.glScalef(1.0F, 1.0F, -1F); + GL11.glRotatef(210F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(-135F, 0.0F, 1.0F, 0.0F); + // Thaumcraft Render + ThaumcraftUtils.renderTool(stack, IItemRenderer.ItemRenderType.INVENTORY); + GL11.glPopMatrix(); + break; + case VANILLA: + default: + GL11.glTranslatef(0F, 0F, 32.0F); + FontRenderer font = null; + font = stack.getItem().getFontRenderer(stack); + if (font == null) font = fontRendererObj; + itemRender.renderItemIntoGUI(font, mc.getTextureManager(), stack, x, y); + break; } - else if (isThaumcraftTool) - { - // Forge PreRender: net.minecraftforge.client.ForgeHooksClient.renderInventoryItem - GL11.glPushMatrix(); - GL11.glTranslatef(x - 2, y + 3, -3.0F + zLevel); - GL11.glScalef(10F, 10F, 10F); - GL11.glTranslatef(1.0F, 0.5F, 1.0F); - GL11.glScalef(1.0F, 1.0F, -1F); - GL11.glRotatef(210F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-135F, 0.0F, 1.0F, 0.0F); - // Thaumcraft Render - ThaumcraftUtils.renderTool(stack, IItemRenderer.ItemRenderType.INVENTORY); - - GL11.glPopMatrix(); - } - else - { - GL11.glTranslatef(0F, 0F, 32.0F); - FontRenderer font = null; - font = stack.getItem().getFontRenderer(stack); - if (font == null) font = fontRendererObj; - itemRender.renderItemIntoGUI(font, mc.getTextureManager(), stack, x, y); - } this.zLevel = 0.0F; itemRender.zLevel = 0.0F; } diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java index 6af1518e..fcf02269 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java @@ -14,6 +14,7 @@ import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.inventory.InventoryBackpack; import com.darkona.adventurebackpack.reference.BackpackTypes; +import com.darkona.adventurebackpack.reference.ToolHandler; import static com.darkona.adventurebackpack.reference.BackpackTypes.*; @@ -259,8 +260,10 @@ private void renderBackpack(Float scale) if (ConfigHandler.enableToolsRender) { - lowerTool.stack = backpack.getStackInSlot(Constants.LOWER_TOOL); - upperTool.stack = backpack.getStackInSlot(Constants.UPPER_TOOL); + ItemStack upperStack = backpack.getStackInSlot(Constants.UPPER_TOOL); + ItemStack lowerStack = backpack.getStackInSlot(Constants.LOWER_TOOL); + upperTool.setStack(upperStack, ToolHandler.getToolHandler(upperStack)); + lowerTool.setStack(lowerStack, ToolHandler.getToolHandler(lowerStack)); } if (type == QUARTZ || type == SLIME || type == SNOW) diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelClockworkCrossbow.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelClockworkCrossbow.java index 67a9e24d..9082545c 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelClockworkCrossbow.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelClockworkCrossbow.java @@ -9,6 +9,7 @@ import net.minecraft.item.ItemStack; import com.darkona.adventurebackpack.client.render.RendererStack; +import com.darkona.adventurebackpack.reference.ToolHandler; import com.darkona.adventurebackpack.util.Utils; /** @@ -192,7 +193,7 @@ public ModelClockworkCrossbow() this.hookHead.addChild(this.hookTooth3); arrow = new RendererStack(this, true); - arrow.stack = new ItemStack(Items.arrow, 1); + arrow.setStack(new ItemStack(Items.arrow, 1), ToolHandler.VANILLA); } public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack xbow) diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java index d9ae58c1..eefcded4 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java @@ -11,6 +11,7 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import com.darkona.adventurebackpack.reference.ToolHandler; import com.darkona.adventurebackpack.util.GregtechUtils; import com.darkona.adventurebackpack.util.ThaumcraftUtils; import com.darkona.adventurebackpack.util.TinkersUtils; @@ -19,8 +20,9 @@ public class RendererStack extends ModelRenderer { private static final Minecraft MC = Minecraft.getMinecraft(); - public ItemStack stack; private boolean isLowerSlot; + private ItemStack stack; + private ToolHandler toolHandler = ToolHandler.VANILLA; public RendererStack(ModelBase modelBase, boolean isLowerSlot) { @@ -29,13 +31,10 @@ public RendererStack(ModelBase modelBase, boolean isLowerSlot) addChild(new Thing(modelBase)); } - public enum ToolHandler + public void setStack(ItemStack stack, ToolHandler toolHandler) { - VANILLA, - GREGTECH, - TINKERS_CONSTRUCT, - THAUMCRAFT, - ; + this.stack = stack; + this.toolHandler = toolHandler; } private class Thing extends ModelRenderer @@ -52,8 +51,6 @@ public void render(float par1) if (stack == null) return; - ToolHandler toolHandler = getToolHandler(stack); - GL11.glPushMatrix(); GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); if (isLowerSlot) @@ -61,34 +58,33 @@ public void render(float par1) GL11.glScalef(0.6F, 0.6F, 0.6F); GL11.glPushMatrix(); GL11.glRotatef(-90F, 0, 1, 0); - GL11.glRotatef(getToolRotationAngle(stack, true, toolHandler), 0, 0, 1); } else { GL11.glScalef(0.7F, 0.7F, 0.7F); GL11.glPushMatrix(); - GL11.glRotatef(getToolRotationAngle(stack, false, toolHandler), 0, 0, 1); } + GL11.glRotatef(getToolRotationAngle(stack, isLowerSlot, toolHandler), 0, 0, 1); - if (toolHandler == ToolHandler.GREGTECH) - { - GregtechUtils.renderTool(stack, IItemRenderer.ItemRenderType.ENTITY); - } - else if (toolHandler == ToolHandler.TINKERS_CONSTRUCT) - { - TextureManager tm = MC.getTextureManager(); - tm.bindTexture(tm.getResourceLocation(stack.getItemSpriteNumber())); - GL11.glTranslatef(-0.06F, -0.1F, 0F); - TinkersUtils.renderTool(stack, IItemRenderer.ItemRenderType.ENTITY); - } - else if (toolHandler == ToolHandler.THAUMCRAFT) - { - GL11.glTranslatef(0F, -0.375F, 0F); - ThaumcraftUtils.renderTool(stack, IItemRenderer.ItemRenderType.ENTITY); - } - else + switch (toolHandler) { - CopygirlRenderUtils.renderItemIn3d(stack); + case GREGTECH: + GregtechUtils.renderTool(stack, IItemRenderer.ItemRenderType.ENTITY); + break; + case TCONSTRUCT: + TextureManager tm = MC.getTextureManager(); + tm.bindTexture(tm.getResourceLocation(stack.getItemSpriteNumber())); + GL11.glTranslatef(-0.06F, -0.1F, 0F); + TinkersUtils.renderTool(stack, IItemRenderer.ItemRenderType.ENTITY); + break; + case THAUMCRAFT: + GL11.glTranslatef(0F, -0.375F, 0F); + ThaumcraftUtils.renderTool(stack, IItemRenderer.ItemRenderType.ENTITY); + break; + case VANILLA: + default: + CopygirlRenderUtils.renderItemIn3d(stack); + break; } GL11.glPopAttrib(); @@ -102,7 +98,7 @@ private float getToolRotationAngle(ItemStack stack, boolean isLowerSlot, ToolHan { case GREGTECH: return GregtechUtils.getToolRotationAngle(stack, isLowerSlot); - case TINKERS_CONSTRUCT: + case TCONSTRUCT: return TinkersUtils.getToolRotationAngle(stack, isLowerSlot); case THAUMCRAFT: return ThaumcraftUtils.getToolRotationAngle(stack, isLowerSlot); @@ -111,16 +107,5 @@ private float getToolRotationAngle(ItemStack stack, boolean isLowerSlot, ToolHan return isLowerSlot ? -225F : 45F; } } - - private ToolHandler getToolHandler(ItemStack stack) - { - if (GregtechUtils.isTool(stack)) - return ToolHandler.GREGTECH; - if (TinkersUtils.isTool(stack)) - return ToolHandler.TINKERS_CONSTRUCT; - if (ThaumcraftUtils.isTool(stack)) - return ToolHandler.THAUMCRAFT; - return ToolHandler.VANILLA; - } } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 1e62d128..286e46e9 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -25,14 +25,14 @@ public class ConfigHandler public static boolean IS_THAUMCRAFT = false; public static boolean allowSoulBound = true; - public static boolean allowPortableSleepingBag = true; - public static boolean allowRepairTinkerTools = true; public static boolean backpackDeathPlace = true; public static boolean backpackAbilities = true; public static boolean enableCampfireSpawn = false; public static boolean enableHoseDrink = true; public static boolean enableToolsCycling = true; public static boolean fixLead = true; + public static boolean portableSleepingBag = true; + public static boolean tinkerToolsMaintenance = true; public static boolean enableFullnessBar = false; public static boolean enableTemperatureBar = false; @@ -60,7 +60,7 @@ public class ConfigHandler public static boolean enableItemFilters = false; public static String[] forbiddenDimensions; public static String[] copterFuels; - public static String[] defaultFuels = {"biodiesel, 1.0", "biofuel, 1.0", "bioethanol, 1.5", "creosote, 7.0", + private static String[] defaultFuels = {"biodiesel, 1.0", "biofuel, 1.0", "bioethanol, 1.5", "creosote, 7.0", "fuel, 0.8", "lava, 5.0", "liquid_light_oil, 3.0", "liquid_medium_oil, 3.0", "liquid_heavy_oil, 3.0", "liquid_light_fuel, 1.0", "liquid_heavy_fuel, 1.3", "nitrofuel, 0.4", "oil, 3.0", "rocket_fuel, 0.8"}; @@ -68,7 +68,7 @@ public class ConfigHandler public static String[] nameInternalID; public static String[] nameInternalIDs; public static String[] nameUnlocalized; - public static String[] nameDefault = {}; + private static String[] nameDefault = {}; public static boolean consumeDragonEgg = false; public static boolean recipeAdventuresSet = true; @@ -108,8 +108,6 @@ private static void loadConfiguration() { // Gameplay allowSoulBound = config.getBoolean("Allow SoulBound", "gameplay", true, "Allow SoulBound enchant on wearable packs"); - allowPortableSleepingBag = config.getBoolean("Allow Portable Sleeping Bag", "gameplay", true, "Allows to use sleeping bag directly from wearing backpacks. Sleep by one touch."); - allowRepairTinkerTools = config.getBoolean("Allow Repair Tinker Tools", "gameplay", true, "Allows to repair Tinkers Construct tools in backpacks as if it's Crafting Station."); backpackAbilities = config.getBoolean("Backpack Abilities", "gameplay", true, "Allow the backpacks to execute their special abilities, or be only cosmetic (Doesn't affect lightning transformation) Must be " + "disabled in both Client and Server to work properly"); backpackDeathPlace = config.getBoolean("Backpack Death Place", "gameplay", true, "Place backpacks as a block when you die?"); @@ -117,6 +115,8 @@ private static void loadConfiguration() enableCampfireSpawn = config.getBoolean("Enable Campfire Spawn", "gameplay", false, "Enable/Disable ability to spawn at campfire"); enableHoseDrink = config.getBoolean("Enable Hose Drink", "gameplay", true, "Enable/Disable hose drink mode"); enableToolsCycling = config.getBoolean("Enable Tools Cycling", "gameplay", true, "Enable/Disable tool cycling"); + portableSleepingBag = config.getBoolean("Portable Sleeping Bag", "gameplay", true, "Allows to use sleeping bag directly from wearing backpacks. Sleep by one touch"); + tinkerToolsMaintenance = config.getBoolean("Maintenance Tinker Tools", "gameplay", true, "Allows to maintenance (repair/upgarde) Tinkers Construct tools in backpacks as if it's Crafting Station"); // Graphics typeTankRender = config.getInt("Tank Render Type", "graphics", 3, 1, 3, "1,2 or 3 for different rendering of fluids in the Backpack GUI"); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 538bf74c..b5849f2c 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -268,7 +268,7 @@ protected void dropContentOnClose() @Override public void onCraftMatrixChanged(IInventory inventory) { - if (ConfigHandler.allowRepairTinkerTools && TinkersUtils.isTool(craftMatrix.getStackInSlot(4))) + if (ConfigHandler.tinkerToolsMaintenance && TinkersUtils.isTool(craftMatrix.getStackInSlot(4))) { craftResult.setInventorySlotContents(0, TinkersUtils.getTinkersRecipe(craftMatrix)); return; diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCraftingBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCraftingBackpack.java index a0ca0602..32c7c236 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCraftingBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCraftingBackpack.java @@ -1,5 +1,7 @@ package com.darkona.adventurebackpack.inventory; +import javax.annotation.Nullable; + import net.minecraft.inventory.Container; import net.minecraft.inventory.InventoryCrafting; import net.minecraft.item.ItemStack; @@ -16,7 +18,7 @@ public InventoryCraftingBackpack(Container eventHandler, int columns, int rows) super(eventHandler, columns, rows); } - public void setInventorySlotContentsNoUpdate(int slotID, ItemStack stack) + public void setInventorySlotContentsNoUpdate(int slotID, @Nullable ItemStack stack) { this.stackList[slotID] = stack; } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java index 9f38745d..dfa13dd2 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java @@ -9,8 +9,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.ItemTool; -import com.darkona.adventurebackpack.item.ItemAdventureBackpack; -import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.util.GregtechUtils; import com.darkona.adventurebackpack.util.ThaumcraftUtils; import com.darkona.adventurebackpack.util.TinkersUtils; @@ -24,9 +22,7 @@ public class SlotTool extends SlotAdventureBackpack { private static final String[] VALID_TOOL_NAMES = {"axe", "crowbar", "drill", "grafter", "hammer", "scoop", "shovel", "wrench",}; - private static final String[] INVALID_TOOL_NAMES = {"bow", "bucket", "shield", "sword",}; - private static final String[] INVALID_TINKER_NAMES = {"battleaxe", "bow", "cleaver", "cutlass", "dagger", "rapier", "sabre", "shield", "sign", "sword",}; @@ -47,9 +43,9 @@ public static boolean isValidTool(ItemStack stack) return false; Item item = stack.getItem(); - String itemName = item.getUnlocalizedName().toLowerCase(); - String objectName = Item.itemRegistry.getNameForObject(item); String clazzName = item.getClass().getName(); + String objectName = Item.itemRegistry.getNameForObject(item); + String itemName = item.getUnlocalizedName().toLowerCase(); // Vanilla if (item instanceof ItemTool || item instanceof ItemHoe || item instanceof ItemShears @@ -58,10 +54,6 @@ public static boolean isValidTool(ItemStack stack) return true; } - // Adventure Backpack duh! - if (item instanceof ItemHose || item instanceof ItemAdventureBackpack) - return false; - // GregTech if (GregtechUtils.isTool(itemName)) return !(stack.getItemDamage() == 0 || stack.getItemDamage() > 169); // 0 = sword, 170 = turbines diff --git a/src/main/java/com/darkona/adventurebackpack/network/SleepingBagPacket.java b/src/main/java/com/darkona/adventurebackpack/network/SleepingBagPacket.java index 639d1f5b..aab1347f 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/SleepingBagPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/SleepingBagPacket.java @@ -21,7 +21,7 @@ public IMessage onMessage(SleepingBagMessage message, MessageContext ctx) { if (ctx.side.isServer()) { - if (message.isTile || ConfigHandler.allowPortableSleepingBag) // serverside check + if (message.isTile || ConfigHandler.portableSleepingBag) // serverside check { ServerActions.toggleSleepingBag(ctx.getServerHandler().playerEntity, message.isTile, message.cX, message.cY, message.cZ); } diff --git a/src/main/java/com/darkona/adventurebackpack/reference/ToolHandler.java b/src/main/java/com/darkona/adventurebackpack/reference/ToolHandler.java new file mode 100644 index 00000000..dc1e635b --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/reference/ToolHandler.java @@ -0,0 +1,35 @@ +package com.darkona.adventurebackpack.reference; + +import net.minecraft.item.ItemStack; + +import com.darkona.adventurebackpack.util.GregtechUtils; +import com.darkona.adventurebackpack.util.ThaumcraftUtils; +import com.darkona.adventurebackpack.util.TinkersUtils; + +/** + * Created on 06.02.2018 + * + * @author Ugachaga + */ +public enum ToolHandler +{ + VANILLA, + GREGTECH, + TCONSTRUCT, + THAUMCRAFT, + ; + + public static ToolHandler getToolHandler(ItemStack stack) + { + if (stack == null) + return VANILLA; + + if (GregtechUtils.isTool(stack)) + return GREGTECH; + if (TinkersUtils.isTool(stack)) + return TCONSTRUCT; + if (ThaumcraftUtils.isTool(stack)) + return THAUMCRAFT; + return VANILLA; + } +} \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java b/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java index 68b74975..606e01c4 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java @@ -21,7 +21,7 @@ public class GregtechUtils private static Object toolRendererInstance; - private GregtechUtils(){} + private GregtechUtils() {} static { diff --git a/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java b/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java index a1338a80..56f0df5f 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java @@ -20,7 +20,7 @@ public class ThaumcraftUtils private static Object toolRendererInstance; - private ThaumcraftUtils(){} + private ThaumcraftUtils() {} static { @@ -64,7 +64,7 @@ public static void renderTool(ItemStack stack, IItemRenderer.ItemRenderType rend } catch (Exception e) { - e.printStackTrace(); + //e.printStackTrace(); } } } diff --git a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java index 5cb75a4c..d68b2192 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java @@ -1,5 +1,6 @@ package com.darkona.adventurebackpack.util; +import javax.annotation.Nullable; import java.util.UUID; import net.minecraft.entity.player.InventoryPlayer; @@ -86,6 +87,7 @@ public static boolean isTool(String clazzName) return ConfigHandler.IS_TCONSTRUCT && clazzName.startsWith(PACKAGE_INFI_TOOLS); } + @Nullable public static ItemStack getTinkersRecipe(InventoryCrafting craftMatrix) { try From 80034d393a3473296cc5e83942be0c97e407970d Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 6 Feb 2018 22:11:33 +0700 Subject: [PATCH 430/462] Changed behavior of tool cycling Shift+WheelUp changes current item to upper slot item Shift+WheelDown changes current item to lower slot item --- .../block/BlockAdventureBackpack.java | 2 +- .../common/ServerActions.java | 64 +++++-------------- .../adventurebackpack/network/GUIPacket.java | 4 +- .../reference/GeneralReference.java | 7 ++ 4 files changed, 25 insertions(+), 52 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java index 0ff1079c..63f7900b 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java @@ -234,7 +234,7 @@ public boolean canConnectRedstone(IBlockAccess world, int x, int y, int z, int s @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if (!world.isRemote && GeneralReference.isDimensionAllowed(player.worldObj.provider.dimensionId)) + if (!world.isRemote && GeneralReference.isDimensionAllowed(player)) { FMLNetworkHandler.openGui(player, AdventureBackpack.instance, GuiHandler.BACKPACK_TILE, world, x, y, z); return true; diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index 367b2a0c..b71ae34d 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -62,10 +62,8 @@ public class ServerActions //Using @Sir-Will dupe fixed public static void cycleTool(EntityPlayer player, int direction, int slot) { - if (!GeneralReference.isDimensionAllowed(player.worldObj.provider.dimensionId)) - { + if (!GeneralReference.isDimensionAllowed(player)) return; - } try { @@ -73,6 +71,20 @@ public static void cycleTool(EntityPlayer player, int direction, int slot) ItemStack current = player.getCurrentEquippedItem(); backpack.openInventory(); if (SlotTool.isValidTool(current)) + { + if (direction < 0) + { + player.inventory.mainInventory[slot] = backpack.getStackInSlot(LOWER_TOOL); + backpack.setInventorySlotContentsNoSave(LOWER_TOOL, current); + } + else if (direction > 0) + { + player.inventory.mainInventory[slot] = backpack.getStackInSlot(UPPER_TOOL); + backpack.setInventorySlotContentsNoSave(UPPER_TOOL, current); + } + } + //old behavior, cycling all 3 slots: + /*if (SlotTool.isValidTool(current)) { if (direction < 0) { @@ -86,7 +98,7 @@ else if (direction > 0) backpack.setInventorySlotContentsNoSave(LOWER_TOOL, backpack.getStackInSlot(UPPER_TOOL)); backpack.setInventorySlotContentsNoSave(UPPER_TOOL, current); } - } + }*/ backpack.markDirty(); player.inventory.closeInventory(); } @@ -301,7 +313,6 @@ else if (!isTile && Wearing.isWearingBackpack(player)) ((BlockSleepingBag) portableBag).onPortableBlockActivated(world, player, can[1], can[2], can[3]); } } - //sleepSafe((EntityPlayerMP) player, world, can[1], can[2], can[3]); } else if (!world.isRemote) { @@ -311,49 +322,6 @@ else if (!world.isRemote) } } - // shamelessly copied from OpenBlocks SleepingBag - /*public static void sleepSafe(EntityPlayerMP player, World world, int cX, int cY, int cZ) - { - if (player.isRiding()) - player.mountEntity(null); - - if (setPlayerSleeping(player)) - { - player.playerLocation = new ChunkCoordinates(cX, cY, cZ); - - player.motionX = player.motionZ = player.motionY = 0.0D; - world.updateAllPlayersSleepingFlag(); - - S0APacketUseBed sleepPacket = new S0APacketUseBed(player, cX, cY, cZ); - player.getServerForPlayer().getEntityTracker().func_151247_a(player, sleepPacket); - player.playerNetServerHandler.sendPacket(sleepPacket); - } - }*/ - - /*public static boolean setPlayerSleeping(EntityPlayer player) - { - try - { - Class clazz = Class.forName("net.minecraft.entity.player.EntityPlayer"); - - Field field = clazz.getDeclaredField(ConfigHandler.IS_DEVENV ? "sleeping" : "field_71083_bS"); - field.setAccessible(true); - field.set(player, true); - - field = clazz.getDeclaredField(ConfigHandler.IS_DEVENV ? "sleepTimer" : "field_71076_b"); - field.setAccessible(true); - field.set(player, 0); - - return true; - } - catch (Exception e) - { - LogHelper.error("Reflection error while setSleep: " + e.getMessage()); - //e.printStackTrace(); - return false; - } - }*/ - /** * Adds vertical inertia to the movement in the Y axis of the player, and makes Newton's Laws cry. * In other words, makes you jump higher. diff --git a/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java b/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java index 29449276..09f380d1 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/GUIPacket.java @@ -83,10 +83,8 @@ public IMessage onMessage(GUImessage message, MessageContext ctx) } if (message.type == BACKPACK_GUI) { - if (!GeneralReference.isDimensionAllowed(player.worldObj.provider.dimensionId)) - { + if (!GeneralReference.isDimensionAllowed(player)) return null; - } if (message.from == FROM_WEARING) { diff --git a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java index e88e85eb..9ad286f4 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java @@ -1,10 +1,12 @@ package com.darkona.adventurebackpack.reference; +import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.HashMap; import java.util.HashSet; import java.util.Set; +import net.minecraft.entity.player.EntityPlayer; import net.minecraftforge.common.DimensionManager; import net.minecraftforge.fluids.FluidRegistry; @@ -110,6 +112,11 @@ private static void parseLiquidFuelsConfig() } } + public static boolean isDimensionAllowed(@Nonnull EntityPlayer player) + { + return isDimensionAllowed(player.worldObj.provider.dimensionId); + } + public static boolean isDimensionAllowed(int dimID) { return !dimensionBlacklist.contains(dimID); From 96e462b009cb9618179fce98491634f40fb23774 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 8 Feb 2018 00:06:27 +0700 Subject: [PATCH 431/462] Started NBT unification --- .../block/TileAdventureBackpack.java | 51 +++++------ .../client/audio/CopterPackSound.java | 43 ++++----- .../client/gui/GuiAdvBackpack.java | 4 +- .../client/gui/GuiCoalJetpack.java | 2 +- .../client/gui/GuiOverlay.java | 4 +- .../client/models/ModelBackpackArmor.java | 4 +- .../client/models/ModelCopterPack.java | 9 +- .../adventurebackpack/common/Constants.java | 87 ++++++++++++------- .../common/ServerActions.java | 57 ++++++------ .../handlers/ClientEventHandler.java | 13 ++- .../handlers/KeyInputEventHandler.java | 8 +- .../handlers/PlayerEventHandler.java | 2 +- .../handlers/TooltipEventHandler.java | 35 ++++---- .../adventurebackpack/init/ModRecipes.java | 6 +- .../recipes/AbstractBackpackRecipeTwo.java | 12 ++- .../inventory/ContainerBackpack.java | 12 +-- .../inventory/ContainerCopter.java | 8 +- .../inventory/ContainerJetpack.java | 15 ++-- .../inventory/InventoryBackpack.java | 59 ++++++------- .../inventory/InventoryCoalJetpack.java | 82 ++++++++++------- .../inventory/InventoryCopterPack.java | 70 +++++++++------ .../inventory/SlotFluidFuel.java | 2 +- .../inventory/SlotFluidWater.java | 2 +- .../item/ItemAdventureBackpack.java | 22 ++--- .../item/ItemCoalJetpack.java | 15 ++-- .../item/ItemCopterPack.java | 12 ++- .../network/CycleToolPacket.java | 19 ++-- .../network/PlayerActionPacket.java | 4 +- .../reference/BackpackTypes.java | 15 ++-- .../reference/WailaTileAdventureBackpack.java | 22 +++-- .../adventurebackpack/util/BackpackUtils.java | 6 +- 31 files changed, 390 insertions(+), 312 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index d5b7e11e..75e3b0dc 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -38,12 +38,13 @@ import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_RIGHT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_LEFT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_RIGHT; -import static com.darkona.adventurebackpack.common.Constants.INVENTORY; -import static com.darkona.adventurebackpack.common.Constants.LEFT_TANK; -import static com.darkona.adventurebackpack.common.Constants.LOWER_TOOL; -import static com.darkona.adventurebackpack.common.Constants.RIGHT_TANK; -import static com.darkona.adventurebackpack.common.Constants.UPPER_TOOL; -import static com.darkona.adventurebackpack.common.Constants.WEARABLE_TAG; +import static com.darkona.adventurebackpack.common.Constants.TAG_INVENTORY; +import static com.darkona.adventurebackpack.common.Constants.TAG_LEFT_TANK; +import static com.darkona.adventurebackpack.common.Constants.TAG_RIGHT_TANK; +import static com.darkona.adventurebackpack.common.Constants.TAG_TYPE; +import static com.darkona.adventurebackpack.common.Constants.TAG_WEARABLE_COMPOUND; +import static com.darkona.adventurebackpack.common.Constants.TOOL_LOWER; +import static com.darkona.adventurebackpack.common.Constants.TOOL_UPPER; /** * Created by Darkona on 12/10/2014. @@ -252,17 +253,17 @@ private void convertFromOldNBTFormat(NBTTagCompound compound) // backwards compa { NBTTagCompound oldBackpackTag = compound.getCompoundTag("backpackData"); NBTTagList oldItems = oldBackpackTag.getTagList("ABPItems", NBT.TAG_COMPOUND); - leftTank.readFromNBT(oldBackpackTag.getCompoundTag(LEFT_TANK)); - rightTank.readFromNBT(oldBackpackTag.getCompoundTag(RIGHT_TANK)); + leftTank.readFromNBT(oldBackpackTag.getCompoundTag(TAG_LEFT_TANK)); + rightTank.readFromNBT(oldBackpackTag.getCompoundTag(TAG_RIGHT_TANK)); type = BackpackTypes.getType(oldBackpackTag.getString("colorName")); NBTTagCompound newBackpackTag = new NBTTagCompound(); - newBackpackTag.setTag(INVENTORY, oldItems); - newBackpackTag.setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); - newBackpackTag.setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); - newBackpackTag.setByte("type", BackpackTypes.getMeta(type)); + newBackpackTag.setTag(TAG_INVENTORY, oldItems); + newBackpackTag.setTag(TAG_RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); + newBackpackTag.setTag(TAG_LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); + newBackpackTag.setByte(TAG_TYPE, BackpackTypes.getMeta(type)); - compound.setTag(WEARABLE_TAG, newBackpackTag); + compound.setTag(TAG_WEARABLE_COMPOUND, newBackpackTag); compound.removeTag("backpackData"); } @@ -275,9 +276,9 @@ public void loadFromNBT(NBTTagCompound compound) if (compound.hasKey("ench")) ench = compound.getTagList("ench", NBT.TAG_COMPOUND); - NBTTagCompound backpackTag = compound.getCompoundTag(WEARABLE_TAG); - type = BackpackTypes.getType(backpackTag.getByte("type")); - NBTTagList items = backpackTag.getTagList(INVENTORY, NBT.TAG_COMPOUND); + NBTTagCompound backpackTag = compound.getCompoundTag(TAG_WEARABLE_COMPOUND); + type = BackpackTypes.getType(backpackTag.getByte(TAG_TYPE)); + NBTTagList items = backpackTag.getTagList(TAG_INVENTORY, NBT.TAG_COMPOUND); for (int i = 0; i < items.tagCount(); i++) { NBTTagCompound item = items.getCompoundTagAt(i); @@ -287,8 +288,8 @@ public void loadFromNBT(NBTTagCompound compound) inventory[slot] = ItemStack.loadItemStackFromNBT(item); } } - leftTank.readFromNBT(backpackTag.getCompoundTag(LEFT_TANK)); - rightTank.readFromNBT(backpackTag.getCompoundTag(RIGHT_TANK)); + leftTank.readFromNBT(backpackTag.getCompoundTag(TAG_LEFT_TANK)); + rightTank.readFromNBT(backpackTag.getCompoundTag(TAG_RIGHT_TANK)); extendedProperties = backpackTag.getCompoundTag("extended"); disableCycling = backpackTag.getBoolean("disableCycling"); disableNVision = backpackTag.getBoolean("disableNVision"); @@ -302,7 +303,7 @@ public void saveToNBT(NBTTagCompound compound) compound.setTag("ench", ench); NBTTagCompound backpackTag = new NBTTagCompound(); - backpackTag.setByte("type", BackpackTypes.getMeta(type)); + backpackTag.setByte(TAG_TYPE, BackpackTypes.getMeta(type)); NBTTagList items = new NBTTagList(); for (int i = 0; i < inventory.length; i++) { @@ -315,15 +316,15 @@ public void saveToNBT(NBTTagCompound compound) items.appendTag(item); } } - backpackTag.setTag(INVENTORY, items); - backpackTag.setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); - backpackTag.setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); + backpackTag.setTag(TAG_INVENTORY, items); + backpackTag.setTag(TAG_RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); + backpackTag.setTag(TAG_LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); backpackTag.setTag("extended", extendedProperties); backpackTag.setBoolean("disableCycling", disableCycling); backpackTag.setBoolean("disableNVision", disableNVision); backpackTag.setInteger("lastTime", lastTime); - compound.setTag(WEARABLE_TAG, backpackTag); + compound.setTag(TAG_WEARABLE_COMPOUND, backpackTag); } @Override @@ -332,7 +333,7 @@ public FluidTank[] getTanksArray() return new FluidTank[]{leftTank, rightTank}; } - //====================================================INVENTORY===================================================// + //====================================================TAG_INVENTORY===================================================// @Override public void openInventory() { @@ -352,7 +353,7 @@ public boolean isItemValidForSlot(int slot, ItemStack stack) { return SlotBackpack.isValidItem(stack); } - return (slot == UPPER_TOOL || slot == LOWER_TOOL) && SlotTool.isValidTool(stack); + return (slot == TOOL_UPPER || slot == TOOL_LOWER) && SlotTool.isValidTool(stack); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java index 4ff64a4d..ba9b0c93 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java @@ -10,6 +10,9 @@ import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Wearing; +import static com.darkona.adventurebackpack.common.Constants.Copter.TAG_STATUS; +import static com.darkona.adventurebackpack.common.Constants.TAG_WEARABLE_COMPOUND; + /** * Created on 16/10/2014 * @@ -69,36 +72,24 @@ public void update() setDonePlaying(); return; } - if (copter.hasTagCompound() && copter.getTagCompound().hasKey("status")) + + status = copter.getTagCompound().getCompoundTag(TAG_WEARABLE_COMPOUND).getByte(TAG_STATUS); + if (status == ItemCopterPack.OFF_MODE) { - status = copter.getTagCompound().getByte("status"); - if (status == ItemCopterPack.OFF_MODE) - { - setDonePlaying(); - } - else - { - if (status == ItemCopterPack.HOVER_MODE) - { - pitch = (thePlayer.motionY > 0) ? 1.2f : (thePlayer.motionY < -0.1) ? 0.8f : 1.0f; - } - if (status == ItemCopterPack.NORMAL_MODE) - { - if (thePlayer.onGround) - { - pitch = 0.8f; - } - else - { - pitch = (thePlayer.motionY > 0) ? 1.2f : (thePlayer.isSneaking()) ? 0.8f : 1.0f; - } - } - } + setDonePlaying(); } - else + else if (status == ItemCopterPack.HOVER_MODE) { - setDonePlaying(); + pitch = (thePlayer.motionY > 0) ? 1.2f : (thePlayer.motionY < -0.1) ? 0.8f : 1.0f; } + else if (status == ItemCopterPack.NORMAL_MODE) + { + if (thePlayer.onGround) + pitch = 0.8f; + else + pitch = (thePlayer.motionY > 0) ? 1.2f : (thePlayer.isSneaking()) ? 0.8f : 1.0f; + } + xPosF = (float) thePlayer.posX; yPosF = (float) thePlayer.posY; zPosF = (float) thePlayer.posZ; diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index dc2a6235..a66e875b 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -175,7 +175,7 @@ public void updateScreen() { isHoldingSpace = true; ModNetwork.net.sendToServer(new PlayerActionPacket.ActionMessage(PlayerActionPacket.GUI_HOLDING_SPACE)); - inventory.getExtendedProperties().setBoolean(Constants.HOLDING_SPACE_TAG, true); + inventory.getExtendedProperties().setBoolean(Constants.TAG_HOLDING_SPACE, true); } } else @@ -184,7 +184,7 @@ public void updateScreen() { isHoldingSpace = false; ModNetwork.net.sendToServer(new PlayerActionPacket.ActionMessage(PlayerActionPacket.GUI_NOT_HOLDING_SPACE)); - inventory.getExtendedProperties().removeTag(Constants.HOLDING_SPACE_TAG); + inventory.getExtendedProperties().removeTag(Constants.TAG_HOLDING_SPACE); } } } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java index fa4a1f87..c74b8b9f 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiCoalJetpack.java @@ -101,7 +101,7 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) this.drawTexturedModalRect(78, 48 + 12 - i1, 176, 12 - i1, 14, i1 + 1); } - int H = Math.round(((float) 72 / (float) Constants.JETPACK_MAX_TEMPERATURE) * (float) inventory.getTemperature()); + int H = Math.round(((float) 72 / (float) Constants.Jetpack.MAX_TEMPERATURE) * (float) inventory.getTemperature()); drawTexturedModalRect(139, 8 + (72 - H), 40, 167 + (72 - H), 5, H); GL11.glDisable(GL11.GL_BLEND); diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java index c9bc436a..ea6d38a5 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java @@ -179,8 +179,8 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) GL11.glScalef(0.5f, 0.5f, 0.5f); if (ConfigHandler.enableToolsRender) { - ItemStack upperStack = inv.getStackInSlot(Constants.UPPER_TOOL); - ItemStack lowerStack = inv.getStackInSlot(Constants.LOWER_TOOL); + ItemStack upperStack = inv.getStackInSlot(Constants.TOOL_UPPER); + ItemStack lowerStack = inv.getStackInSlot(Constants.TOOL_LOWER); drawItemStack(upperStack, ToolHandler.getToolHandler(upperStack),0, 0); drawItemStack(lowerStack, ToolHandler.getToolHandler(lowerStack), 0, 16); } diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java index fcf02269..7ae6cd37 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java @@ -260,8 +260,8 @@ private void renderBackpack(Float scale) if (ConfigHandler.enableToolsRender) { - ItemStack upperStack = backpack.getStackInSlot(Constants.UPPER_TOOL); - ItemStack lowerStack = backpack.getStackInSlot(Constants.LOWER_TOOL); + ItemStack upperStack = backpack.getStackInSlot(Constants.TOOL_UPPER); + ItemStack lowerStack = backpack.getStackInSlot(Constants.TOOL_LOWER); upperTool.setStack(upperStack, ToolHandler.getToolHandler(upperStack)); lowerTool.setStack(lowerStack, ToolHandler.getToolHandler(lowerStack)); } diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelCopterPack.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelCopterPack.java index 2798e68d..caaee242 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelCopterPack.java @@ -14,6 +14,9 @@ import com.darkona.adventurebackpack.item.ItemCopterPack; import com.darkona.adventurebackpack.util.Utils; +import static com.darkona.adventurebackpack.common.Constants.Copter.TAG_STATUS; +import static com.darkona.adventurebackpack.common.Constants.TAG_WEARABLE_COMPOUND; + /** * Created on 31/12/2014 * @@ -195,9 +198,11 @@ private void renderCopterPack(Entity entity, float scale) InventoryCopterPack copterInv = new InventoryCopterPack(this.copterPack); copterInv.openInventory(); Axis.isHidden = true; - if (copterPack != null && copterPack.stackTagCompound != null && copterPack.stackTagCompound.hasKey("status")) + if (copterPack != null && copterPack.hasTagCompound() //TODO these checks are terrible. can we get rid of em? + && copterPack.stackTagCompound.hasKey(TAG_WEARABLE_COMPOUND) + && copterPack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).hasKey(TAG_STATUS)) { - if (copterPack.stackTagCompound.getByte("status") != ItemCopterPack.OFF_MODE) + if (copterPack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).getByte(TAG_STATUS) != ItemCopterPack.OFF_MODE) { Axis.isHidden = false; int degrees; diff --git a/src/main/java/com/darkona/adventurebackpack/common/Constants.java b/src/main/java/com/darkona/adventurebackpack/common/Constants.java index 65cb6d66..82f6d24e 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/Constants.java +++ b/src/main/java/com/darkona/adventurebackpack/common/Constants.java @@ -14,57 +14,78 @@ public enum Source //TODO move to separate class? TILE, HOLDING, WEARING } + // General public static final int BUCKET = FluidContainerRegistry.BUCKET_VOLUME; - public static final String WEARABLE_TAG = "wearableData"; //TODO "wearablePack" - public static final String INVENTORY = "inventory"; + // Wearable NBT + public static final String TAG_WEARABLE_COMPOUND = "wearableData"; //TODO "wearablePack" + public static final String TAG_INVENTORY = "inventory"; + + /** + * ### Adventure Backpack ### + */ + public static final int BASIC_TANK_CAPACITY = BUCKET * 4; + //public static final int ADVANCED_TANK_CAPACITY = BUCKET * 8; // upgrade system? + //public static final int HEROIC_TANK_CAPACITY = BUCKET * 12; // Inventory Slots public static final int INVENTORY_SIZE = 54; - public static final int END_OF_INVENTORY = INVENTORY_SIZE - 7; // 0 included - public static final int INVENTORY_MAIN_SIZE = END_OF_INVENTORY + 1; // 0 excluded + public static final int INVENTORY_SPECIAL_SIZE = 6; // tooSlot * 2, bucketIn * 2, bucketOut *2 + public static final int INVENTORY_MAIN_SIZE = INVENTORY_SIZE - INVENTORY_SPECIAL_SIZE; // 0 excluded + public static final int END_OF_INVENTORY = INVENTORY_MAIN_SIZE - 1; // 0 included - public static final int UPPER_TOOL = END_OF_INVENTORY + 1; - public static final int LOWER_TOOL = UPPER_TOOL + 1; + public static final int TOOL_UPPER = END_OF_INVENTORY + 1; + public static final int TOOL_LOWER = TOOL_UPPER + 1; - public static final int BUCKET_IN_LEFT = LOWER_TOOL + 1; + public static final int BUCKET_IN_LEFT = TOOL_LOWER + 1; public static final int BUCKET_OUT_LEFT = BUCKET_IN_LEFT + 1; public static final int BUCKET_IN_RIGHT = BUCKET_OUT_LEFT + 1; public static final int BUCKET_OUT_RIGHT = BUCKET_IN_RIGHT + 1; - // Tanks - public static final String RIGHT_TANK = "rightTank"; //TODO RIGHT_TANK_TAG and so on - public static final String LEFT_TANK = "leftTank"; - public static final int BASIC_TANK_CAPACITY = BUCKET * 4; - //public static final int ADVANCED_TANK_CAPACITY = BUCKET * 8; // upgrade system? - //public static final int HEROIC_TANK_CAPACITY = BUCKET * 12; - + // NBT + public static final String TAG_TYPE = "type"; + public static final String TAG_LEFT_TANK = "leftTank"; + public static final String TAG_RIGHT_TANK = "rightTank"; // NBT: Extended Properties - public static final String HOLDING_SPACE_TAG = "holdingSpace"; + public static final String TAG_HOLDING_SPACE = "holdingSpace"; public static final String TAG_SLEEPING_IN_BAG = "sleepingInBag"; public static final String TAG_STORED_SPAWN = "storedSpawn"; - // Jetpack //TODO subclass jetpack and simplify names? and copter? - public static final int JETPACK_INVENTORY_SIZE = 3; - public static final int JETPACK_BUCKET_IN = 0; - public static final int JETPACK_BUCKET_OUT = 1; - public static final int JETPACK_FUEL_SLOT = 2; + public class Jetpack + { + /** + * ### Coal Jetpack ### + */ + public static final int MAX_TEMPERATURE = 200; + public static final int WATER_CAPACITY = BUCKET * 6; + public static final int STEAM_CAPACITY = BUCKET * 12; + + // Inventory Slots + public static final int INVENTORY_SIZE = 3; + public static final int BUCKET_IN = 0; + public static final int BUCKET_OUT = 1; + public static final int FUEL_SLOT = 2; - //public static final String WEARABLE_TAG = "jetpackData"; - //public static final String INVENTORY = "inventory"; - public static final String JETPACK_STEAM_TANK = "steamTank"; - public static final String JETPACK_WATER_TANK = "waterTank"; - public static final int JETPACK_STEAM_CAPACITY = BUCKET * 12; - public static final int JETPACK_WATER_CAPACITY = BUCKET * 6; + // NBT + public static final String TAG_WATER_TANK = "waterTank"; + public static final String TAG_STEAM_TANK = "steamTank"; + } - public static final int JETPACK_MAX_TEMPERATURE = 200; + public class Copter + { + /** + * ### Copter Pack ### + */ + public static final int FUEL_CAPACITY = BUCKET * 6; - // Copter - public static final int COPTER_INVENTORY_SIZE = 2; - public static final int COPTER_BUCKET_IN = 0; - public static final int COPTER_BUCKET_OUT = 1; + // Inventory Slots + public static final int INVENTORY_SIZE = 2; + public static final int BUCKET_IN = 0; + public static final int BUCKET_OUT = 1; - public static final String COPTER_FUEL_TANK = "fuelTank"; - public static final int COPTER_FUEL_CAPACITY = BUCKET * 6; + // NBT + public static final String TAG_STATUS = "status"; + public static final String TAG_FUEL_TANK = "fuelTank"; + } } diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index b71ae34d..034a2d18 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -37,9 +37,10 @@ import com.darkona.adventurebackpack.util.Wearing; import static com.darkona.adventurebackpack.common.Constants.BUCKET; -import static com.darkona.adventurebackpack.common.Constants.LOWER_TOOL; -import static com.darkona.adventurebackpack.common.Constants.UPPER_TOOL; -import static com.darkona.adventurebackpack.common.Constants.WEARABLE_TAG; +import static com.darkona.adventurebackpack.common.Constants.Copter.TAG_STATUS; +import static com.darkona.adventurebackpack.common.Constants.TOOL_LOWER; +import static com.darkona.adventurebackpack.common.Constants.TOOL_UPPER; +import static com.darkona.adventurebackpack.common.Constants.TAG_WEARABLE_COMPOUND; /** * Created on 23/12/2014 @@ -52,15 +53,14 @@ public class ServerActions public static final boolean HOSE_TOGGLE = true; /** - * Cycles tools. In a cycle. The tool in your hand with the tools in the special tool slots of the backpack, to be precise. + * Cycles tools. In a cycle. The tool in your hand with the tools in the special tool slot of the backpack, to be precise. * - * @param player - Duh - * @param direction - An integer indicating the direction of the switch. Nobody likes to swith always inthe same + * @param player Duh + * @param isWheelUp An boolean indicating the direction of the switch. Nobody likes to swith always in the same * direction all the timeInSeconds. That's stupid. * @param slot The slot that will be switched with the backpack. */ - //Using @Sir-Will dupe fixed - public static void cycleTool(EntityPlayer player, int direction, int slot) + public static void cycleTool(EntityPlayer player, boolean isWheelUp, int slot) { if (!GeneralReference.isDimensionAllowed(player)) return; @@ -72,15 +72,15 @@ public static void cycleTool(EntityPlayer player, int direction, int slot) backpack.openInventory(); if (SlotTool.isValidTool(current)) { - if (direction < 0) + if (isWheelUp) { - player.inventory.mainInventory[slot] = backpack.getStackInSlot(LOWER_TOOL); - backpack.setInventorySlotContentsNoSave(LOWER_TOOL, current); + player.inventory.mainInventory[slot] = backpack.getStackInSlot(TOOL_UPPER); + backpack.setInventorySlotContentsNoSave(TOOL_UPPER, current); } - else if (direction > 0) + else { - player.inventory.mainInventory[slot] = backpack.getStackInSlot(UPPER_TOOL); - backpack.setInventorySlotContentsNoSave(UPPER_TOOL, current); + player.inventory.mainInventory[slot] = backpack.getStackInSlot(TOOL_LOWER); + backpack.setInventorySlotContentsNoSave(TOOL_LOWER, current); } } //old behavior, cycling all 3 slots: @@ -88,15 +88,15 @@ else if (direction > 0) { if (direction < 0) { - player.inventory.mainInventory[slot] = backpack.getStackInSlot(UPPER_TOOL); - backpack.setInventorySlotContentsNoSave(UPPER_TOOL, backpack.getStackInSlot(LOWER_TOOL)); - backpack.setInventorySlotContentsNoSave(LOWER_TOOL, current); + player.inventory.mainInventory[slot] = backpack.getStackInSlot(TOOL_UPPER); + backpack.setInventorySlotContentsNoSave(TOOL_UPPER, backpack.getStackInSlot(TOOL_LOWER)); + backpack.setInventorySlotContentsNoSave(TOOL_LOWER, current); } else if (direction > 0) { - player.inventory.mainInventory[slot] = backpack.getStackInSlot(LOWER_TOOL); - backpack.setInventorySlotContentsNoSave(LOWER_TOOL, backpack.getStackInSlot(UPPER_TOOL)); - backpack.setInventorySlotContentsNoSave(UPPER_TOOL, current); + player.inventory.mainInventory[slot] = backpack.getStackInSlot(TOOL_LOWER); + backpack.setInventorySlotContentsNoSave(TOOL_LOWER, backpack.getStackInSlot(TOOL_UPPER)); + backpack.setInventorySlotContentsNoSave(TOOL_UPPER, current); } }*/ backpack.markDirty(); @@ -130,11 +130,11 @@ public static boolean setFluidEffect(World world, EntityPlayer player, FluidTank /** * @param player Duh! - * @param direction The direction in which the hose modes will switch. + * @param isWheelUp The direction in which the hose modes will switch. * @param action The type of the action to be performed on the hose. * Can be HOSE_SWITCH for mode or HOSE_TOGGLE for tank */ - public static void switchHose(EntityPlayer player, int direction, boolean action) + public static void switchHose(EntityPlayer player, boolean isWheelUp, boolean action) { if (Wearing.isHoldingHose(player)) { @@ -148,11 +148,11 @@ public static void switchHose(EntityPlayer player, int direction, boolean action { mode = (mode + 1) % 2; } - else if (direction > 0) + else if (isWheelUp) { mode = (mode + 1) % 3; } - else if (direction < 0) + else { mode = (mode - 1 < 0) ? 2 : mode - 1; } @@ -341,7 +341,8 @@ public static void pistonBootsJump(EntityPlayer player) public static void copterSoundAtLogin(EntityPlayer player) { - byte status = BackpackProperty.get(player).getWearable().getTagCompound().getByte("status"); + byte status = BackpackProperty.get(player).getWearable().getTagCompound() + .getCompoundTag(TAG_WEARABLE_COMPOUND).getByte(TAG_STATUS); if (!player.worldObj.isRemote && status != ItemCopterPack.OFF_MODE) { @@ -352,7 +353,7 @@ public static void copterSoundAtLogin(EntityPlayer player) public static void jetpackSoundAtLogin(EntityPlayer player) { boolean isBoiling = BackpackProperty.get(player).getWearable().getTagCompound() - .getCompoundTag(WEARABLE_TAG).getBoolean("boiling"); + .getCompoundTag(TAG_WEARABLE_COMPOUND).getBoolean("boiling"); if (!player.worldObj.isRemote && isBoiling) { @@ -365,7 +366,7 @@ public static void toggleCopterPack(EntityPlayer player, ItemStack copter, byte { String message = ""; boolean actionPerformed = false; - byte mode = copter.stackTagCompound.getByte("status"); + byte mode = copter.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).getByte(TAG_STATUS); byte newMode = ItemCopterPack.OFF_MODE; if (type == WearableModePacket.COPTER_ON_OFF) @@ -406,7 +407,7 @@ public static void toggleCopterPack(EntityPlayer player, ItemStack copter, byte if (actionPerformed) { - copter.stackTagCompound.setByte("status", newMode); + copter.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setByte(TAG_STATUS, newMode); if (player.worldObj.isRemote) { player.addChatComponentMessage(new ChatComponentTranslation(message)); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java index a1636e05..798d6c9c 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java @@ -33,10 +33,9 @@ public void mouseWheelDetect(MouseEvent event) { /*Special thanks go to MachineMuse, both for inspiration and the event. God bless you girl.*/ Minecraft mc = Minecraft.getMinecraft(); - int dWheel = event.dwheel; - if (dWheel != 0) + if (event.dwheel != 0) { - //LogHelper.debug("Mouse Wheel moving"); + boolean isWheelUp = event.dwheel > 0; EntityClientPlayerMP player = mc.thePlayer; if (player != null && !player.isDead && player.isSneaking()) { @@ -52,15 +51,15 @@ public void mouseWheelDetect(MouseEvent event) if ((ConfigHandler.enableToolsCycling && !Wearing.getWearingBackpackInv(player).getDisableCycling() && SlotTool.isValidTool(heldItem)) || (BackpackTypes.getType(backpack) == BackpackTypes.SKELETON && theItem.equals(Items.bow))) { - ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(dWheel, slot, CycleToolPacket.CYCLE_TOOL_ACTION)); - ServerActions.cycleTool(player, dWheel, slot); + ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(isWheelUp, slot, CycleToolPacket.CYCLE_TOOL_ACTION)); + ServerActions.cycleTool(player, isWheelUp, slot); event.setCanceled(true); } if (theItem instanceof ItemHose) { - ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(dWheel, slot, CycleToolPacket.SWITCH_HOSE_ACTION)); - ServerActions.switchHose(player, dWheel, ServerActions.HOSE_SWITCH); + ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(isWheelUp, slot, CycleToolPacket.SWITCH_HOSE_ACTION)); + ServerActions.switchHose(player, isWheelUp, ServerActions.HOSE_SWITCH); event.setCanceled(true); } } diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java index 09a1692d..6ece8192 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java @@ -76,8 +76,8 @@ else if (Wearing.isHoldingBackpack(player)) { if (Wearing.isHoldingHose(player)) { - sendCycleToolPacket(0, player.inventory.currentItem, CycleToolPacket.TOGGLE_HOSE_TANK); - ServerActions.switchHose(player, 0, ServerActions.HOSE_TOGGLE); + sendCycleToolPacket( player.inventory.currentItem, CycleToolPacket.TOGGLE_HOSE_TANK); + ServerActions.switchHose(player, false, ServerActions.HOSE_TOGGLE); } else if (Wearing.isWearingBackpack(player)) { @@ -160,9 +160,9 @@ private void sendWearableModePacket(byte type) ModNetwork.net.sendToServer(new WearableModePacket.Message(type, "")); //TODO playerID? } - private void sendCycleToolPacket(int direction, int slot, byte type) + private void sendCycleToolPacket(int slot, byte type) { - ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(direction, slot, type)); + ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(false, slot, type)); } private void sendPlayerActionPacket(byte type) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 9b1d28f6..a74a7922 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -275,7 +275,7 @@ public void playerCraftsBackpack(PlayerEvent.ItemCraftedEvent event) { if (event.crafting.getItem() == ModItems.adventureBackpack) { - LogHelper.info("Player crafted a backpack, and that backpack's appearance is: " + BackpackTypes.getSkinName(event.crafting.getTagCompound().getByte("type"))); + LogHelper.info("Player crafted a backpack, and that backpack's appearance is: " + BackpackTypes.getSkinName(event.crafting)); if (!ConfigHandler.consumeDragonEgg && BackpackTypes.getType(event.crafting) == BackpackTypes.DRAGON) { event.player.dropPlayerItemWithRandomChoice(new ItemStack(Blocks.dragon_egg, 1), false); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java index d4cc307e..ae55ffae 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java @@ -51,17 +51,17 @@ public void itemsTooltips(ItemTooltipEvent event) if (theItem instanceof ItemAdventureBackpack) { FluidTank tank = new FluidTank(Constants.BASIC_TANK_CAPACITY); - NBTTagCompound backpackTag = event.itemStack.stackTagCompound.getCompoundTag(Constants.WEARABLE_TAG); + NBTTagCompound backpackTag = event.itemStack.stackTagCompound.getCompoundTag(Constants.TAG_WEARABLE_COMPOUND); if (GuiScreen.isShiftKeyDown()) { - NBTTagList itemList = backpackTag.getTagList(Constants.INVENTORY, NBT.TAG_COMPOUND); + NBTTagList itemList = backpackTag.getTagList(Constants.TAG_INVENTORY, NBT.TAG_COMPOUND); makeTip(local("backpack.slots.used") + ": " + inventoryTooltip(itemList)); - tank.readFromNBT(backpackTag.getCompoundTag(Constants.LEFT_TANK)); + tank.readFromNBT(backpackTag.getCompoundTag(Constants.TAG_LEFT_TANK)); makeTip(local("backpack.tank.left") + ": " + tankTooltip(tank)); - tank.readFromNBT(backpackTag.getCompoundTag(Constants.RIGHT_TANK)); + tank.readFromNBT(backpackTag.getCompoundTag(Constants.TAG_RIGHT_TANK)); makeTip(local("backpack.tank.right") + ": " + tankTooltip(tank)); shiftFooter(); @@ -78,7 +78,7 @@ else if (!GuiScreen.isCtrlKeyDown()) makeTip(pressKeyFormat(actionKeyFormat()), locals("backpack.cycling.key"), " " + switchTooltip(!cycling, false)); - if (BackpackTypes.isNightVision(BackpackTypes.getType(backpackTag.getByte("type")))) + if (BackpackTypes.isNightVision(BackpackTypes.getType(backpackTag.getByte(Constants.TAG_TYPE)))) { boolean vision = !backpackTag.getBoolean("disableNVision"); makeTip(local("backpack.vision") + ": " + switchTooltip(vision, true)); @@ -89,19 +89,19 @@ else if (!GuiScreen.isCtrlKeyDown()) } else if (theItem instanceof ItemCoalJetpack) { - FluidTank waterTank = new FluidTank(Constants.JETPACK_WATER_CAPACITY); - FluidTank steamTank = new FluidTank(Constants.JETPACK_STEAM_CAPACITY); - NBTTagCompound jetpackTag = event.itemStack.stackTagCompound.getCompoundTag(Constants.WEARABLE_TAG); + FluidTank waterTank = new FluidTank(Constants.Jetpack.WATER_CAPACITY); + FluidTank steamTank = new FluidTank(Constants.Jetpack.STEAM_CAPACITY); + NBTTagCompound jetpackTag = event.itemStack.stackTagCompound.getCompoundTag(Constants.TAG_WEARABLE_COMPOUND); if (GuiScreen.isShiftKeyDown()) { - NBTTagList itemList = jetpackTag.getTagList(Constants.INVENTORY, NBT.TAG_COMPOUND); - makeTip(local("jetpack.fuel") + ": " + slotStackTooltip(itemList, Constants.JETPACK_FUEL_SLOT)); + NBTTagList itemList = jetpackTag.getTagList(Constants.TAG_INVENTORY, NBT.TAG_COMPOUND); + makeTip(local("jetpack.fuel") + ": " + slotStackTooltip(itemList, Constants.Jetpack.FUEL_SLOT)); - waterTank.readFromNBT(jetpackTag.getCompoundTag(Constants.JETPACK_WATER_TANK)); + waterTank.readFromNBT(jetpackTag.getCompoundTag(Constants.Jetpack.TAG_WATER_TANK)); makeTip(local("jetpack.tank.water") + ": " + tankTooltip(waterTank)); - steamTank.readFromNBT(jetpackTag.getCompoundTag(Constants.JETPACK_STEAM_TANK)); + steamTank.readFromNBT(jetpackTag.getCompoundTag(Constants.Jetpack.TAG_STEAM_TANK)); // special case for steam, have to set displayed fluid name manually, cuz technically it's water String theSteam = steamTank.getFluidAmount() > 0 ? EnumChatFormatting.AQUA + local("steam") : ""; makeTip(local("jetpack.tank.steam") + ": " + tankTooltip(steamTank, false) + theSteam); @@ -121,11 +121,12 @@ else if (!GuiScreen.isCtrlKeyDown()) } else if (theItem instanceof ItemCopterPack) { - FluidTank fuelTank = new FluidTank(Constants.COPTER_FUEL_CAPACITY); + FluidTank fuelTank = new FluidTank(Constants.Copter.FUEL_CAPACITY); + NBTTagCompound copterTag = event.itemStack.stackTagCompound.getCompoundTag(Constants.TAG_WEARABLE_COMPOUND); if (GuiScreen.isShiftKeyDown()) { - fuelTank.readFromNBT(event.itemStack.stackTagCompound.getCompoundTag(Constants.COPTER_FUEL_TANK)); + fuelTank.readFromNBT(copterTag.getCompoundTag(Constants.Copter.TAG_FUEL_TANK)); makeTip(local("copter.tank.fuel") + ": " + tankTooltip(fuelTank)); makeTip(local("copter.rate.fuel") + ": " + fuelConsumptionTooltip(fuelTank)); @@ -248,11 +249,11 @@ public static String inventoryTooltip(NBTTagList itemList) for (int i = itemCount - 1; i >= 0; i--) { int slotAtI = itemList.getCompoundTagAt(i).getInteger("Slot"); - if (slotAtI < Constants.UPPER_TOOL) + if (slotAtI < Constants.TOOL_UPPER) break; - else if (slotAtI == Constants.UPPER_TOOL) + else if (slotAtI == Constants.TOOL_UPPER) toolSlotU = true; - else if (slotAtI == Constants.LOWER_TOOL) + else if (slotAtI == Constants.TOOL_LOWER) toolSlotL = true; else itemCount--; // this need for correct count while GUI is open and bucket slots may be occupied diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java index f9ceb697..b771bb6e 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java @@ -53,7 +53,9 @@ public static void init() { //Copter Pack ItemStack copterStack = new ItemStack(ModItems.copterPack); - copterStack.setTagCompound(new NBTTagCompound()); //TODO rework + NBTTagCompound copterCompound = new NBTTagCompound(); + copterCompound.setTag(Constants.TAG_WEARABLE_COMPOUND, new NBTTagCompound()); + copterStack.setTagCompound(copterCompound); //TODO check GameRegistry.addRecipe(copterStack, "WBW", @@ -73,7 +75,7 @@ public static void init() //CoalJetpack ItemStack jetpackStack = new ItemStack(ModItems.coalJetpack); NBTTagCompound jetpackCompound = new NBTTagCompound(); - jetpackCompound.setTag(Constants.WEARABLE_TAG, new NBTTagCompound()); + jetpackCompound.setTag(Constants.TAG_WEARABLE_COMPOUND, new NBTTagCompound()); jetpackStack.setTagCompound(jetpackCompound); //TODO check GameRegistry.addRecipe(jetpackStack, diff --git a/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipeTwo.java b/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipeTwo.java index edc3d8f8..0103fd77 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipeTwo.java +++ b/src/main/java/com/darkona/adventurebackpack/init/recipes/AbstractBackpackRecipeTwo.java @@ -9,12 +9,14 @@ import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.reference.BackpackTypes; +import static com.darkona.adventurebackpack.common.Constants.TAG_TYPE; + /** * Created on 24/12/2014 * * @author Darkona */ -public class AbstractBackpackRecipeTwo implements IRecipe +public class AbstractBackpackRecipeTwo implements IRecipe //TODO unused class { private ItemStack result; private ItemStack[] recipe; @@ -45,16 +47,18 @@ else if (stack1 != null && stack2 != null) private static ItemStack makeBackpack(ItemStack backpackIn, BackpackTypes type) { - if (backpackIn == null) return null; + if (backpackIn == null) + return null; + if (backpackIn.stackTagCompound == null) { backpackIn.setTagCompound(new NBTTagCompound()); - backpackIn.stackTagCompound.setByte("type", BackpackTypes.getMeta(type)); + backpackIn.stackTagCompound.setByte(TAG_TYPE, BackpackTypes.getMeta(type)); } ItemStack newBackpack = backpackIn.copy(); NBTTagCompound compound = (NBTTagCompound) backpackIn.getTagCompound().copy(); newBackpack.setTagCompound(compound); - newBackpack.stackTagCompound.setByte("type", BackpackTypes.getMeta(type)); + newBackpack.stackTagCompound.setByte(TAG_TYPE, BackpackTypes.getMeta(type)); return newBackpack; } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index b5849f2c..e626beca 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -17,8 +17,8 @@ import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_RIGHT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_LEFT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_RIGHT; -import static com.darkona.adventurebackpack.common.Constants.LOWER_TOOL; -import static com.darkona.adventurebackpack.common.Constants.UPPER_TOOL; +import static com.darkona.adventurebackpack.common.Constants.TOOL_LOWER; +import static com.darkona.adventurebackpack.common.Constants.TOOL_UPPER; /** * Created on 12/10/2014 @@ -86,8 +86,8 @@ private void makeSlots(InventoryPlayer invPlayer) } } - addSlotToContainer(new SlotTool(inventory, UPPER_TOOL, 44, 79)); // #49 [84] - addSlotToContainer(new SlotTool(inventory, LOWER_TOOL, 44, 97)); // #50 [85] + addSlotToContainer(new SlotTool(inventory, TOOL_UPPER, 44, 79)); // #49 [84] + addSlotToContainer(new SlotTool(inventory, TOOL_LOWER, 44, 97)); // #50 [85] addSlotToContainer(new SlotFluid(inventory, BUCKET_IN_LEFT, 6, 7)); // #51 [86] addSlotToContainer(new SlotFluid(inventory, BUCKET_OUT_LEFT, 6, 37)); // #52 [87] @@ -117,7 +117,7 @@ protected boolean detectChanges() ItemStack[] inv = inventory.getInventory(); int tempCount = 0; - for (int i = 0; i <= LOWER_TOOL; i++) + for (int i = 0; i <= TOOL_LOWER; i++) { if (inv[i] != null) tempCount++; @@ -191,7 +191,7 @@ private boolean mergeRightBucket(ItemStack stack) private boolean isHoldingSpace() { - return inventory.getExtendedProperties().hasKey(Constants.HOLDING_SPACE_TAG); + return inventory.getExtendedProperties().hasKey(Constants.TAG_HOLDING_SPACE); } private boolean transferFluidContainer(ItemStack container) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java index 3500a4d8..92ec38ea 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java @@ -7,8 +7,8 @@ import com.darkona.adventurebackpack.common.Constants.Source; -import static com.darkona.adventurebackpack.common.Constants.COPTER_BUCKET_IN; -import static com.darkona.adventurebackpack.common.Constants.COPTER_BUCKET_OUT; +import static com.darkona.adventurebackpack.common.Constants.Copter.BUCKET_IN; +import static com.darkona.adventurebackpack.common.Constants.Copter.BUCKET_OUT; /** * Created on 03/01/2015 @@ -41,8 +41,8 @@ private void makeSlots(InventoryPlayer invPlayer) { bindPlayerInventory(invPlayer, 8, 84); - addSlotToContainer(new SlotFluidFuel(inventory, COPTER_BUCKET_IN, 44, 23)); - addSlotToContainer(new SlotFluidFuel(inventory, COPTER_BUCKET_OUT, 44, 53)); + addSlotToContainer(new SlotFluidFuel(inventory, BUCKET_IN, 44, 23)); + addSlotToContainer(new SlotFluidFuel(inventory, BUCKET_OUT, 44, 53)); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java index 443f8ad2..9190ce52 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java @@ -5,10 +5,11 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidTank; -import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.common.Constants.Source; -import static com.darkona.adventurebackpack.common.Constants.JETPACK_FUEL_SLOT; +import static com.darkona.adventurebackpack.common.Constants.Jetpack.BUCKET_IN; +import static com.darkona.adventurebackpack.common.Constants.Jetpack.BUCKET_OUT; +import static com.darkona.adventurebackpack.common.Constants.Jetpack.FUEL_SLOT; /** * Created on 15/01/2015 @@ -45,9 +46,9 @@ private void makeSlots(InventoryPlayer invPlayer) { bindPlayerInventory(invPlayer, 8, 84); - addSlotToContainer(new SlotFluidWater(inventory, Constants.JETPACK_BUCKET_IN, 30, 22)); - addSlotToContainer(new SlotFluidWater(inventory, Constants.JETPACK_BUCKET_OUT, 30, 52)); - addSlotToContainer(new SlotFuel(inventory, JETPACK_FUEL_SLOT, 77, 64)); + addSlotToContainer(new SlotFluidWater(inventory, BUCKET_IN, 30, 22)); + addSlotToContainer(new SlotFluidWater(inventory, BUCKET_OUT, 30, 52)); + addSlotToContainer(new SlotFuel(inventory, FUEL_SLOT, 77, 64)); } @Override @@ -56,9 +57,9 @@ protected boolean detectChanges() boolean changesDetected = false; ItemStack[] inv = inventory.getInventory(); - if (inv[JETPACK_FUEL_SLOT] != fuelStack) + if (inv[FUEL_SLOT] != fuelStack) { - fuelStack = inv[JETPACK_FUEL_SLOT]; + fuelStack = inv[FUEL_SLOT]; changesDetected = true; } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index 9ff39c52..24d99b04 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -20,10 +20,11 @@ import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_RIGHT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_LEFT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_RIGHT; -import static com.darkona.adventurebackpack.common.Constants.INVENTORY; -import static com.darkona.adventurebackpack.common.Constants.LEFT_TANK; -import static com.darkona.adventurebackpack.common.Constants.RIGHT_TANK; -import static com.darkona.adventurebackpack.common.Constants.WEARABLE_TAG; +import static com.darkona.adventurebackpack.common.Constants.TAG_INVENTORY; +import static com.darkona.adventurebackpack.common.Constants.TAG_LEFT_TANK; +import static com.darkona.adventurebackpack.common.Constants.TAG_RIGHT_TANK; +import static com.darkona.adventurebackpack.common.Constants.TAG_TYPE; +import static com.darkona.adventurebackpack.common.Constants.TAG_WEARABLE_COMPOUND; /** * Created on 12/10/2014 @@ -63,17 +64,17 @@ private void detectAndConvertFromOldNBTFormat(NBTTagCompound compound) // backwa NBTTagCompound oldBackpackTag = compound.getCompoundTag("backpackData"); NBTTagList oldItems = oldBackpackTag.getTagList("ABPItems", NBT.TAG_COMPOUND); - leftTank.readFromNBT(oldBackpackTag.getCompoundTag(LEFT_TANK)); - rightTank.readFromNBT(oldBackpackTag.getCompoundTag(RIGHT_TANK)); + leftTank.readFromNBT(oldBackpackTag.getCompoundTag(TAG_LEFT_TANK)); + rightTank.readFromNBT(oldBackpackTag.getCompoundTag(TAG_RIGHT_TANK)); type = BackpackTypes.getType(oldBackpackTag.getString("colorName")); NBTTagCompound newBackpackTag = new NBTTagCompound(); - newBackpackTag.setTag(INVENTORY, oldItems); - newBackpackTag.setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); - newBackpackTag.setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); - newBackpackTag.setByte("type", BackpackTypes.getMeta(type)); + newBackpackTag.setTag(TAG_INVENTORY, oldItems); + newBackpackTag.setTag(TAG_RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); + newBackpackTag.setTag(TAG_LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); + newBackpackTag.setByte(TAG_TYPE, BackpackTypes.getMeta(type)); - compound.setTag(WEARABLE_TAG, newBackpackTag); + compound.setTag(TAG_WEARABLE_COMPOUND, newBackpackTag); compound.removeTag("backpackData"); } @@ -182,14 +183,14 @@ public void setLastTime(int time) @Override public void dirtyTime() { - containerStack.stackTagCompound.getCompoundTag(WEARABLE_TAG).setInteger("lastTime", lastTime); + containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setInteger("lastTime", lastTime); } @Override public void dirtyExtended() { - containerStack.stackTagCompound.getCompoundTag(WEARABLE_TAG).removeTag("extendedProperties"); - containerStack.stackTagCompound.getCompoundTag(WEARABLE_TAG).setTag("extendedProperties", extendedProperties); + containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).removeTag("extendedProperties"); + containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setTag("extendedProperties", extendedProperties); } @Override @@ -234,9 +235,9 @@ public void loadFromNBT(NBTTagCompound compound) if (compound == null) return; //this need for NEI trying to render tile.backpack and comes here w/o nbt - NBTTagCompound backpackTag = compound.getCompoundTag(WEARABLE_TAG); - type = BackpackTypes.getType(backpackTag.getByte("type")); - NBTTagList items = backpackTag.getTagList(INVENTORY, NBT.TAG_COMPOUND); + NBTTagCompound backpackTag = compound.getCompoundTag(TAG_WEARABLE_COMPOUND); + type = BackpackTypes.getType(backpackTag.getByte(TAG_TYPE)); + NBTTagList items = backpackTag.getTagList(TAG_INVENTORY, NBT.TAG_COMPOUND); for (int i = 0; i < items.tagCount(); i++) { NBTTagCompound item = items.getCompoundTagAt(i); @@ -246,8 +247,8 @@ public void loadFromNBT(NBTTagCompound compound) inventory[slot] = ItemStack.loadItemStackFromNBT(item); } } - leftTank.readFromNBT(backpackTag.getCompoundTag(LEFT_TANK)); - rightTank.readFromNBT(backpackTag.getCompoundTag(RIGHT_TANK)); + leftTank.readFromNBT(backpackTag.getCompoundTag(TAG_LEFT_TANK)); + rightTank.readFromNBT(backpackTag.getCompoundTag(TAG_RIGHT_TANK)); extendedProperties = backpackTag.getCompoundTag("extendedProperties"); sleepingBagDeployed = extendedProperties.getBoolean("sleepingBagDeployed"); if (sleepingBagDeployed) @@ -265,7 +266,7 @@ public void loadFromNBT(NBTTagCompound compound) public void saveToNBT(NBTTagCompound compound) { NBTTagCompound backpackTag = new NBTTagCompound(); - backpackTag.setByte("type", BackpackTypes.getMeta(type)); + backpackTag.setByte(TAG_TYPE, BackpackTypes.getMeta(type)); NBTTagList items = new NBTTagList(); for (int i = 0; i < inventory.length; i++) { @@ -278,10 +279,10 @@ public void saveToNBT(NBTTagCompound compound) items.appendTag(item); } } - backpackTag.removeTag(INVENTORY); - backpackTag.setTag(INVENTORY, items); - backpackTag.setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); - backpackTag.setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); + backpackTag.removeTag(TAG_INVENTORY); + backpackTag.setTag(TAG_INVENTORY, items); + backpackTag.setTag(TAG_RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); + backpackTag.setTag(TAG_LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); backpackTag.setTag("extendedProperties", extendedProperties); extendedProperties.setBoolean("sleepingBagDeployed", sleepingBagDeployed); if (sleepingBagDeployed) @@ -300,7 +301,7 @@ public void saveToNBT(NBTTagCompound compound) backpackTag.setBoolean("disableNVision", disableNVision); backpackTag.setInteger("lastTime", lastTime); - compound.setTag(WEARABLE_TAG, backpackTag); + compound.setTag(TAG_WEARABLE_COMPOUND, backpackTag); } @Override @@ -339,15 +340,15 @@ public void dirtyInventory() items.appendTag(item); } } - containerStack.stackTagCompound.getCompoundTag(WEARABLE_TAG).removeTag(INVENTORY); - containerStack.stackTagCompound.getCompoundTag(WEARABLE_TAG).setTag(INVENTORY, items); + containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).removeTag(TAG_INVENTORY); + containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setTag(TAG_INVENTORY, items); } @Override public void dirtyTanks() { - containerStack.stackTagCompound.getCompoundTag(WEARABLE_TAG).setTag(LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); - containerStack.stackTagCompound.getCompoundTag(WEARABLE_TAG).setTag(RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setTag(TAG_LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setTag(TAG_RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index 9757dcbf..5f62d378 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -9,13 +9,13 @@ import com.darkona.adventurebackpack.common.Constants; -import static com.darkona.adventurebackpack.common.Constants.WEARABLE_TAG; -import static com.darkona.adventurebackpack.common.Constants.INVENTORY; -import static com.darkona.adventurebackpack.common.Constants.JETPACK_BUCKET_IN; -import static com.darkona.adventurebackpack.common.Constants.JETPACK_BUCKET_OUT; -import static com.darkona.adventurebackpack.common.Constants.JETPACK_FUEL_SLOT; -import static com.darkona.adventurebackpack.common.Constants.JETPACK_STEAM_TANK; -import static com.darkona.adventurebackpack.common.Constants.JETPACK_WATER_TANK; +import static com.darkona.adventurebackpack.common.Constants.TAG_INVENTORY; +import static com.darkona.adventurebackpack.common.Constants.Jetpack.BUCKET_IN; +import static com.darkona.adventurebackpack.common.Constants.Jetpack.BUCKET_OUT; +import static com.darkona.adventurebackpack.common.Constants.Jetpack.FUEL_SLOT; +import static com.darkona.adventurebackpack.common.Constants.Jetpack.TAG_STEAM_TANK; +import static com.darkona.adventurebackpack.common.Constants.Jetpack.TAG_WATER_TANK; +import static com.darkona.adventurebackpack.common.Constants.TAG_WEARABLE_COMPOUND; /** * Created on 15/01/2015 @@ -26,9 +26,9 @@ public class InventoryCoalJetpack extends InventoryAdventureBackpack { public int currentItemBurnTime = 0; - private ItemStack[] inventory = new ItemStack[Constants.JETPACK_INVENTORY_SIZE]; - private FluidTank waterTank = new FluidTank(Constants.JETPACK_WATER_CAPACITY); - private FluidTank steamTank = new FluidTank(Constants.JETPACK_STEAM_CAPACITY); + private ItemStack[] inventory = new ItemStack[Constants.Jetpack.INVENTORY_SIZE]; + private FluidTank waterTank = new FluidTank(Constants.Jetpack.WATER_CAPACITY); + private FluidTank steamTank = new FluidTank(Constants.Jetpack.STEAM_CAPACITY); private boolean boiling = false; private boolean inUse = false; @@ -42,9 +42,29 @@ public class InventoryCoalJetpack extends InventoryAdventureBackpack public InventoryCoalJetpack(final ItemStack jetpack) { containerStack = jetpack; + detectAndConvertFromOldNBTFormat(containerStack.stackTagCompound); openInventory(); } + private void detectAndConvertFromOldNBTFormat(NBTTagCompound compound) // backwards compatibility + { + if (compound == null || !compound.hasKey("jetpackData")) + return; + + NBTTagCompound oldJetpackTag = compound.getCompoundTag("jetpackData"); + NBTTagList oldItems = oldJetpackTag.getTagList("inventory", NBT.TAG_COMPOUND); + waterTank.readFromNBT(oldJetpackTag.getCompoundTag(TAG_WATER_TANK)); + steamTank.readFromNBT(oldJetpackTag.getCompoundTag(TAG_STEAM_TANK)); + + NBTTagCompound newJetpackTag = new NBTTagCompound(); + newJetpackTag.setTag(TAG_INVENTORY, oldItems); + newJetpackTag.setTag(TAG_WATER_TANK, waterTank.writeToNBT(new NBTTagCompound())); + newJetpackTag.setTag(TAG_STEAM_TANK, steamTank.writeToNBT(new NBTTagCompound())); + + compound.setTag(TAG_WEARABLE_COMPOUND, newJetpackTag); + compound.removeTag("jetpackData"); + } + public int getBurnTimeRemainingScaled(int scale) { if (this.currentItemBurnTime == 0) @@ -58,9 +78,9 @@ public int getBurnTimeRemainingScaled(int scale) @Override public void loadFromNBT(NBTTagCompound compound) { - NBTTagCompound jetpackTag = compound.getCompoundTag(WEARABLE_TAG); - waterTank.readFromNBT(jetpackTag.getCompoundTag(JETPACK_WATER_TANK)); - steamTank.readFromNBT(jetpackTag.getCompoundTag(JETPACK_STEAM_TANK)); + NBTTagCompound jetpackTag = compound.getCompoundTag(TAG_WEARABLE_COMPOUND); + waterTank.readFromNBT(jetpackTag.getCompoundTag(TAG_WATER_TANK)); + steamTank.readFromNBT(jetpackTag.getCompoundTag(TAG_STEAM_TANK)); temperature = jetpackTag.getInteger("temperature"); status = jetpackTag.getBoolean("status"); burnTicks = jetpackTag.getInteger("burnTicks"); @@ -70,7 +90,7 @@ public void loadFromNBT(NBTTagCompound compound) boiling = jetpackTag.getBoolean("boiling"); leaking = jetpackTag.getBoolean("leaking"); currentItemBurnTime = jetpackTag.getInteger("currentBurn"); - NBTTagList items = jetpackTag.getTagList(INVENTORY, NBT.TAG_COMPOUND); + NBTTagList items = jetpackTag.getTagList(TAG_INVENTORY, NBT.TAG_COMPOUND); for (int i = 0; i < items.tagCount(); i++) { NBTTagCompound item = items.getCompoundTagAt(i); @@ -85,9 +105,9 @@ public void loadFromNBT(NBTTagCompound compound) @Override public void saveToNBT(NBTTagCompound compound) { - NBTTagCompound jetpackTag = compound.getCompoundTag(WEARABLE_TAG); - jetpackTag.setTag(JETPACK_WATER_TANK, waterTank.writeToNBT(new NBTTagCompound())); - jetpackTag.setTag(JETPACK_STEAM_TANK, steamTank.writeToNBT(new NBTTagCompound())); + NBTTagCompound jetpackTag = compound.getCompoundTag(TAG_WEARABLE_COMPOUND); + jetpackTag.setTag(TAG_WATER_TANK, waterTank.writeToNBT(new NBTTagCompound())); + jetpackTag.setTag(TAG_STEAM_TANK, steamTank.writeToNBT(new NBTTagCompound())); jetpackTag.setInteger("temperature", temperature); jetpackTag.setBoolean("status", status); jetpackTag.setInteger("burnTicks", burnTicks); @@ -109,8 +129,8 @@ public void saveToNBT(NBTTagCompound compound) items.appendTag(item); } } - jetpackTag.setTag(INVENTORY, items); - compound.setTag(WEARABLE_TAG, jetpackTag); + jetpackTag.setTag(TAG_INVENTORY, items); + compound.setTag(TAG_WEARABLE_COMPOUND, jetpackTag); } @Override @@ -123,7 +143,7 @@ public FluidTank[] getTanksArray() public boolean updateTankSlots() { boolean result = false; - while (InventoryActions.transferContainerTank(this, getWaterTank(), JETPACK_BUCKET_IN)) + while (InventoryActions.transferContainerTank(this, getWaterTank(), BUCKET_IN)) result = true; return result; } @@ -147,19 +167,19 @@ public void dirtyInventory() items.appendTag(item); } } - containerStack.stackTagCompound.getCompoundTag(WEARABLE_TAG).setTag(INVENTORY, items); + containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setTag(TAG_INVENTORY, items); } @Override public void dirtyTanks() { - containerStack.stackTagCompound.getCompoundTag(WEARABLE_TAG).setTag(JETPACK_WATER_TANK, waterTank.writeToNBT(new NBTTagCompound())); - containerStack.stackTagCompound.getCompoundTag(WEARABLE_TAG).setTag(JETPACK_STEAM_TANK, steamTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setTag(TAG_WATER_TANK, waterTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setTag(TAG_STEAM_TANK, steamTank.writeToNBT(new NBTTagCompound())); } public void dirtyBoiler() { - NBTTagCompound jetpackTag = containerStack.stackTagCompound.getCompoundTag(WEARABLE_TAG); + NBTTagCompound jetpackTag = containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND); jetpackTag.setBoolean("boiling", boiling); jetpackTag.setBoolean("leaking", leaking); jetpackTag.setInteger("temperature", temperature); @@ -171,13 +191,13 @@ public void dirtyBoiler() public int consumeFuel() { int result = 0; - if (isFuel(inventory[JETPACK_FUEL_SLOT])) + if (isFuel(inventory[FUEL_SLOT])) { - result = TileEntityFurnace.getItemBurnTime(inventory[JETPACK_FUEL_SLOT]); - --inventory[JETPACK_FUEL_SLOT].stackSize; - if (inventory[JETPACK_FUEL_SLOT].stackSize == 0) + result = TileEntityFurnace.getItemBurnTime(inventory[FUEL_SLOT]); + --inventory[FUEL_SLOT].stackSize; + if (inventory[FUEL_SLOT].stackSize == 0) { - inventory[JETPACK_FUEL_SLOT] = inventory[JETPACK_FUEL_SLOT].getItem().getContainerItem(inventory[JETPACK_FUEL_SLOT]); + inventory[FUEL_SLOT] = inventory[FUEL_SLOT].getItem().getContainerItem(inventory[FUEL_SLOT]); } dirtyInventory(); } @@ -237,7 +257,7 @@ public ItemStack decrStackSize(int slot, int quantity) { if (itemstack.stackSize <= quantity) { - if (slot == JETPACK_FUEL_SLOT) + if (slot == FUEL_SLOT) { setInventorySlotContents(slot, itemstack.getItem().getContainerItem(itemstack)); } @@ -257,7 +277,7 @@ public ItemStack decrStackSize(int slot, int quantity) @Override public ItemStack getStackInSlotOnClosing(int slot) { - return (slot == JETPACK_BUCKET_IN || slot == JETPACK_BUCKET_OUT) ? inventory[slot] : null; + return (slot == BUCKET_IN || slot == BUCKET_OUT) ? inventory[slot] : null; } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java index b6db5e63..a866af69 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java @@ -7,10 +7,12 @@ import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.item.ItemCopterPack; -import static com.darkona.adventurebackpack.common.Constants.COPTER_BUCKET_IN; -import static com.darkona.adventurebackpack.common.Constants.COPTER_BUCKET_OUT; -import static com.darkona.adventurebackpack.common.Constants.COPTER_FUEL_TANK; -import static com.darkona.adventurebackpack.common.Constants.COPTER_INVENTORY_SIZE; +import static com.darkona.adventurebackpack.common.Constants.Copter.BUCKET_IN; +import static com.darkona.adventurebackpack.common.Constants.Copter.BUCKET_OUT; +import static com.darkona.adventurebackpack.common.Constants.Copter.INVENTORY_SIZE; +import static com.darkona.adventurebackpack.common.Constants.Copter.TAG_FUEL_TANK; +import static com.darkona.adventurebackpack.common.Constants.Copter.TAG_STATUS; +import static com.darkona.adventurebackpack.common.Constants.TAG_WEARABLE_COMPOUND; /** * Created on 02/01/2015 @@ -21,17 +23,37 @@ public class InventoryCopterPack extends InventoryAdventureBackpack { public int tickCounter = 0; - private FluidTank fuelTank = new FluidTank(Constants.COPTER_FUEL_CAPACITY); - private ItemStack[] inventory = new ItemStack[COPTER_INVENTORY_SIZE]; + private FluidTank fuelTank = new FluidTank(Constants.Copter.FUEL_CAPACITY); + private ItemStack[] inventory = new ItemStack[INVENTORY_SIZE]; private byte status = ItemCopterPack.OFF_MODE; public InventoryCopterPack(ItemStack copterPack) { containerStack = copterPack; + detectAndConvertFromOldNBTFormat(containerStack.stackTagCompound); openInventory(); } + private void detectAndConvertFromOldNBTFormat(NBTTagCompound compound) // backwards compatibility + { + if (compound == null || compound.hasKey(TAG_WEARABLE_COMPOUND)) + return; + + if (compound.hasKey(TAG_STATUS)) + compound.removeTag(TAG_STATUS); + if (compound.hasKey("tickCounter")) + compound.removeTag("tickCounter"); + + fuelTank.readFromNBT(compound.getCompoundTag(TAG_FUEL_TANK)); + + NBTTagCompound newCopterTag = new NBTTagCompound(); + newCopterTag.setTag(TAG_FUEL_TANK, fuelTank.writeToNBT(new NBTTagCompound())); + + compound.setTag(TAG_WEARABLE_COMPOUND, newCopterTag); + compound.removeTag(TAG_FUEL_TANK); + } + public FluidTank getFuelTank() { return fuelTank; @@ -82,7 +104,7 @@ public ItemStack decrStackSize(int slot, int quantity) @Override public ItemStack getStackInSlotOnClosing(int slot) { - return (slot == COPTER_BUCKET_IN || slot == COPTER_BUCKET_OUT) ? inventory[slot] : null; + return (slot == BUCKET_IN || slot == BUCKET_OUT) ? inventory[slot] : null; } @Override @@ -96,17 +118,6 @@ public void setInventorySlotContents(int slot, ItemStack stack) dirtyInventory(); } - public void dirtyCounter() - { - containerStack.stackTagCompound.setInteger("tickCounter", this.tickCounter); - } - - public void closeInventoryNoStatus() - { - containerStack.stackTagCompound.setTag(COPTER_FUEL_TANK, this.fuelTank.writeToNBT(new NBTTagCompound())); - containerStack.stackTagCompound.setInteger("tickCounter", this.tickCounter); - } - @Override public void setInventorySlotContentsNoSave(int slot, ItemStack stack) { @@ -162,17 +173,20 @@ public void setStatus(byte status) @Override public void loadFromNBT(NBTTagCompound compound) { - fuelTank.readFromNBT(compound.getCompoundTag(COPTER_FUEL_TANK)); - status = compound.getByte("status"); - tickCounter = compound.getInteger("tickCounter"); + NBTTagCompound copterTag = compound.getCompoundTag(TAG_WEARABLE_COMPOUND); + fuelTank.readFromNBT(copterTag.getCompoundTag(TAG_FUEL_TANK)); + status = copterTag.getByte(TAG_STATUS); + tickCounter = copterTag.getInteger("tickCounter"); } @Override public void saveToNBT(NBTTagCompound compound) { - compound.setTag(COPTER_FUEL_TANK, fuelTank.writeToNBT(new NBTTagCompound())); - compound.setByte("status", status); - compound.setInteger("tickCounter", this.tickCounter); + NBTTagCompound copterTag = new NBTTagCompound(); + copterTag.setTag(TAG_FUEL_TANK, fuelTank.writeToNBT(new NBTTagCompound())); + copterTag.setByte(TAG_STATUS, status); + copterTag.setInteger("tickCounter", this.tickCounter); + compound.setTag(TAG_WEARABLE_COMPOUND, copterTag); } @Override @@ -185,7 +199,7 @@ public FluidTank[] getTanksArray() public boolean updateTankSlots() { boolean result = false; - while (InventoryActions.transferContainerTank(this, getFuelTank(), COPTER_BUCKET_IN)) + while (InventoryActions.transferContainerTank(this, getFuelTank(), BUCKET_IN)) result = true; return result; } @@ -202,12 +216,14 @@ public void dirtyInventory() @Override public void dirtyTanks() { - containerStack.stackTagCompound.setTag(COPTER_FUEL_TANK, fuelTank.writeToNBT(new NBTTagCompound())); + containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setTag(TAG_FUEL_TANK, fuelTank.writeToNBT(new NBTTagCompound())); } + //TODO to interface: getWearableCompound() { return containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND);} + public void dirtyStatus() { - containerStack.stackTagCompound.setByte("status", status); + containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setByte(TAG_STATUS, status); } public void setContainerStack(ItemStack containerStack) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidFuel.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidFuel.java index 0954bee0..16fadd48 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidFuel.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidFuel.java @@ -38,6 +38,6 @@ public boolean isItemValid(ItemStack stack) @Override public int getSlotStackLimit() { - return Constants.COPTER_FUEL_CAPACITY / Constants.BUCKET; + return Constants.Copter.FUEL_CAPACITY / Constants.BUCKET; } } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidWater.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidWater.java index 1d27fcb4..302c1b73 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidWater.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluidWater.java @@ -50,6 +50,6 @@ public boolean isItemValid(ItemStack stack) @Override public int getSlotStackLimit() { - return Constants.JETPACK_WATER_CAPACITY / Constants.BUCKET; + return Constants.Jetpack.WATER_CAPACITY / Constants.BUCKET; } } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index a03f13f2..88ff4ad5 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -43,6 +43,8 @@ import com.darkona.adventurebackpack.util.Resources; import com.darkona.adventurebackpack.util.Utils; +import static com.darkona.adventurebackpack.common.Constants.TAG_TYPE; + /** * Created on 12/10/2014 * @@ -71,21 +73,21 @@ public void getSubItems(Item item, CreativeTabs par2CreativeTabs, List subItems) ItemStack backpackStack = new ItemStack(this, 1, 0); backpackStack.setItemDamage(BackpackTypes.getMeta(type)); NBTTagCompound compound = new NBTTagCompound(); - compound.setByte("type", BackpackTypes.getMeta(type)); + compound.setByte(TAG_TYPE, BackpackTypes.getMeta(type)); BackpackUtils.setBackpackTag(backpackStack, compound); subItems.add(backpackStack); } } @Override - @SuppressWarnings({"rawtypes", "unchecked"}) + @SuppressWarnings({"unchecked"}) @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4) { NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(stack); - if (backpackTag.hasKey("type")) + if (backpackTag.hasKey(TAG_TYPE)) { - BackpackTypes type = BackpackTypes.getType(backpackTag.getByte("type")); + BackpackTypes type = BackpackTypes.getType(backpackTag.getByte(TAG_TYPE)); list.add(Utils.getColoredSkinName(type)); } } @@ -173,9 +175,9 @@ private boolean placeBackpack(ItemStack stack, EntityPlayer player, World world, { if (stack.stackSize == 0 || !player.canPlayerEdit(x, y, z, side, stack)) return false; if (!stack.hasTagCompound()) stack.setTagCompound(new NBTTagCompound()); - if (!stack.stackTagCompound.hasKey("type")) + if (!stack.stackTagCompound.hasKey(TAG_TYPE)) { - stack.stackTagCompound.setByte("type", BackpackTypes.getMeta(BackpackTypes.STANDARD)); + stack.stackTagCompound.setByte(TAG_TYPE, BackpackTypes.getMeta(BackpackTypes.STANDARD)); } // world.spawnEntityInWorld(new EntityLightningBolt(world, x, y, z)); @@ -274,15 +276,15 @@ public double getDurabilityForDisplay(ItemStack stack) private int getItemCount(ItemStack backpack) { - NBTTagCompound backpackTag = backpack.stackTagCompound.getCompoundTag(Constants.WEARABLE_TAG); - NBTTagList itemList = backpackTag.getTagList(Constants.INVENTORY, NBT.TAG_COMPOUND); + NBTTagCompound backpackTag = backpack.stackTagCompound.getCompoundTag(Constants.TAG_WEARABLE_COMPOUND); + NBTTagList itemList = backpackTag.getTagList(Constants.TAG_INVENTORY, NBT.TAG_COMPOUND); int itemCount = itemList.tagCount(); for (int i = itemCount - 1; i >= 0; i--) { int slotAtI = itemList.getCompoundTagAt(i).getInteger("Slot"); - if (slotAtI < Constants.UPPER_TOOL) + if (slotAtI < Constants.TOOL_UPPER) break; - else if (slotAtI == Constants.UPPER_TOOL || slotAtI == Constants.LOWER_TOOL) + else if (slotAtI == Constants.TOOL_UPPER || slotAtI == Constants.TOOL_LOWER) itemCount--; } return itemCount; diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index 2885e6a1..927ff458 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -11,6 +11,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import net.minecraftforge.common.BiomeDictionary; @@ -56,10 +57,10 @@ public void getSubItems(Item item, CreativeTabs tab, List list) iStack.setTagCompound(compound); NBTTagCompound jetpackTag = new NBTTagCompound(); - //jetpackTag.setTag(Constants.JETPACK_WATER_TANK, new FluidTank(Constants.JETPACK_WATER_CAPACITY).writeToNBT(new NBTTagCompound())); - //jetpackTag.setTag(Constants.JETPACK_STEAM_TANK, new FluidTank(Constants.JETPACK_STEAM_CAPACITY).writeToNBT(new NBTTagCompound())); - //jetpackTag.setTag(Constants.INVENTORY, new NBTTagList()); - compound.setTag(Constants.WEARABLE_TAG, jetpackTag); + //jetpackTag.setTag(Constants.Jetpack.TAG_WATER_TANK, new FluidTank(Constants.Jetpack.WATER_CAPACITY).writeToNBT(new NBTTagCompound())); + //jetpackTag.setTag(Constants.Jetpack.TAG_STEAM_TANK, new FluidTank(Constants.Jetpack.STEAM_CAPACITY).writeToNBT(new NBTTagCompound())); + jetpackTag.setTag(Constants.TAG_INVENTORY, new NBTTagList()); + compound.setTag(Constants.TAG_WEARABLE_COMPOUND, jetpackTag); list.add(iStack); } @@ -239,7 +240,7 @@ private void runHeater(InventoryCoalJetpack inv, World world, EntityPlayer playe if (burnTicks > 0) { - if (temperature < Constants.JETPACK_MAX_TEMPERATURE) + if (temperature < Constants.Jetpack.MAX_TEMPERATURE) { if (burnTicks % inv.getIncreasingFactor() == 0) { @@ -292,12 +293,12 @@ public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) @Override public double getDurabilityForDisplay(ItemStack stack) { - return (float) getTemperature(stack) / Constants.JETPACK_MAX_TEMPERATURE + 50; + return (float) getTemperature(stack) / Constants.Jetpack.MAX_TEMPERATURE + 50; } private int getTemperature(ItemStack jetpack) { - return jetpack.stackTagCompound.getCompoundTag(Constants.WEARABLE_TAG).getInteger("temperature"); + return jetpack.stackTagCompound.getCompoundTag(Constants.TAG_WEARABLE_COMPOUND).getInteger("temperature"); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java index 22434dab..58a51e1b 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java @@ -33,6 +33,9 @@ import com.darkona.adventurebackpack.util.Resources; import com.darkona.adventurebackpack.util.Wearing; +import static com.darkona.adventurebackpack.common.Constants.Copter.TAG_STATUS; +import static com.darkona.adventurebackpack.common.Constants.TAG_WEARABLE_COMPOUND; + /** * Created on 31/12/2014 * @@ -60,7 +63,10 @@ public void getSubItems(Item item, CreativeTabs tab, List list) ItemStack iStack = new ItemStack(item, 1, 0); NBTTagCompound compound = new NBTTagCompound(); iStack.setTagCompound(compound); - //compound.setTag(Constants.COPTER_FUEL_TANK, new FluidTank(Constants.COPTER_FUEL_CAPACITY).writeToNBT(new NBTTagCompound())); + + NBTTagCompound copterTag = new NBTTagCompound(); + //copterTag.setTag(Constants.Copter.TAG_FUEL_TANK, new FluidTank(Constants.Copter.FUEL_CAPACITY).writeToNBT(new NBTTagCompound())); + compound.setTag(TAG_WEARABLE_COMPOUND, copterTag); list.add(iStack); } @@ -84,7 +90,7 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla @Override public void onEquipped(World world, EntityPlayer player, ItemStack stack) { - stack.stackTagCompound.setByte("status", OFF_MODE); + stack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setByte(TAG_STATUS, OFF_MODE); } @Override @@ -281,7 +287,7 @@ private void pushEntities(World world, EntityPlayer player, float speed) @Override public void onUnequipped(World world, EntityPlayer player, ItemStack stack) { - stack.stackTagCompound.setByte("status", OFF_MODE); + stack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setByte(TAG_STATUS, OFF_MODE); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/network/CycleToolPacket.java b/src/main/java/com/darkona/adventurebackpack/network/CycleToolPacket.java index b9b7ce5f..afbee8b0 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/CycleToolPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/CycleToolPacket.java @@ -25,18 +25,17 @@ public IMessage onMessage(CycleToolMessage message, MessageContext ctx) { if (ctx.side.isServer()) { - //LogHelper.info("Received CycleToolMessage with values: " + message.directionOfCycle + " " + message.typeOfAction + " " + message.slot); EntityPlayerMP player = ctx.getServerHandler().playerEntity; switch (message.typeOfAction) { case CYCLE_TOOL_ACTION: - ServerActions.cycleTool(player, message.directionOfCycle, message.slot); + ServerActions.cycleTool(player, message.isWheelUp, message.slot); break; case TOGGLE_HOSE_TANK: - ServerActions.switchHose(player, message.directionOfCycle, ServerActions.HOSE_TOGGLE); + ServerActions.switchHose(player, message.isWheelUp, ServerActions.HOSE_TOGGLE); break; case SWITCH_HOSE_ACTION: - ServerActions.switchHose(player, message.directionOfCycle, ServerActions.HOSE_SWITCH); + ServerActions.switchHose(player, message.isWheelUp, ServerActions.HOSE_SWITCH); break; } } @@ -45,19 +44,19 @@ public IMessage onMessage(CycleToolMessage message, MessageContext ctx) public static class CycleToolMessage implements IMessage { - private int directionOfCycle; - private int slot; private byte typeOfAction; + private boolean isWheelUp; + private int slot; public CycleToolMessage() { } - public CycleToolMessage(int directionOfCycle, int slot, byte typeOfAction) + public CycleToolMessage(boolean isWheelUp, int slot, byte typeOfAction) { this.typeOfAction = typeOfAction; - this.directionOfCycle = directionOfCycle; + this.isWheelUp = isWheelUp; this.slot = slot; } @@ -65,7 +64,7 @@ public CycleToolMessage(int directionOfCycle, int slot, byte typeOfAction) public void fromBytes(ByteBuf buf) { this.typeOfAction = buf.readByte(); - this.directionOfCycle = buf.readInt(); + this.isWheelUp = buf.readBoolean(); this.slot = buf.readInt(); } @@ -73,7 +72,7 @@ public void fromBytes(ByteBuf buf) public void toBytes(ByteBuf buf) { buf.writeByte(typeOfAction); - buf.writeInt(directionOfCycle); + buf.writeBoolean(isWheelUp); buf.writeInt(slot); } } diff --git a/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java b/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java index f493c418..1d1e7074 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java @@ -60,11 +60,11 @@ public IMessage onMessage(ActionMessage message, MessageContext ctx) if (message.type == GUI_HOLDING_SPACE) { - inv.getExtendedProperties().setBoolean(Constants.HOLDING_SPACE_TAG, true); + inv.getExtendedProperties().setBoolean(Constants.TAG_HOLDING_SPACE, true); } else if (message.type == GUI_NOT_HOLDING_SPACE) { - inv.getExtendedProperties().removeTag(Constants.HOLDING_SPACE_TAG); + inv.getExtendedProperties().removeTag(Constants.TAG_HOLDING_SPACE); } } } diff --git a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java index 72d39c47..48ea03cc 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java @@ -16,6 +16,7 @@ import com.darkona.adventurebackpack.item.ItemAdventureBackpack; import com.darkona.adventurebackpack.util.BackpackUtils; +import static com.darkona.adventurebackpack.common.Constants.TAG_TYPE; import static com.darkona.adventurebackpack.reference.BackpackTypes.Props.NIGHT_VISION; import static com.darkona.adventurebackpack.reference.BackpackTypes.Props.REMOVAL; import static com.darkona.adventurebackpack.reference.BackpackTypes.Props.SPECIAL; @@ -224,17 +225,17 @@ public static BackpackTypes getType(String skinName) return UNKNOWN; } - public static BackpackTypes getType(ItemStack backpack) + public static BackpackTypes getType(ItemStack backpack) //TODO solve this damn null { if (backpack == null) // well... Wearing.getWearingBackpack() may return null... return null; NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(backpack); - if (backpackTag.getByte("type") == UNKNOWN.meta) //TODO remove? stay? + if (backpackTag.getByte(TAG_TYPE) == UNKNOWN.meta) //TODO remove? stay? { - backpackTag.setByte("type", STANDARD.meta); + backpackTag.setByte(TAG_TYPE, STANDARD.meta); } - return getType(backpackTag.getByte("type")); + return getType(backpackTag.getByte(TAG_TYPE)); } public static int getLowestUnusedMeta() @@ -286,8 +287,8 @@ public static ItemStack setBackpackTypeFromMeta(ItemStack backpack, int meta) return null; NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(backpack); - backpack.setItemDamage(meta); //TODO 0?? - backpackTag.setByte("type", (byte) meta); + backpack.setItemDamage(meta); + backpackTag.setByte(TAG_TYPE, (byte) meta); BackpackUtils.setBackpackTag(backpack, backpackTag); return backpack; @@ -296,7 +297,7 @@ public static ItemStack setBackpackTypeFromMeta(ItemStack backpack, int meta) public static void setBackpackType(ItemStack backpack, BackpackTypes type) { NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(backpack); - backpackTag.setByte("type", getMeta(type)); + backpackTag.setByte(TAG_TYPE, getMeta(type)); BackpackUtils.setBackpackTag(backpack, backpackTag); } } diff --git a/src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java index 4d71be14..67afde62 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java @@ -23,6 +23,12 @@ import mcp.mobius.waila.api.IWailaDataProvider; import mcp.mobius.waila.api.IWailaRegistrar; +import static com.darkona.adventurebackpack.common.Constants.TAG_INVENTORY; +import static com.darkona.adventurebackpack.common.Constants.TAG_LEFT_TANK; +import static com.darkona.adventurebackpack.common.Constants.TAG_RIGHT_TANK; +import static com.darkona.adventurebackpack.common.Constants.TAG_TYPE; +import static com.darkona.adventurebackpack.common.Constants.TAG_WEARABLE_COMPOUND; + /** * Created on 03.02.2018 * @@ -58,9 +64,9 @@ public List getWailaHead(ItemStack itemStack, List currenttip, I private static void addHeadToBackpack(List currenttip, IWailaDataAccessor accessor) { - if (accessor.getNBTData().hasKey(Constants.WEARABLE_TAG)) + if (accessor.getNBTData().hasKey(TAG_WEARABLE_COMPOUND)) { - NBTTagCompound backpackTag = accessor.getNBTData().getCompoundTag(Constants.WEARABLE_TAG); + NBTTagCompound backpackTag = accessor.getNBTData().getCompoundTag(TAG_WEARABLE_COMPOUND); addHeadToBackpack(currenttip, backpackTag); } } @@ -68,7 +74,7 @@ private static void addHeadToBackpack(List currenttip, IWailaDataAccesso private static void addHeadToBackpack(List currenttip, NBTTagCompound backpackTag) { currenttip.remove(0); - BackpackTypes type = BackpackTypes.getType(backpackTag.getByte("type")); + BackpackTypes type = BackpackTypes.getType(backpackTag.getByte(TAG_TYPE)); String skin = ""; if (type != BackpackTypes.STANDARD) skin = " [" + Utils.getColoredSkinName(type) + EnumChatFormatting.WHITE + "]"; @@ -87,9 +93,9 @@ private static void addTipToBackpack(List currenttip, IWailaDataAccessor TileEntity te = accessor.getTileEntity(); if (te instanceof TileAdventureBackpack) { - if (accessor.getNBTData().hasKey(Constants.WEARABLE_TAG)) + if (accessor.getNBTData().hasKey(TAG_WEARABLE_COMPOUND)) { - NBTTagCompound backpackTag = accessor.getNBTData().getCompoundTag(Constants.WEARABLE_TAG); + NBTTagCompound backpackTag = accessor.getNBTData().getCompoundTag(TAG_WEARABLE_COMPOUND); addTipToBackpack(currenttip, backpackTag); } } @@ -97,16 +103,16 @@ private static void addTipToBackpack(List currenttip, IWailaDataAccessor private static void addTipToBackpack(List currenttip, NBTTagCompound backpackTag) { - NBTTagList itemList = backpackTag.getTagList(Constants.INVENTORY, NBT.TAG_COMPOUND); + NBTTagList itemList = backpackTag.getTagList(TAG_INVENTORY, NBT.TAG_COMPOUND); currenttip.add(TooltipEventHandler.local("backpack.slots.used") + ": " + TooltipEventHandler.inventoryTooltip(itemList)); FluidTank tank = new FluidTank(Constants.BASIC_TANK_CAPACITY); - tank.readFromNBT(backpackTag.getCompoundTag(Constants.LEFT_TANK)); + tank.readFromNBT(backpackTag.getCompoundTag(TAG_LEFT_TANK)); currenttip.add(EnumChatFormatting.RESET + TooltipEventHandler.local("backpack.tank.left") + ": " + TooltipEventHandler.tankTooltip(tank)); - tank.readFromNBT(backpackTag.getCompoundTag(Constants.RIGHT_TANK)); + tank.readFromNBT(backpackTag.getCompoundTag(TAG_RIGHT_TANK)); currenttip.add(EnumChatFormatting.RESET + TooltipEventHandler.local("backpack.tank.right") + ": " + TooltipEventHandler.tankTooltip(tank)); } diff --git a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java index dde495ff..dc76d710 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java @@ -57,9 +57,9 @@ public static void unequipWearable(EntityPlayer player) //TODO as we unificate NTB structure for all wearables, have to remake this to getWearableTag public static NBTTagCompound getBackpackTag(ItemStack backpack) { - if (backpack.hasTagCompound() && backpack.stackTagCompound.hasKey(Constants.WEARABLE_TAG)) + if (backpack.hasTagCompound() && backpack.stackTagCompound.hasKey(Constants.TAG_WEARABLE_COMPOUND)) { - return backpack.stackTagCompound.getCompoundTag(Constants.WEARABLE_TAG); + return backpack.stackTagCompound.getCompoundTag(Constants.TAG_WEARABLE_COMPOUND); } return new NBTTagCompound(); } @@ -70,7 +70,7 @@ public static void setBackpackTag(ItemStack stack, NBTTagCompound compound) { stack.stackTagCompound = new NBTTagCompound(); } - stack.stackTagCompound.setTag(Constants.WEARABLE_TAG, compound); + stack.stackTagCompound.setTag(Constants.TAG_WEARABLE_COMPOUND, compound); } private static class DelayUnequipTask extends TimerTask From 476fd4a24321b91996f3dfa195a8b55e9fc4a31b Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Fri, 9 Feb 2018 00:52:13 +0700 Subject: [PATCH 432/462] More NBT --- gradle.properties | 2 +- .../block/BlockSleepingBag.java | 25 ++++--- .../block/TileAdventureBackpack.java | 20 +++--- .../client/gui/GuiAdvBackpack.java | 8 ++- .../common/BackpackAbilities.java | 20 +++--- .../adventurebackpack/common/Constants.java | 8 ++- .../handlers/KeyInputEventHandler.java | 2 +- .../handlers/TooltipEventHandler.java | 4 +- .../inventory/ContainerBackpack.java | 4 +- .../inventory/InventoryBackpack.java | 67 +++++++++++-------- .../inventory/InventoryCopterPack.java | 13 +--- .../item/ItemCopterPack.java | 6 +- .../adventurebackpack/util/TinkersUtils.java | 9 ++- 13 files changed, 100 insertions(+), 88 deletions(-) diff --git a/gradle.properties b/gradle.properties index 81047f4b..8ce02cae 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -buildnumber=1pre2 +buildnumber=1 mod_version=0.9h minecraft_version=1.7.10 diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java b/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java index 50353063..13c9f9ec 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java @@ -42,6 +42,11 @@ public class BlockSleepingBag extends BlockDirectional //TODO should we extend { private static final int[][] footBlockToHeadBlockMap = new int[][]{{0, 1}, {-1, 0}, {0, -1}, {1, 0}}; + private static final String TAG_STORED_SPAWN = "storedSpawn"; + private static final String TAG_SPAWN_POS_X = "posX"; + private static final String TAG_SPAWN_POS_Y = "posY"; + private static final String TAG_SPAWN_POS_Z = "posZ"; + @SideOnly(Side.CLIENT) private IIcon[] endIcons; @SideOnly(Side.CLIENT) @@ -104,10 +109,10 @@ public static void storeOriginalSpawn(EntityPlayer player, NBTTagCompound tag) if (spawn != null) { NBTTagCompound storedSpawn = new NBTTagCompound(); - storedSpawn.setInteger("posX", spawn.posX); - storedSpawn.setInteger("posY", spawn.posY); - storedSpawn.setInteger("posZ", spawn.posZ); - tag.setTag(Constants.TAG_STORED_SPAWN, storedSpawn); + storedSpawn.setInteger(TAG_SPAWN_POS_X, spawn.posX); + storedSpawn.setInteger(TAG_SPAWN_POS_Y, spawn.posY); + storedSpawn.setInteger(TAG_SPAWN_POS_Z, spawn.posZ); + tag.setTag(TAG_STORED_SPAWN, storedSpawn); LogHelper.info("Stored spawn data for " + player.getDisplayName() + ": " + spawn.toString() + " dimID: " + player.worldObj.provider.dimensionId); } @@ -119,15 +124,15 @@ public static void storeOriginalSpawn(EntityPlayer player, NBTTagCompound tag) public static void restoreOriginalSpawn(EntityPlayer player, NBTTagCompound tag) { - if (tag.hasKey(Constants.TAG_STORED_SPAWN)) + if (tag.hasKey(TAG_STORED_SPAWN)) { - NBTTagCompound storedSpawn = tag.getCompoundTag(Constants.TAG_STORED_SPAWN); + NBTTagCompound storedSpawn = tag.getCompoundTag(TAG_STORED_SPAWN); ChunkCoordinates coords = new ChunkCoordinates( - storedSpawn.getInteger("posX"), - storedSpawn.getInteger("posY"), - storedSpawn.getInteger("posZ")); + storedSpawn.getInteger(TAG_SPAWN_POS_X), + storedSpawn.getInteger(TAG_SPAWN_POS_Y), + storedSpawn.getInteger(TAG_SPAWN_POS_Z)); player.setSpawnChunk(coords, false, player.worldObj.provider.dimensionId); - tag.removeTag(Constants.TAG_STORED_SPAWN); + tag.removeTag(TAG_STORED_SPAWN); LogHelper.info("Restored spawn data for" + player.getDisplayName() + ": " + coords.toString() + " dimID: " + player.worldObj.provider.dimensionId); } diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 75e3b0dc..c3e89b2c 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -38,6 +38,9 @@ import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_RIGHT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_LEFT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_RIGHT; +import static com.darkona.adventurebackpack.common.Constants.TAG_DISABLE_CYCLING; +import static com.darkona.adventurebackpack.common.Constants.TAG_DISABLE_NVISION; +import static com.darkona.adventurebackpack.common.Constants.TAG_EXTENDED_COMPOUND; import static com.darkona.adventurebackpack.common.Constants.TAG_INVENTORY; import static com.darkona.adventurebackpack.common.Constants.TAG_LEFT_TANK; import static com.darkona.adventurebackpack.common.Constants.TAG_RIGHT_TANK; @@ -55,9 +58,8 @@ public class TileAdventureBackpack extends TileEntity implements IInventoryAdven private FluidTank leftTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); private FluidTank rightTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); - private NBTTagList ench; private BackpackTypes type; - + private NBTTagList ench; private NBTTagCompound extendedProperties; private boolean disableCycling; private boolean disableNVision; @@ -290,9 +292,9 @@ public void loadFromNBT(NBTTagCompound compound) } leftTank.readFromNBT(backpackTag.getCompoundTag(TAG_LEFT_TANK)); rightTank.readFromNBT(backpackTag.getCompoundTag(TAG_RIGHT_TANK)); - extendedProperties = backpackTag.getCompoundTag("extended"); - disableCycling = backpackTag.getBoolean("disableCycling"); - disableNVision = backpackTag.getBoolean("disableNVision"); + extendedProperties = backpackTag.getCompoundTag(TAG_EXTENDED_COMPOUND); + disableCycling = backpackTag.getBoolean(TAG_DISABLE_CYCLING); + disableNVision = backpackTag.getBoolean(TAG_DISABLE_NVISION); lastTime = backpackTag.getInteger("lastTime"); } @@ -319,9 +321,9 @@ public void saveToNBT(NBTTagCompound compound) backpackTag.setTag(TAG_INVENTORY, items); backpackTag.setTag(TAG_RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); backpackTag.setTag(TAG_LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); - backpackTag.setTag("extended", extendedProperties); - backpackTag.setBoolean("disableCycling", disableCycling); - backpackTag.setBoolean("disableNVision", disableNVision); + backpackTag.setTag(TAG_EXTENDED_COMPOUND, extendedProperties); + backpackTag.setBoolean(TAG_DISABLE_CYCLING, disableCycling); + backpackTag.setBoolean(TAG_DISABLE_NVISION, disableNVision); backpackTag.setInteger("lastTime", lastTime); compound.setTag(TAG_WEARABLE_COMPOUND, backpackTag); @@ -333,7 +335,7 @@ public FluidTank[] getTanksArray() return new FluidTank[]{leftTank, rightTank}; } - //====================================================TAG_INVENTORY===================================================// + //====================================================INVENTORY===================================================// @Override public void openInventory() { diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index a66e875b..f1d24d44 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -34,6 +34,7 @@ public class GuiAdvBackpack extends GuiWithTanks { private static final ResourceLocation TEXTURE = Resources.guiTextures("guiBackpackNew"); private static final ResourceLocation TINKERS_ICONS = TinkersUtils.getTinkersIcons(); + private static final int TINKERS_SLOT = 38; //ContainerBackpack.CRAFT_MATRIX_EMULATION[4] private static GuiImageButtonNormal bedButton = new GuiImageButtonNormal(5, 91, 18, 18); private static GuiImageButtonNormal equipButton = new GuiImageButtonNormal(5, 91, 18, 18); @@ -111,8 +112,11 @@ else if (source == Source.HOLDING) if (ConfigHandler.IS_TCONSTRUCT && ConfigHandler.tinkerToolsMaintenance) { - this.mc.getTextureManager().bindTexture(TINKERS_ICONS); - this.drawTexturedModalRect(this.guiLeft + 169, this.guiTop + 77, 0, 233, 18, 18); + if (inventory.getStackInSlot(TINKERS_SLOT) == null) + { + this.mc.getTextureManager().bindTexture(TINKERS_ICONS); + this.drawTexturedModalRect(this.guiLeft + 169, this.guiTop + 77, 0, 233, 18, 18); + } } } diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java index e307a958..52390a0f 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java @@ -510,10 +510,10 @@ public void itemCow(EntityPlayer player, World world, ItemStack backpack) int milkTime = -1; if (inv.getExtendedProperties() != null) { - if (inv.extendedProperties.hasKey("wheatConsumed")) + if (inv.getExtendedProperties().hasKey("wheatConsumed")) { - wheatConsumed = inv.extendedProperties.getInteger("wheatConsumed"); - milkTime = inv.extendedProperties.getInteger("milkTime") - 1; + wheatConsumed = inv.getExtendedProperties().getInteger("wheatConsumed"); + milkTime = inv.getExtendedProperties().getInteger("milkTime") - 1; } } @@ -544,8 +544,8 @@ public void itemCow(EntityPlayer player, World world, ItemStack backpack) inv.dirtyTanks(); } if (milkTime < -1) milkTime = -1; - inv.extendedProperties.setInteger("wheatConsumed", wheatConsumed); - inv.extendedProperties.setInteger("milkTime", milkTime); + inv.getExtendedProperties().setInteger("wheatConsumed", wheatConsumed); + inv.getExtendedProperties().setInteger("milkTime", milkTime); inv.setLastTime(eatTime); //inv.setLastTime(eatTime); inv.dirtyExtended(); @@ -571,10 +571,10 @@ public void itemMooshroom(EntityPlayer player, World world, ItemStack backpack) int milkTime = -1; if (inv.getExtendedProperties() != null) { - if (inv.extendedProperties.hasKey("wheatConsumed")) + if (inv.getExtendedProperties().hasKey("wheatConsumed")) { - wheatConsumed = inv.extendedProperties.getInteger("wheatConsumed"); - milkTime = inv.extendedProperties.getInteger("milkTime") - 1; + wheatConsumed = inv.getExtendedProperties().getInteger("wheatConsumed"); + milkTime = inv.getExtendedProperties().getInteger("milkTime") - 1; } } @@ -605,8 +605,8 @@ public void itemMooshroom(EntityPlayer player, World world, ItemStack backpack) inv.dirtyTanks(); } if (milkTime < -1) milkTime = -1; - inv.extendedProperties.setInteger("wheatConsumed", wheatConsumed); - inv.extendedProperties.setInteger("milkTime", milkTime); + inv.getExtendedProperties().setInteger("wheatConsumed", wheatConsumed); + inv.getExtendedProperties().setInteger("milkTime", milkTime); inv.setLastTime(eatTime); //inv.setLastTime(eatTime); inv.dirtyExtended(); diff --git a/src/main/java/com/darkona/adventurebackpack/common/Constants.java b/src/main/java/com/darkona/adventurebackpack/common/Constants.java index 82f6d24e..49cc2657 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/Constants.java +++ b/src/main/java/com/darkona/adventurebackpack/common/Constants.java @@ -18,7 +18,8 @@ public enum Source //TODO move to separate class? public static final int BUCKET = FluidContainerRegistry.BUCKET_VOLUME; // Wearable NBT - public static final String TAG_WEARABLE_COMPOUND = "wearableData"; //TODO "wearablePack" + public static final String TAG_WEARABLE_COMPOUND = "wearableData"; + public static final String TAG_EXTENDED_COMPOUND = "extendedProperties"; public static final String TAG_INVENTORY = "inventory"; /** @@ -30,7 +31,7 @@ public enum Source //TODO move to separate class? // Inventory Slots public static final int INVENTORY_SIZE = 54; - public static final int INVENTORY_SPECIAL_SIZE = 6; // tooSlot * 2, bucketIn * 2, bucketOut *2 + public static final int INVENTORY_SPECIAL_SIZE = 6; // tooSlot * 2, bucketIn * 2, bucketOut * 2 public static final int INVENTORY_MAIN_SIZE = INVENTORY_SIZE - INVENTORY_SPECIAL_SIZE; // 0 excluded public static final int END_OF_INVENTORY = INVENTORY_MAIN_SIZE - 1; // 0 included @@ -46,11 +47,12 @@ public enum Source //TODO move to separate class? public static final String TAG_TYPE = "type"; public static final String TAG_LEFT_TANK = "leftTank"; public static final String TAG_RIGHT_TANK = "rightTank"; + public static final String TAG_DISABLE_CYCLING = "disableCycling"; + public static final String TAG_DISABLE_NVISION = "disableNVision"; // NBT: Extended Properties public static final String TAG_HOLDING_SPACE = "holdingSpace"; public static final String TAG_SLEEPING_IN_BAG = "sleepingInBag"; - public static final String TAG_STORED_SPAWN = "storedSpawn"; public class Jetpack { diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java index 6ece8192..4ed05c0a 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java @@ -76,7 +76,7 @@ else if (Wearing.isHoldingBackpack(player)) { if (Wearing.isHoldingHose(player)) { - sendCycleToolPacket( player.inventory.currentItem, CycleToolPacket.TOGGLE_HOSE_TANK); + sendCycleToolPacket(player.inventory.currentItem, CycleToolPacket.TOGGLE_HOSE_TANK); ServerActions.switchHose(player, false, ServerActions.HOSE_TOGGLE); } else if (Wearing.isWearingBackpack(player)) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java index ae55ffae..e72cd703 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java @@ -73,14 +73,14 @@ else if (!GuiScreen.isCtrlKeyDown()) if (GuiScreen.isCtrlKeyDown()) { - boolean cycling = !backpackTag.getBoolean("disableCycling"); + boolean cycling = !backpackTag.getBoolean(Constants.TAG_DISABLE_CYCLING); makeTip(local("backpack.cycling") + ": " + switchTooltip(cycling, true)); makeTip(pressKeyFormat(actionKeyFormat()), locals("backpack.cycling.key"), " " + switchTooltip(!cycling, false)); if (BackpackTypes.isNightVision(BackpackTypes.getType(backpackTag.getByte(Constants.TAG_TYPE)))) { - boolean vision = !backpackTag.getBoolean("disableNVision"); + boolean vision = !backpackTag.getBoolean(Constants.TAG_DISABLE_NVISION); makeTip(local("backpack.vision") + ": " + switchTooltip(vision, true)); makeTip(pressShiftKeyFormat(actionKeyFormat()), locals("backpack.vision.key"), " " + switchTooltip(!vision, false)); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index e626beca..dbd696c4 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -95,8 +95,8 @@ private void makeSlots(InventoryPlayer invPlayer) addSlotToContainer(new SlotFluid(inventory, BUCKET_OUT_RIGHT, 226, 37)); // #54 [89] startX = 215; - //startY = -2500; - startY = ConfigHandler.IS_DEVENV ? 125 : -2500; + startY = -2500; + //startY = ConfigHandler.IS_DEVENV ? 125 : -2500; for (int row = 0; row < MATRIX_DIMENSION; row++) // craftMatrix, usually 9 slots, [90-98] { for (int col = 0; col < MATRIX_DIMENSION; col++) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index 24d99b04..c812adb9 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -20,6 +20,9 @@ import static com.darkona.adventurebackpack.common.Constants.BUCKET_IN_RIGHT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_LEFT; import static com.darkona.adventurebackpack.common.Constants.BUCKET_OUT_RIGHT; +import static com.darkona.adventurebackpack.common.Constants.TAG_DISABLE_CYCLING; +import static com.darkona.adventurebackpack.common.Constants.TAG_DISABLE_NVISION; +import static com.darkona.adventurebackpack.common.Constants.TAG_EXTENDED_COMPOUND; import static com.darkona.adventurebackpack.common.Constants.TAG_INVENTORY; import static com.darkona.adventurebackpack.common.Constants.TAG_LEFT_TANK; import static com.darkona.adventurebackpack.common.Constants.TAG_RIGHT_TANK; @@ -33,13 +36,16 @@ */ public class InventoryBackpack extends InventoryAdventureBackpack implements IInventoryAdventureBackpack { - public NBTTagCompound extendedProperties = new NBTTagCompound(); + private static final String TAG_IS_SLEEPING_BAG = "sleepingBag"; + private static final String TAG_SLEEPING_BAG_X = "sleepingBagX"; + private static final String TAG_SLEEPING_BAG_Y = "sleepingBagY"; + private static final String TAG_SLEEPING_BAG_Z = "sleepingBagZ"; + private BackpackTypes type = BackpackTypes.STANDARD; private ItemStack[] inventory = new ItemStack[Constants.INVENTORY_SIZE]; private FluidTank leftTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); private FluidTank rightTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); - - private BackpackTypes type = BackpackTypes.STANDARD; + private NBTTagCompound extendedProperties = new NBTTagCompound(); private boolean sleepingBagDeployed = false; private int sleepingBagX; @@ -187,10 +193,10 @@ public void dirtyTime() } @Override - public void dirtyExtended() + public void dirtyExtended() //TODO is it redundant? { - containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).removeTag("extendedProperties"); - containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setTag("extendedProperties", extendedProperties); + containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).removeTag(TAG_EXTENDED_COMPOUND); + containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setTag(TAG_EXTENDED_COMPOUND, extendedProperties); } @Override @@ -249,16 +255,18 @@ public void loadFromNBT(NBTTagCompound compound) } leftTank.readFromNBT(backpackTag.getCompoundTag(TAG_LEFT_TANK)); rightTank.readFromNBT(backpackTag.getCompoundTag(TAG_RIGHT_TANK)); - extendedProperties = backpackTag.getCompoundTag("extendedProperties"); - sleepingBagDeployed = extendedProperties.getBoolean("sleepingBagDeployed"); - if (sleepingBagDeployed) + extendedProperties = backpackTag.getCompoundTag(TAG_EXTENDED_COMPOUND); { - sleepingBagX = extendedProperties.getInteger("sleepingBagX"); - sleepingBagY = extendedProperties.getInteger("sleepingBagY"); - sleepingBagZ = extendedProperties.getInteger("sleepingBagZ"); + sleepingBagDeployed = extendedProperties.getBoolean(TAG_IS_SLEEPING_BAG); + if (sleepingBagDeployed) + { + sleepingBagX = extendedProperties.getInteger(TAG_SLEEPING_BAG_X); + sleepingBagY = extendedProperties.getInteger(TAG_SLEEPING_BAG_Y); + sleepingBagZ = extendedProperties.getInteger(TAG_SLEEPING_BAG_Z); + } } - disableCycling = backpackTag.getBoolean("disableCycling"); - disableNVision = backpackTag.getBoolean("disableNVision"); + disableCycling = backpackTag.getBoolean(TAG_DISABLE_CYCLING); + disableNVision = backpackTag.getBoolean(TAG_DISABLE_NVISION); lastTime = backpackTag.getInteger("lastTime"); } @@ -283,22 +291,25 @@ public void saveToNBT(NBTTagCompound compound) backpackTag.setTag(TAG_INVENTORY, items); backpackTag.setTag(TAG_RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); backpackTag.setTag(TAG_LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); - backpackTag.setTag("extendedProperties", extendedProperties); - extendedProperties.setBoolean("sleepingBagDeployed", sleepingBagDeployed); - if (sleepingBagDeployed) + backpackTag.setTag(TAG_EXTENDED_COMPOUND, extendedProperties); { - extendedProperties.setInteger("sleepingBagX", sleepingBagX); - extendedProperties.setInteger("sleepingBagY", sleepingBagY); - extendedProperties.setInteger("sleepingBagZ", sleepingBagZ); - } - else - { - extendedProperties.removeTag("sleepingBagX"); - extendedProperties.removeTag("sleepingBagY"); - extendedProperties.removeTag("sleepingBagZ"); + if (sleepingBagDeployed) + { + extendedProperties.setBoolean(TAG_IS_SLEEPING_BAG, sleepingBagDeployed); + extendedProperties.setInteger(TAG_SLEEPING_BAG_X, sleepingBagX); + extendedProperties.setInteger(TAG_SLEEPING_BAG_Y, sleepingBagY); + extendedProperties.setInteger(TAG_SLEEPING_BAG_Z, sleepingBagZ); + } + else + { + extendedProperties.removeTag(TAG_IS_SLEEPING_BAG); + extendedProperties.removeTag(TAG_SLEEPING_BAG_X); + extendedProperties.removeTag(TAG_SLEEPING_BAG_Y); + extendedProperties.removeTag(TAG_SLEEPING_BAG_Z); + } } - backpackTag.setBoolean("disableCycling", disableCycling); - backpackTag.setBoolean("disableNVision", disableNVision); + backpackTag.setBoolean(TAG_DISABLE_CYCLING, disableCycling); + backpackTag.setBoolean(TAG_DISABLE_NVISION, disableNVision); backpackTag.setInteger("lastTime", lastTime); compound.setTag(TAG_WEARABLE_COMPOUND, backpackTag); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java index a866af69..c62b8b66 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java @@ -21,12 +21,11 @@ */ public class InventoryCopterPack extends InventoryAdventureBackpack { - public int tickCounter = 0; - private FluidTank fuelTank = new FluidTank(Constants.Copter.FUEL_CAPACITY); private ItemStack[] inventory = new ItemStack[INVENTORY_SIZE]; private byte status = ItemCopterPack.OFF_MODE; + private int tickCounter = 0; public InventoryCopterPack(ItemStack copterPack) { @@ -145,11 +144,6 @@ public ItemStack decrStackSizeNoSave(int slot, int amount) return null; } - public ItemStack getParentItemStack() - { - return this.containerStack; - } - public int getTickCounter() { return tickCounter; @@ -225,9 +219,4 @@ public void dirtyStatus() { containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setByte(TAG_STATUS, status); } - - public void setContainerStack(ItemStack containerStack) - { - this.containerStack = containerStack; - } } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java index 58a51e1b..5ad07a71 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java @@ -207,7 +207,7 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) { fuelConsumption *= 2; } - int ticks = inv.tickCounter - 1; + int ticks = inv.getTickCounter() - 1; FluidTank tank = inv.getFuelTank(); if (tank.getFluid() != null && GeneralReference.isValidFuel(tank.getFluid().getFluid().getName())) { @@ -215,13 +215,13 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) } if (ticks <= 0) { - inv.tickCounter = 3; + inv.setTickCounter(3); inv.consumeFuel(getFuelSpent(fuelConsumption)); inv.dirtyTanks(); } else { - inv.tickCounter = ticks; + inv.setTickCounter(ticks); } } inv.closeInventory(); diff --git a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java index d68b2192..e0e4dac1 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java @@ -11,12 +11,11 @@ import net.minecraft.world.WorldServer; import net.minecraftforge.client.IItemRenderer; import net.minecraftforge.common.util.FakePlayer; +import com.mojang.authlib.GameProfile; import cpw.mods.fml.common.FMLCommonHandler; import com.darkona.adventurebackpack.config.ConfigHandler; -import com.mojang.authlib.GameProfile; - /** * Created on 03.02.2018 * @@ -52,13 +51,13 @@ private TinkersUtils() {} Object craftingLogicInstance = craftingLogic.newInstance(); WorldServer world = FMLCommonHandler.instance().getMinecraftServerInstance().worldServers[0]; - UUID FAKE_UUID = UUID.fromString("521e749d-2ac0-3459-af7a-160b4be5c62b"); - GameProfile FAKE_PROFILE = new GameProfile(FAKE_UUID, "[Adventurer]"); + UUID fakeUuid = UUID.fromString("521e749d-2ac0-3459-af7a-160b4be5c62b"); + GameProfile fakeProfile = new GameProfile(fakeUuid, "[Adventurer]"); craftingStation = Class.forName(CLASS_CRAFTING_STATION); craftingStationInstance = craftingStation .getConstructor(InventoryPlayer.class, craftingLogic, int.class, int.class, int.class) - .newInstance(new InventoryPlayer(new FakePlayer(world, FAKE_PROFILE)), craftingLogicInstance, 0, 0, 0); + .newInstance(new InventoryPlayer(new FakePlayer(world, fakeProfile)), craftingLogicInstance, 0, 0, 0); } catch (Exception e) { From 86255517b363f5b45536522a031653a79b2e4c66 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 14 Feb 2018 18:27:37 +0700 Subject: [PATCH 433/462] Cleanup TODOs --- gradle.properties | 4 ++-- .../block/BlockAdventureBackpack.java | 6 ------ .../adventurebackpack/block/BlockSleepingBag.java | 4 ++-- .../block/TileAdventureBackpack.java | 4 ++-- .../client/models/ModelCopterPack.java | 2 +- .../client/render/RendererItemAdventureBackpack.java | 2 +- .../darkona/adventurebackpack/init/ModRecipes.java | 4 ++-- .../inventory/ContainerAdventureBackpack.java | 12 ------------ .../inventory/InventoryBackpack.java | 4 ++-- .../inventory/InventoryCoalJetpack.java | 4 ++-- .../inventory/InventoryCopterPack.java | 10 +++++----- .../adventurebackpack/reference/BackpackTypes.java | 6 ++---- .../adventurebackpack/util/BackpackUtils.java | 1 - .../com/darkona/adventurebackpack/util/Utils.java | 2 +- 14 files changed, 22 insertions(+), 43 deletions(-) diff --git a/gradle.properties b/gradle.properties index 8ce02cae..42cb626b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ -buildnumber=1 -mod_version=0.9h +buildnumber=h1 +mod_version=0.9 minecraft_version=1.7.10 forge_version=10.13.4.1614-1.7.10 diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java index 63f7900b..ae65096e 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java @@ -250,12 +250,6 @@ public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, i return backpack; } - /*@Override - public int damageDropped(int meta) - { - return meta; //TODO how to save meta from "tile->item" - }*/ - @Override public boolean hasTileEntity(int meta) { diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java b/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java index 13c9f9ec..a24a33f4 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java @@ -38,7 +38,7 @@ * * @author Darkona */ -public class BlockSleepingBag extends BlockDirectional //TODO should we extend BlockBed instead? +public class BlockSleepingBag extends BlockDirectional { private static final int[][] footBlockToHeadBlockMap = new int[][]{{0, 1}, {-1, 0}, {0, -1}, {1, 0}}; @@ -133,7 +133,7 @@ public static void restoreOriginalSpawn(EntityPlayer player, NBTTagCompound tag) storedSpawn.getInteger(TAG_SPAWN_POS_Z)); player.setSpawnChunk(coords, false, player.worldObj.provider.dimensionId); tag.removeTag(TAG_STORED_SPAWN); - LogHelper.info("Restored spawn data for" + player.getDisplayName() + ": " + coords.toString() + LogHelper.info("Restored spawn data for " + player.getDisplayName() + ": " + coords.toString() + " dimID: " + player.worldObj.provider.dimensionId); } else diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index c3e89b2c..f60168a1 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -255,8 +255,8 @@ private void convertFromOldNBTFormat(NBTTagCompound compound) // backwards compa { NBTTagCompound oldBackpackTag = compound.getCompoundTag("backpackData"); NBTTagList oldItems = oldBackpackTag.getTagList("ABPItems", NBT.TAG_COMPOUND); - leftTank.readFromNBT(oldBackpackTag.getCompoundTag(TAG_LEFT_TANK)); - rightTank.readFromNBT(oldBackpackTag.getCompoundTag(TAG_RIGHT_TANK)); + leftTank.readFromNBT(oldBackpackTag.getCompoundTag("leftTank")); + rightTank.readFromNBT(oldBackpackTag.getCompoundTag("rightTank")); type = BackpackTypes.getType(oldBackpackTag.getString("colorName")); NBTTagCompound newBackpackTag = new NBTTagCompound(); diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelCopterPack.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelCopterPack.java index caaee242..506ca8ff 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelCopterPack.java @@ -198,7 +198,7 @@ private void renderCopterPack(Entity entity, float scale) InventoryCopterPack copterInv = new InventoryCopterPack(this.copterPack); copterInv.openInventory(); Axis.isHidden = true; - if (copterPack != null && copterPack.hasTagCompound() //TODO these checks are terrible. can we get rid of em? + if (copterPack != null && copterPack.hasTagCompound() && copterPack.stackTagCompound.hasKey(TAG_WEARABLE_COMPOUND) && copterPack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).hasKey(TAG_STATUS)) { diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java index d8b396a8..f5ce8775 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java @@ -71,7 +71,7 @@ public void renderItem(IItemRenderer.ItemRenderType type, ItemStack backpack, Ob { InventoryBackpack inv = new InventoryBackpack(backpack); ResourceLocation modelTexture; - if (BackpackTypes.getType(backpack) == BackpackTypes.STANDARD) //TODO check holiday textures + if (BackpackTypes.getType(backpack) == BackpackTypes.STANDARD) { modelTexture = Resources.backpackTextureFromString(ModDates.getHoliday()); } diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java index b771bb6e..8803a135 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java @@ -55,7 +55,7 @@ public static void init() ItemStack copterStack = new ItemStack(ModItems.copterPack); NBTTagCompound copterCompound = new NBTTagCompound(); copterCompound.setTag(Constants.TAG_WEARABLE_COMPOUND, new NBTTagCompound()); - copterStack.setTagCompound(copterCompound); //TODO check + copterStack.setTagCompound(copterCompound); GameRegistry.addRecipe(copterStack, "WBW", @@ -76,7 +76,7 @@ public static void init() ItemStack jetpackStack = new ItemStack(ModItems.coalJetpack); NBTTagCompound jetpackCompound = new NBTTagCompound(); jetpackCompound.setTag(Constants.TAG_WEARABLE_COMPOUND, new NBTTagCompound()); - jetpackStack.setTagCompound(jetpackCompound); //TODO check + jetpackStack.setTagCompound(jetpackCompound); GameRegistry.addRecipe(jetpackStack, "SWT", diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java index eb816e10..687d77c1 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java @@ -203,18 +203,6 @@ else if (activeStack.stackSize < maxStackSize && !(activeSlot instanceof SlotFlu return changesMade; } - /* - @Override - protected void retrySlotClick(int slotIndex, int p_75133_2_, boolean flag, EntityPlayer player) - { - super.retrySlotClick(slotIndex, p_75133_2_, flag, player); - //this.slotClick(index, p_75133_2_, 1, p_75133_4_); - // TODO if (slot instanceof slotFluid), see also mergeItemStack - } - - //TODO protected List crafters = new ArrayList(); - */ - @Override public void onContainerClosed(EntityPlayer player) { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index c812adb9..ce0fefee 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -70,8 +70,8 @@ private void detectAndConvertFromOldNBTFormat(NBTTagCompound compound) // backwa NBTTagCompound oldBackpackTag = compound.getCompoundTag("backpackData"); NBTTagList oldItems = oldBackpackTag.getTagList("ABPItems", NBT.TAG_COMPOUND); - leftTank.readFromNBT(oldBackpackTag.getCompoundTag(TAG_LEFT_TANK)); - rightTank.readFromNBT(oldBackpackTag.getCompoundTag(TAG_RIGHT_TANK)); + leftTank.readFromNBT(oldBackpackTag.getCompoundTag("leftTank")); + rightTank.readFromNBT(oldBackpackTag.getCompoundTag("rightTank")); type = BackpackTypes.getType(oldBackpackTag.getString("colorName")); NBTTagCompound newBackpackTag = new NBTTagCompound(); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index 5f62d378..eada35d9 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -53,8 +53,8 @@ private void detectAndConvertFromOldNBTFormat(NBTTagCompound compound) // backwa NBTTagCompound oldJetpackTag = compound.getCompoundTag("jetpackData"); NBTTagList oldItems = oldJetpackTag.getTagList("inventory", NBT.TAG_COMPOUND); - waterTank.readFromNBT(oldJetpackTag.getCompoundTag(TAG_WATER_TANK)); - steamTank.readFromNBT(oldJetpackTag.getCompoundTag(TAG_STEAM_TANK)); + waterTank.readFromNBT(oldJetpackTag.getCompoundTag("waterTank")); + steamTank.readFromNBT(oldJetpackTag.getCompoundTag("steamTank")); NBTTagCompound newJetpackTag = new NBTTagCompound(); newJetpackTag.setTag(TAG_INVENTORY, oldItems); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java index c62b8b66..659bb88b 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java @@ -39,18 +39,18 @@ private void detectAndConvertFromOldNBTFormat(NBTTagCompound compound) // backwa if (compound == null || compound.hasKey(TAG_WEARABLE_COMPOUND)) return; - if (compound.hasKey(TAG_STATUS)) - compound.removeTag(TAG_STATUS); + if (compound.hasKey("status")) + compound.removeTag("status"); if (compound.hasKey("tickCounter")) compound.removeTag("tickCounter"); - fuelTank.readFromNBT(compound.getCompoundTag(TAG_FUEL_TANK)); + fuelTank.readFromNBT(compound.getCompoundTag("fuelTank")); NBTTagCompound newCopterTag = new NBTTagCompound(); newCopterTag.setTag(TAG_FUEL_TANK, fuelTank.writeToNBT(new NBTTagCompound())); compound.setTag(TAG_WEARABLE_COMPOUND, newCopterTag); - compound.removeTag(TAG_FUEL_TANK); + compound.removeTag("fuelTank"); } public FluidTank getFuelTank() @@ -213,7 +213,7 @@ public void dirtyTanks() containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setTag(TAG_FUEL_TANK, fuelTank.writeToNBT(new NBTTagCompound())); } - //TODO to interface: getWearableCompound() { return containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND);} + //TODO to InventoryAdventureBackpack: getWearableCompound() { return containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND);} public void dirtyStatus() { diff --git a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java index 48ea03cc..db68ce11 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java @@ -123,8 +123,6 @@ public enum BackpackTypes private final String skinName; private final Props[] props; - //TODO rework NBT for wearable packs. unificate and simplify structure. - BackpackTypes(int meta, String skin, Props... props) { Validate.inclusiveBetween(0, 127, meta, "wrong meta value: %s (%s)", meta, this); @@ -225,9 +223,9 @@ public static BackpackTypes getType(String skinName) return UNKNOWN; } - public static BackpackTypes getType(ItemStack backpack) //TODO solve this damn null + public static BackpackTypes getType(ItemStack backpack) { - if (backpack == null) // well... Wearing.getWearingBackpack() may return null... + if (backpack == null) // well... Wearing.getWearingBackpack() may return null... //TODO solve this damn null return null; NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(backpack); diff --git a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java index dc76d710..743ddaf2 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java @@ -53,7 +53,6 @@ public static void unequipWearable(EntityPlayer player) timer.schedule(unequipTask, 200); } - //TODO as we unificate NTB structure for all wearables, have to remake this to getWearableTag public static NBTTagCompound getBackpackTag(ItemStack backpack) { diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index 18ecb27e..14928f96 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -115,7 +115,7 @@ public static String getColoredSkinName(BackpackTypes type) result += EnumChatFormatting.RED + skinName; break; case RAINBOW: - result += Utils.makeItRainbow(skinName); + result += makeItRainbow(skinName); break; case SQUID: result += EnumChatFormatting.DARK_AQUA + skinName; From 9bb59b6a4878963660dbb4e622f7c7123ccfc0a1 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Fri, 16 Feb 2018 13:52:39 +0700 Subject: [PATCH 434/462] Correctly detects if player is under water --- .../darkona/adventurebackpack/common/BackpackAbilities.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java index 52390a0f..584f0fe0 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java @@ -3,6 +3,7 @@ import java.util.Iterator; import java.util.List; +import net.minecraft.block.material.Material; import net.minecraft.entity.Entity; import net.minecraft.entity.ai.EntityAIBase; import net.minecraft.entity.ai.EntityAITasks; @@ -168,7 +169,7 @@ else if (nightVision != null && Wearing.getWearingBackpackInv(player).getDisable public void itemSquid(EntityPlayer player, World world, ItemStack backpack) { - if (player.isInWater()) + if (player.isInsideOfMaterial(Material.water)) { player.addPotionEffect(new PotionEffect(Potion.waterBreathing.getId(), 19, -1, true)); itemBat(player, world, backpack); From 2ec4104069c373e6ae9d5d4fbc628fc4ba569fd4 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 20 Feb 2018 22:07:56 +0700 Subject: [PATCH 435/462] Another try to fix rare NPE in GuiOverlay --- .../client/gui/GuiOverlay.java | 99 ++++++++++++++----- .../client/gui/ModGuiConfig.java | 2 +- .../config/ConfigHandler.java | 5 + .../entity/EntityInflatableBoat.java | 3 +- .../handlers/GeneralEventHandler.java | 2 +- .../item/ItemAdventureBackpack.java | 5 +- .../reference/BackpackTypes.java | 15 +-- .../adventurebackpack/util/GregtechUtils.java | 2 +- .../util/ThaumcraftUtils.java | 2 +- .../adventurebackpack/util/TinkersUtils.java | 7 +- 10 files changed, 98 insertions(+), 44 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java index ea6d38a5..43203703 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java @@ -13,12 +13,14 @@ import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.entity.boss.BossStatus; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.util.IIcon; import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.GuiIngameForge; import net.minecraftforge.client.IItemRenderer; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.fluids.FluidStack; @@ -46,12 +48,22 @@ */ public class GuiOverlay extends Gui { + private static final ResourceLocation GUI_ICONS = new ResourceLocation("textures/gui/icons.png"); + private static final ResourceLocation GUI_INVENTORY = new ResourceLocation("textures/gui/container/inventory.png"); + private static final ResourceLocation TANKS_OVERLAY = new ResourceLocation(ModInfo.MOD_ID, "textures/gui/overlay.png"); + private static final int BUFF_ICON_SIZE = 18; + private static final int BUFF_ICON_SPACING = 2; // 2 pixels between buff icons + private static final int BUFF_ICON_BASE_U_OFFSET = 0; + private static final int BUFF_ICON_BASE_V_OFFSET = 198; + private static final int BUFF_ICONS_PER_ROW = 8; + + private static RenderItem itemRender = new RenderItem(); + private Minecraft mc; + private FontRenderer fontRenderer; + private int screenWidth; private int screenHeight; - private static RenderItem itemRender = new RenderItem(); - private FontRenderer fontRendererObj; - private ScaledResolution resolution; public GuiOverlay(Minecraft mc) { @@ -59,26 +71,30 @@ public GuiOverlay(Minecraft mc) // We need this to invoke the render engine. this.mc = mc; - this.itemRender.renderWithColor = false; - this.fontRendererObj = mc.fontRenderer; + this.fontRenderer = mc.fontRenderer; + itemRender.renderWithColor = false; } - private static final int BUFF_ICON_SIZE = 18; - private static final int BUFF_ICON_SPACING = 2; // 2 pixels between buff icons - private static final int BUFF_ICON_BASE_U_OFFSET = 0; - private static final int BUFF_ICON_BASE_V_OFFSET = 198; - private static final int BUFF_ICONS_PER_ROW = 8; - @SubscribeEvent(priority = EventPriority.NORMAL) public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) { if (event.type != RenderGameOverlayEvent.ElementType.EXPERIENCE) - { return; - } - resolution = new ScaledResolution(this.mc, this.mc.displayWidth, this.mc.displayHeight); + + ScaledResolution resolution = new ScaledResolution(this.mc, this.mc.displayWidth, this.mc.displayHeight); screenWidth = resolution.getScaledWidth(); screenHeight = resolution.getScaledHeight(); + + if (ConfigHandler.bossBarIndent != 0) + { + if (GuiIngameForge.renderBossHealth) + { + GuiIngameForge.renderBossHealth = false; + LogHelper.info("Forge boss bar render: disabled"); + } + drawBossBar(); + } + if (ConfigHandler.statusOverlay) { int xStep = ConfigHandler.statusOverlayLeft @@ -96,21 +112,31 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glDisable(GL11.GL_LIGHTING); - this.mc.renderEngine.bindTexture(new ResourceLocation("textures/gui/container/inventory.png")); + this.mc.renderEngine.bindTexture(GUI_INVENTORY); for (Iterator activeEffect = activePotionEffects.iterator(); activeEffect.hasNext(); xPos += xStep) { PotionEffect potionEffect = (PotionEffect) activeEffect.next(); Potion potion = Potion.potionTypes[potionEffect.getPotionID()]; - if (potion.hasStatusIcon()) + try { - int iconIndex = potion.getStatusIconIndex(); - this.drawTexturedModalRect( - xPos, yPos, - BUFF_ICON_BASE_U_OFFSET + iconIndex % BUFF_ICONS_PER_ROW * BUFF_ICON_SIZE, - BUFF_ICON_BASE_V_OFFSET + iconIndex / BUFF_ICONS_PER_ROW * BUFF_ICON_SIZE, - BUFF_ICON_SIZE, BUFF_ICON_SIZE); + // yes potion should not be null here, but it sometimes does. let the vanilla crash itself, no need to report this to us + if (potion != null && potion.hasStatusIcon()) + { + int iconIndex = potion.getStatusIconIndex(); + this.drawTexturedModalRect( + xPos, yPos, + BUFF_ICON_BASE_U_OFFSET + iconIndex % BUFF_ICONS_PER_ROW * BUFF_ICON_SIZE, + BUFF_ICON_BASE_V_OFFSET + iconIndex / BUFF_ICONS_PER_ROW * BUFF_ICON_SIZE, + BUFF_ICON_SIZE, BUFF_ICON_SIZE); + } + } + catch (NullPointerException npe) + { + String msg = "Weird NPE is caught: activePotionEffects: " + activePotionEffects + + "; potionEffect: " + potionEffect + "; potion: " + potion; + throw new NullPointerException(msg); } } } @@ -147,7 +173,7 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) } for (FluidTank tank : inv.getTanksArray()) { - mc.renderEngine.bindTexture(new ResourceLocation(ModInfo.MOD_ID, "textures/gui/overlay.png")); + mc.renderEngine.bindTexture(TANKS_OVERLAY); drawTexturedModalRect(tankX, yPos, 10, 0, textureWidth, textureHeight); drawTank(tank, tankX + 1, yPos + 1, textureHeight - 2, textureWidth - 2); ++tankX; @@ -169,7 +195,7 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) u[0] = (tank == 0) ? 0 : 10; u[1] = (tank == 1) ? 0 : 10; } - mc.renderEngine.bindTexture(new ResourceLocation(ModInfo.MOD_ID, "textures/gui/overlay.png")); + mc.renderEngine.bindTexture(TANKS_OVERLAY); drawTexturedModalRect(xStart[0], yStart[0], u[0], v[0], textureWidth, textureHeight); //Left Tank drawTexturedModalRect(xStart[1], yStart[0], u[1], v[1], textureWidth, textureHeight); //Right Tank RenderHelper.enableStandardItemLighting(); @@ -267,7 +293,7 @@ private void drawItemStack(ItemStack stack, ToolHandler toolHandler, int x, int GL11.glTranslatef(0F, 0F, 32.0F); FontRenderer font = null; font = stack.getItem().getFontRenderer(stack); - if (font == null) font = fontRendererObj; + if (font == null) font = fontRenderer; itemRender.renderItemIntoGUI(font, mc.getTextureManager(), stack, x, y); break; } @@ -275,4 +301,27 @@ private void drawItemStack(ItemStack stack, ToolHandler toolHandler, int x, int this.zLevel = 0.0F; itemRender.zLevel = 0.0F; } + + private void drawBossBar() + { + if (BossStatus.bossName != null && BossStatus.statusBarTime > 0) + { + --BossStatus.statusBarTime; + GL11.glEnable(GL11.GL_BLEND); + int barWidth = 182; + int posX = screenWidth / 2 - barWidth / 2; + int posY = ConfigHandler.bossBarIndent; + int bossHealthWidth = (int) (BossStatus.healthScale * (barWidth + 1)); + this.mc.getTextureManager().bindTexture(GUI_ICONS); + this.drawTexturedModalRect(posX, posY, 0, 74, barWidth, 5); + this.drawTexturedModalRect(posX, posY, 0, 74, barWidth, 5); + if (bossHealthWidth > 0) + this.drawTexturedModalRect(posX, posY, 0, 79, bossHealthWidth, 5); + String s = BossStatus.bossName; + fontRenderer.drawStringWithShadow(s, screenWidth / 2 - fontRenderer.getStringWidth(s) / 2, posY - 10, 16777215); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glDisable(GL11.GL_BLEND); + } + } + } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java b/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java index 86bf6c29..2cad8f0e 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java @@ -27,7 +27,7 @@ private static List getConfigElements() { List configElements = new ArrayList(); - List topCategories = Arrays.asList("gameplay", "graphics", "sound", "items", "worldgen"); + List topCategories = Arrays.asList("gameplay", "graphics", "sound", "items", "worldgen", "experimental"); for (String categoryName : topCategories) { ConfigCategory category = ConfigHandler.config.getCategory(categoryName); diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 286e46e9..e4bec2b1 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -95,6 +95,8 @@ public class ConfigHandler public static boolean allowGolemGen = true; public static boolean allowPigmanGen = false; + public static int bossBarIndent = 12; + public static void init(File configFile) { if (config == null) @@ -184,6 +186,9 @@ private static void loadConfiguration() allowGolemGen = config.getBoolean("IronGolem Backpacks", "worldgen", true, "Allow generation of IronGolem Backpacks in village blacksmith loot. It cannot be obtained by crafting"); allowPigmanGen = config.getBoolean("Pigman Backpacks", "worldgen", false, "Allow generation of Pigman Backpacks in dungeon loot and villager trades"); + // Experimental + bossBarIndent = config.getInt("Boss Bar Indent", "experimental", 0, 0, 500, "Boss health bar indent from top border, 0 = standard Forge render"); + if (config.hasChanged()) { config.save(); diff --git a/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java b/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java index 20f901c7..c396ecc9 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java @@ -34,7 +34,6 @@ */ public class EntityInflatableBoat extends EntityBoat implements IInventoryTanks, IEntityAdditionalSpawnData { - @SuppressWarnings({"FieldCanBeLocal"}) private FluidTank fuelTank; private boolean isBoatEmpty; private double speedMultiplier; @@ -83,6 +82,8 @@ public boolean isInflated() @Override public void onUpdate() { + this.onEntityUpdate(); + if (!inflated) { inflation += 0.025; diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java index 27cedbaf..46e5c672 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/GeneralEventHandler.java @@ -106,7 +106,7 @@ public void detectArrow(ArrowLooseEvent event) @SubscribeEvent public void detectLightning(EntityStruckByLightningEvent event) { - if (event.entity != null && event.entity instanceof EntityPlayer) + if (event.entity instanceof EntityPlayer) { ServerActions.electrify((EntityPlayer) event.entity); } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 88ff4ad5..740c3f57 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -282,10 +282,9 @@ private int getItemCount(ItemStack backpack) for (int i = itemCount - 1; i >= 0; i--) { int slotAtI = itemList.getCompoundTagAt(i).getInteger("Slot"); - if (slotAtI < Constants.TOOL_UPPER) + if (slotAtI <= Constants.END_OF_INVENTORY) break; - else if (slotAtI == Constants.TOOL_UPPER || slotAtI == Constants.TOOL_LOWER) - itemCount--; + itemCount--; } return itemCount; } diff --git a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java index db68ce11..797f8a6e 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java @@ -125,7 +125,7 @@ public enum BackpackTypes BackpackTypes(int meta, String skin, Props... props) { - Validate.inclusiveBetween(0, 127, meta, "wrong meta value: %s (%s)", meta, this); + Validate.inclusiveBetween(0, (int) Byte.MAX_VALUE, meta, "wrong meta value: %s (%s)", meta, this); this.meta = (byte) meta; this.props = props; @@ -134,7 +134,7 @@ public enum BackpackTypes BackpackTypes(int meta, Props... props) { - Validate.inclusiveBetween(0, 127, meta, "wrong meta value: %s (%s)", meta, this); + Validate.inclusiveBetween(0, (int) Byte.MAX_VALUE, meta, "wrong meta value: %s (%s)", meta, this); this.meta = (byte) meta; this.props = props; @@ -177,6 +177,7 @@ private String generateSkinName() NIGHT_VISION_TYPES = Sets.immutableEnumSet(nightVisions); //ImmutableSet.builder().addAll(SPECIAL).addAll(TILE).addAll(OTHER).build(); + //TODO LogHelper.info("Registered blablabla types, blabla specials..."); } public static String getSkinName(BackpackTypes type) @@ -201,14 +202,14 @@ public static byte getMeta(BackpackTypes type) public static BackpackTypes getType(int meta) { - Validate.inclusiveBetween(0, 127, meta, "wrong meta value: %s", meta); + Validate.inclusiveBetween(0, (int) Byte.MAX_VALUE, meta, "wrong meta value: %s", meta); BackpackTypes type = BY_META.get((byte) meta); return type != null ? type : UNKNOWN; } public static BackpackTypes getType(byte meta) { - Validate.inclusiveBetween((byte) 0, (byte) 127, meta, "wrong meta value: %s", meta); + Validate.inclusiveBetween((byte) 0, Byte.MAX_VALUE, meta, "wrong meta value: %s", meta); BackpackTypes type = BY_META.get(meta); return type != null ? type : UNKNOWN; } @@ -238,10 +239,10 @@ public static BackpackTypes getType(ItemStack backpack) public static int getLowestUnusedMeta() { - for (byte i = 0; i <= 126; i++) + for (byte b = 0; b < Byte.MAX_VALUE; b++) { - if (BY_META.get(i) == null) - return i; + if (BY_META.get(b) == null) + return b; } return -1; } diff --git a/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java b/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java index 606e01c4..87e42086 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java @@ -33,7 +33,7 @@ private GregtechUtils() {} } catch (Exception e) { - LogHelper.error("Error getting instance of Gregtech: " + e.getMessage()); + LogHelper.error("Error getting instance of Gregtech: " + e); } } } diff --git a/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java b/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java index 56f0df5f..eddd8457 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java @@ -30,7 +30,7 @@ private ThaumcraftUtils() {} } catch (Exception e) { - LogHelper.error("Error getting Thaumcraft Wands Renderer instance: " + e.getMessage()); + LogHelper.error("Error getting Thaumcraft Wands Renderer instance: " + e); } } diff --git a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java index e0e4dac1..1cb95a09 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java @@ -61,7 +61,7 @@ private TinkersUtils() {} } catch (Exception e) { - LogHelper.error("Error getting Tinkers Crafting Station instance: " + e.getMessage()); + LogHelper.error("Error getting Tinkers Crafting Station instance: " + e); } try @@ -70,7 +70,7 @@ private TinkersUtils() {} } catch (Exception e) { - LogHelper.error("Error getting Tinkers Tool Renderer instance: " + e.getMessage()); + LogHelper.error("Error getting Tinkers Tool Renderer instance: " + e); } } } @@ -106,8 +106,7 @@ public static ItemStack getTinkersRecipe(InventoryCrafting craftMatrix) } catch (Exception e) { - LogHelper.error("Error during reflection in getTinkersRecipe: " + e.getMessage()); - //e.printStackTrace(); + LogHelper.error("Error during reflection in getTinkersRecipe: " + e); return null; } } From f747721cabd4137ba8dcef06b16c7203c60eff31 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 21 Feb 2018 15:57:50 +0700 Subject: [PATCH 436/462] Fixed crash https://github.com/runescapejon/AdventureBackpack2/issues/122 --- .../adventurebackpack/util/GregtechUtils.java | 2 +- .../adventurebackpack/util/ThaumcraftUtils.java | 15 +++++++++------ .../adventurebackpack/util/TinkersUtils.java | 2 +- .../com/darkona/adventurebackpack/util/Utils.java | 5 +++++ 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java b/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java index 87e42086..93bcb183 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java @@ -25,7 +25,7 @@ private GregtechUtils() {} static { - if (ConfigHandler.IS_GREGTECH) + if (ConfigHandler.IS_GREGTECH && Utils.inClient()) { try { diff --git a/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java b/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java index eddd8457..17eafb5d 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java @@ -24,13 +24,16 @@ private ThaumcraftUtils() {} static { - try - { - toolRendererInstance = Class.forName(CLASS_RENDERER).newInstance(); - } - catch (Exception e) + if (ConfigHandler.IS_THAUMCRAFT && Utils.inClient()) { - LogHelper.error("Error getting Thaumcraft Wands Renderer instance: " + e); + try + { + toolRendererInstance = Class.forName(CLASS_RENDERER).newInstance(); + } + catch (Exception e) + { + LogHelper.error("Error getting Thaumcraft Wands Renderer instance: " + e); + } } } diff --git a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java index 1cb95a09..1f0fba95 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java @@ -43,7 +43,7 @@ private TinkersUtils() {} static { - if (ConfigHandler.IS_TCONSTRUCT) + if (ConfigHandler.IS_TCONSTRUCT && Utils.inClient()) { try { diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index 14928f96..4887b41c 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -75,6 +75,11 @@ public static boolean inServer() return FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER; } + public static boolean inClient() + { + return FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT; + } + private static final EnumChatFormatting[] RAINBOW_SEQUENCE = {EnumChatFormatting.RED, EnumChatFormatting.GOLD, EnumChatFormatting.YELLOW, EnumChatFormatting.GREEN, EnumChatFormatting.AQUA, EnumChatFormatting.BLUE, EnumChatFormatting.DARK_PURPLE}; From c59856fbadd847d06cf07af41c57e7bf6601e33f Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 21 Feb 2018 20:48:39 +0700 Subject: [PATCH 437/462] Fixed TiCo tools maintenance on servers Yes, I did the most annoying thing in the world, I tested in multiplayer --- .../adventurebackpack/util/TinkersUtils.java | 59 +++++++++++++------ 1 file changed, 40 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java index 1f0fba95..2065edcf 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java @@ -3,6 +3,7 @@ import javax.annotation.Nullable; import java.util.UUID; +import net.minecraft.client.Minecraft; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.InventoryCrafting; @@ -43,35 +44,55 @@ private TinkersUtils() {} static { - if (ConfigHandler.IS_TCONSTRUCT && Utils.inClient()) + if (ConfigHandler.IS_TCONSTRUCT) { - try + getCraftingStationInstance(); + + if (Utils.inClient()) { - Class craftingLogic = Class.forName(CLASS_CRAFTING_LOGIC); - Object craftingLogicInstance = craftingLogic.newInstance(); + try + { + toolRendererInstance = Class.forName(CLASS_RENDERER).newInstance(); + } + catch (Exception e) + { + LogHelper.error("Error getting Tinkers Tool Renderer instance: " + e); + } + } + } + } + + private static void getCraftingStationInstance() + { + try + { + Class craftingLogic = Class.forName(CLASS_CRAFTING_LOGIC); + Object craftingLogicInstance = craftingLogic.newInstance(); + InventoryPlayer invPlayer; + if (Utils.inServer()) + { WorldServer world = FMLCommonHandler.instance().getMinecraftServerInstance().worldServers[0]; UUID fakeUuid = UUID.fromString("521e749d-2ac0-3459-af7a-160b4be5c62b"); GameProfile fakeProfile = new GameProfile(fakeUuid, "[Adventurer]"); - - craftingStation = Class.forName(CLASS_CRAFTING_STATION); - craftingStationInstance = craftingStation - .getConstructor(InventoryPlayer.class, craftingLogic, int.class, int.class, int.class) - .newInstance(new InventoryPlayer(new FakePlayer(world, fakeProfile)), craftingLogicInstance, 0, 0, 0); + invPlayer = new InventoryPlayer(new FakePlayer(world, fakeProfile)); } - catch (Exception e) + else { - LogHelper.error("Error getting Tinkers Crafting Station instance: " + e); + invPlayer = Minecraft.getMinecraft().thePlayer.inventory; } - try - { - toolRendererInstance = Class.forName(CLASS_RENDERER).newInstance(); - } - catch (Exception e) - { - LogHelper.error("Error getting Tinkers Tool Renderer instance: " + e); - } + craftingStation = Class.forName(CLASS_CRAFTING_STATION); + craftingStationInstance = craftingStation + .getConstructor(InventoryPlayer.class, craftingLogic, int.class, int.class, int.class) + .newInstance(invPlayer, craftingLogicInstance, 0, 0, 0); + + LogHelper.info("Tinkers Crafting Station instance created"); + } + catch (Exception e) + { + LogHelper.error("Error getting Tinkers Crafting Station instance: " + e); + //e.printStackTrace(); } } From 035ead0228f633eff14ab1d8d9b87785bcacf7d9 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 22 Feb 2018 00:40:31 +0700 Subject: [PATCH 438/462] Fixed wrong refactoring --- .../adventurebackpack/block/TileAdventureBackpack.java | 1 + .../com/darkona/adventurebackpack/util/CoordsUtils.java | 6 +----- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index f60168a1..837b9200 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -119,6 +119,7 @@ public boolean deploySleepingBag(EntityPlayer player, World world, int meta, int sby = cY; sbz = cZ; sbdir = meta; + world.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); } return sleepingBagDeployed; } diff --git a/src/main/java/com/darkona/adventurebackpack/util/CoordsUtils.java b/src/main/java/com/darkona/adventurebackpack/util/CoordsUtils.java index 65ee2ca0..02f1455c 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/CoordsUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/CoordsUtils.java @@ -274,11 +274,7 @@ public static boolean spawnSleepingBag(EntityPlayer player, World world, int met ++cX; break; } - if (world.setBlock(cX, cY, cZ, sleepingBag, meta + 8, 3)) - { - world.markBlockForUpdate(cX, cY, cZ); - return true; - } + return world.setBlock(cX, cY, cZ, sleepingBag, meta + 8, 3); } return false; } From 00f0a78db316603422df3e6bd9117586d8565d84 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Fri, 23 Feb 2018 16:22:51 +0700 Subject: [PATCH 439/462] Status overlay position takes into account Thaumcraft GUI --- .../client/gui/GuiOverlay.java | 10 ++++++++- .../config/ConfigHandler.java | 2 ++ .../inventory/IAsynchronousInventory.java | 4 ++-- .../inventory/InventoryBackpack.java | 2 +- .../util/ThaumcraftUtils.java | 22 +++++++++++++++++-- 5 files changed, 34 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java index 43203703..34525e95 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java @@ -81,6 +81,7 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) if (event.type != RenderGameOverlayEvent.ElementType.EXPERIENCE) return; + EntityPlayer player = mc.thePlayer; ScaledResolution resolution = new ScaledResolution(this.mc, this.mc.displayWidth, this.mc.displayHeight); screenWidth = resolution.getScaledWidth(); screenHeight = resolution.getScaledHeight(); @@ -107,6 +108,14 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) ? ConfigHandler.statusOverlayIndentV : screenHeight - BUFF_ICON_SIZE - ConfigHandler.statusOverlayIndentV; + if (ConfigHandler.IS_THAUMCRAFT + && ConfigHandler.statusOverlayThaumcraft && ConfigHandler.statusOverlayLeft + && ConfigHandler.statusOverlayTop == !ThaumcraftUtils.IS_DIAL_BOTTOM + && ThaumcraftUtils.isTool(player.inventory.getCurrentItem())) + { + xPos += 50; // do not overlap thaumcraft GUI + } + Collection activePotionEffects = this.mc.thePlayer.getActivePotionEffects(); if (!activePotionEffects.isEmpty()) { @@ -144,7 +153,6 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) if (ConfigHandler.tanksOverlay) { - EntityPlayer player = mc.thePlayer; if (Wearing.isWearingWearable(player)) { IInventoryTanks inv = Wearing.getWearingWearableInv(player); diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index e4bec2b1..bfeb31c0 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -46,6 +46,7 @@ public class ConfigHandler public static boolean statusOverlayTop = true; public static int statusOverlayIndentH = 2; public static int statusOverlayIndentV = 2; + public static boolean statusOverlayThaumcraft = true; public static boolean tanksOverlay = true; public static boolean tanksOverlayRight = true; @@ -134,6 +135,7 @@ private static void loadConfiguration() statusOverlayTop = config.getBoolean("Stick To Top", "graphics.status", true, "Stick to top?"); statusOverlayIndentH = config.getInt("Indent Horizontal", "graphics.status", 2, 0, 1000, "Horizontal indent from the window border"); statusOverlayIndentV = config.getInt("Indent Vertical", "graphics.status", 2, 0, 500, "Vertical indent from the window border"); + statusOverlayThaumcraft = config.getBoolean("Respect Thaumcraft", "graphics.status", true, "Take into account Thaumcraft wands GUI and do not overlap it"); // Graphics.Tanks tanksOverlay = config.getBoolean("Enable Overlay", "graphics.tanks", true, "Show the different wearable overlays on screen?"); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/IAsynchronousInventory.java b/src/main/java/com/darkona/adventurebackpack/inventory/IAsynchronousInventory.java index 8a00dd2d..1ac1abdc 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/IAsynchronousInventory.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/IAsynchronousInventory.java @@ -10,7 +10,7 @@ */ public interface IAsynchronousInventory extends IInventory { - void setInventorySlotContentsNoSave(int slot, ItemStack stack); + void setInventorySlotContentsNoSave(int slot, ItemStack stack); //TODO rework realisations, see InventoryBackpack - ItemStack decrStackSizeNoSave(int slot, int amount); + ItemStack decrStackSizeNoSave(int slot, int amount); //TODO whats the point and diff with decrStackSize? } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index ce0fefee..e5a60edd 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -210,7 +210,7 @@ public void setInventorySlotContentsNoSave(int slot, ItemStack stack) if (stack.stackSize > this.getInventoryStackLimit()) stack.stackSize = this.getInventoryStackLimit(); - if(stack.stackSize == 0) + if (stack.stackSize == 0) stack = null; } diff --git a/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java b/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java index 17eafb5d..35076d6e 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java @@ -12,12 +12,15 @@ */ public class ThaumcraftUtils { + public static final boolean IS_DIAL_BOTTOM = setIsDialBottom(); + private static final String CLASS_RENDERER = "thaumcraft.client.renderers.item.ItemWandRenderer"; + private static final String CLASS_CONFIG = "thaumcraft.common.config.Config"; + private static final String CLASS_WANDS = "thaumcraft.common.items.wands.ItemWandCasting"; private static final String METHOD_RENDERER = "renderItem"; + private static final String FIELD_DIAL_BOTTOM = "dialBottom"; private static final Object[] EMPTY_OBJECT = {}; - private static final String CLASS_WANDS = "thaumcraft.common.items.wands.ItemWandCasting"; - private static Object toolRendererInstance; private ThaumcraftUtils() {} @@ -37,6 +40,21 @@ private ThaumcraftUtils() {} } } + private static boolean setIsDialBottom() + { + if (!ConfigHandler.IS_THAUMCRAFT || Utils.inServer()) + return false; + + try + { + return Class.forName(CLASS_CONFIG).getField(FIELD_DIAL_BOTTOM).getBoolean(null); + } + catch (ClassNotFoundException | NoSuchFieldException | IllegalAccessException e) + { + return false; + } + } + public static boolean isTool(ItemStack stack) { if (!ConfigHandler.IS_THAUMCRAFT || stack == null) From 93e73735f81fc01121bc5625543cc2bed5957484 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sat, 24 Feb 2018 21:30:30 +0700 Subject: [PATCH 440/462] TiCo ammo and ranged weapons support Refactorings --- .../adventurebackpack/AdventureBackpack.java | 33 +------- .../client/gui/GuiAdvBackpack.java | 6 +- .../client/gui/GuiOverlay.java | 5 +- .../config/ConfigHandler.java | 7 -- .../init/ConditionalFluidEffect.java | 4 +- .../adventurebackpack/init/ModItems.java | 4 +- .../adventurebackpack/init/ModRecipes.java | 2 +- .../inventory/ContainerBackpack.java | 4 +- .../reference/BackpackTypes.java | 28 +++---- .../reference/GeneralReference.java | 2 +- .../reference/LoadedMods.java | 48 +++++++++++ .../adventurebackpack/util/EnchUtils.java | 55 +++++------- .../adventurebackpack/util/GregtechUtils.java | 27 ++++-- .../util/ThaumcraftUtils.java | 33 +++++--- .../adventurebackpack/util/TinkersUtils.java | 83 +++++++++++-------- 15 files changed, 185 insertions(+), 156 deletions(-) create mode 100644 src/main/java/com/darkona/adventurebackpack/reference/LoadedMods.java diff --git a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java index 26f753a6..7c8e0d90 100644 --- a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java @@ -1,11 +1,8 @@ package com.darkona.adventurebackpack; -import net.minecraft.launchwrapper.Launch; import net.minecraftforge.common.MinecraftForge; import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.Mod; -import cpw.mods.fml.common.ModContainer; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; @@ -29,9 +26,9 @@ import com.darkona.adventurebackpack.init.ModWorldGen; import com.darkona.adventurebackpack.proxy.IProxy; import com.darkona.adventurebackpack.reference.GeneralReference; +import com.darkona.adventurebackpack.reference.LoadedMods; import com.darkona.adventurebackpack.reference.ModInfo; import com.darkona.adventurebackpack.reference.WailaTileAdventureBackpack; -import com.darkona.adventurebackpack.util.LogHelper; /** * Created on 10/10/2014 @@ -88,37 +85,11 @@ public void init(FMLInitializationEvent event) @Mod.EventHandler public void postInit(FMLPostInitializationEvent event) { - if ((Boolean) Launch.blackboard.get("fml.deobfuscatedEnvironment")) - { - ConfigHandler.IS_DEVENV = true; - LogHelper.info("Dev environment detected. All hail the creator"); - } - - ConfigHandler.IS_BUILDCRAFT = registerMod("BuildCraft|Core"); - ConfigHandler.IS_ENDERIO = registerMod("EnderIO"); - ConfigHandler.IS_GREGTECH = registerMod("gregtech"); - ConfigHandler.IS_TCONSTRUCT = registerMod("TConstruct"); - ConfigHandler.IS_THAUMCRAFT = registerMod("Thaumcraft"); - + LoadedMods.init(); GeneralReference.init(); //ConditionalFluidEffect.init(); //ModItems.conditionalInit(); //ModRecipes.conditionalInit(); } - - private static boolean registerMod(String modID) - { - if (!Loader.isModLoaded(modID)) - return false; - - String modName = modID; - for (ModContainer mod : Loader.instance().getModList()) - { - if (mod.getModId().equals(modID)) - modName = mod.getName(); - } - LogHelper.info(modName + " is present. Acting accordingly"); - return true; - } } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index f1d24d44..f0989d61 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -21,6 +21,7 @@ import com.darkona.adventurebackpack.inventory.InventoryBackpack; import com.darkona.adventurebackpack.network.PlayerActionPacket; import com.darkona.adventurebackpack.network.SleepingBagPacket; +import com.darkona.adventurebackpack.reference.LoadedMods; import com.darkona.adventurebackpack.util.Resources; import com.darkona.adventurebackpack.util.TinkersUtils; @@ -33,7 +34,6 @@ public class GuiAdvBackpack extends GuiWithTanks { private static final ResourceLocation TEXTURE = Resources.guiTextures("guiBackpackNew"); - private static final ResourceLocation TINKERS_ICONS = TinkersUtils.getTinkersIcons(); private static final int TINKERS_SLOT = 38; //ContainerBackpack.CRAFT_MATRIX_EMULATION[4] private static GuiImageButtonNormal bedButton = new GuiImageButtonNormal(5, 91, 18, 18); @@ -110,11 +110,11 @@ else if (source == Source.HOLDING) drawHoveringText(tankRight.getTankTooltip(), mouseX, mouseY, fontRendererObj); } - if (ConfigHandler.IS_TCONSTRUCT && ConfigHandler.tinkerToolsMaintenance) + if (LoadedMods.TCONSTRUCT && ConfigHandler.tinkerToolsMaintenance) { if (inventory.getStackInSlot(TINKERS_SLOT) == null) { - this.mc.getTextureManager().bindTexture(TINKERS_ICONS); + this.mc.getTextureManager().bindTexture(TinkersUtils.GUI_ICONS); this.drawTexturedModalRect(this.guiLeft + 169, this.guiTop + 77, 0, 233, 18, 18); } } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java index 34525e95..8248a90b 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java @@ -33,6 +33,7 @@ import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.inventory.IInventoryTanks; import com.darkona.adventurebackpack.item.ItemHose; +import com.darkona.adventurebackpack.reference.LoadedMods; import com.darkona.adventurebackpack.reference.ModInfo; import com.darkona.adventurebackpack.reference.ToolHandler; import com.darkona.adventurebackpack.util.GregtechUtils; @@ -108,9 +109,9 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) ? ConfigHandler.statusOverlayIndentV : screenHeight - BUFF_ICON_SIZE - ConfigHandler.statusOverlayIndentV; - if (ConfigHandler.IS_THAUMCRAFT + if (LoadedMods.THAUMCRAFT && ConfigHandler.statusOverlayThaumcraft && ConfigHandler.statusOverlayLeft - && ConfigHandler.statusOverlayTop == !ThaumcraftUtils.IS_DIAL_BOTTOM + && ConfigHandler.statusOverlayTop == !ThaumcraftUtils.DIAL_BOTTOM && ThaumcraftUtils.isTool(player.inventory.getCurrentItem())) { xPos += 50; // do not overlap thaumcraft GUI diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index bfeb31c0..bb5b84b1 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -17,13 +17,6 @@ public class ConfigHandler { public static Configuration config; - public static boolean IS_DEVENV = false; - public static boolean IS_BUILDCRAFT = false; - public static boolean IS_ENDERIO = false; - public static boolean IS_GREGTECH = false; - public static boolean IS_TCONSTRUCT = false; - public static boolean IS_THAUMCRAFT = false; - public static boolean allowSoulBound = true; public static boolean backpackDeathPlace = true; public static boolean backpackAbilities = true; diff --git a/src/main/java/com/darkona/adventurebackpack/init/ConditionalFluidEffect.java b/src/main/java/com/darkona/adventurebackpack/init/ConditionalFluidEffect.java index ad32cb24..8ad5fb90 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ConditionalFluidEffect.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ConditionalFluidEffect.java @@ -1,8 +1,8 @@ package com.darkona.adventurebackpack.init; -import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.fluids.effects.FuelEffect; import com.darkona.adventurebackpack.fluids.effects.OilEffect; +import com.darkona.adventurebackpack.reference.LoadedMods; import adventurebackpack.api.FluidEffect; /** @@ -17,7 +17,7 @@ public class ConditionalFluidEffect public static void init() { - if (ConfigHandler.IS_BUILDCRAFT) + if (LoadedMods.BUILDCRAFT) { oilEffect = new OilEffect(); fuelEffect = new FuelEffect(); diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModItems.java b/src/main/java/com/darkona/adventurebackpack/init/ModItems.java index 7ca8c2c1..ccdca0aa 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModItems.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModItems.java @@ -55,12 +55,12 @@ public static void init() /*public static void conditionalInit() { - if (ConfigHandler.IS_BUILDCRAFT) + if (LoadedMods.BUILDCRAFT) { GameRegistry.registerItem(copterPack, "copterPack"); } - if (ConfigHandler.IS_RAILCRAFT) + if (LoadedMods.RAILCRAFT) { GameRegistry.registerItem(steamJetpack, "steamJetpack"); } diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java index 8803a135..0156e02e 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java @@ -286,7 +286,7 @@ public static void init() /*public static void conditionalInit() { - if(ConfigHandler.IS_BUILDCRAFT) + if (LoadedMods.BUILDCRAFT) { } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index dbd696c4..0e8d6a15 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -96,7 +96,7 @@ private void makeSlots(InventoryPlayer invPlayer) startX = 215; startY = -2500; - //startY = ConfigHandler.IS_DEVENV ? 125 : -2500; + //startY = LoadedMods.DEV_ENV ? 125 : -2500; for (int row = 0; row < MATRIX_DIMENSION; row++) // craftMatrix, usually 9 slots, [90-98] { for (int col = 0; col < MATRIX_DIMENSION; col++) @@ -268,7 +268,7 @@ protected void dropContentOnClose() @Override public void onCraftMatrixChanged(IInventory inventory) { - if (ConfigHandler.tinkerToolsMaintenance && TinkersUtils.isTool(craftMatrix.getStackInSlot(4))) + if (ConfigHandler.tinkerToolsMaintenance && TinkersUtils.isToolOrWeapon(craftMatrix.getStackInSlot(4))) { craftResult.setInventorySlotContents(0, TinkersUtils.getTinkersRecipe(craftMatrix)); return; diff --git a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java index 797f8a6e..1a67ffb6 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java @@ -1,5 +1,6 @@ package com.darkona.adventurebackpack.reference; +import java.util.Arrays; import java.util.EnumSet; import com.google.common.collect.BiMap; @@ -7,6 +8,7 @@ import com.google.common.collect.ImmutableBiMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.Validate; import org.apache.commons.lang3.text.WordUtils; @@ -121,24 +123,20 @@ public enum BackpackTypes private final byte meta; private final String skinName; - private final Props[] props; + private final ImmutableSet props; BackpackTypes(int meta, String skin, Props... props) { Validate.inclusiveBetween(0, (int) Byte.MAX_VALUE, meta, "wrong meta value: %s (%s)", meta, this); this.meta = (byte) meta; - this.props = props; - this.skinName = skin; + this.skinName = skin.isEmpty() ? generateSkinName() : skin; + this.props = Sets.immutableEnumSet((Arrays.asList(props))); } BackpackTypes(int meta, Props... props) { - Validate.inclusiveBetween(0, (int) Byte.MAX_VALUE, meta, "wrong meta value: %s (%s)", meta, this); - - this.meta = (byte) meta; - this.props = props; - this.skinName = generateSkinName(); + this(meta, StringUtils.EMPTY, props); } private String generateSkinName() @@ -259,12 +257,12 @@ public static boolean isSpecial(BackpackTypes type) public static boolean hasProperty(BackpackTypes type, Props prop) { - for (Props p : type.props) - { - if (p == prop) - return true; - } - return false; + return type.props.contains(prop); + } + + public static boolean hasProperties(BackpackTypes type, ImmutableSet props) + { + return type.props.containsAll(props); } public enum Props @@ -276,6 +274,8 @@ public enum Props //HOLIDAY, //OTHER_ABILITY, // creeper or skeleton etc ; + + public static final ImmutableSet POTION_EFFECT = Sets.immutableEnumSet(SPECIAL, REMOVAL); } // --- diff --git a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java index 9ad286f4..5daeb751 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/GeneralReference.java @@ -31,7 +31,7 @@ public static void init() parseLiquidFuelsConfig(); parseDimensionBlacklistConfig(); - if (ConfigHandler.IS_DEVENV) + if (LoadedMods.DEV_ENV) liquidFuels.put("holywater", 0.0f); // shhh.. you did not see anything. hallelujah! } diff --git a/src/main/java/com/darkona/adventurebackpack/reference/LoadedMods.java b/src/main/java/com/darkona/adventurebackpack/reference/LoadedMods.java new file mode 100644 index 00000000..d4985da4 --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/reference/LoadedMods.java @@ -0,0 +1,48 @@ +package com.darkona.adventurebackpack.reference; + +import net.minecraft.launchwrapper.Launch; +import cpw.mods.fml.common.Loader; +import cpw.mods.fml.common.ModContainer; + +import com.darkona.adventurebackpack.util.LogHelper; + +/** + * Created on 24.02.2018 + * + * @author Ugachaga + */ +public final class LoadedMods +{ + public static final boolean DEV_ENV = (Boolean) Launch.blackboard.get("fml.deobfuscatedEnvironment"); + + public static final boolean BUILDCRAFT = registerMod("BuildCraft|Core"); + public static final boolean ENDERIO = registerMod("EnderIO"); + public static final boolean GREGTECH = registerMod("gregtech"); + public static final boolean TCONSTRUCT = registerMod("TConstruct"); + public static final boolean THAUMCRAFT = registerMod("Thaumcraft"); + + private LoadedMods() {} + + public static void init() + { + if (DEV_ENV) + { + LogHelper.info("Dev environment detected. All hail the creator"); + } + } + + private static boolean registerMod(String modID) + { + if (!Loader.isModLoaded(modID)) + return false; + + String modName = modID; + for (ModContainer mod : Loader.instance().getModList()) + { + if (mod.getModId().equals(modID)) + modName = mod.getName(); + } + LogHelper.info(modName + " is present. Acting accordingly"); + return true; + } +} diff --git a/src/main/java/com/darkona/adventurebackpack/util/EnchUtils.java b/src/main/java/com/darkona/adventurebackpack/util/EnchUtils.java index 87193cd0..fff885d0 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/EnchUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/EnchUtils.java @@ -7,60 +7,46 @@ import net.minecraftforge.common.util.Constants.NBT; import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.reference.LoadedMods; /** - * Created by Ugachaga on 24.03.2017. + * Created on 24.03.2017 + * + * @author Ugachaga */ - -public class EnchUtils +public final class EnchUtils { - static - { - setSoulBoundID(); - } - // -3 - disabled by config // -2 - EnderIO not found // -1 - enchantment not found - private static int soulBoundID; + private static final int SOUL_BOUND_ID = setSoulBoundID(); - public static int getSoulBoundID() - { - return soulBoundID; - } + private EnchUtils() {} - private static void setSoulBoundID() + private static int setSoulBoundID() { if (!ConfigHandler.allowSoulBound) - { - soulBoundID = -3; - return; - } - if (!ConfigHandler.IS_ENDERIO) - { - soulBoundID = -2; - return; - } + return -3; + + if (!LoadedMods.ENDERIO) + return -2; + for (Enchantment ench : Enchantment.enchantmentsList) - { if (ench != null && ench.getName().equals("enchantment.enderio.soulBound")) - { - soulBoundID = ench.effectId; - return; - } - } - soulBoundID = -1; + return ench.effectId; + + return -1; } public static boolean isSoulBounded(ItemStack stack) { NBTTagList stackEnch = stack.getEnchantmentTagList(); - if (getSoulBoundID() >= 0 && stackEnch != null) + if (SOUL_BOUND_ID >= 0 && stackEnch != null) { for (int i = 0; i < stackEnch.tagCount(); i++) { int id = stackEnch.getCompoundTagAt(i).getInteger("id"); - if (id == getSoulBoundID()) + if (id == SOUL_BOUND_ID) return true; } } @@ -69,7 +55,7 @@ public static boolean isSoulBounded(ItemStack stack) public static boolean isSoulBook(ItemStack book) { - if (getSoulBoundID() >= 0 && book.hasTagCompound()) + if (SOUL_BOUND_ID >= 0 && book.hasTagCompound()) { NBTTagCompound bookData = book.stackTagCompound; if (bookData.hasKey("StoredEnchantments")) @@ -78,8 +64,7 @@ public static boolean isSoulBook(ItemStack book) if (!bookEnch.getCompoundTagAt(1).getBoolean("id")) // only pure soulbook allowed { int id = bookEnch.getCompoundTagAt(0).getInteger("id"); - if (id == getSoulBoundID()) - return true; + return id == SOUL_BOUND_ID; } } } diff --git a/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java b/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java index 93bcb183..3bf8a02d 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java @@ -3,14 +3,14 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.client.IItemRenderer; -import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.reference.LoadedMods; /** * Created on 30.01.2018 * * @author Ugachaga */ -public class GregtechUtils +public final class GregtechUtils { private static final String CLASS_RENDERER = "gregtech.common.render.GT_MetaGenerated_Tool_Renderer"; private static final String METHOD_RENDERER = "renderItem"; @@ -25,7 +25,15 @@ private GregtechUtils() {} static { - if (ConfigHandler.IS_GREGTECH && Utils.inClient()) + if (LoadedMods.GREGTECH) + { + createToolRendererInstance(); + } + } + + private static void createToolRendererInstance() + { + if (Utils.inClient()) { try { @@ -33,19 +41,19 @@ private GregtechUtils() {} } catch (Exception e) { - LogHelper.error("Error getting instance of Gregtech: " + e); + LogHelper.error("Error getting instance of Gregtech Tools Renderer: " + e); } } } public static boolean isTool(ItemStack stack) { - return ConfigHandler.IS_GREGTECH && stack.getItem().getUnlocalizedName().equals(TOOLS_NAME); + return LoadedMods.GREGTECH && stack.getItem().getUnlocalizedName().equals(TOOLS_NAME); } public static boolean isTool(String itemName) { - return ConfigHandler.IS_GREGTECH && itemName.equals(TOOLS_NAME); + return LoadedMods.GREGTECH && itemName.equals(TOOLS_NAME); } public static float getToolRotationAngle(ItemStack stack, boolean isLowerSlot) @@ -61,6 +69,9 @@ public static float getToolRotationAngle(ItemStack stack, boolean isLowerSlot) public static void renderTool(ItemStack stack, IItemRenderer.ItemRenderType renderType) { + if (toolRendererInstance == null) + return; + try { Class.forName(CLASS_RENDERER) @@ -68,8 +79,6 @@ public static void renderTool(ItemStack stack, IItemRenderer.ItemRenderType rend .invoke(toolRendererInstance, renderType, stack, EMPTY_OBJECT); } catch (Exception e) - { - //e.printStackTrace(); - } + { /* */ } } } diff --git a/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java b/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java index 35076d6e..a180684e 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java @@ -3,16 +3,16 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.client.IItemRenderer; -import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.reference.LoadedMods; /** * Created on 06.02.2018 * * @author Ugachaga */ -public class ThaumcraftUtils +public final class ThaumcraftUtils { - public static final boolean IS_DIAL_BOTTOM = setIsDialBottom(); + public static final boolean DIAL_BOTTOM = setDialBottom(); private static final String CLASS_RENDERER = "thaumcraft.client.renderers.item.ItemWandRenderer"; private static final String CLASS_CONFIG = "thaumcraft.common.config.Config"; @@ -27,7 +27,15 @@ private ThaumcraftUtils() {} static { - if (ConfigHandler.IS_THAUMCRAFT && Utils.inClient()) + if (LoadedMods.THAUMCRAFT) + { + createToolRendererInstance(); + } + } + + private static void createToolRendererInstance() + { + if (Utils.inClient()) { try { @@ -35,14 +43,14 @@ private ThaumcraftUtils() {} } catch (Exception e) { - LogHelper.error("Error getting Thaumcraft Wands Renderer instance: " + e); + LogHelper.error("Error getting instance of Thaumcraft Wands Renderer: " + e); } } } - private static boolean setIsDialBottom() + private static boolean setDialBottom() { - if (!ConfigHandler.IS_THAUMCRAFT || Utils.inServer()) + if (!LoadedMods.THAUMCRAFT || Utils.inServer()) return false; try @@ -57,12 +65,12 @@ private static boolean setIsDialBottom() public static boolean isTool(ItemStack stack) { - if (!ConfigHandler.IS_THAUMCRAFT || stack == null) + if (!LoadedMods.THAUMCRAFT || stack == null) return false; try { - return java.lang.Class.forName(CLASS_WANDS).isInstance(stack.getItem()); + return Class.forName(CLASS_WANDS).isInstance(stack.getItem()); } catch (ClassNotFoundException e) { @@ -77,6 +85,9 @@ public static float getToolRotationAngle(ItemStack stack, boolean isLowerSlot) public static void renderTool(ItemStack stack, IItemRenderer.ItemRenderType renderType) { + if (toolRendererInstance == null) + return; + try { Class.forName(CLASS_RENDERER) @@ -84,8 +95,6 @@ public static void renderTool(ItemStack stack, IItemRenderer.ItemRenderType rend .invoke(toolRendererInstance, renderType, stack, EMPTY_OBJECT); } catch (Exception e) - { - //e.printStackTrace(); - } + { /* */ } } } diff --git a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java index 2065edcf..30f3763f 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java @@ -1,5 +1,6 @@ package com.darkona.adventurebackpack.util; +import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.UUID; @@ -15,18 +16,20 @@ import com.mojang.authlib.GameProfile; import cpw.mods.fml.common.FMLCommonHandler; -import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.reference.LoadedMods; /** * Created on 03.02.2018 * * @author Ugachaga */ -public class TinkersUtils +public final class TinkersUtils { + public static final ResourceLocation GUI_ICONS = new ResourceLocation("tinker", "textures/gui/icons.png"); + private static final String CLASS_CRAFTING_LOGIC = "tconstruct.tools.logic.CraftingStationLogic"; private static final String CLASS_CRAFTING_STATION = "tconstruct.tools.inventory.CraftingStationContainer"; - private static final String METHOD_ON_CRAFT_CHANGED = ConfigHandler.IS_DEVENV ? "onCraftMatrixChanged" : "func_75130_a"; + private static final String METHOD_ON_CRAFT_CHANGED = LoadedMods.DEV_ENV ? "onCraftMatrixChanged" : "func_75130_a"; private static final String FIELD_CRAFT_MATRIX = "craftMatrix"; private static final String FIELD_CRAFT_RESULT = "craftResult"; @@ -34,7 +37,9 @@ public class TinkersUtils private static final String METHOD_RENDERER = "renderItem"; private static final Object[] EMPTY_OBJECT = {}; - private static final String PACKAGE_INFI_TOOLS = "tconstruct.items.tools"; + private static final String PACKAGE_TOOLS = "tconstruct.items.tools"; + private static final String PACKAGE_AMMO = "tconstruct.weaponry.ammo"; // arrows and bolts + private static final String PACKAGE_WEAPONS = "tconstruct.weaponry.weapons"; // bows, crossbows, throwing weapons private static Class craftingStation; private static Object craftingStationInstance; @@ -44,25 +49,14 @@ private TinkersUtils() {} static { - if (ConfigHandler.IS_TCONSTRUCT) + if (LoadedMods.TCONSTRUCT) { - getCraftingStationInstance(); - - if (Utils.inClient()) - { - try - { - toolRendererInstance = Class.forName(CLASS_RENDERER).newInstance(); - } - catch (Exception e) - { - LogHelper.error("Error getting Tinkers Tool Renderer instance: " + e); - } - } + createCraftingStationInstance(); + createToolRendererInstance(); } } - private static void getCraftingStationInstance() + private static void createCraftingStationInstance() { try { @@ -86,30 +80,53 @@ private static void getCraftingStationInstance() craftingStationInstance = craftingStation .getConstructor(InventoryPlayer.class, craftingLogic, int.class, int.class, int.class) .newInstance(invPlayer, craftingLogicInstance, 0, 0, 0); - - LogHelper.info("Tinkers Crafting Station instance created"); } catch (Exception e) { - LogHelper.error("Error getting Tinkers Crafting Station instance: " + e); - //e.printStackTrace(); + LogHelper.error("Error getting instance of Tinkers Crafting Station: " + e); + } + } + + private static void createToolRendererInstance() + { + if (Utils.inClient()) + { + try + { + toolRendererInstance = Class.forName(CLASS_RENDERER).newInstance(); + } + catch (Exception e) + { + LogHelper.error("Error getting instance of Tinkers Tool Renderer: " + e); + } } } - public static boolean isTool(ItemStack stack) + public static boolean isToolOrWeapon(@Nullable ItemStack stack) { - return ConfigHandler.IS_TCONSTRUCT - && stack != null && stack.getItem().getClass().getName().startsWith(PACKAGE_INFI_TOOLS); + if (stack == null) + return false; + + String cn = stack.getItem().getClass().getName(); + return cn.startsWith(PACKAGE_TOOLS) || cn.startsWith(PACKAGE_WEAPONS) || cn.startsWith(PACKAGE_AMMO); + } + + public static boolean isTool(@Nonnull ItemStack stack) + { + return LoadedMods.TCONSTRUCT && stack.getItem().getClass().getName().startsWith(PACKAGE_TOOLS); } public static boolean isTool(String clazzName) { - return ConfigHandler.IS_TCONSTRUCT && clazzName.startsWith(PACKAGE_INFI_TOOLS); + return LoadedMods.TCONSTRUCT && clazzName.startsWith(PACKAGE_TOOLS); } @Nullable public static ItemStack getTinkersRecipe(InventoryCrafting craftMatrix) { + if (craftingStationInstance == null) + return null; + try { craftingStation @@ -139,6 +156,9 @@ public static float getToolRotationAngle(ItemStack stack, boolean isLowerSlot) public static void renderTool(ItemStack stack, IItemRenderer.ItemRenderType renderType) { + if (toolRendererInstance == null) + return; + try { Class.forName(CLASS_RENDERER) @@ -146,13 +166,6 @@ public static void renderTool(ItemStack stack, IItemRenderer.ItemRenderType rend .invoke(toolRendererInstance, renderType, stack, EMPTY_OBJECT); } catch (Exception e) - { - //e.printStackTrace(); - } - } - - public static ResourceLocation getTinkersIcons() - { - return new ResourceLocation("tinker", "textures/gui/icons.png"); + { /* */ } } } From 7e10484b685a808714f0fc8fb73ebb5f0bff8ce3 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 26 Feb 2018 01:29:07 +0700 Subject: [PATCH 441/462] Fixed CraftResult sync glitch Fixed rotation angle for some Gregtech tools --- .../client/gui/GuiOverlay.java | 26 +++------ .../inventory/ContainerBackpack.java | 21 +++++++ .../adventurebackpack/inventory/SlotTool.java | 5 +- .../adventurebackpack/util/GregtechUtils.java | 37 ++++++------- .../util/ThaumcraftUtils.java | 18 ++---- .../adventurebackpack/util/TinkersUtils.java | 55 +++++++++---------- .../util/ToolRenderHelper.java | 32 +++++++++++ .../META-INF/adventurebackpack_at.cfg | 2 +- 8 files changed, 115 insertions(+), 81 deletions(-) create mode 100644 src/main/java/com/darkona/adventurebackpack/util/ToolRenderHelper.java diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java index 8248a90b..198b66ea 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java @@ -129,24 +129,16 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) PotionEffect potionEffect = (PotionEffect) activeEffect.next(); Potion potion = Potion.potionTypes[potionEffect.getPotionID()]; - try + // yes potion should not be null here, but it sometimes does + // let the vanilla crash itself, no need to report this to us + if (potion != null && potion.hasStatusIcon()) { - // yes potion should not be null here, but it sometimes does. let the vanilla crash itself, no need to report this to us - if (potion != null && potion.hasStatusIcon()) - { - int iconIndex = potion.getStatusIconIndex(); - this.drawTexturedModalRect( - xPos, yPos, - BUFF_ICON_BASE_U_OFFSET + iconIndex % BUFF_ICONS_PER_ROW * BUFF_ICON_SIZE, - BUFF_ICON_BASE_V_OFFSET + iconIndex / BUFF_ICONS_PER_ROW * BUFF_ICON_SIZE, - BUFF_ICON_SIZE, BUFF_ICON_SIZE); - } - } - catch (NullPointerException npe) - { - String msg = "Weird NPE is caught: activePotionEffects: " + activePotionEffects - + "; potionEffect: " + potionEffect + "; potion: " + potion; - throw new NullPointerException(msg); + int iconIndex = potion.getStatusIconIndex(); + this.drawTexturedModalRect( + xPos, yPos, + BUFF_ICON_BASE_U_OFFSET + iconIndex % BUFF_ICONS_PER_ROW * BUFF_ICON_SIZE, + BUFF_ICON_BASE_V_OFFSET + iconIndex / BUFF_ICONS_PER_ROW * BUFF_ICON_SIZE, + BUFF_ICON_SIZE, BUFF_ICON_SIZE); } } } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 0e8d6a15..0fef433d 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -1,9 +1,11 @@ package com.darkona.adventurebackpack.inventory; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.InventoryCraftResult; +import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; import net.minecraftforge.fluids.FluidTank; @@ -37,6 +39,7 @@ public class ContainerBackpack extends ContainerAdventureBackpack private static final int BUCKET_LEFT = TOOL_END + 1; private static final int BUCKET_RIGHT = BUCKET_LEFT + 2; private static final int MATRIX_DIMENSION = 3; + private static final int CRAFT_RESULT = BUCKET_RIGHT + 2 + (MATRIX_DIMENSION * MATRIX_DIMENSION); private static final int[] CRAFT_MATRIX_EMULATION = findCraftMatrixEmulationIDs(); private InventoryCraftingBackpack craftMatrix = new InventoryCraftingBackpack(this, MATRIX_DIMENSION, MATRIX_DIMENSION); @@ -110,6 +113,24 @@ private void makeSlots(InventoryPlayer invPlayer) syncCraftMatrixToInventory(); } + @Override + public void detectAndSendChanges() + { + ItemStack stackA = ((Slot) inventorySlots.get(CRAFT_RESULT)).getStack(); + ItemStack stackB = (ItemStack) inventoryItemStacks.get(CRAFT_RESULT); + + if (!ItemStack.areItemStacksEqual(stackB, stackA)) + { + stackB = stackA == null ? null : stackA.copy(); + inventoryItemStacks.set(CRAFT_RESULT, stackB); + + if (player instanceof EntityPlayerMP) + ((EntityPlayerMP) player).sendContainerAndContentsToPlayer(this, this.getInventory()); + } + + super.detectAndSendChanges(); + } + @Override protected boolean detectChanges() { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java index dfa13dd2..fdd65d68 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java @@ -56,7 +56,10 @@ public static boolean isValidTool(ItemStack stack) // GregTech if (GregtechUtils.isTool(itemName)) - return !(stack.getItemDamage() == 0 || stack.getItemDamage() > 169); // 0 = sword, 170 = turbines + { + int meta = stack.getItemDamage(); + return !(meta == 0 || meta == 24 || meta > 169); // 0 = sword, 24 = mortar, 170+ = turbines + } if (itemName.startsWith("gt.metaitem")) return false; // charged baterries and such // Tinkers Construct diff --git a/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java b/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java index 3bf8a02d..79dae2e6 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java @@ -1,5 +1,7 @@ package com.darkona.adventurebackpack.util; +import javax.annotation.Nonnull; + import net.minecraft.item.ItemStack; import net.minecraftforge.client.IItemRenderer; @@ -13,12 +15,12 @@ public final class GregtechUtils { private static final String CLASS_RENDERER = "gregtech.common.render.GT_MetaGenerated_Tool_Renderer"; - private static final String METHOD_RENDERER = "renderItem"; - private static final Object[] EMPTY_OBJECT = {}; private static final String TOOLS_NAME = "gt.metatool.01"; - private static final int[] ROTATED_TOOLS = {10, 14, 18, 22, 34, 150, 160}; + private static final int[] ROTATED_45_TOOLS = {16, 26, 30, 130}; + private static final int[] ROTATED_90_TOOLS = {10, 14, 18, 22, 34, 150, 160}; + private static Class toolRenderer; private static Object toolRendererInstance; private GregtechUtils() {} @@ -37,7 +39,8 @@ private static void createToolRendererInstance() { try { - toolRendererInstance = Class.forName(CLASS_RENDERER).newInstance(); + toolRenderer = Class.forName(CLASS_RENDERER); + toolRendererInstance = toolRenderer.newInstance(); } catch (Exception e) { @@ -46,7 +49,7 @@ private static void createToolRendererInstance() } } - public static boolean isTool(ItemStack stack) + public static boolean isTool(@Nonnull ItemStack stack) { return LoadedMods.GREGTECH && stack.getItem().getUnlocalizedName().equals(TOOLS_NAME); } @@ -59,26 +62,20 @@ public static boolean isTool(String itemName) public static float getToolRotationAngle(ItemStack stack, boolean isLowerSlot) { int meta = stack.getItemDamage(); - for (int rotatedTool : ROTATED_TOOLS) - { - if (meta == rotatedTool) + + for (int rotated45 : ROTATED_45_TOOLS) + if (meta == rotated45) + return isLowerSlot ? 0F : 90F; + + for (int rotated90 : ROTATED_90_TOOLS) + if (meta == rotated90) return isLowerSlot ? 45F : 135F; - } + return isLowerSlot ? -45F : 45F; } public static void renderTool(ItemStack stack, IItemRenderer.ItemRenderType renderType) { - if (toolRendererInstance == null) - return; - - try - { - Class.forName(CLASS_RENDERER) - .getMethod(METHOD_RENDERER, IItemRenderer.ItemRenderType.class, ItemStack.class, Object[].class) - .invoke(toolRendererInstance, renderType, stack, EMPTY_OBJECT); - } - catch (Exception e) - { /* */ } + ToolRenderHelper.render(stack, renderType, toolRenderer, toolRendererInstance); } } diff --git a/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java b/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java index a180684e..f6d49d5a 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java @@ -17,10 +17,9 @@ public final class ThaumcraftUtils private static final String CLASS_RENDERER = "thaumcraft.client.renderers.item.ItemWandRenderer"; private static final String CLASS_CONFIG = "thaumcraft.common.config.Config"; private static final String CLASS_WANDS = "thaumcraft.common.items.wands.ItemWandCasting"; - private static final String METHOD_RENDERER = "renderItem"; private static final String FIELD_DIAL_BOTTOM = "dialBottom"; - private static final Object[] EMPTY_OBJECT = {}; + private static Class toolRenderer; private static Object toolRendererInstance; private ThaumcraftUtils() {} @@ -39,7 +38,8 @@ private static void createToolRendererInstance() { try { - toolRendererInstance = Class.forName(CLASS_RENDERER).newInstance(); + toolRenderer = Class.forName(CLASS_RENDERER); + toolRendererInstance = toolRenderer.newInstance(); } catch (Exception e) { @@ -85,16 +85,6 @@ public static float getToolRotationAngle(ItemStack stack, boolean isLowerSlot) public static void renderTool(ItemStack stack, IItemRenderer.ItemRenderType renderType) { - if (toolRendererInstance == null) - return; - - try - { - Class.forName(CLASS_RENDERER) - .getMethod(METHOD_RENDERER, IItemRenderer.ItemRenderType.class, ItemStack.class, Object[].class) - .invoke(toolRendererInstance, renderType, stack, EMPTY_OBJECT); - } - catch (Exception e) - { /* */ } + ToolRenderHelper.render(stack, renderType, toolRenderer, toolRendererInstance); } } diff --git a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java index 30f3763f..0fc174ec 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java @@ -34,15 +34,16 @@ public final class TinkersUtils private static final String FIELD_CRAFT_RESULT = "craftResult"; private static final String CLASS_RENDERER = "tconstruct.client.FlexibleToolRenderer"; - private static final String METHOD_RENDERER = "renderItem"; - private static final Object[] EMPTY_OBJECT = {}; + private static final String PACKAGE_TCONSTRUCT = "tconstruct"; private static final String PACKAGE_TOOLS = "tconstruct.items.tools"; private static final String PACKAGE_AMMO = "tconstruct.weaponry.ammo"; // arrows and bolts private static final String PACKAGE_WEAPONS = "tconstruct.weaponry.weapons"; // bows, crossbows, throwing weapons private static Class craftingStation; private static Object craftingStationInstance; + + private static Class toolRenderer; private static Object toolRendererInstance; private TinkersUtils() {} @@ -62,19 +63,7 @@ private static void createCraftingStationInstance() { Class craftingLogic = Class.forName(CLASS_CRAFTING_LOGIC); Object craftingLogicInstance = craftingLogic.newInstance(); - InventoryPlayer invPlayer; - - if (Utils.inServer()) - { - WorldServer world = FMLCommonHandler.instance().getMinecraftServerInstance().worldServers[0]; - UUID fakeUuid = UUID.fromString("521e749d-2ac0-3459-af7a-160b4be5c62b"); - GameProfile fakeProfile = new GameProfile(fakeUuid, "[Adventurer]"); - invPlayer = new InventoryPlayer(new FakePlayer(world, fakeProfile)); - } - else - { - invPlayer = Minecraft.getMinecraft().thePlayer.inventory; - } + InventoryPlayer invPlayer = getInventoryPlayer(); craftingStation = Class.forName(CLASS_CRAFTING_STATION); craftingStationInstance = craftingStation @@ -87,13 +76,31 @@ private static void createCraftingStationInstance() } } + private static InventoryPlayer getInventoryPlayer() + { + InventoryPlayer invPlayer; + if (Utils.inServer()) + { + WorldServer world = FMLCommonHandler.instance().getMinecraftServerInstance().worldServers[0]; + UUID fakeUuid = UUID.fromString("521e749d-2ac0-3459-af7a-160b4be5c62b"); + GameProfile fakeProfile = new GameProfile(fakeUuid, "[Adventurer]"); + invPlayer = new InventoryPlayer(new FakePlayer(world, fakeProfile)); + } + else + { + invPlayer = Minecraft.getMinecraft().thePlayer.inventory; + } + return invPlayer; + } + private static void createToolRendererInstance() { if (Utils.inClient()) { try { - toolRendererInstance = Class.forName(CLASS_RENDERER).newInstance(); + toolRenderer = Class.forName(CLASS_RENDERER); + toolRendererInstance = toolRenderer.newInstance(); } catch (Exception e) { @@ -108,7 +115,9 @@ public static boolean isToolOrWeapon(@Nullable ItemStack stack) return false; String cn = stack.getItem().getClass().getName(); - return cn.startsWith(PACKAGE_TOOLS) || cn.startsWith(PACKAGE_WEAPONS) || cn.startsWith(PACKAGE_AMMO); + return cn.startsWith(PACKAGE_TCONSTRUCT) + && (cn.startsWith(PACKAGE_TOOLS) || cn.startsWith(PACKAGE_WEAPONS) || cn.startsWith(PACKAGE_AMMO)); + } public static boolean isTool(@Nonnull ItemStack stack) @@ -156,16 +165,6 @@ public static float getToolRotationAngle(ItemStack stack, boolean isLowerSlot) public static void renderTool(ItemStack stack, IItemRenderer.ItemRenderType renderType) { - if (toolRendererInstance == null) - return; - - try - { - Class.forName(CLASS_RENDERER) - .getMethod(METHOD_RENDERER, IItemRenderer.ItemRenderType.class, ItemStack.class, Object[].class) - .invoke(toolRendererInstance, renderType, stack, EMPTY_OBJECT); - } - catch (Exception e) - { /* */ } + ToolRenderHelper.render(stack, renderType, toolRenderer, toolRendererInstance); } } diff --git a/src/main/java/com/darkona/adventurebackpack/util/ToolRenderHelper.java b/src/main/java/com/darkona/adventurebackpack/util/ToolRenderHelper.java new file mode 100644 index 00000000..4bcc22ee --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/util/ToolRenderHelper.java @@ -0,0 +1,32 @@ +package com.darkona.adventurebackpack.util; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer.ItemRenderType; + +/** + * Created on 25.02.2018 + * + * @author Ugachaga + */ +public final class ToolRenderHelper +{ + private static final String METHOD_RENDERER = "renderItem"; + private static final Object[] EMPTY_OBJECT = {}; + + private ToolRenderHelper() {} + + public static void render(ItemStack stack, ItemRenderType type, Class renderer, Object rendererInstance) + { + if (rendererInstance == null) + return; + + try + { + renderer + .getMethod(METHOD_RENDERER, ItemRenderType.class, ItemStack.class, Object[].class) + .invoke(rendererInstance, type, stack, EMPTY_OBJECT); + } + catch (Exception e) + { /* */ } + } +} diff --git a/src/main/resources/META-INF/adventurebackpack_at.cfg b/src/main/resources/META-INF/adventurebackpack_at.cfg index 4b3e57ad..a9371e12 100644 --- a/src/main/resources/META-INF/adventurebackpack_at.cfg +++ b/src/main/resources/META-INF/adventurebackpack_at.cfg @@ -1 +1 @@ -public net.minecraft.inventory.InventoryCrafting field_70466_a # stackList \ No newline at end of file +protected net.minecraft.inventory.InventoryCrafting field_70466_a # stackList \ No newline at end of file From 6c1459cc3668b75274d33b2f96ac8474e65f3f44 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 26 Feb 2018 09:44:38 +0700 Subject: [PATCH 442/462] Inventory refactoring started --- .../block/TileAdventureBackpack.java | 223 ++++++++---------- .../entity/EntityInflatableBoat.java | 12 + .../inventory/ContainerBackpack.java | 50 ++-- .../inventory/IAsynchronousInventory.java | 6 +- .../IInventoryAdventureBackpack.java | 16 +- .../inventory/IInventoryTanks.java | 17 +- .../inventory/InventoryAdventureBackpack.java | 92 +++++++- .../inventory/InventoryBackpack.java | 172 +++----------- .../inventory/InventoryCoalJetpack.java | 163 ++++--------- .../inventory/InventoryCopterPack.java | 124 +++------- .../inventory/SlotCraftResult.java | 4 +- 11 files changed, 365 insertions(+), 514 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 837b9200..9a39e0c3 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -1,5 +1,7 @@ package com.darkona.adventurebackpack.block; +import javax.annotation.Nullable; + import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; @@ -54,51 +56,65 @@ */ public class TileAdventureBackpack extends TileEntity implements IInventoryAdventureBackpack, ISidedInventory { + private BackpackTypes type = BackpackTypes.STANDARD; private ItemStack[] inventory = new ItemStack[Constants.INVENTORY_SIZE]; private FluidTank leftTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); private FluidTank rightTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); + private NBTTagCompound extendedProperties = new NBTTagCompound(); - private BackpackTypes type; private NBTTagList ench; - private NBTTagCompound extendedProperties; private boolean disableCycling; private boolean disableNVision; - private int lastTime; + private int lastTime = 0; private boolean sleepingBagDeployed; private int sbdir; private int sbx; private int sby; private int sbz; - private int luminosity; + private int luminosity = 0; private int checkTime = 0; public TileAdventureBackpack() { sleepingBagDeployed = false; - setType(BackpackTypes.STANDARD); - luminosity = 0; - lastTime = 0; - checkTime = 0; - extendedProperties = new NBTTagCompound(); } - public int getLuminosity() + @Override + public BackpackTypes getType() { - return luminosity; + return type; } @Override - public int getLastTime() + public ItemStack[] getInventory() { - return lastTime; + return inventory; } @Override - public void setLastTime(int lastTime) + public FluidTank getLeftTank() { - this.lastTime = lastTime; + return leftTank; + } + + @Override + public FluidTank getRightTank() + { + return rightTank; + } + + @Override + public FluidTank[] getTanksArray() + { + return new FluidTank[]{leftTank, rightTank}; + } + + @Override + public int[] getSlotsOnClosingArray() + { + return new int[]{BUCKET_IN_LEFT, BUCKET_IN_RIGHT, BUCKET_OUT_LEFT, BUCKET_OUT_RIGHT}; } @Override @@ -107,6 +123,23 @@ public NBTTagCompound getExtendedProperties() return extendedProperties; } + public int getLuminosity() + { + return luminosity; + } + + @Override + public int getLastTime() + { + return lastTime; + } + + @Override + public void setLastTime(int lastTime) + { + this.lastTime = lastTime; + } + public boolean deploySleepingBag(EntityPlayer player, World world, int meta, int cX, int cY, int cZ) { if (world.isRemote) @@ -149,20 +182,6 @@ public boolean removeSleepingBag(World world) return false; } - //=====================================================GETTERS====================================================// - - @Override - public BackpackTypes getType() - { - return type; - } - - @Override - public ItemStack[] getInventory() - { - return this.inventory; - } - @Override public int getSizeInventory() { @@ -182,36 +201,17 @@ public String getInventoryName() } @Override - public int getInventoryStackLimit() - { - return 64; - } - - @Override - public FluidTank getLeftTank() + public boolean hasCustomInventoryName() { - return leftTank; + return getInventoryName() != null && !getInventoryName().isEmpty(); } @Override - public FluidTank getRightTank() + public int getInventoryStackLimit() { - return rightTank; + return 64; } - //=====================================================SETTERS====================================================// - - public void setType(BackpackTypes type) - { - this.type = type; - } - - //=====================================================BOOLEANS===================================================// - @Override - public boolean hasCustomInventoryName() - { - return false; - } @Override public boolean isUseableByPlayer(EntityPlayer player) @@ -330,17 +330,11 @@ public void saveToNBT(NBTTagCompound compound) compound.setTag(TAG_WEARABLE_COMPOUND, backpackTag); } - @Override - public FluidTank[] getTanksArray() - { - return new FluidTank[]{leftTank, rightTank}; - } - //====================================================INVENTORY===================================================// @Override public void openInventory() { - + // } @Override @@ -359,47 +353,74 @@ public boolean isItemValidForSlot(int slot, ItemStack stack) return (slot == TOOL_UPPER || slot == TOOL_LOWER) && SlotTool.isValidTool(stack); } + @Nullable @Override - public ItemStack decrStackSize(int i, int count) + public ItemStack decrStackSize(int slot, int quantity) { - ItemStack itemstack = getStackInSlot(i); - - if (itemstack != null) + ItemStack stack = getStackInSlot(slot); + if (stack != null) { - if (itemstack.stackSize <= count) - { - setInventorySlotContents(i, null); - } + if (stack.stackSize <= quantity) + setInventorySlotContents(slot, null); else - { - itemstack = itemstack.splitStack(count); - } + stack = stack.splitStack(quantity); } markDirty(); - return itemstack; + return stack; } + @Override - public ItemStack getStackInSlotOnClosing(int slot) + public void setInventorySlotContents(int slot, @Nullable ItemStack stack) { - if (slot == BUCKET_IN_LEFT || slot == BUCKET_IN_RIGHT || slot == BUCKET_OUT_LEFT || slot == BUCKET_OUT_RIGHT) + setInventorySlotContentsNoSave(slot, stack); + markDirty(); + } + + @Nullable + @Override + public ItemStack decrStackSizeNoSave(int slot, int quantity) + { + ItemStack stack = getStackInSlot(slot); + if (stack != null) { - return inventory[slot]; + if (stack.stackSize <= quantity) + setInventorySlotContentsNoSave(slot, null); + else + stack = stack.splitStack(quantity); } - return null; + return stack; } @Override - public void setInventorySlotContents(int slot, ItemStack stack) + public void setInventorySlotContentsNoSave(int slot, @Nullable ItemStack stack) { - inventory[slot] = stack; - if (stack != null && stack.stackSize > getInventoryStackLimit()) + if (slot >= getSizeInventory()) + return; + + if (stack != null) { - stack.stackSize = getInventoryStackLimit(); + if (stack.stackSize > getInventoryStackLimit()) + stack.stackSize = getInventoryStackLimit(); + + if (stack.stackSize == 0) + stack = null; } - markDirty(); + + getInventory()[slot] = stack; + } + + @Override + public ItemStack getStackInSlotOnClosing(int slot) + { + if (slot == BUCKET_IN_LEFT || slot == BUCKET_IN_RIGHT || slot == BUCKET_OUT_LEFT || slot == BUCKET_OUT_RIGHT) + { + return inventory[slot]; + } + return null; } + @Override public void markDirty() { @@ -428,36 +449,6 @@ public boolean updateTankSlots() return result; } - @Override - public void setInventorySlotContentsNoSave(int slot, ItemStack itemstack) - { - if (slot > inventory.length) return; - inventory[slot] = itemstack; - if (itemstack != null && itemstack.stackSize > getInventoryStackLimit()) - { - itemstack.stackSize = getInventoryStackLimit(); - } - } - - @Override - public ItemStack decrStackSizeNoSave(int slot, int amount) - { - ItemStack stack = getStackInSlot(slot); - - if (stack != null) - { - if (stack.stackSize <= amount) - { - setInventorySlotContentsNoSave(slot, null); - } - else - { - stack = stack.splitStack(amount); - } - } - return stack; - } - @Override public boolean hasItem(Item item) { @@ -524,18 +515,6 @@ public void updateEntity() } } - @Override - public TileAdventureBackpack getTile() - { - return this; - } - - @Override - public ItemStack getParentItemStack() - { - return null; - } - private ItemStack transferToItemStack(ItemStack stack) { NBTTagCompound compound = new NBTTagCompound(); diff --git a/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java b/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java index c396ecc9..b710babc 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java @@ -487,12 +487,24 @@ public void saveToNBT(NBTTagCompound compound) } + @Override + public ItemStack[] getInventory() + { + return new ItemStack[0]; + } + @Override public FluidTank[] getTanksArray() { return new FluidTank[0]; } + @Override + public int[] getSlotsOnClosingArray() + { + return new int[0]; + } + @Override public void dirtyInventory() { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 0fef433d..4612d08e 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -27,7 +27,6 @@ * * @author Darkona */ -//@invtweaks.api.container.ChestContainer (showButtons=true, rowSize=8) public class ContainerBackpack extends ContainerAdventureBackpack { private static final int BACK_INV_ROWS = 6; @@ -110,7 +109,7 @@ private void makeSlots(InventoryPlayer invPlayer) } } addSlotToContainer(new SlotCraftResult(this, invPlayer.player, craftMatrix, craftResult, 0, 226, 97)); // craftResult [99] - syncCraftMatrixToInventory(); + syncCraftMatrixWithInventory(true); } @Override @@ -270,7 +269,7 @@ else if (leftStackOut == null && rightStackOut == null && SlotBackpack.isValidIt public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) { final ItemStack result = super.slotClick(slot, button, flag, player); - syncCraftMatrixToInventory(); + syncCraftMatrixWithInventory(true); return result; } @@ -298,36 +297,41 @@ public void onCraftMatrixChanged(IInventory inventory) craftResult.setInventorySlotContents(0, CraftingManager.getInstance().findMatchingRecipe(craftMatrix, player.worldObj)); } - protected void syncCraftMatrixToInventory() + protected void syncCraftMatrixWithInventory(boolean preCraft) { + boolean changesMade = false; + for (int craftSlotID = 0; craftSlotID < CRAFT_MATRIX_EMULATION.length; craftSlotID++) { int invSlotID = CRAFT_MATRIX_EMULATION[craftSlotID]; - final ItemStack invStack = inventory.getStackInSlot(invSlotID); - craftMatrix.setInventorySlotContentsNoUpdate(craftSlotID, invStack); + ItemStack invStack = inventory.getStackInSlot(invSlotID); + ItemStack craftStack = craftMatrix.getStackInSlot(craftSlotID); + + if (!ItemStack.areItemStacksEqual(invStack, craftStack)) + { + if (preCraft) + { + craftStack = invStack == null ? null : invStack.copy(); + craftMatrix.setInventorySlotContentsNoUpdate(craftSlotID, craftStack); + } + else + { + invStack = craftStack == null ? null : craftStack.copy(); + inventory.setInventorySlotContentsNoSave(invSlotID, invStack); + } + changesMade = true; + } } - onCraftMatrixChanged(craftMatrix); - } - protected void syncInventoryToCraftMatrix() - { - for (int craftSlotID = 0; craftSlotID < CRAFT_MATRIX_EMULATION.length; craftSlotID++) + if (changesMade) { - int invSlotID = CRAFT_MATRIX_EMULATION[craftSlotID]; - final ItemStack craftStack = craftMatrix.getStackInSlot(craftSlotID); - inventory.setInventorySlotContentsNoSave(invSlotID, craftStack); + if (preCraft) + onCraftMatrixChanged(craftMatrix); + else + inventory.markDirty(); } - inventory.markDirty(); } - /*@ContainerSectionCallback //TODO deal with invTweaks - public Map> getContainerSections() - { - Map> slotMap = new HashMap<>(); - slotMap.put(ContainerSection.CHEST, inventorySlots.subList(BACK_INV_START, BACK_INV_END + 1)); - return slotMap; - }*/ - /** * Returns the array of inventory slotIDs, emulates the craftMatrix in the lower right corner of the inventory. */ diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/IAsynchronousInventory.java b/src/main/java/com/darkona/adventurebackpack/inventory/IAsynchronousInventory.java index 1ac1abdc..3e8a6d33 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/IAsynchronousInventory.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/IAsynchronousInventory.java @@ -1,5 +1,7 @@ package com.darkona.adventurebackpack.inventory; +import javax.annotation.Nullable; + import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; @@ -10,7 +12,7 @@ */ public interface IAsynchronousInventory extends IInventory { - void setInventorySlotContentsNoSave(int slot, ItemStack stack); //TODO rework realisations, see InventoryBackpack + void setInventorySlotContentsNoSave(int slot, @Nullable ItemStack stack); - ItemStack decrStackSizeNoSave(int slot, int amount); //TODO whats the point and diff with decrStackSize? + ItemStack decrStackSizeNoSave(int slot, int amount); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java index 9a45f731..dff151fd 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java @@ -1,11 +1,9 @@ package com.darkona.adventurebackpack.inventory; import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.fluids.FluidTank; -import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.reference.BackpackTypes; /** @@ -13,28 +11,26 @@ */ public interface IInventoryAdventureBackpack extends IInventoryTanks { + BackpackTypes getType(); + FluidTank getLeftTank(); FluidTank getRightTank(); - ItemStack[] getInventory(); + NBTTagCompound getExtendedProperties(); - TileAdventureBackpack getTile(); + //TODO - ItemStack getParentItemStack(); - BackpackTypes getType(); - int getLastTime(); + boolean isSleepingBagDeployed(); - NBTTagCompound getExtendedProperties(); + int getLastTime(); boolean hasItem(Item item); void consumeInventoryItem(Item item); - boolean isSleepingBagDeployed(); - void setLastTime(int time); void dirtyTime(); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryTanks.java b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryTanks.java index 97e54b5e..1d93b7e8 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryTanks.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryTanks.java @@ -1,5 +1,6 @@ package com.darkona.adventurebackpack.inventory; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.fluids.FluidTank; @@ -10,15 +11,23 @@ */ public interface IInventoryTanks extends IAsynchronousInventory { - boolean updateTankSlots(); + ItemStack[] getInventory(); + + FluidTank[] getTanksArray(); + + int[] getSlotsOnClosingArray(); + + //TODO + + void loadFromNBT(NBTTagCompound compound); void saveToNBT(NBTTagCompound compound); - FluidTank[] getTanksArray(); - - void dirtyInventory(); + boolean updateTankSlots(); void dirtyTanks(); + + void dirtyInventory(); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventureBackpack.java index 34fd8758..80acb2f0 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventureBackpack.java @@ -1,5 +1,7 @@ package com.darkona.adventurebackpack.inventory; +import javax.annotation.Nullable; + import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -12,6 +14,54 @@ abstract class InventoryAdventureBackpack implements IInventoryTanks { ItemStack containerStack; + /** IInventory START --- */ + + @Override + public int getSizeInventory() + { + return getInventory().length; + } + + @Override + public ItemStack getStackInSlot(int slot) + { + return getInventory()[slot]; + } + + @Nullable + @Override + public ItemStack decrStackSize(int slot, int quantity) + { + ItemStack stack = getStackInSlot(slot); + if (stack != null) + { + if (stack.stackSize <= quantity) + setInventorySlotContents(slot, null); + else + stack = stack.splitStack(quantity); + } + return stack; + } + + @Nullable + @Override + public ItemStack getStackInSlotOnClosing(int slot) + { + for (int s : getSlotsOnClosingArray()) + if (slot == s) + return getInventory()[slot]; + + return null; + } + + @Override + public void setInventorySlotContents(int slot, @Nullable ItemStack stack) + { + setInventorySlotContentsNoSave(slot, stack); + dirtyInventory(); + } + + @Override public String getInventoryName() { @@ -21,7 +71,7 @@ public String getInventoryName() @Override public boolean hasCustomInventoryName() { - return false; + return getInventoryName() != null && !getInventoryName().isEmpty(); } @Override @@ -59,4 +109,44 @@ public boolean isItemValidForSlot(int slot, ItemStack stack) { return false; } + + /* --- IInventory END || IAsynchronousInventory START --- */ + + @Nullable + @Override + public ItemStack decrStackSizeNoSave(int slot, int quantity) + { + ItemStack stack = getStackInSlot(slot); + if (stack != null) + { + if (stack.stackSize <= quantity) + setInventorySlotContentsNoSave(slot, null); + else + stack = stack.splitStack(quantity); + } + return stack; + } + + @Override + public void setInventorySlotContentsNoSave(int slot, @Nullable ItemStack stack) + { + if (slot >= getSizeInventory()) + return; + + if (stack != null) + { + if (stack.stackSize > getInventoryStackLimit()) + stack.stackSize = getInventoryStackLimit(); + + if (stack.stackSize == 0) + stack = null; + } + + getInventory()[slot] = stack; + } + + /* --- IAsynchronousInventory END || IInventoryTanks START --- */ + + //TODO + } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index e5a60edd..dd53dc0d 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -10,7 +10,6 @@ import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.fluids.FluidTank; -import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.reference.BackpackTypes; @@ -63,25 +62,16 @@ public InventoryBackpack(ItemStack backpack) openInventory(); } - private void detectAndConvertFromOldNBTFormat(NBTTagCompound compound) // backwards compatibility + @Override + public BackpackTypes getType() { - if (compound == null || !compound.hasKey("backpackData")) - return; - - NBTTagCompound oldBackpackTag = compound.getCompoundTag("backpackData"); - NBTTagList oldItems = oldBackpackTag.getTagList("ABPItems", NBT.TAG_COMPOUND); - leftTank.readFromNBT(oldBackpackTag.getCompoundTag("leftTank")); - rightTank.readFromNBT(oldBackpackTag.getCompoundTag("rightTank")); - type = BackpackTypes.getType(oldBackpackTag.getString("colorName")); - - NBTTagCompound newBackpackTag = new NBTTagCompound(); - newBackpackTag.setTag(TAG_INVENTORY, oldItems); - newBackpackTag.setTag(TAG_RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); - newBackpackTag.setTag(TAG_LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); - newBackpackTag.setByte(TAG_TYPE, BackpackTypes.getMeta(type)); + return type; + } - compound.setTag(TAG_WEARABLE_COMPOUND, newBackpackTag); - compound.removeTag("backpackData"); + @Override + public ItemStack[] getInventory() + { + return inventory; } @Override @@ -97,28 +87,24 @@ public FluidTank getRightTank() } @Override - public ItemStack[] getInventory() + public FluidTank[] getTanksArray() { - return inventory; + return new FluidTank[]{leftTank, rightTank}; } @Override - public TileAdventureBackpack getTile() + public int[] getSlotsOnClosingArray() { - return null; + return new int[]{BUCKET_IN_LEFT, BUCKET_IN_RIGHT, BUCKET_OUT_LEFT, BUCKET_OUT_RIGHT}; } @Override - public ItemStack getParentItemStack() + public NBTTagCompound getExtendedProperties() { - return this.containerStack; + return extendedProperties; } - @Override - public BackpackTypes getType() - { - return type; - } + @Override public int getLastTime() @@ -126,12 +112,6 @@ public int getLastTime() return this.lastTime; } - @Override - public NBTTagCompound getExtendedProperties() - { - return extendedProperties; - } - @Override public boolean hasItem(Item item) { @@ -199,42 +179,6 @@ public void dirtyExtended() //TODO is it redundant? containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setTag(TAG_EXTENDED_COMPOUND, extendedProperties); } - @Override - public void setInventorySlotContentsNoSave(int slot, ItemStack stack) - { - if (slot >= this.getSizeInventory()) - return; - - if (stack != null) - { - if (stack.stackSize > this.getInventoryStackLimit()) - stack.stackSize = this.getInventoryStackLimit(); - - if (stack.stackSize == 0) - stack = null; - } - - this.inventory[slot] = stack; - } - - @Override - public ItemStack decrStackSizeNoSave(int slot, int quantity) - { - ItemStack stack = getStackInSlot(slot); - if (stack != null) - { - if (stack.stackSize <= quantity) - { - setInventorySlotContentsNoSave(slot, null); - } - else - { - stack = stack.splitStack(quantity); - } - } - return stack; - } - @Override public void loadFromNBT(NBTTagCompound compound) { @@ -315,12 +259,6 @@ public void saveToNBT(NBTTagCompound compound) compound.setTag(TAG_WEARABLE_COMPOUND, backpackTag); } - @Override - public FluidTank[] getTanksArray() - { - return new FluidTank[]{leftTank, rightTank}; - } - @Override public boolean updateTankSlots() { @@ -362,65 +300,6 @@ public void dirtyTanks() containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setTag(TAG_RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); } - @Override - public int getSizeInventory() - { - return inventory.length; - } - - @Override - public ItemStack getStackInSlot(int slot) - { - return inventory[slot]; - } - - @Override - public ItemStack decrStackSize(int slot, int quantity) - { - ItemStack itemstack = getStackInSlot(slot); - if (itemstack != null) - { - if (itemstack.stackSize <= quantity) - { - setInventorySlotContents(slot, null); - } - else - { - itemstack = itemstack.splitStack(quantity); - } - } - return itemstack; - } - - @Override - public ItemStack getStackInSlotOnClosing(int slot) - { - if (slot == BUCKET_IN_LEFT || slot == BUCKET_IN_RIGHT || slot == BUCKET_OUT_LEFT || slot == BUCKET_OUT_RIGHT) - { - return inventory[slot]; - } - return null; - } - - @Override - public void setInventorySlotContents(int slot, ItemStack stack) - { - if (slot >= this.getSizeInventory()) - return; - - if (stack != null) - { - if (stack.stackSize > this.getInventoryStackLimit()) - stack.stackSize = this.getInventoryStackLimit(); - - if(stack.stackSize == 0) - stack = null; - } - - this.inventory[slot] = stack; - this.dirtyInventory(); - } - public boolean hasBlock(Block block) { return InventoryActions.hasBlockItem(this, block); @@ -445,4 +324,25 @@ public void setDisableNVision(boolean b) { this.disableNVision = b; } + + private void detectAndConvertFromOldNBTFormat(NBTTagCompound compound) // backwards compatibility + { + if (compound == null || !compound.hasKey("backpackData")) + return; + + NBTTagCompound oldBackpackTag = compound.getCompoundTag("backpackData"); + NBTTagList oldItems = oldBackpackTag.getTagList("ABPItems", NBT.TAG_COMPOUND); + leftTank.readFromNBT(oldBackpackTag.getCompoundTag("leftTank")); + rightTank.readFromNBT(oldBackpackTag.getCompoundTag("rightTank")); + type = BackpackTypes.getType(oldBackpackTag.getString("colorName")); + + NBTTagCompound newBackpackTag = new NBTTagCompound(); + newBackpackTag.setTag(TAG_INVENTORY, oldItems); + newBackpackTag.setTag(TAG_RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); + newBackpackTag.setTag(TAG_LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); + newBackpackTag.setByte(TAG_TYPE, BackpackTypes.getMeta(type)); + + compound.setTag(TAG_WEARABLE_COMPOUND, newBackpackTag); + compound.removeTag("backpackData"); + } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index eada35d9..2242f6b3 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -46,25 +46,35 @@ public InventoryCoalJetpack(final ItemStack jetpack) openInventory(); } - private void detectAndConvertFromOldNBTFormat(NBTTagCompound compound) // backwards compatibility + @Override + public ItemStack[] getInventory() { - if (compound == null || !compound.hasKey("jetpackData")) - return; + return inventory; + } - NBTTagCompound oldJetpackTag = compound.getCompoundTag("jetpackData"); - NBTTagList oldItems = oldJetpackTag.getTagList("inventory", NBT.TAG_COMPOUND); - waterTank.readFromNBT(oldJetpackTag.getCompoundTag("waterTank")); - steamTank.readFromNBT(oldJetpackTag.getCompoundTag("steamTank")); + public FluidTank getWaterTank() + { + return waterTank; + } - NBTTagCompound newJetpackTag = new NBTTagCompound(); - newJetpackTag.setTag(TAG_INVENTORY, oldItems); - newJetpackTag.setTag(TAG_WATER_TANK, waterTank.writeToNBT(new NBTTagCompound())); - newJetpackTag.setTag(TAG_STEAM_TANK, steamTank.writeToNBT(new NBTTagCompound())); + public FluidTank getSteamTank() + { + return steamTank; + } - compound.setTag(TAG_WEARABLE_COMPOUND, newJetpackTag); - compound.removeTag("jetpackData"); + @Override + public FluidTank[] getTanksArray() + { + return new FluidTank[]{waterTank, steamTank}; + } + + @Override + public int[] getSlotsOnClosingArray() + { + return new int[]{BUCKET_IN, BUCKET_OUT}; } + public int getBurnTimeRemainingScaled(int scale) { if (this.currentItemBurnTime == 0) @@ -133,12 +143,6 @@ public void saveToNBT(NBTTagCompound compound) compound.setTag(TAG_WEARABLE_COMPOUND, jetpackTag); } - @Override - public FluidTank[] getTanksArray() - { - return new FluidTank[]{waterTank, steamTank}; - } - @Override public boolean updateTankSlots() { @@ -209,103 +213,11 @@ private boolean isFuel(ItemStack stack) return TileEntityFurnace.isItemFuel(stack); } - @Override - public void setInventorySlotContentsNoSave(int slot, ItemStack stack) - { - if (slot > inventory.length) return; - inventory[slot] = stack; - if (stack != null && stack.stackSize > this.getInventoryStackLimit()) - { - stack.stackSize = this.getInventoryStackLimit(); - } - } - - @Override - public ItemStack decrStackSizeNoSave(int slot, int amount) - { - if (slot < inventory.length && inventory[slot] != null) - { - if (inventory[slot].stackSize > amount) - { - return inventory[slot].splitStack(amount); - } - ItemStack stack = inventory[slot]; - setInventorySlotContentsNoSave(slot, null); - return stack; - } - return null; - } - - @Override - public int getSizeInventory() - { - return inventory.length; - } - - @Override - public ItemStack getStackInSlot(int slot) - { - return inventory[slot]; - } - - @Override - public ItemStack decrStackSize(int slot, int quantity) - { - ItemStack itemstack = getStackInSlot(slot); - - if (itemstack != null) - { - if (itemstack.stackSize <= quantity) - { - if (slot == FUEL_SLOT) - { - setInventorySlotContents(slot, itemstack.getItem().getContainerItem(itemstack)); - } - else - { - setInventorySlotContents(slot, null); - } - } - else - { - itemstack = itemstack.splitStack(quantity); - } - } - return itemstack; - } - - @Override - public ItemStack getStackInSlotOnClosing(int slot) - { - return (slot == BUCKET_IN || slot == BUCKET_OUT) ? inventory[slot] : null; - } - - @Override - public void setInventorySlotContents(int slot, ItemStack stack) - { - inventory[slot] = stack; - if (stack != null && stack.stackSize > getInventoryStackLimit()) - { - stack.stackSize = getInventoryStackLimit(); - } - dirtyInventory(); - } - public ItemStack getParentItemStack() { return containerStack; } - public FluidTank getWaterTank() - { - return waterTank; - } - - public FluidTank getSteamTank() - { - return steamTank; - } - public boolean getStatus() { return status; @@ -376,16 +288,6 @@ public void setBurnTicks(int burnTicks) this.burnTicks = burnTicks; } - public ItemStack[] getInventory() - { - return inventory; - } - - public void setInventory(ItemStack[] inventory) - { - this.inventory = inventory; //TODO wtf - } - public int getIncreasingFactor() { if (temperature < 50) return 20; @@ -426,4 +328,23 @@ public void calculateLostTime() { long elapsedTimesince = System.currentTimeMillis() - systemTime; } + + private void detectAndConvertFromOldNBTFormat(NBTTagCompound compound) // backwards compatibility + { + if (compound == null || !compound.hasKey("jetpackData")) + return; + + NBTTagCompound oldJetpackTag = compound.getCompoundTag("jetpackData"); + NBTTagList oldItems = oldJetpackTag.getTagList("inventory", NBT.TAG_COMPOUND); + waterTank.readFromNBT(oldJetpackTag.getCompoundTag("waterTank")); + steamTank.readFromNBT(oldJetpackTag.getCompoundTag("steamTank")); + + NBTTagCompound newJetpackTag = new NBTTagCompound(); + newJetpackTag.setTag(TAG_INVENTORY, oldItems); + newJetpackTag.setTag(TAG_WATER_TANK, waterTank.writeToNBT(new NBTTagCompound())); + newJetpackTag.setTag(TAG_STEAM_TANK, steamTank.writeToNBT(new NBTTagCompound())); + + compound.setTag(TAG_WEARABLE_COMPOUND, newJetpackTag); + compound.removeTag("jetpackData"); + } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java index 659bb88b..062d56e9 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java @@ -34,23 +34,10 @@ public InventoryCopterPack(ItemStack copterPack) openInventory(); } - private void detectAndConvertFromOldNBTFormat(NBTTagCompound compound) // backwards compatibility + @Override + public ItemStack[] getInventory() { - if (compound == null || compound.hasKey(TAG_WEARABLE_COMPOUND)) - return; - - if (compound.hasKey("status")) - compound.removeTag("status"); - if (compound.hasKey("tickCounter")) - compound.removeTag("tickCounter"); - - fuelTank.readFromNBT(compound.getCompoundTag("fuelTank")); - - NBTTagCompound newCopterTag = new NBTTagCompound(); - newCopterTag.setTag(TAG_FUEL_TANK, fuelTank.writeToNBT(new NBTTagCompound())); - - compound.setTag(TAG_WEARABLE_COMPOUND, newCopterTag); - compound.removeTag("fuelTank"); + return inventory; } public FluidTank getFuelTank() @@ -58,90 +45,28 @@ public FluidTank getFuelTank() return fuelTank; } - public void consumeFuel(int quantity) - { - fuelTank.drain(quantity, true); - dirtyTanks(); - } - - public boolean canConsumeFuel(int quantity) - { - return fuelTank.drain(quantity, false) != null && fuelTank.drain(quantity, false).amount > 0; - } - - @Override - public int getSizeInventory() - { - return inventory.length; - } - - @Override - public ItemStack getStackInSlot(int i) - { - return inventory[i]; - } - @Override - public ItemStack decrStackSize(int slot, int quantity) + public FluidTank[] getTanksArray() { - ItemStack itemstack = getStackInSlot(slot); - - if (itemstack != null) - { - if (itemstack.stackSize <= quantity) - { - setInventorySlotContents(slot, null); - } - else - { - itemstack = itemstack.splitStack(quantity); - } - } - return itemstack; + return new FluidTank[]{fuelTank}; } @Override - public ItemStack getStackInSlotOnClosing(int slot) + public int[] getSlotsOnClosingArray() { - return (slot == BUCKET_IN || slot == BUCKET_OUT) ? inventory[slot] : null; + return new int[]{BUCKET_IN, BUCKET_OUT}; } - @Override - public void setInventorySlotContents(int slot, ItemStack stack) - { - inventory[slot] = stack; - if (stack != null && stack.stackSize > getInventoryStackLimit()) - { - stack.stackSize = getInventoryStackLimit(); - } - dirtyInventory(); - } - @Override - public void setInventorySlotContentsNoSave(int slot, ItemStack stack) + public void consumeFuel(int quantity) { - if (slot > inventory.length) return; - inventory[slot] = stack; - if (stack != null && stack.stackSize > this.getInventoryStackLimit()) - { - stack.stackSize = this.getInventoryStackLimit(); - } + fuelTank.drain(quantity, true); + dirtyTanks(); } - @Override - public ItemStack decrStackSizeNoSave(int slot, int amount) + public boolean canConsumeFuel(int quantity) { - if (slot < inventory.length && inventory[slot] != null) - { - if (inventory[slot].stackSize > amount) - { - return inventory[slot].splitStack(amount); - } - ItemStack stack = inventory[slot]; - setInventorySlotContentsNoSave(slot, null); - return stack; - } - return null; + return fuelTank.drain(quantity, false) != null && fuelTank.drain(quantity, false).amount > 0; } public int getTickCounter() @@ -183,12 +108,6 @@ public void saveToNBT(NBTTagCompound compound) compound.setTag(TAG_WEARABLE_COMPOUND, copterTag); } - @Override - public FluidTank[] getTanksArray() - { - return new FluidTank[]{fuelTank}; - } - @Override public boolean updateTankSlots() { @@ -219,4 +138,23 @@ public void dirtyStatus() { containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setByte(TAG_STATUS, status); } + + private void detectAndConvertFromOldNBTFormat(NBTTagCompound compound) // backwards compatibility + { + if (compound == null || compound.hasKey(TAG_WEARABLE_COMPOUND)) + return; + + if (compound.hasKey("status")) + compound.removeTag("status"); + if (compound.hasKey("tickCounter")) + compound.removeTag("tickCounter"); + + fuelTank.readFromNBT(compound.getCompoundTag("fuelTank")); + + NBTTagCompound newCopterTag = new NBTTagCompound(); + newCopterTag.setTag(TAG_FUEL_TANK, fuelTank.writeToNBT(new NBTTagCompound())); + + compound.setTag(TAG_WEARABLE_COMPOUND, newCopterTag); + compound.removeTag("fuelTank"); + } } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotCraftResult.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotCraftResult.java index 32ef03e5..dfb1352f 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotCraftResult.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotCraftResult.java @@ -23,8 +23,8 @@ public SlotCraftResult(ContainerBackpack container, EntityPlayer player, IInvent @Override public void onPickupFromSlot(EntityPlayer player, ItemStack stack) { - eventHandler.syncCraftMatrixToInventory(); // pre craft sync + eventHandler.syncCraftMatrixWithInventory(true); // pre craft sync super.onPickupFromSlot(player, stack); - eventHandler.syncInventoryToCraftMatrix(); // post craft sync + eventHandler.syncCraftMatrixWithInventory(false); // post craft sync } } From 56c18411f9479ef4d0f5bc781bc680d236703a12 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 26 Feb 2018 17:53:44 +0700 Subject: [PATCH 443/462] Augean stables --- .../block/TileAdventure.java | 149 +++++++++++++ .../block/TileAdventureBackpack.java | 210 ++++-------------- .../IInventoryAdventureBackpack.java | 2 +- .../inventory/InventoryAdventureBackpack.java | 2 +- 4 files changed, 199 insertions(+), 164 deletions(-) create mode 100644 src/main/java/com/darkona/adventurebackpack/block/TileAdventure.java diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventure.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventure.java new file mode 100644 index 00000000..85b85842 --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventure.java @@ -0,0 +1,149 @@ +package com.darkona.adventurebackpack.block; + +import javax.annotation.Nullable; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; + +import com.darkona.adventurebackpack.inventory.IInventoryTanks; + +/** + * Created on 26.02.2018 + * + * @author Ugachaga + */ +abstract class TileAdventure extends TileEntity implements IInventoryTanks +{ + /** IInventory START --- */ + + @Override + public int getSizeInventory() + { + return getInventory().length; + } + + @Override + public ItemStack getStackInSlot(int slot) + { + return getInventory()[slot]; + } + + @Nullable + @Override + public ItemStack decrStackSize(int slot, int quantity) + { + ItemStack stack = getStackInSlot(slot); + if (stack != null) + { + if (stack.stackSize <= quantity) + setInventorySlotContents(slot, null); + else + stack = stack.splitStack(quantity); + } + markDirty(); + return stack; + } + + @Nullable + @Override + public ItemStack getStackInSlotOnClosing(int slot) + { + for (int s : getSlotsOnClosingArray()) + if (slot == s) + return getInventory()[slot]; + + return null; + } + + @Override + public void setInventorySlotContents(int slot, @Nullable ItemStack stack) + { + setInventorySlotContentsNoSave(slot, stack); + markDirty(); + } + + @Override + public String getInventoryName() + { + return ""; + } + + @Override + public boolean hasCustomInventoryName() + { + return getInventoryName() != null && !getInventoryName().isEmpty(); + } + + @Override + public int getInventoryStackLimit() + { + return 64; + } + + // we have to inherit markDirty() implemented in TileEntity.class + + @Override + public boolean isUseableByPlayer(EntityPlayer player) + { + return worldObj.getTileEntity(xCoord, yCoord, zCoord) == this + && player.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) <= 64; + } + + @Override + public void openInventory() + { + // + } + + @Override + public void closeInventory() + { + markDirty(); + } + + @Override + public boolean isItemValidForSlot(int slot, ItemStack stack) + { + return false; // override when automation is allowed + } + + /* --- IInventory END || IAsynchronousInventory START --- */ + + @Nullable + @Override + public ItemStack decrStackSizeNoSave(int slot, int quantity) + { + ItemStack stack = getStackInSlot(slot); + if (stack != null) + { + if (stack.stackSize <= quantity) + setInventorySlotContentsNoSave(slot, null); + else + stack = stack.splitStack(quantity); + } + return stack; + } + + @Override + public void setInventorySlotContentsNoSave(int slot, @Nullable ItemStack stack) + { + if (slot >= getSizeInventory()) + return; + + if (stack != null) + { + if (stack.stackSize > getInventoryStackLimit()) + stack.stackSize = getInventoryStackLimit(); + + if (stack.stackSize == 0) + stack = null; + } + + getInventory()[slot] = stack; + } + + /* --- IAsynchronousInventory END || IInventoryTanks START --- */ + + +} diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 9a39e0c3..9ee44778 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -1,7 +1,5 @@ package com.darkona.adventurebackpack.block; -import javax.annotation.Nullable; - import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; @@ -12,7 +10,6 @@ import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; import net.minecraft.network.play.server.S35PacketUpdateTileEntity; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.world.EnumSkyBlock; import net.minecraft.world.World; @@ -54,7 +51,7 @@ /** * Created by Darkona on 12/10/2014. */ -public class TileAdventureBackpack extends TileEntity implements IInventoryAdventureBackpack, ISidedInventory +public class TileAdventureBackpack extends TileAdventure implements IInventoryAdventureBackpack, ISidedInventory { private BackpackTypes type = BackpackTypes.STANDARD; private ItemStack[] inventory = new ItemStack[Constants.INVENTORY_SIZE]; @@ -123,6 +120,9 @@ public NBTTagCompound getExtendedProperties() return extendedProperties; } + + + public int getLuminosity() { return luminosity; @@ -140,6 +140,12 @@ public void setLastTime(int lastTime) this.lastTime = lastTime; } + @Override + public boolean isSleepingBagDeployed() + { + return this.sleepingBagDeployed; + } + public boolean deploySleepingBag(EntityPlayer player, World world, int meta, int cX, int cY, int cZ) { if (world.isRemote) @@ -182,49 +188,6 @@ public boolean removeSleepingBag(World world) return false; } - @Override - public int getSizeInventory() - { - return inventory.length; - } - - @Override - public ItemStack getStackInSlot(int slot) - { - return inventory[slot]; - } - - @Override - public String getInventoryName() - { - return ""; - } - - @Override - public boolean hasCustomInventoryName() - { - return getInventoryName() != null && !getInventoryName().isEmpty(); - } - - @Override - public int getInventoryStackLimit() - { - return 64; - } - - - @Override - public boolean isUseableByPlayer(EntityPlayer player) - { - return worldObj.getTileEntity(xCoord, yCoord, zCoord) == this && player.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) <= 64; - } - - @Override - public boolean isSleepingBagDeployed() - { - return this.sleepingBagDeployed; - } - //=======================================================NBT======================================================// @Override public void readFromNBT(NBTTagCompound compound) @@ -252,24 +215,6 @@ public void writeToNBT(NBTTagCompound compound) compound.setInteger("lumen", luminosity); } - private void convertFromOldNBTFormat(NBTTagCompound compound) // backwards compatibility - { - NBTTagCompound oldBackpackTag = compound.getCompoundTag("backpackData"); - NBTTagList oldItems = oldBackpackTag.getTagList("ABPItems", NBT.TAG_COMPOUND); - leftTank.readFromNBT(oldBackpackTag.getCompoundTag("leftTank")); - rightTank.readFromNBT(oldBackpackTag.getCompoundTag("rightTank")); - type = BackpackTypes.getType(oldBackpackTag.getString("colorName")); - - NBTTagCompound newBackpackTag = new NBTTagCompound(); - newBackpackTag.setTag(TAG_INVENTORY, oldItems); - newBackpackTag.setTag(TAG_RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); - newBackpackTag.setTag(TAG_LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); - newBackpackTag.setByte(TAG_TYPE, BackpackTypes.getMeta(type)); - - compound.setTag(TAG_WEARABLE_COMPOUND, newBackpackTag); - compound.removeTag("backpackData"); - } - @Override public void loadFromNBT(NBTTagCompound compound) { @@ -331,95 +276,6 @@ public void saveToNBT(NBTTagCompound compound) } //====================================================INVENTORY===================================================// - @Override - public void openInventory() - { - // - } - - @Override - public void closeInventory() - { - markDirty(); - } - - @Override - public boolean isItemValidForSlot(int slot, ItemStack stack) - { - if (slot <= Constants.END_OF_INVENTORY) - { - return SlotBackpack.isValidItem(stack); - } - return (slot == TOOL_UPPER || slot == TOOL_LOWER) && SlotTool.isValidTool(stack); - } - - @Nullable - @Override - public ItemStack decrStackSize(int slot, int quantity) - { - ItemStack stack = getStackInSlot(slot); - if (stack != null) - { - if (stack.stackSize <= quantity) - setInventorySlotContents(slot, null); - else - stack = stack.splitStack(quantity); - } - markDirty(); - return stack; - } - - - @Override - public void setInventorySlotContents(int slot, @Nullable ItemStack stack) - { - setInventorySlotContentsNoSave(slot, stack); - markDirty(); - } - - @Nullable - @Override - public ItemStack decrStackSizeNoSave(int slot, int quantity) - { - ItemStack stack = getStackInSlot(slot); - if (stack != null) - { - if (stack.stackSize <= quantity) - setInventorySlotContentsNoSave(slot, null); - else - stack = stack.splitStack(quantity); - } - return stack; - } - - @Override - public void setInventorySlotContentsNoSave(int slot, @Nullable ItemStack stack) - { - if (slot >= getSizeInventory()) - return; - - if (stack != null) - { - if (stack.stackSize > getInventoryStackLimit()) - stack.stackSize = getInventoryStackLimit(); - - if (stack.stackSize == 0) - stack = null; - } - - getInventory()[slot] = stack; - } - - @Override - public ItemStack getStackInSlotOnClosing(int slot) - { - if (slot == BUCKET_IN_LEFT || slot == BUCKET_IN_RIGHT || slot == BUCKET_OUT_LEFT || slot == BUCKET_OUT_RIGHT) - { - return inventory[slot]; - } - return null; - } - @Override public void markDirty() @@ -515,14 +371,6 @@ public void updateEntity() } } - private ItemStack transferToItemStack(ItemStack stack) - { - NBTTagCompound compound = new NBTTagCompound(); - saveToNBT(compound); - stack.setTagCompound(compound); - return stack; - } - //=====================================================BACKPACK===================================================// public boolean equip(World world, EntityPlayer player, int x, int y, int z) { @@ -575,6 +423,14 @@ public boolean drop(World world, EntityPlayer player, int x, int y, int z) return world.spawnEntityInWorld(droppedItem); } + private void transferToItemStack(ItemStack stack) + { + NBTTagCompound compound = new NBTTagCompound(); + saveToNBT(compound); + stack.setTagCompound(compound); + stack.setItemDamage(BackpackTypes.getMeta(type)); // save the meta, cuz why not + } + @Override public void dirtyTanks() { @@ -599,6 +455,18 @@ public void dirtyInventory() } + // AUTOMATION settings + + @Override + public boolean isItemValidForSlot(int slot, ItemStack stack) + { + if (slot <= Constants.END_OF_INVENTORY) + { + return SlotBackpack.isValidItem(stack); + } + return (slot == TOOL_UPPER || slot == TOOL_LOWER) && SlotTool.isValidTool(stack); + } + //=================================================ISidedInventory================================================// private static final int[] SLOTS = Utils.createSlotArray(0, Constants.INVENTORY_MAIN_SIZE); @@ -624,4 +492,22 @@ public boolean canExtractItem(int slot, ItemStack item, int side) { return true; } + + private void convertFromOldNBTFormat(NBTTagCompound compound) // backwards compatibility + { + NBTTagCompound oldBackpackTag = compound.getCompoundTag("backpackData"); + NBTTagList oldItems = oldBackpackTag.getTagList("ABPItems", NBT.TAG_COMPOUND); + leftTank.readFromNBT(oldBackpackTag.getCompoundTag("leftTank")); + rightTank.readFromNBT(oldBackpackTag.getCompoundTag("rightTank")); + type = BackpackTypes.getType(oldBackpackTag.getString("colorName")); + + NBTTagCompound newBackpackTag = new NBTTagCompound(); + newBackpackTag.setTag(TAG_INVENTORY, oldItems); + newBackpackTag.setTag(TAG_RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); + newBackpackTag.setTag(TAG_LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); + newBackpackTag.setByte(TAG_TYPE, BackpackTypes.getMeta(type)); + + compound.setTag(TAG_WEARABLE_COMPOUND, newBackpackTag); + compound.removeTag("backpackData"); + } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java index dff151fd..ee3c207a 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java @@ -17,7 +17,7 @@ public interface IInventoryAdventureBackpack extends IInventoryTanks FluidTank getRightTank(); - NBTTagCompound getExtendedProperties(); + NBTTagCompound getExtendedProperties(); //TODO move to IInventoryTanks to use with Copter/Jet? //TODO diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventureBackpack.java index 80acb2f0..a5ef4e7d 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventureBackpack.java @@ -65,7 +65,7 @@ public void setInventorySlotContents(int slot, @Nullable ItemStack stack) @Override public String getInventoryName() { - return ""; + return ""; //TODO name heirs } @Override From d1688e8003721d403a3fcab92c71f93929ef87d3 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 26 Feb 2018 18:07:25 +0700 Subject: [PATCH 444/462] Some naming --- .../adventurebackpack/block/TileAdventureBackpack.java | 4 ++-- .../adventurebackpack/client/gui/GuiAdvBackpack.java | 4 ++-- .../client/models/ModelBackpackBlock.java | 6 +++--- .../adventurebackpack/common/BackpackAbilities.java | 2 +- ...inerAdventureBackpack.java => ContainerAdventure.java} | 2 +- .../adventurebackpack/inventory/ContainerBackpack.java | 8 ++++---- .../adventurebackpack/inventory/ContainerCopter.java | 2 +- .../adventurebackpack/inventory/ContainerJetpack.java | 2 +- ...toryAdventureBackpack.java => IInventoryBackpack.java} | 2 +- .../adventurebackpack/inventory/InventoryActions.java | 4 ++-- ...toryAdventureBackpack.java => InventoryAdventure.java} | 2 +- .../adventurebackpack/inventory/InventoryBackpack.java | 2 +- .../adventurebackpack/inventory/InventoryCoalJetpack.java | 2 +- .../adventurebackpack/inventory/InventoryCopterPack.java | 4 ++-- .../{SlotAdventureBackpack.java => SlotAdventure.java} | 4 ++-- .../darkona/adventurebackpack/inventory/SlotBackpack.java | 4 ++-- .../adventurebackpack/inventory/SlotCraftMatrix.java | 2 +- .../darkona/adventurebackpack/inventory/SlotFluid.java | 2 +- .../com/darkona/adventurebackpack/inventory/SlotFuel.java | 2 +- .../com/darkona/adventurebackpack/inventory/SlotTool.java | 2 +- .../adventurebackpack/network/CowAbilityPacket.java | 4 ++-- .../adventurebackpack/network/PlayerActionPacket.java | 4 ++-- .../com/darkona/adventurebackpack/util/Resources.java | 4 ++-- 23 files changed, 37 insertions(+), 37 deletions(-) rename src/main/java/com/darkona/adventurebackpack/inventory/{ContainerAdventureBackpack.java => ContainerAdventure.java} (99%) rename src/main/java/com/darkona/adventurebackpack/inventory/{IInventoryAdventureBackpack.java => IInventoryBackpack.java} (91%) rename src/main/java/com/darkona/adventurebackpack/inventory/{InventoryAdventureBackpack.java => InventoryAdventure.java} (97%) rename src/main/java/com/darkona/adventurebackpack/inventory/{SlotAdventureBackpack.java => SlotAdventure.java} (65%) diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 9ee44778..d1e9b364 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -21,7 +21,7 @@ import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.init.ModItems; -import com.darkona.adventurebackpack.inventory.IInventoryAdventureBackpack; +import com.darkona.adventurebackpack.inventory.IInventoryBackpack; import com.darkona.adventurebackpack.inventory.InventoryActions; import com.darkona.adventurebackpack.inventory.SlotBackpack; import com.darkona.adventurebackpack.inventory.SlotTool; @@ -51,7 +51,7 @@ /** * Created by Darkona on 12/10/2014. */ -public class TileAdventureBackpack extends TileAdventure implements IInventoryAdventureBackpack, ISidedInventory +public class TileAdventureBackpack extends TileAdventure implements IInventoryBackpack, ISidedInventory { private BackpackTypes type = BackpackTypes.STANDARD; private ItemStack[] inventory = new ItemStack[Constants.INVENTORY_SIZE]; diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java index f0989d61..0d6cc736 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiAdvBackpack.java @@ -17,7 +17,7 @@ import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.inventory.ContainerBackpack; -import com.darkona.adventurebackpack.inventory.IInventoryAdventureBackpack; +import com.darkona.adventurebackpack.inventory.IInventoryBackpack; import com.darkona.adventurebackpack.inventory.InventoryBackpack; import com.darkona.adventurebackpack.network.PlayerActionPacket; import com.darkona.adventurebackpack.network.SleepingBagPacket; @@ -42,7 +42,7 @@ public class GuiAdvBackpack extends GuiWithTanks private static GuiTank tankLeft = new GuiTank(25, 7, 100, 16, ConfigHandler.typeTankRender); private static GuiTank tankRight = new GuiTank(207, 7, 100, 16, ConfigHandler.typeTankRender); - private IInventoryAdventureBackpack inventory; + private IInventoryBackpack inventory; private boolean isHoldingSpace; diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java index b6cbea98..5cf69fd2 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackBlock.java @@ -12,7 +12,7 @@ import codechicken.lib.vec.Vector3; import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.inventory.IInventoryAdventureBackpack; +import com.darkona.adventurebackpack.inventory.IInventoryBackpack; import com.darkona.adventurebackpack.reference.BackpackTypes; import static com.darkona.adventurebackpack.reference.BackpackTypes.*; @@ -268,7 +268,7 @@ public ModelBackpackBlock() this.pigNose.addBox(0.0F, 0.0F, 0.0F, 4, 3, 1); } - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float scale, IInventoryAdventureBackpack backpack) + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float scale, IInventoryBackpack backpack) { //scale*=0.9; boolean sleepingbag = backpack.isSleepingBagDeployed(); @@ -364,7 +364,7 @@ private void renderFluidsInTanks(FluidTank tankLeft, FluidTank tankRight, float } - private void renderBackpack(IInventoryAdventureBackpack backpack, float scale) + private void renderBackpack(IInventoryBackpack backpack, float scale) { BackpackTypes type = backpack.getType(); diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java index 584f0fe0..8ff76208 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java @@ -741,6 +741,6 @@ public void tileMelon(World world, TileAdventureBackpack backpack) /*public void tileCow(World world, TileAdventureBackpack backpack) { - IInventoryAdventureBackpack inv = backpack; //TODO make CowBackpack (and others) working in tile form + IInventoryBackpack inv = backpack; //TODO make CowBackpack (and others) working in tile form }*/ } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventure.java similarity index 99% rename from src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java rename to src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventure.java index 687d77c1..f53fc4c1 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventure.java @@ -15,7 +15,7 @@ * @author Ugachaga */ @SuppressWarnings("WeakerAccess") -abstract class ContainerAdventureBackpack extends Container +abstract class ContainerAdventure extends Container { protected static final int PLAYER_HOT_START = 0; protected static final int PLAYER_HOT_END = PLAYER_HOT_START + 8; diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 4612d08e..19271412 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -27,7 +27,7 @@ * * @author Darkona */ -public class ContainerBackpack extends ContainerAdventureBackpack +public class ContainerBackpack extends ContainerAdventure { private static final int BACK_INV_ROWS = 6; private static final int BACK_INV_COLUMNS = 8; @@ -43,13 +43,13 @@ public class ContainerBackpack extends ContainerAdventureBackpack private InventoryCraftingBackpack craftMatrix = new InventoryCraftingBackpack(this, MATRIX_DIMENSION, MATRIX_DIMENSION); private IInventory craftResult = new InventoryCraftResult(); - private IInventoryAdventureBackpack inventory; + private IInventoryBackpack inventory; private int leftAmount; private int rightAmount; private int invCount; - public ContainerBackpack(EntityPlayer player, IInventoryAdventureBackpack backpack, Source source) + public ContainerBackpack(EntityPlayer player, IInventoryBackpack backpack, Source source) { this.player = player; inventory = backpack; @@ -58,7 +58,7 @@ public ContainerBackpack(EntityPlayer player, IInventoryAdventureBackpack backpa this.source = source; } - public IInventoryAdventureBackpack getInventoryBackpack() + public IInventoryBackpack getInventoryBackpack() { return inventory; } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java index 92ec38ea..56388b3b 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java @@ -15,7 +15,7 @@ * * @author Darkona */ -public class ContainerCopter extends ContainerAdventureBackpack +public class ContainerCopter extends ContainerAdventure { private static final int COPTER_INV_START = PLAYER_INV_END + 1; diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java index 9190ce52..c74b2f1b 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java @@ -16,7 +16,7 @@ * * @author Darkona */ -public class ContainerJetpack extends ContainerAdventureBackpack +public class ContainerJetpack extends ContainerAdventure { private static final int JETPACK_INV_START = PLAYER_INV_END + 1; private static final int JETPACK_FUEL_START = PLAYER_INV_END + 3; diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryBackpack.java similarity index 91% rename from src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java rename to src/main/java/com/darkona/adventurebackpack/inventory/IInventoryBackpack.java index ee3c207a..f83c8848 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryBackpack.java @@ -9,7 +9,7 @@ /** * Created by Darkona on 12/10/2014. */ -public interface IInventoryAdventureBackpack extends IInventoryTanks +public interface IInventoryBackpack extends IInventoryTanks { BackpackTypes getType(); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java index 6768c5c9..0eb43c99 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryActions.java @@ -142,7 +142,7 @@ public static void consumeItemInInventory(IInventory backpack, Item item) } } - public static boolean hasItem(IInventoryAdventureBackpack backpack, Item item) + public static boolean hasItem(IInventoryBackpack backpack, Item item) { ItemStack[] inventory = backpack.getInventory(); for (ItemStack slotStack : inventory) @@ -155,7 +155,7 @@ public static boolean hasItem(IInventoryAdventureBackpack backpack, Item item) return false; } - public static boolean hasBlockItem(IInventoryAdventureBackpack backpack, Block item) + public static boolean hasBlockItem(IInventoryBackpack backpack, Block item) { ItemStack[] inventory = backpack.getInventory(); for (ItemStack slotStack : inventory) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventure.java similarity index 97% rename from src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventureBackpack.java rename to src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventure.java index a5ef4e7d..c517e47c 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventure.java @@ -10,7 +10,7 @@ * * @author Ugachaga */ -abstract class InventoryAdventureBackpack implements IInventoryTanks +abstract class InventoryAdventure implements IInventoryTanks { ItemStack containerStack; diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index dd53dc0d..006909ad 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -33,7 +33,7 @@ * * @author Darkona */ -public class InventoryBackpack extends InventoryAdventureBackpack implements IInventoryAdventureBackpack +public class InventoryBackpack extends InventoryAdventure implements IInventoryBackpack { private static final String TAG_IS_SLEEPING_BAG = "sleepingBag"; private static final String TAG_SLEEPING_BAG_X = "sleepingBagX"; diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index 2242f6b3..7d4964e2 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -22,7 +22,7 @@ * * @author Darkona */ -public class InventoryCoalJetpack extends InventoryAdventureBackpack +public class InventoryCoalJetpack extends InventoryAdventure { public int currentItemBurnTime = 0; diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java index 062d56e9..9ad08dc4 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java @@ -19,7 +19,7 @@ * * @author Darkona */ -public class InventoryCopterPack extends InventoryAdventureBackpack +public class InventoryCopterPack extends InventoryAdventure { private FluidTank fuelTank = new FluidTank(Constants.Copter.FUEL_CAPACITY); private ItemStack[] inventory = new ItemStack[INVENTORY_SIZE]; @@ -132,7 +132,7 @@ public void dirtyTanks() containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setTag(TAG_FUEL_TANK, fuelTank.writeToNBT(new NBTTagCompound())); } - //TODO to InventoryAdventureBackpack: getWearableCompound() { return containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND);} + //TODO to InventoryAdventure: getWearableCompound() { return containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND);} public void dirtyStatus() { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotAdventure.java similarity index 65% rename from src/main/java/com/darkona/adventurebackpack/inventory/SlotAdventureBackpack.java rename to src/main/java/com/darkona/adventurebackpack/inventory/SlotAdventure.java index b7db9405..ef37fbcb 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotAdventure.java @@ -8,9 +8,9 @@ * * @author Darkona */ -abstract class SlotAdventureBackpack extends Slot +abstract class SlotAdventure extends Slot { - SlotAdventureBackpack(IInventory inventory, int slotIndex, int posX, int posY) + SlotAdventure(IInventory inventory, int slotIndex, int posX, int posY) { super(inventory, slotIndex, posX, posY); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java index c35b1124..2ae8a923 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java @@ -8,7 +8,7 @@ /** * Created by Darkona on 12/10/2014. */ -public class SlotBackpack extends SlotAdventureBackpack +public class SlotBackpack extends SlotAdventure { private static final String[] FORBIDDEN_CLASSES = { // Adventure Backpack 2 @@ -29,7 +29,7 @@ public class SlotBackpack extends SlotAdventureBackpack // Project Red Exploration Backpacks "mrtjp.projectred.exploration.ItemBackpack",}; - SlotBackpack(IInventoryAdventureBackpack inventory, int slotIndex, int posX, int posY) + SlotBackpack(IInventoryBackpack inventory, int slotIndex, int posX, int posY) { super(inventory, slotIndex, posX, posY); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotCraftMatrix.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotCraftMatrix.java index 98394628..6fa01d8a 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotCraftMatrix.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotCraftMatrix.java @@ -9,7 +9,7 @@ * * @author Ugachaga */ -public class SlotCraftMatrix extends SlotAdventureBackpack +public class SlotCraftMatrix extends SlotAdventure { SlotCraftMatrix(IInventory craftMatrix, int slotIndex, int posX, int posY) { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java index 62753326..896956a5 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java @@ -15,7 +15,7 @@ * * @author Darkona */ -public class SlotFluid extends SlotAdventureBackpack +public class SlotFluid extends SlotAdventure { SlotFluid(IInventory inventory, int slotIndex, int posX, int posY) { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java index 5afb2a6c..7c6a2a8a 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFuel.java @@ -9,7 +9,7 @@ * * @author Darkona */ -public class SlotFuel extends SlotAdventureBackpack +public class SlotFuel extends SlotAdventure { SlotFuel(IInventory inventory, int slotIndex, int posX, int posY) { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java index fdd65d68..7772541c 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotTool.java @@ -18,7 +18,7 @@ * * @author Darkona */ -public class SlotTool extends SlotAdventureBackpack +public class SlotTool extends SlotAdventure { private static final String[] VALID_TOOL_NAMES = {"axe", "crowbar", "drill", "grafter", "hammer", "scoop", "shovel", "wrench",}; diff --git a/src/main/java/com/darkona/adventurebackpack/network/CowAbilityPacket.java b/src/main/java/com/darkona/adventurebackpack/network/CowAbilityPacket.java index 9b68175c..a64dc148 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/CowAbilityPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/CowAbilityPacket.java @@ -13,7 +13,7 @@ import cpw.mods.fml.common.network.simpleimpl.MessageContext; import com.darkona.adventurebackpack.inventory.ContainerBackpack; -import com.darkona.adventurebackpack.inventory.IInventoryAdventureBackpack; +import com.darkona.adventurebackpack.inventory.IInventoryBackpack; /** * Created on 16/10/2014 @@ -35,7 +35,7 @@ public IMessage onMessage(CowAbilityMessage message, MessageContext ctx) { ContainerBackpack cont = ((ContainerBackpack) player.openContainer); cont.detectAndSendChanges(); - IInventoryAdventureBackpack inv = cont.getInventoryBackpack(); + IInventoryBackpack inv = cont.getInventoryBackpack(); switch (message.action) { case CONSUME_WHEAT: diff --git a/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java b/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java index 1d1e7074..e151899c 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java @@ -10,7 +10,7 @@ import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.entity.EntityFriendlySpider; import com.darkona.adventurebackpack.inventory.ContainerBackpack; -import com.darkona.adventurebackpack.inventory.IInventoryAdventureBackpack; +import com.darkona.adventurebackpack.inventory.IInventoryBackpack; import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; import com.darkona.adventurebackpack.util.Wearing; @@ -56,7 +56,7 @@ public IMessage onMessage(ActionMessage message, MessageContext ctx) { if (player.openContainer instanceof ContainerBackpack) { - IInventoryAdventureBackpack inv = ((ContainerBackpack) player.openContainer).getInventoryBackpack(); + IInventoryBackpack inv = ((ContainerBackpack) player.openContainer).getInventoryBackpack(); if (message.type == GUI_HOLDING_SPACE) { diff --git a/src/main/java/com/darkona/adventurebackpack/util/Resources.java b/src/main/java/com/darkona/adventurebackpack/util/Resources.java index 17cef1df..6e38cdc2 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Resources.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Resources.java @@ -3,7 +3,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; -import com.darkona.adventurebackpack.inventory.IInventoryAdventureBackpack; +import com.darkona.adventurebackpack.inventory.IInventoryBackpack; import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.reference.ModInfo; @@ -31,7 +31,7 @@ public static ResourceLocation backpackTextureFromString(String color) return new ResourceLocation(TEXTURE_LOCATION, "textures/backpack/" + color + ".png"); } - public static ResourceLocation backpackTextureFromSkin(IInventoryAdventureBackpack adventureBackpack) + public static ResourceLocation backpackTextureFromSkin(IInventoryBackpack adventureBackpack) { return new ResourceLocation(TEXTURE_LOCATION, "textures/backpack/" + BackpackTypes.getSkinName(adventureBackpack.getType()) + ".png"); } From 36012ea947ca284fe50a4da1fc03b2a96282c6bd Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 26 Feb 2018 21:59:30 +0700 Subject: [PATCH 445/462] Another attack on chaos in inventory --- .../block/TileAdventure.java | 38 +- .../block/TileAdventureBackpack.java | 361 +++++++++--------- .../adventurebackpack/common/Constants.java | 1 + .../entity/EntityInflatableBoat.java | 179 +-------- .../handlers/TooltipEventHandler.java | 4 +- .../inventory/IInventoryBackpack.java | 9 +- .../inventory/IInventoryTanks.java | 8 +- .../inventory/InventoryAdventure.java | 55 ++- .../inventory/InventoryBackpack.java | 268 ++++++------- .../inventory/InventoryCoalJetpack.java | 106 ++--- .../inventory/InventoryCopterPack.java | 86 ++--- .../item/ItemAdventureBackpack.java | 2 +- .../item/ItemCoalJetpack.java | 2 - 13 files changed, 456 insertions(+), 663 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventure.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventure.java index 85b85842..ad2c0aab 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventure.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventure.java @@ -4,19 +4,22 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import com.darkona.adventurebackpack.inventory.IInventoryTanks; +import static com.darkona.adventurebackpack.common.Constants.TAG_SLOT; + /** * Created on 26.02.2018 * * @author Ugachaga */ +@SuppressWarnings("WeakerAccess") abstract class TileAdventure extends TileEntity implements IInventoryTanks { - /** IInventory START --- */ - @Override public int getSizeInventory() { @@ -108,8 +111,6 @@ public boolean isItemValidForSlot(int slot, ItemStack stack) return false; // override when automation is allowed } - /* --- IInventory END || IAsynchronousInventory START --- */ - @Nullable @Override public ItemStack decrStackSizeNoSave(int slot, int quantity) @@ -143,7 +144,34 @@ public void setInventorySlotContentsNoSave(int slot, @Nullable ItemStack stack) getInventory()[slot] = stack; } - /* --- IAsynchronousInventory END || IInventoryTanks START --- */ + protected void setInventoryFromTagList(NBTTagList items) + { + for (int i = 0; i < items.tagCount(); i++) + { + NBTTagCompound item = items.getCompoundTagAt(i); + byte slot = item.getByte(TAG_SLOT); + if (slot >= 0 && slot < getSizeInventory()) + { + getInventory()[slot] = ItemStack.loadItemStackFromNBT(item); + } + } + } + protected NBTTagList getInventoryTagList() + { + NBTTagList items = new NBTTagList(); + for (int i = 0; i < getSizeInventory(); i++) + { + ItemStack stack = getInventory()[i]; + if (stack != null) + { + NBTTagCompound item = new NBTTagCompound(); + item.setByte(TAG_SLOT, (byte) i); + stack.writeToNBT(item); + items.appendTag(item); + } + } + return items; + } } diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index d1e9b364..70265c3b 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -53,6 +53,8 @@ */ public class TileAdventureBackpack extends TileAdventure implements IInventoryBackpack, ISidedInventory { + private static final int[] MAIN_INVENTORY_SLOTS = Utils.createSlotArray(0, Constants.INVENTORY_MAIN_SIZE); + private BackpackTypes type = BackpackTypes.STANDARD; private ItemStack[] inventory = new ItemStack[Constants.INVENTORY_SIZE]; private FluidTank leftTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); @@ -69,9 +71,9 @@ public class TileAdventureBackpack extends TileAdventure implements IInventoryBa private int sbx; private int sby; private int sbz; - private int luminosity = 0; private int checkTime = 0; + private int luminosity = 0; public TileAdventureBackpack() { @@ -120,75 +122,6 @@ public NBTTagCompound getExtendedProperties() return extendedProperties; } - - - - public int getLuminosity() - { - return luminosity; - } - - @Override - public int getLastTime() - { - return lastTime; - } - - @Override - public void setLastTime(int lastTime) - { - this.lastTime = lastTime; - } - - @Override - public boolean isSleepingBagDeployed() - { - return this.sleepingBagDeployed; - } - - public boolean deploySleepingBag(EntityPlayer player, World world, int meta, int cX, int cY, int cZ) - { - if (world.isRemote) - return false; - - sleepingBagDeployed = CoordsUtils.spawnSleepingBag(player, world, meta, cX, cY, cZ); - if (sleepingBagDeployed) - { - sbx = cX; - sby = cY; - sbz = cZ; - sbdir = meta; - world.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); - } - return sleepingBagDeployed; - } - - public void setSleepingBagDeployed(boolean state) - { - this.sleepingBagDeployed = state; - } - - public boolean removeSleepingBag(World world) - { - if (sleepingBagDeployed) - { - if (world.getBlock(sbx, sby, sbz) == ModBlocks.blockSleepingBag) - { - world.func_147480_a(sbx, sby, sbz, false); - this.sleepingBagDeployed = false; - markDirty(); - return true; - } - } - else - { - this.sleepingBagDeployed = false; - markDirty(); - } - return false; - } - - //=======================================================NBT======================================================// @Override public void readFromNBT(NBTTagCompound compound) { @@ -202,19 +135,6 @@ public void readFromNBT(NBTTagCompound compound) luminosity = compound.getInteger("lumen"); } - @Override - public void writeToNBT(NBTTagCompound compound) - { - super.writeToNBT(compound); - saveToNBT(compound); - compound.setBoolean("sleepingbag", sleepingBagDeployed); - compound.setInteger("sbx", sbx); - compound.setInteger("sby", sby); - compound.setInteger("sbz", sbz); - compound.setInteger("sbdir", sbdir); - compound.setInteger("lumen", luminosity); - } - @Override public void loadFromNBT(NBTTagCompound compound) { @@ -226,16 +146,7 @@ public void loadFromNBT(NBTTagCompound compound) NBTTagCompound backpackTag = compound.getCompoundTag(TAG_WEARABLE_COMPOUND); type = BackpackTypes.getType(backpackTag.getByte(TAG_TYPE)); - NBTTagList items = backpackTag.getTagList(TAG_INVENTORY, NBT.TAG_COMPOUND); - for (int i = 0; i < items.tagCount(); i++) - { - NBTTagCompound item = items.getCompoundTagAt(i); - byte slot = item.getByte("Slot"); - if (slot >= 0 && slot < inventory.length) - { - inventory[slot] = ItemStack.loadItemStackFromNBT(item); - } - } + setInventoryFromTagList(backpackTag.getTagList(TAG_INVENTORY, NBT.TAG_COMPOUND)); leftTank.readFromNBT(backpackTag.getCompoundTag(TAG_LEFT_TANK)); rightTank.readFromNBT(backpackTag.getCompoundTag(TAG_RIGHT_TANK)); extendedProperties = backpackTag.getCompoundTag(TAG_EXTENDED_COMPOUND); @@ -244,6 +155,19 @@ public void loadFromNBT(NBTTagCompound compound) lastTime = backpackTag.getInteger("lastTime"); } + @Override + public void writeToNBT(NBTTagCompound compound) + { + super.writeToNBT(compound); + saveToNBT(compound); + compound.setBoolean("sleepingbag", sleepingBagDeployed); + compound.setInteger("sbx", sbx); + compound.setInteger("sby", sby); + compound.setInteger("sbz", sbz); + compound.setInteger("sbdir", sbdir); + compound.setInteger("lumen", luminosity); + } + @Override public void saveToNBT(NBTTagCompound compound) { @@ -252,19 +176,7 @@ public void saveToNBT(NBTTagCompound compound) NBTTagCompound backpackTag = new NBTTagCompound(); backpackTag.setByte(TAG_TYPE, BackpackTypes.getMeta(type)); - NBTTagList items = new NBTTagList(); - for (int i = 0; i < inventory.length; i++) - { - ItemStack stack = inventory[i]; - if (stack != null) - { - NBTTagCompound item = new NBTTagCompound(); - item.setByte("Slot", (byte) i); - stack.writeToNBT(item); - items.appendTag(item); - } - } - backpackTag.setTag(TAG_INVENTORY, items); + backpackTag.setTag(TAG_INVENTORY, getInventoryTagList()); backpackTag.setTag(TAG_RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); backpackTag.setTag(TAG_LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); backpackTag.setTag(TAG_EXTENDED_COMPOUND, extendedProperties); @@ -275,7 +187,29 @@ public void saveToNBT(NBTTagCompound compound) compound.setTag(TAG_WEARABLE_COMPOUND, backpackTag); } - //====================================================INVENTORY===================================================// + + + + + + + public int getLuminosity() + { + return luminosity; + } + + @Override + public int getLastTime() + { + return lastTime; + } + + @Override + public void setLastTime(int lastTime) + { + this.lastTime = lastTime; + } + @Override public void markDirty() @@ -284,8 +218,8 @@ public void markDirty() { if (inventory[i] != null) { - if ((i == BUCKET_IN_LEFT || i == BUCKET_IN_RIGHT) - || (i == BUCKET_OUT_LEFT || i == BUCKET_OUT_RIGHT) && inventory[i].getItem() instanceof ItemHose) + if ((i == BUCKET_OUT_LEFT || i == BUCKET_OUT_RIGHT) && inventory[i].getItem() instanceof ItemHose + || (i == BUCKET_IN_LEFT || i == BUCKET_IN_RIGHT)) { updateTankSlots(); } @@ -297,12 +231,12 @@ public void markDirty() @Override public boolean updateTankSlots() { - boolean result = false; + boolean changesMade = false; while (InventoryActions.transferContainerTank(this, getLeftTank(), BUCKET_IN_LEFT)) - result = true; + changesMade = true; while (InventoryActions.transferContainerTank(this, getRightTank(), BUCKET_IN_RIGHT)) - result = true; - return result; + changesMade = true; + return changesMade; } @Override @@ -317,61 +251,39 @@ public void consumeInventoryItem(Item item) InventoryActions.consumeItemInInventory(this, item); } - //===================================================TILE ENTITY==================================================// - //SEND SYNC PACKET @Override - public Packet getDescriptionPacket() + public void dirtyTanks() { - NBTTagCompound compound = new NBTTagCompound(); - writeToNBT(compound); - return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, compound); + } - //RECEIV SYNC PACKET - This is necessary for the TileEntity to load the nbt as soon as it is loaded and be rendered - //properly when the custom renderer reads it @Override - public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) + public void dirtyTime() { - super.onDataPacket(net, pkt); - readFromNBT(pkt.func_148857_g()); + } @Override - public void updateEntity() + public void dirtyExtended() + { + + } + + @Override + public void dirtyInventory() { - //Execute this backpack's ability. No, seriously. You might not infer that from the code. Just sayin' - if (ConfigHandler.backpackAbilities && BackpackTypes.hasProperty(type, BackpackTypes.Props.TILE)) - { - BackpackAbilities.backpackAbilities.executeTileAbility(this.worldObj, this); - } - //Check for backpack luminosity and a deployed sleeping bag, just in case because i'm super paranoid. - if (checkTime == 0) - { - int lastLumen = luminosity; - int left = (leftTank.getFluid() != null) ? leftTank.getFluid().getFluid().getLuminosity() : 0; - int right = (rightTank.getFluid() != null) ? rightTank.getFluid().getFluid().getLuminosity() : 0; - luminosity = Math.max(left, right); - if (luminosity != lastLumen) - { - int meta = worldObj.getBlockMetadata(xCoord, yCoord, zCoord); - worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.blockBackpack, meta, 3); - worldObj.setLightValue(EnumSkyBlock.Block, xCoord, yCoord, zCoord, luminosity); - } - if (worldObj.getBlock(sbx, sby, sbz) != ModBlocks.blockSleepingBag) - { - sleepingBagDeployed = false; - } - checkTime = 20; - } - else - { - checkTime--; - } } - //=====================================================BACKPACK===================================================// + + + + + + + + // Logic: from tile to item public boolean equip(World world, EntityPlayer player, int x, int y, int z) { ItemStack stacky = new ItemStack(ModItems.adventureBackpack, 1); @@ -381,23 +293,16 @@ public boolean equip(World world, EntityPlayer player, int x, int y, int z) { if (Wearing.isWearingWearable(player)) { - if (Wearing.isWearingBackpack(player)) - { - player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.equipped.backpack")); - } - else if (Wearing.isWearingCopter(player)) - { - player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.equipped.copterpack")); - } + String msg = "backpack"; + if (Wearing.isWearingCopter(player)) + msg = "copterpack"; else if (Wearing.isWearingJetpack(player)) - { - player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.equipped.jetpack")); - } + msg = "jetpack"; + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.equipped." + msg)); } + if (!player.inventory.addItemStackToInventory(stacky)) - { return drop(world, player, x, y, z); - } } return true; } @@ -431,66 +336,142 @@ private void transferToItemStack(ItemStack stack) stack.setItemDamage(BackpackTypes.getMeta(type)); // save the meta, cuz why not } + // Sleeping Bag @Override - public void dirtyTanks() + public boolean isSleepingBagDeployed() { + return this.sleepingBagDeployed; + } + public void setSleepingBagDeployed(boolean state) + { + this.sleepingBagDeployed = state; } - @Override - public void dirtyTime() + public boolean deploySleepingBag(EntityPlayer player, World world, int meta, int cX, int cY, int cZ) { + if (world.isRemote) + return false; + sleepingBagDeployed = CoordsUtils.spawnSleepingBag(player, world, meta, cX, cY, cZ); + if (sleepingBagDeployed) + { + sbx = cX; + sby = cY; + sbz = cZ; + sbdir = meta; + world.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); + } + return sleepingBagDeployed; } - @Override - public void dirtyExtended() + public boolean removeSleepingBag(World world) { - + if (sleepingBagDeployed) + { + if (world.getBlock(sbx, sby, sbz) == ModBlocks.blockSleepingBag) + { + world.func_147480_a(sbx, sby, sbz, false); + this.sleepingBagDeployed = false; + markDirty(); + return true; + } + } + else + { + this.sleepingBagDeployed = false; + markDirty(); + } + return false; } + // Automation @Override - public void dirtyInventory() + public int[] getAccessibleSlotsFromSide(int side) { + if (GeneralReference.isDimensionAllowed(worldObj.provider.dimensionId)) + return MAIN_INVENTORY_SLOTS; + return null; } - // AUTOMATION settings + @Override + public boolean canInsertItem(int slot, ItemStack item, int side) + { + return this.isItemValidForSlot(slot, item); + } @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { if (slot <= Constants.END_OF_INVENTORY) - { return SlotBackpack.isValidItem(stack); - } + return (slot == TOOL_UPPER || slot == TOOL_LOWER) && SlotTool.isValidTool(stack); } - //=================================================ISidedInventory================================================// - - private static final int[] SLOTS = Utils.createSlotArray(0, Constants.INVENTORY_MAIN_SIZE); + @Override + public boolean canExtractItem(int slot, ItemStack item, int side) + { + return true; + } + /** + * Send sync packet. This is necessary for the TileEntity to load the nbt as soon as it is loaded + * and be rendered properly when the custom renderer reads it + */ @Override - public int[] getAccessibleSlotsFromSide(int side) + public Packet getDescriptionPacket() { - if (GeneralReference.isDimensionAllowed(this.worldObj.provider.dimensionId)) - { - return SLOTS; - } - return null; + NBTTagCompound compound = new NBTTagCompound(); + writeToNBT(compound); + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, compound); } + /** + * Receive sync packet. This is necessary for the TileEntity to load the nbt as soon as it is loaded + * and be rendered properly when the custom renderer reads it + */ @Override - public boolean canInsertItem(int slot, ItemStack item, int side) + public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { - return this.isItemValidForSlot(slot, item); + super.onDataPacket(net, pkt); + readFromNBT(pkt.func_148857_g()); } + // Ticking at World.updateEntities() @Override - public boolean canExtractItem(int slot, ItemStack item, int side) + public void updateEntity() { - return true; + //Execute this backpack's TILE ability. No, seriously. You might not infer that from the code. Just sayin' + if (ConfigHandler.backpackAbilities && BackpackTypes.hasProperty(type, BackpackTypes.Props.TILE)) + { + BackpackAbilities.backpackAbilities.executeTileAbility(this.worldObj, this); + } + + //Check for backpack luminosity and a deployed sleeping bag, just in case because i'm super paranoid. + if (checkTime > 0) + { + int lastLumen = luminosity; + int left = (leftTank.getFluid() != null) ? leftTank.getFluid().getFluid().getLuminosity() : 0; + int right = (rightTank.getFluid() != null) ? rightTank.getFluid().getFluid().getLuminosity() : 0; + luminosity = Math.max(left, right); + if (luminosity != lastLumen) + { + int meta = worldObj.getBlockMetadata(xCoord, yCoord, zCoord); + worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.blockBackpack, meta, 3); + worldObj.setLightValue(EnumSkyBlock.Block, xCoord, yCoord, zCoord, luminosity); + } + if (worldObj.getBlock(sbx, sby, sbz) != ModBlocks.blockSleepingBag) + { + sleepingBagDeployed = false; + } + checkTime = 20; + } + else + { + checkTime--; + } } private void convertFromOldNBTFormat(NBTTagCompound compound) // backwards compatibility diff --git a/src/main/java/com/darkona/adventurebackpack/common/Constants.java b/src/main/java/com/darkona/adventurebackpack/common/Constants.java index 49cc2657..9ce11ba1 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/Constants.java +++ b/src/main/java/com/darkona/adventurebackpack/common/Constants.java @@ -21,6 +21,7 @@ public enum Source //TODO move to separate class? public static final String TAG_WEARABLE_COMPOUND = "wearableData"; public static final String TAG_EXTENDED_COMPOUND = "extendedProperties"; public static final String TAG_INVENTORY = "inventory"; + public static final String TAG_SLOT = "Slot"; /** * ### Adventure Backpack ### diff --git a/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java b/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java index b710babc..e3c597b4 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java @@ -25,14 +25,13 @@ import cpw.mods.fml.relauncher.SideOnly; import com.darkona.adventurebackpack.init.ModItems; -import com.darkona.adventurebackpack.inventory.IInventoryTanks; /** * Created on 05/01/2015 * * @author Darkona */ -public class EntityInflatableBoat extends EntityBoat implements IInventoryTanks, IEntityAdditionalSpawnData +public class EntityInflatableBoat extends EntityBoat implements /*IInventoryTanks, */IEntityAdditionalSpawnData { private FluidTank fuelTank; private boolean isBoatEmpty; @@ -54,6 +53,8 @@ public class EntityInflatableBoat extends EntityBoat implements IInventoryTanks, private boolean motorized; + // boat is in EARLY ALPHA stage + public boolean isMotorized() { return motorized; @@ -469,180 +470,6 @@ public void setMotorized(boolean motorized) this.motorized = motorized; } - @Override - public boolean updateTankSlots() - { - return false; - } - - @Override - public void loadFromNBT(NBTTagCompound compound) - { - - } - - @Override - public void saveToNBT(NBTTagCompound compound) - { - - } - - @Override - public ItemStack[] getInventory() - { - return new ItemStack[0]; - } - - @Override - public FluidTank[] getTanksArray() - { - return new FluidTank[0]; - } - - @Override - public int[] getSlotsOnClosingArray() - { - return new int[0]; - } - - @Override - public void dirtyInventory() - { - - } - - @Override - public void dirtyTanks() - { - - } - - @Override - public void setInventorySlotContentsNoSave(int slot, ItemStack stack) - { - - } - - @Override - public ItemStack decrStackSizeNoSave(int slot, int amount) - { - return null; - } - - /** - * Returns the number of slots in the inventory. - */ - @Override - public int getSizeInventory() - { - return 0; - } - - /** - * Returns the stack in slot i - */ - @Override - public ItemStack getStackInSlot(int p_70301_1_) - { - return null; - } - - /** - * Removes from an inventory slot (first arg) up to a specified number (second arg) of items and returns them in a - * new stack. - */ - @Override - public ItemStack decrStackSize(int p_70298_1_, int p_70298_2_) - { - return null; - } - - /** - * When some containers are closed they call this on each slot, then drop whatever it returns as an EntityItem - - * like when you close a workbench GUI. - */ - @Override - public ItemStack getStackInSlotOnClosing(int p_70304_1_) - { - return null; - } - - /** - * Sets the given item stack to the specified slot in the inventory (can be crafting or armor sections). - */ - @Override - public void setInventorySlotContents(int p_70299_1_, ItemStack p_70299_2_) - { - - } - - /** - * Returns the name of the inventory - */ - @Override - public String getInventoryName() - { - return null; - } - - /** - * Returns if the inventory is named - */ - @Override - public boolean hasCustomInventoryName() - { - return false; - } - - /** - * Returns the maximum stack size for a inventory slot. - */ - @Override - public int getInventoryStackLimit() - { - return 0; - } - - /** - * For tile entities, ensures the chunk containing the tile entity is saved to disk later - the game won't think it - * hasn't changed and skip it. - */ - @Override - public void markDirty() - { - - } - - /** - * Do not make give this method the name canInteractWith because it clashes with Container - */ - @Override - public boolean isUseableByPlayer(EntityPlayer p_70300_1_) - { - return false; - } - - @Override - public void openInventory() - { - - } - - @Override - public void closeInventory() - { - - } - - /** - * Returns true if automation is allowed to insert the given stack (ignoring stack size) into the given slot. - */ - @Override - public boolean isItemValidForSlot(int p_94041_1_, ItemStack p_94041_2_) - { - return false; - } - @Override public void writeSpawnData(ByteBuf data) { diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java index e72cd703..5d88ff69 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java @@ -248,7 +248,7 @@ public static String inventoryTooltip(NBTTagList itemList) boolean toolSlotL = false; for (int i = itemCount - 1; i >= 0; i--) { - int slotAtI = itemList.getCompoundTagAt(i).getInteger("Slot"); + int slotAtI = itemList.getCompoundTagAt(i).getInteger(Constants.TAG_SLOT); if (slotAtI < Constants.TOOL_UPPER) break; else if (slotAtI == Constants.TOOL_UPPER) @@ -339,7 +339,7 @@ private static String slotStackTooltip(NBTTagList itemList, int slot) int slotID, slotMeta, slotCount = slotID = slotMeta = 0; for (int i = 0; i <= slot; i++) { - int slotAtI = itemList.getCompoundTagAt(i).getInteger("Slot"); + int slotAtI = itemList.getCompoundTagAt(i).getInteger(Constants.TAG_SLOT); if (slotAtI == slot) { slotID = itemList.getCompoundTagAt(i).getInteger("id"); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryBackpack.java index f83c8848..a50550ee 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryBackpack.java @@ -19,12 +19,8 @@ public interface IInventoryBackpack extends IInventoryTanks NBTTagCompound getExtendedProperties(); //TODO move to IInventoryTanks to use with Copter/Jet? - //TODO - - boolean isSleepingBagDeployed(); - int getLastTime(); boolean hasItem(Item item); @@ -36,4 +32,9 @@ public interface IInventoryBackpack extends IInventoryTanks void dirtyTime(); void dirtyExtended(); + + + + + boolean isSleepingBagDeployed(); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryTanks.java b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryTanks.java index 1d93b7e8..a11aa3fb 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryTanks.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryTanks.java @@ -17,17 +17,13 @@ public interface IInventoryTanks extends IAsynchronousInventory int[] getSlotsOnClosingArray(); - //TODO - - - void loadFromNBT(NBTTagCompound compound); void saveToNBT(NBTTagCompound compound); + void dirtyInventory(); + boolean updateTankSlots(); void dirtyTanks(); - - void dirtyInventory(); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventure.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventure.java index c517e47c..b5c80b24 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventure.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventure.java @@ -4,18 +4,23 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; + +import static com.darkona.adventurebackpack.common.Constants.TAG_INVENTORY; +import static com.darkona.adventurebackpack.common.Constants.TAG_SLOT; +import static com.darkona.adventurebackpack.common.Constants.TAG_WEARABLE_COMPOUND; /** * Created on 15.07.2017 * * @author Ugachaga */ +@SuppressWarnings("WeakerAccess") abstract class InventoryAdventure implements IInventoryTanks { ItemStack containerStack; - /** IInventory START --- */ - @Override public int getSizeInventory() { @@ -110,8 +115,6 @@ public boolean isItemValidForSlot(int slot, ItemStack stack) return false; } - /* --- IInventory END || IAsynchronousInventory START --- */ - @Nullable @Override public ItemStack decrStackSizeNoSave(int slot, int quantity) @@ -145,8 +148,48 @@ public void setInventorySlotContentsNoSave(int slot, @Nullable ItemStack stack) getInventory()[slot] = stack; } - /* --- IAsynchronousInventory END || IInventoryTanks START --- */ + @Override + public void dirtyInventory() + { + if (updateTankSlots()) //TODO this can be generalized too + dirtyTanks(); //TODO and also this + + getWearableCompound().removeTag(TAG_INVENTORY); //TODO why? sync related? + getWearableCompound().setTag(TAG_INVENTORY, getInventoryTagList()); + } + + protected NBTTagCompound getWearableCompound() + { + return containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND); + } - //TODO + protected void setInventoryFromTagList(NBTTagList items) + { + for (int i = 0; i < items.tagCount(); i++) + { + NBTTagCompound item = items.getCompoundTagAt(i); + byte slot = item.getByte(TAG_SLOT); + if (slot >= 0 && slot < getSizeInventory()) + { + getInventory()[slot] = ItemStack.loadItemStackFromNBT(item); + } + } + } + protected NBTTagList getInventoryTagList() + { + NBTTagList items = new NBTTagList(); + for (int i = 0; i < getSizeInventory(); i++) + { + ItemStack stack = getInventory()[i]; + if (stack != null) + { + NBTTagCompound item = new NBTTagCompound(); + item.setByte(TAG_SLOT, (byte) i); + stack.writeToNBT(item); + items.appendTag(item); + } + } + return items; + } } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index 006909ad..910d825d 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -104,81 +104,6 @@ public NBTTagCompound getExtendedProperties() return extendedProperties; } - - - @Override - public int getLastTime() - { - return this.lastTime; - } - - @Override - public boolean hasItem(Item item) - { - return InventoryActions.hasItem(this, item); - } - - @Override - public void consumeInventoryItem(Item item) - { - InventoryActions.consumeItemInInventory(this, item); - } - - @Override - public boolean isSleepingBagDeployed() - { - return sleepingBagDeployed; - } - - public boolean deploySleepingBag(EntityPlayer player, World world, int meta, int cX, int cY, int cZ) - { - if (world.isRemote) - return false; - - if (sleepingBagDeployed) - removeSleepingBag(world); - - sleepingBagDeployed = CoordsUtils.spawnSleepingBag(player, world, meta, cX, cY, cZ); - if (sleepingBagDeployed) - { - sleepingBagX = cX; - sleepingBagY = cY; - sleepingBagZ = cZ; - markDirty(); - } - return sleepingBagDeployed; - } - - public void removeSleepingBag(World world) - { - if (this.sleepingBagDeployed) - { - if (world.getBlock(sleepingBagX, sleepingBagY, sleepingBagZ) == ModBlocks.blockSleepingBag) - world.func_147480_a(sleepingBagX, sleepingBagY, sleepingBagZ, false); - } - this.sleepingBagDeployed = false; - markDirty(); - } - - @Override - public void setLastTime(int time) - { - this.lastTime = time; - } - - @Override - public void dirtyTime() - { - containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setInteger("lastTime", lastTime); - } - - @Override - public void dirtyExtended() //TODO is it redundant? - { - containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).removeTag(TAG_EXTENDED_COMPOUND); - containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setTag(TAG_EXTENDED_COMPOUND, extendedProperties); - } - @Override public void loadFromNBT(NBTTagCompound compound) { @@ -187,28 +112,11 @@ public void loadFromNBT(NBTTagCompound compound) NBTTagCompound backpackTag = compound.getCompoundTag(TAG_WEARABLE_COMPOUND); type = BackpackTypes.getType(backpackTag.getByte(TAG_TYPE)); - NBTTagList items = backpackTag.getTagList(TAG_INVENTORY, NBT.TAG_COMPOUND); - for (int i = 0; i < items.tagCount(); i++) - { - NBTTagCompound item = items.getCompoundTagAt(i); - byte slot = item.getByte("Slot"); - if (slot >= 0 && slot < inventory.length) - { - inventory[slot] = ItemStack.loadItemStackFromNBT(item); - } - } + setInventoryFromTagList(backpackTag.getTagList(TAG_INVENTORY, NBT.TAG_COMPOUND)); leftTank.readFromNBT(backpackTag.getCompoundTag(TAG_LEFT_TANK)); rightTank.readFromNBT(backpackTag.getCompoundTag(TAG_RIGHT_TANK)); extendedProperties = backpackTag.getCompoundTag(TAG_EXTENDED_COMPOUND); - { - sleepingBagDeployed = extendedProperties.getBoolean(TAG_IS_SLEEPING_BAG); - if (sleepingBagDeployed) - { - sleepingBagX = extendedProperties.getInteger(TAG_SLEEPING_BAG_X); - sleepingBagY = extendedProperties.getInteger(TAG_SLEEPING_BAG_Y); - sleepingBagZ = extendedProperties.getInteger(TAG_SLEEPING_BAG_Z); - } - } + loadSleepingBag(); disableCycling = backpackTag.getBoolean(TAG_DISABLE_CYCLING); disableNVision = backpackTag.getBoolean(TAG_DISABLE_NVISION); lastTime = backpackTag.getInteger("lastTime"); @@ -219,39 +127,11 @@ public void saveToNBT(NBTTagCompound compound) { NBTTagCompound backpackTag = new NBTTagCompound(); backpackTag.setByte(TAG_TYPE, BackpackTypes.getMeta(type)); - NBTTagList items = new NBTTagList(); - for (int i = 0; i < inventory.length; i++) - { - ItemStack stack = inventory[i]; - if (stack != null) - { - NBTTagCompound item = new NBTTagCompound(); - item.setByte("Slot", (byte) i); - stack.writeToNBT(item); - items.appendTag(item); - } - } - backpackTag.removeTag(TAG_INVENTORY); - backpackTag.setTag(TAG_INVENTORY, items); + backpackTag.setTag(TAG_INVENTORY, getInventoryTagList()); backpackTag.setTag(TAG_RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); backpackTag.setTag(TAG_LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); backpackTag.setTag(TAG_EXTENDED_COMPOUND, extendedProperties); - { - if (sleepingBagDeployed) - { - extendedProperties.setBoolean(TAG_IS_SLEEPING_BAG, sleepingBagDeployed); - extendedProperties.setInteger(TAG_SLEEPING_BAG_X, sleepingBagX); - extendedProperties.setInteger(TAG_SLEEPING_BAG_Y, sleepingBagY); - extendedProperties.setInteger(TAG_SLEEPING_BAG_Z, sleepingBagZ); - } - else - { - extendedProperties.removeTag(TAG_IS_SLEEPING_BAG); - extendedProperties.removeTag(TAG_SLEEPING_BAG_X); - extendedProperties.removeTag(TAG_SLEEPING_BAG_Y); - extendedProperties.removeTag(TAG_SLEEPING_BAG_Z); - } - } + saveSleepingBag(); backpackTag.setBoolean(TAG_DISABLE_CYCLING, disableCycling); backpackTag.setBoolean(TAG_DISABLE_NVISION, disableNVision); backpackTag.setInteger("lastTime", lastTime); @@ -262,42 +142,59 @@ public void saveToNBT(NBTTagCompound compound) @Override public boolean updateTankSlots() { - boolean result = false; + boolean changesMade = false; while (InventoryActions.transferContainerTank(this, getLeftTank(), BUCKET_IN_LEFT)) - result = true; + changesMade = true; while (InventoryActions.transferContainerTank(this, getRightTank(), BUCKET_IN_RIGHT)) - result = true; - return result; + changesMade = true; + return changesMade; } @Override - public void dirtyInventory() + public void dirtyTanks() { - if (updateTankSlots()) - { - dirtyTanks(); - } - NBTTagList items = new NBTTagList(); - for (int i = 0; i < inventory.length; i++) - { - ItemStack stack = inventory[i]; - if (stack != null) - { - NBTTagCompound item = new NBTTagCompound(); - item.setByte("Slot", (byte) i); - stack.writeToNBT(item); - items.appendTag(item); - } - } - containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).removeTag(TAG_INVENTORY); - containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setTag(TAG_INVENTORY, items); + getWearableCompound().setTag(TAG_LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); + getWearableCompound().setTag(TAG_RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); + } + + + + + @Override + public int getLastTime() + { + return this.lastTime; } @Override - public void dirtyTanks() + public boolean hasItem(Item item) + { + return InventoryActions.hasItem(this, item); + } + + @Override + public void consumeInventoryItem(Item item) + { + InventoryActions.consumeItemInInventory(this, item); + } + + @Override + public void setLastTime(int time) + { + this.lastTime = time; + } + + @Override + public void dirtyTime() { - containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setTag(TAG_LEFT_TANK, leftTank.writeToNBT(new NBTTagCompound())); - containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setTag(TAG_RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); + getWearableCompound().setInteger("lastTime", lastTime); + } + + @Override + public void dirtyExtended() //TODO is it redundant? + { + getWearableCompound().removeTag(TAG_EXTENDED_COMPOUND); + getWearableCompound().setTag(TAG_EXTENDED_COMPOUND, extendedProperties); } public boolean hasBlock(Block block) @@ -305,6 +202,11 @@ public boolean hasBlock(Block block) return InventoryActions.hasBlockItem(this, block); } + + + + + public boolean getDisableCycling() { return disableCycling; @@ -325,6 +227,72 @@ public void setDisableNVision(boolean b) this.disableNVision = b; } + // Sleeping Bag + @Override + public boolean isSleepingBagDeployed() + { + return sleepingBagDeployed; + } + + private void loadSleepingBag() + { + sleepingBagDeployed = extendedProperties.getBoolean(TAG_IS_SLEEPING_BAG); + if (sleepingBagDeployed) + { + sleepingBagX = extendedProperties.getInteger(TAG_SLEEPING_BAG_X); + sleepingBagY = extendedProperties.getInteger(TAG_SLEEPING_BAG_Y); + sleepingBagZ = extendedProperties.getInteger(TAG_SLEEPING_BAG_Z); + } + } + + private void saveSleepingBag() + { + if (sleepingBagDeployed) + { + extendedProperties.setBoolean(TAG_IS_SLEEPING_BAG, sleepingBagDeployed); + extendedProperties.setInteger(TAG_SLEEPING_BAG_X, sleepingBagX); + extendedProperties.setInteger(TAG_SLEEPING_BAG_Y, sleepingBagY); + extendedProperties.setInteger(TAG_SLEEPING_BAG_Z, sleepingBagZ); + } + else + { + extendedProperties.removeTag(TAG_IS_SLEEPING_BAG); + extendedProperties.removeTag(TAG_SLEEPING_BAG_X); + extendedProperties.removeTag(TAG_SLEEPING_BAG_Y); + extendedProperties.removeTag(TAG_SLEEPING_BAG_Z); + } + } + + public boolean deploySleepingBag(EntityPlayer player, World world, int meta, int cX, int cY, int cZ) + { + if (world.isRemote) + return false; + + if (sleepingBagDeployed) + removeSleepingBag(world); + + sleepingBagDeployed = CoordsUtils.spawnSleepingBag(player, world, meta, cX, cY, cZ); + if (sleepingBagDeployed) + { + sleepingBagX = cX; + sleepingBagY = cY; + sleepingBagZ = cZ; + markDirty(); + } + return sleepingBagDeployed; + } + + public void removeSleepingBag(World world) + { + if (this.sleepingBagDeployed) + { + if (world.getBlock(sleepingBagX, sleepingBagY, sleepingBagZ) == ModBlocks.blockSleepingBag) + world.func_147480_a(sleepingBagX, sleepingBagY, sleepingBagZ, false); + } + this.sleepingBagDeployed = false; + markDirty(); + } + private void detectAndConvertFromOldNBTFormat(NBTTagCompound compound) // backwards compatibility { if (compound == null || !compound.hasKey("backpackData")) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index 7d4964e2..e43df050 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -9,12 +9,12 @@ import com.darkona.adventurebackpack.common.Constants; -import static com.darkona.adventurebackpack.common.Constants.TAG_INVENTORY; import static com.darkona.adventurebackpack.common.Constants.Jetpack.BUCKET_IN; import static com.darkona.adventurebackpack.common.Constants.Jetpack.BUCKET_OUT; import static com.darkona.adventurebackpack.common.Constants.Jetpack.FUEL_SLOT; import static com.darkona.adventurebackpack.common.Constants.Jetpack.TAG_STEAM_TANK; import static com.darkona.adventurebackpack.common.Constants.Jetpack.TAG_WATER_TANK; +import static com.darkona.adventurebackpack.common.Constants.TAG_INVENTORY; import static com.darkona.adventurebackpack.common.Constants.TAG_WEARABLE_COMPOUND; /** @@ -37,7 +37,6 @@ public class InventoryCoalJetpack extends InventoryAdventure private int temperature = 25; private int burnTicks = 0; private int coolTicks = 5000; - private long systemTime = 0; public InventoryCoalJetpack(final ItemStack jetpack) { @@ -74,116 +73,76 @@ public int[] getSlotsOnClosingArray() return new int[]{BUCKET_IN, BUCKET_OUT}; } - - public int getBurnTimeRemainingScaled(int scale) - { - if (this.currentItemBurnTime == 0) - { - this.currentItemBurnTime = 200; - } - - return this.burnTicks * scale / this.currentItemBurnTime; - } - @Override public void loadFromNBT(NBTTagCompound compound) { NBTTagCompound jetpackTag = compound.getCompoundTag(TAG_WEARABLE_COMPOUND); + setInventoryFromTagList(jetpackTag.getTagList(TAG_INVENTORY, NBT.TAG_COMPOUND)); waterTank.readFromNBT(jetpackTag.getCompoundTag(TAG_WATER_TANK)); steamTank.readFromNBT(jetpackTag.getCompoundTag(TAG_STEAM_TANK)); temperature = jetpackTag.getInteger("temperature"); status = jetpackTag.getBoolean("status"); burnTicks = jetpackTag.getInteger("burnTicks"); coolTicks = jetpackTag.getInteger("coolTicks"); - systemTime = jetpackTag.getLong("systemTime"); inUse = jetpackTag.getBoolean("inUse"); boiling = jetpackTag.getBoolean("boiling"); leaking = jetpackTag.getBoolean("leaking"); currentItemBurnTime = jetpackTag.getInteger("currentBurn"); - NBTTagList items = jetpackTag.getTagList(TAG_INVENTORY, NBT.TAG_COMPOUND); - for (int i = 0; i < items.tagCount(); i++) - { - NBTTagCompound item = items.getCompoundTagAt(i); - byte slot = item.getByte("Slot"); - if (slot >= 0 && slot < inventory.length) - { - inventory[slot] = ItemStack.loadItemStackFromNBT(item); - } - } } @Override public void saveToNBT(NBTTagCompound compound) { NBTTagCompound jetpackTag = compound.getCompoundTag(TAG_WEARABLE_COMPOUND); + jetpackTag.setTag(TAG_INVENTORY, getInventoryTagList()); jetpackTag.setTag(TAG_WATER_TANK, waterTank.writeToNBT(new NBTTagCompound())); jetpackTag.setTag(TAG_STEAM_TANK, steamTank.writeToNBT(new NBTTagCompound())); jetpackTag.setInteger("temperature", temperature); jetpackTag.setBoolean("status", status); jetpackTag.setInteger("burnTicks", burnTicks); jetpackTag.setInteger("coolTicks", coolTicks); - jetpackTag.setLong("systemTime", systemTime); jetpackTag.setBoolean("inUse", inUse); jetpackTag.setBoolean("boiling", boiling); jetpackTag.setBoolean("leaking", leaking); jetpackTag.setInteger("currentBurn", currentItemBurnTime); - NBTTagList items = new NBTTagList(); - for (int i = 0; i < inventory.length; i++) - { - ItemStack stack = inventory[i]; - if (stack != null) - { - NBTTagCompound item = new NBTTagCompound(); - item.setByte("Slot", (byte) i); - stack.writeToNBT(item); - items.appendTag(item); - } - } - jetpackTag.setTag(TAG_INVENTORY, items); compound.setTag(TAG_WEARABLE_COMPOUND, jetpackTag); } @Override public boolean updateTankSlots() { - boolean result = false; + boolean changesMade = false; while (InventoryActions.transferContainerTank(this, getWaterTank(), BUCKET_IN)) - result = true; - return result; + changesMade = true; + return changesMade; } @Override - public void dirtyInventory() + public void dirtyTanks() { - if (updateTankSlots()) - { - dirtyTanks(); - } - NBTTagList items = new NBTTagList(); - for (int i = 0; i < inventory.length; i++) - { - ItemStack stack = inventory[i]; - if (stack != null) - { - NBTTagCompound item = new NBTTagCompound(); - item.setByte("Slot", (byte) i); - stack.writeToNBT(item); - items.appendTag(item); - } - } - containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setTag(TAG_INVENTORY, items); + getWearableCompound().setTag(TAG_WATER_TANK, waterTank.writeToNBT(new NBTTagCompound())); + getWearableCompound().setTag(TAG_STEAM_TANK, steamTank.writeToNBT(new NBTTagCompound())); } - @Override - public void dirtyTanks() + + + + + + + public int getBurnTimeRemainingScaled(int scale) { - containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setTag(TAG_WATER_TANK, waterTank.writeToNBT(new NBTTagCompound())); - containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setTag(TAG_STEAM_TANK, steamTank.writeToNBT(new NBTTagCompound())); + if (this.currentItemBurnTime == 0) + { + this.currentItemBurnTime = 200; + } + + return this.burnTicks * scale / this.currentItemBurnTime; } public void dirtyBoiler() { - NBTTagCompound jetpackTag = containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND); + NBTTagCompound jetpackTag = getWearableCompound(); jetpackTag.setBoolean("boiling", boiling); jetpackTag.setBoolean("leaking", leaking); jetpackTag.setInteger("temperature", temperature); @@ -268,16 +227,6 @@ public void setLeaking(boolean leaking) this.leaking = leaking; } - public long getSystemTime() - { - return systemTime; - } - - public void setSystemTime(long systemTime) - { - this.systemTime = systemTime; - } - public int getBurnTicks() { return burnTicks; @@ -324,10 +273,11 @@ public void setContainerStack(ItemStack containerStack) this.containerStack = containerStack; } - public void calculateLostTime() - { - long elapsedTimesince = System.currentTimeMillis() - systemTime; - } + + + + + private void detectAndConvertFromOldNBTFormat(NBTTagCompound compound) // backwards compatibility { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java index 9ad08dc4..db47fbf2 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java @@ -2,6 +2,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.fluids.FluidTank; import com.darkona.adventurebackpack.common.Constants; @@ -12,6 +13,7 @@ import static com.darkona.adventurebackpack.common.Constants.Copter.INVENTORY_SIZE; import static com.darkona.adventurebackpack.common.Constants.Copter.TAG_FUEL_TANK; import static com.darkona.adventurebackpack.common.Constants.Copter.TAG_STATUS; +import static com.darkona.adventurebackpack.common.Constants.TAG_INVENTORY; import static com.darkona.adventurebackpack.common.Constants.TAG_WEARABLE_COMPOUND; /** @@ -57,6 +59,45 @@ public int[] getSlotsOnClosingArray() return new int[]{BUCKET_IN, BUCKET_OUT}; } + @Override + public void loadFromNBT(NBTTagCompound compound) + { + NBTTagCompound copterTag = compound.getCompoundTag(TAG_WEARABLE_COMPOUND); + setInventoryFromTagList(copterTag.getTagList(TAG_INVENTORY, NBT.TAG_COMPOUND)); + fuelTank.readFromNBT(copterTag.getCompoundTag(TAG_FUEL_TANK)); + status = copterTag.getByte(TAG_STATUS); + tickCounter = copterTag.getInteger("tickCounter"); + } + + @Override + public void saveToNBT(NBTTagCompound compound) + { + NBTTagCompound copterTag = new NBTTagCompound(); + copterTag.setTag(TAG_INVENTORY, getInventoryTagList()); + copterTag.setTag(TAG_FUEL_TANK, fuelTank.writeToNBT(new NBTTagCompound())); + copterTag.setByte(TAG_STATUS, status); + copterTag.setInteger("tickCounter", this.tickCounter); + compound.setTag(TAG_WEARABLE_COMPOUND, copterTag); + } + + @Override + public boolean updateTankSlots() + { + boolean changesMade = false; + while (InventoryActions.transferContainerTank(this, getFuelTank(), BUCKET_IN)) + changesMade = true; + return changesMade; + } + + @Override + public void dirtyTanks() + { + getWearableCompound().setTag(TAG_FUEL_TANK, fuelTank.writeToNBT(new NBTTagCompound())); + } + + + + public void consumeFuel(int quantity) { @@ -89,55 +130,14 @@ public void setStatus(byte status) this.status = status; } - @Override - public void loadFromNBT(NBTTagCompound compound) - { - NBTTagCompound copterTag = compound.getCompoundTag(TAG_WEARABLE_COMPOUND); - fuelTank.readFromNBT(copterTag.getCompoundTag(TAG_FUEL_TANK)); - status = copterTag.getByte(TAG_STATUS); - tickCounter = copterTag.getInteger("tickCounter"); - } - - @Override - public void saveToNBT(NBTTagCompound compound) - { - NBTTagCompound copterTag = new NBTTagCompound(); - copterTag.setTag(TAG_FUEL_TANK, fuelTank.writeToNBT(new NBTTagCompound())); - copterTag.setByte(TAG_STATUS, status); - copterTag.setInteger("tickCounter", this.tickCounter); - compound.setTag(TAG_WEARABLE_COMPOUND, copterTag); - } - - @Override - public boolean updateTankSlots() + public void dirtyStatus() { - boolean result = false; - while (InventoryActions.transferContainerTank(this, getFuelTank(), BUCKET_IN)) - result = true; - return result; + getWearableCompound().setByte(TAG_STATUS, status); } - @Override - public void dirtyInventory() - { - if (updateTankSlots()) - { - dirtyTanks(); - } - } - @Override - public void dirtyTanks() - { - containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setTag(TAG_FUEL_TANK, fuelTank.writeToNBT(new NBTTagCompound())); - } - //TODO to InventoryAdventure: getWearableCompound() { return containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND);} - public void dirtyStatus() - { - containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setByte(TAG_STATUS, status); - } private void detectAndConvertFromOldNBTFormat(NBTTagCompound compound) // backwards compatibility { diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 740c3f57..bf7d48c9 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -281,7 +281,7 @@ private int getItemCount(ItemStack backpack) int itemCount = itemList.tagCount(); for (int i = itemCount - 1; i >= 0; i--) { - int slotAtI = itemList.getCompoundTagAt(i).getInteger("Slot"); + int slotAtI = itemList.getCompoundTagAt(i).getInteger(Constants.TAG_SLOT); if (slotAtI <= Constants.END_OF_INVENTORY) break; itemCount--; diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index 927ff458..414a60a4 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -79,7 +79,6 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla public void onEquipped(World world, EntityPlayer player, ItemStack stack) { InventoryCoalJetpack inv = new InventoryCoalJetpack(stack); - inv.calculateLostTime(); // debug artifact if (inv.getTemperature() == 0) inv.setTemperature(getBiomeMinTemp(player, world)); } @@ -270,7 +269,6 @@ public void onUnequipped(World world, EntityPlayer player, ItemStack stack) inv.setInUse(false); inv.setLeaking(false); inv.setStatus(false); - inv.setSystemTime(System.currentTimeMillis()); inv.markDirty(); } From 28068107c9ff02e3b7a4c1a7590970c5885992e2 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 27 Feb 2018 20:45:40 +0700 Subject: [PATCH 446/462] Inventories are more organized --- .../block/BlockSleepingBag.java | 1 + .../block/TileAdventure.java | 25 +++- .../block/TileAdventureBackpack.java | 129 +++++------------- .../inventory/ContainerBackpack.java | 8 +- .../inventory/IInventoryBackpack.java | 13 +- .../inventory/InventoryBackpack.java | 36 ++--- .../inventory/InventoryCoalJetpack.java | 118 +++++++--------- .../inventory/InventoryCopterPack.java | 30 ++-- .../item/ItemCoalJetpack.java | 6 +- .../item/ItemCopterPack.java | 2 +- .../EquipUnequipBackWearablePacket.java | 28 ++-- .../adventurebackpack/util/CoordsUtils.java | 41 ++---- .../adventurebackpack/util/Wearing.java | 26 ++++ 13 files changed, 191 insertions(+), 272 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java b/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java index a24a33f4..47c0fcdf 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockSleepingBag.java @@ -361,6 +361,7 @@ public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explos @Override public void onBlockDestroyedByPlayer(World world, int x, int y, int z, int meta) { + //TODO make it work if player destroyed head block of sleeping bag (so backpack 1 more tile away) //LogHelper.info("onBlockDestroyedByPlayer() : BlockSleepingBag"); int direction = getDirection(meta); int tileZ = z; diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventure.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventure.java index ad2c0aab..b14b0834 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventure.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventure.java @@ -40,11 +40,15 @@ public ItemStack decrStackSize(int slot, int quantity) if (stack != null) { if (stack.stackSize <= quantity) + { setInventorySlotContents(slot, null); + } else + { stack = stack.splitStack(quantity); + dirtyInventory(); + } } - markDirty(); return stack; } @@ -63,7 +67,7 @@ public ItemStack getStackInSlotOnClosing(int slot) public void setInventorySlotContents(int slot, @Nullable ItemStack stack) { setInventorySlotContentsNoSave(slot, stack); - markDirty(); + dirtyInventory(); } @Override @@ -102,7 +106,7 @@ public void openInventory() @Override public void closeInventory() { - markDirty(); + dirtyInventory(); } @Override @@ -144,6 +148,21 @@ public void setInventorySlotContentsNoSave(int slot, @Nullable ItemStack stack) getInventory()[slot] = stack; } + @Override + public void dirtyInventory() + { + updateTankSlots(); + markDirty(); + } + + @Override + public void dirtyTanks() + { + // for now none is calling this for tile.backpack + // if we really want to use it, we have to re-implement it, more efficient way + dirtyInventory(); + } + protected void setInventoryFromTagList(NBTTagList items) { for (int i = 0; i < items.tagCount(); i++) diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 70265c3b..c8716e75 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -25,7 +25,6 @@ import com.darkona.adventurebackpack.inventory.InventoryActions; import com.darkona.adventurebackpack.inventory.SlotBackpack; import com.darkona.adventurebackpack.inventory.SlotTool; -import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.reference.GeneralReference; import com.darkona.adventurebackpack.util.BackpackUtils; @@ -187,47 +186,6 @@ public void saveToNBT(NBTTagCompound compound) compound.setTag(TAG_WEARABLE_COMPOUND, backpackTag); } - - - - - - - public int getLuminosity() - { - return luminosity; - } - - @Override - public int getLastTime() - { - return lastTime; - } - - @Override - public void setLastTime(int lastTime) - { - this.lastTime = lastTime; - } - - - @Override - public void markDirty() - { - for (int i = 0; i < inventory.length; i++) - { - if (inventory[i] != null) - { - if ((i == BUCKET_OUT_LEFT || i == BUCKET_OUT_RIGHT) && inventory[i].getItem() instanceof ItemHose - || (i == BUCKET_IN_LEFT || i == BUCKET_IN_RIGHT)) - { - updateTankSlots(); - } - } - } - super.markDirty(); - } - @Override public boolean updateTankSlots() { @@ -240,49 +198,45 @@ public boolean updateTankSlots() } @Override - public boolean hasItem(Item item) + public void dirtyExtended() { - return InventoryActions.hasItem(this, item); + // for now none is calling this for tile.backpack + // if we really want to use it, we have to re-implement it, more efficient way + dirtyInventory(); } @Override - public void consumeInventoryItem(Item item) + public void dirtyTime() { - InventoryActions.consumeItemInInventory(this, item); + // for now none is calling this for tile.backpack + // if we really want to use it, we have to re-implement it, more efficient way + dirtyInventory(); } - @Override - public void dirtyTanks() + public int getLastTime() { - + return lastTime; } @Override - public void dirtyTime() + public void setLastTime(int lastTime) { - + this.lastTime = lastTime; } @Override - public void dirtyExtended() + public boolean hasItem(Item item) { - + return InventoryActions.hasItem(this, item); } @Override - public void dirtyInventory() + public void consumeInventoryItem(Item item) { - + InventoryActions.consumeItemInInventory(this, item); } - - - - - - - // Logic: from tile to item public boolean equip(World world, EntityPlayer player, int x, int y, int z) { @@ -291,15 +245,9 @@ public boolean equip(World world, EntityPlayer player, int x, int y, int z) removeSleepingBag(world); if (BackpackUtils.equipWearable(stacky, player) != BackpackUtils.Reasons.SUCCESSFUL) { - if (Wearing.isWearingWearable(player)) - { - String msg = "backpack"; - if (Wearing.isWearingCopter(player)) - msg = "copterpack"; - else if (Wearing.isWearingJetpack(player)) - msg = "jetpack"; - player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.equipped." + msg)); - } + Wearing.WearableType wtype = Wearing.getWearingWearableType(player); + if (wtype != Wearing.WearableType.UNKNOWN) + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.equipped." + wtype.name().toLowerCase())); if (!player.inventory.addItemStackToInventory(stacky)) return drop(world, player, x, y, z); @@ -313,14 +261,13 @@ public boolean drop(World world, EntityPlayer player, int x, int y, int z) if (player.capabilities.isCreativeMode) return true; ItemStack stacky = new ItemStack(ModItems.adventureBackpack, 1); transferToItemStack(stacky); + float spawnX = x + world.rand.nextFloat(); float spawnY = y + world.rand.nextFloat(); float spawnZ = z + world.rand.nextFloat(); - EntityItem droppedItem = new EntityItem(world, spawnX, spawnY, spawnZ, stacky); float mult = 0.05F; - droppedItem.motionX = (-0.5F + world.rand.nextFloat()) * mult; droppedItem.motionY = (4 + world.rand.nextFloat()) * mult; droppedItem.motionZ = (-0.5F + world.rand.nextFloat()) * mult; @@ -365,24 +312,13 @@ public boolean deploySleepingBag(EntityPlayer player, World world, int meta, int return sleepingBagDeployed; } - public boolean removeSleepingBag(World world) + public void removeSleepingBag(World world) { - if (sleepingBagDeployed) - { - if (world.getBlock(sbx, sby, sbz) == ModBlocks.blockSleepingBag) - { - world.func_147480_a(sbx, sby, sbz, false); - this.sleepingBagDeployed = false; - markDirty(); - return true; - } - } - else - { - this.sleepingBagDeployed = false; - markDirty(); - } - return false; + if (sleepingBagDeployed && world.getBlock(sbx, sby, sbz) == ModBlocks.blockSleepingBag) + world.func_147480_a(sbx, sby, sbz, false); + + sleepingBagDeployed = false; + markDirty(); } // Automation @@ -450,7 +386,7 @@ public void updateEntity() } //Check for backpack luminosity and a deployed sleeping bag, just in case because i'm super paranoid. - if (checkTime > 0) + if (checkTime == 0) { int lastLumen = luminosity; int left = (leftTank.getFluid() != null) ? leftTank.getFluid().getFluid().getLuminosity() : 0; @@ -462,10 +398,10 @@ public void updateEntity() worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.blockBackpack, meta, 3); worldObj.setLightValue(EnumSkyBlock.Block, xCoord, yCoord, zCoord, luminosity); } - if (worldObj.getBlock(sbx, sby, sbz) != ModBlocks.blockSleepingBag) - { + + if (sleepingBagDeployed && worldObj.getBlock(sbx, sby, sbz) != ModBlocks.blockSleepingBag) sleepingBagDeployed = false; - } + checkTime = 20; } else @@ -474,6 +410,11 @@ public void updateEntity() } } + public int getLuminosity() + { + return luminosity; + } + private void convertFromOldNBTFormat(NBTTagCompound compound) // backwards compatibility { NBTTagCompound oldBackpackTag = compound.getCompoundTag("backpackData"); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 19271412..b986d3f7 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -114,6 +114,12 @@ private void makeSlots(InventoryPlayer invPlayer) @Override public void detectAndSendChanges() + { + syncCraftResultToServer(); + super.detectAndSendChanges(); + } + + private void syncCraftResultToServer() { ItemStack stackA = ((Slot) inventorySlots.get(CRAFT_RESULT)).getStack(); ItemStack stackB = (ItemStack) inventoryItemStacks.get(CRAFT_RESULT); @@ -126,8 +132,6 @@ public void detectAndSendChanges() if (player instanceof EntityPlayerMP) ((EntityPlayerMP) player).sendContainerAndContentsToPlayer(this, this.getInventory()); } - - super.detectAndSendChanges(); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryBackpack.java index a50550ee..7404e5dc 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryBackpack.java @@ -19,22 +19,17 @@ public interface IInventoryBackpack extends IInventoryTanks NBTTagCompound getExtendedProperties(); //TODO move to IInventoryTanks to use with Copter/Jet? + void dirtyExtended(); + void dirtyTime(); int getLastTime(); - boolean hasItem(Item item); - - void consumeInventoryItem(Item item); - void setLastTime(int time); - void dirtyTime(); - - void dirtyExtended(); - - + boolean hasItem(Item item); + void consumeInventoryItem(Item item); boolean isSleepingBagDeployed(); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index 910d825d..5aca48ed 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -1,6 +1,5 @@ package com.darkona.adventurebackpack.inventory; -import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -157,25 +156,23 @@ public void dirtyTanks() getWearableCompound().setTag(TAG_RIGHT_TANK, rightTank.writeToNBT(new NBTTagCompound())); } - - - @Override - public int getLastTime() + public void dirtyExtended() //TODO is it redundant? { - return this.lastTime; + getWearableCompound().removeTag(TAG_EXTENDED_COMPOUND); //TODO again: why? + getWearableCompound().setTag(TAG_EXTENDED_COMPOUND, extendedProperties); } @Override - public boolean hasItem(Item item) + public void dirtyTime() { - return InventoryActions.hasItem(this, item); + getWearableCompound().setInteger("lastTime", lastTime); } @Override - public void consumeInventoryItem(Item item) + public int getLastTime() { - InventoryActions.consumeItemInInventory(this, item); + return this.lastTime; } @Override @@ -185,28 +182,17 @@ public void setLastTime(int time) } @Override - public void dirtyTime() + public boolean hasItem(Item item) { - getWearableCompound().setInteger("lastTime", lastTime); + return InventoryActions.hasItem(this, item); } @Override - public void dirtyExtended() //TODO is it redundant? - { - getWearableCompound().removeTag(TAG_EXTENDED_COMPOUND); - getWearableCompound().setTag(TAG_EXTENDED_COMPOUND, extendedProperties); - } - - public boolean hasBlock(Block block) + public void consumeInventoryItem(Item item) { - return InventoryActions.hasBlockItem(this, block); + InventoryActions.consumeItemInInventory(this, item); } - - - - - public boolean getDisableCycling() { return disableCycling; diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index e43df050..3ef396d1 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -24,19 +24,18 @@ */ public class InventoryCoalJetpack extends InventoryAdventure { - public int currentItemBurnTime = 0; - private ItemStack[] inventory = new ItemStack[Constants.Jetpack.INVENTORY_SIZE]; private FluidTank waterTank = new FluidTank(Constants.Jetpack.WATER_CAPACITY); private FluidTank steamTank = new FluidTank(Constants.Jetpack.STEAM_CAPACITY); - private boolean boiling = false; private boolean inUse = false; - private boolean leaking = false; private boolean status = false; + private boolean boiling = false; + private boolean leaking = false; private int temperature = 25; private int burnTicks = 0; private int coolTicks = 5000; + private int currentItemBurnTime = 0; public InventoryCoalJetpack(final ItemStack jetpack) { @@ -80,13 +79,13 @@ public void loadFromNBT(NBTTagCompound compound) setInventoryFromTagList(jetpackTag.getTagList(TAG_INVENTORY, NBT.TAG_COMPOUND)); waterTank.readFromNBT(jetpackTag.getCompoundTag(TAG_WATER_TANK)); steamTank.readFromNBT(jetpackTag.getCompoundTag(TAG_STEAM_TANK)); - temperature = jetpackTag.getInteger("temperature"); - status = jetpackTag.getBoolean("status"); - burnTicks = jetpackTag.getInteger("burnTicks"); - coolTicks = jetpackTag.getInteger("coolTicks"); inUse = jetpackTag.getBoolean("inUse"); + status = jetpackTag.getBoolean("status"); boiling = jetpackTag.getBoolean("boiling"); leaking = jetpackTag.getBoolean("leaking"); + temperature = jetpackTag.getInteger("temperature"); + burnTicks = jetpackTag.getInteger("burnTicks"); + coolTicks = jetpackTag.getInteger("coolTicks"); currentItemBurnTime = jetpackTag.getInteger("currentBurn"); } @@ -97,13 +96,13 @@ public void saveToNBT(NBTTagCompound compound) jetpackTag.setTag(TAG_INVENTORY, getInventoryTagList()); jetpackTag.setTag(TAG_WATER_TANK, waterTank.writeToNBT(new NBTTagCompound())); jetpackTag.setTag(TAG_STEAM_TANK, steamTank.writeToNBT(new NBTTagCompound())); - jetpackTag.setInteger("temperature", temperature); - jetpackTag.setBoolean("status", status); - jetpackTag.setInteger("burnTicks", burnTicks); - jetpackTag.setInteger("coolTicks", coolTicks); jetpackTag.setBoolean("inUse", inUse); + jetpackTag.setBoolean("status", status); jetpackTag.setBoolean("boiling", boiling); jetpackTag.setBoolean("leaking", leaking); + jetpackTag.setInteger("temperature", temperature); + jetpackTag.setInteger("burnTicks", burnTicks); + jetpackTag.setInteger("coolTicks", coolTicks); jetpackTag.setInteger("currentBurn", currentItemBurnTime); compound.setTag(TAG_WEARABLE_COMPOUND, jetpackTag); } @@ -124,22 +123,6 @@ public void dirtyTanks() getWearableCompound().setTag(TAG_STEAM_TANK, steamTank.writeToNBT(new NBTTagCompound())); } - - - - - - - public int getBurnTimeRemainingScaled(int scale) - { - if (this.currentItemBurnTime == 0) - { - this.currentItemBurnTime = 200; - } - - return this.burnTicks * scale / this.currentItemBurnTime; - } - public void dirtyBoiler() { NBTTagCompound jetpackTag = getWearableCompound(); @@ -151,6 +134,14 @@ public void dirtyBoiler() jetpackTag.setInteger("currentBurn", currentItemBurnTime); } + public int getBurnTimeRemainingScaled(int scale) + { + if (this.currentItemBurnTime == 0) + this.currentItemBurnTime = 200; + + return this.burnTicks * scale / this.currentItemBurnTime; + } + public int consumeFuel() { int result = 0; @@ -172,39 +163,41 @@ private boolean isFuel(ItemStack stack) return TileEntityFurnace.isItemFuel(stack); } - public ItemStack getParentItemStack() + public int getIncreasingFactor() { - return containerStack; + if (temperature < 50) return 20; + if (temperature < 100) return 15; + if (temperature < 150) return 10; + return 5; } - public boolean getStatus() + public int getDecreasingFactor() { - return status; + if (temperature > 150) return 40; + if (temperature > 100) return 80; + if (temperature > 50) return 120; + return 5; } - public void setStatus(boolean status) - { - this.status = status; - } - public int getTemperature() + public boolean isInUse() { - return temperature; + return inUse; } - public void setTemperature(int temperature) + public void setInUse(boolean inUse) { - this.temperature = temperature; + this.inUse = inUse; } - public boolean isInUse() + public boolean getStatus() { - return inUse; + return status; } - public void setInUse(boolean inUse) + public void setStatus(boolean status) { - this.inUse = inUse; + this.status = status; } public boolean isBoiling() @@ -227,30 +220,24 @@ public void setLeaking(boolean leaking) this.leaking = leaking; } - public int getBurnTicks() + public int getTemperature() { - return burnTicks; + return temperature; } - public void setBurnTicks(int burnTicks) + public void setTemperature(int temperature) { - this.burnTicks = burnTicks; + this.temperature = temperature; } - public int getIncreasingFactor() + public int getBurnTicks() { - if (temperature < 50) return 20; - if (temperature < 100) return 15; - if (temperature < 150) return 10; - return 5; + return burnTicks; } - public int getDecreasingFactor() + public void setBurnTicks(int burnTicks) { - if (temperature > 150) return 40; - if (temperature > 100) return 80; - if (temperature > 50) return 120; - return 5; + this.burnTicks = burnTicks; } public int getCoolTicks() @@ -263,22 +250,11 @@ public void setCoolTicks(int coolTicks) this.coolTicks = coolTicks; } - public ItemStack getContainerStack() - { - return containerStack; - } - - public void setContainerStack(ItemStack containerStack) + public void setCurrentItemBurnTime(int currentItemBurnTime) { - this.containerStack = containerStack; + this.currentItemBurnTime = currentItemBurnTime; } - - - - - - private void detectAndConvertFromOldNBTFormat(NBTTagCompound compound) // backwards compatibility { if (compound == null || !compound.hasKey("jetpackData")) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java index db47fbf2..357b20f1 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java @@ -95,14 +95,9 @@ public void dirtyTanks() getWearableCompound().setTag(TAG_FUEL_TANK, fuelTank.writeToNBT(new NBTTagCompound())); } - - - - - public void consumeFuel(int quantity) + public void dirtyStatus() { - fuelTank.drain(quantity, true); - dirtyTanks(); + getWearableCompound().setByte(TAG_STATUS, status); } public boolean canConsumeFuel(int quantity) @@ -110,14 +105,10 @@ public boolean canConsumeFuel(int quantity) return fuelTank.drain(quantity, false) != null && fuelTank.drain(quantity, false).amount > 0; } - public int getTickCounter() - { - return tickCounter; - } - - public void setTickCounter(int ticks) + public void consumeFuel(int quantity) { - this.tickCounter = ticks; + fuelTank.drain(quantity, true); + dirtyTanks(); } public byte getStatus() @@ -130,14 +121,15 @@ public void setStatus(byte status) this.status = status; } - public void dirtyStatus() + public int getTickCounter() { - getWearableCompound().setByte(TAG_STATUS, status); + return tickCounter; } - - - + public void setTickCounter(int ticks) + { + this.tickCounter = ticks; + } private void detectAndConvertFromOldNBTFormat(NBTTagCompound compound) // backwards compatibility { diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index 414a60a4..39e2f368 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -226,7 +226,7 @@ private void runFirebox(InventoryCoalJetpack inv) if (inv.getBurnTicks() <= 0) { inv.setBurnTicks(inv.consumeFuel()); - inv.currentItemBurnTime = inv.getBurnTicks(); + inv.setCurrentItemBurnTime(inv.getBurnTicks()); } inv.dirtyInventory(); } @@ -248,9 +248,9 @@ private void runHeater(InventoryCoalJetpack inv, World world, EntityPlayer playe } } } - else if (burnTicks <= 0) + else { - inv.currentItemBurnTime = 0; + inv.setCurrentItemBurnTime(0); if (coolTicks % inv.getDecreasingFactor() == 0) { temperature = (temperature - 1 >= getBiomeMinTemp(player, world)) ? temperature - 1 : 0; diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java index 5ad07a71..2ba978e3 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java @@ -46,6 +46,7 @@ public class ItemCopterPack extends ItemAB implements IBackWearableItem public static byte OFF_MODE = 0; public static byte NORMAL_MODE = 1; public static byte HOVER_MODE = 2; + private float fuelSpent; public ItemCopterPack() @@ -128,7 +129,6 @@ public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) } if (inv.getStatus() == HOVER_MODE) { - inv.setStatus(NORMAL_MODE); inv.dirtyStatus(); if (!world.isRemote) diff --git a/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java b/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java index 7e8081a2..e3194be8 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java @@ -30,27 +30,21 @@ public Message onMessage(Message message, MessageContext ctx) EntityPlayer player = ctx.getServerHandler().playerEntity; if (message.action == EQUIP_WEARABLE) { - if (Wearing.isHoldingWearable(player) && !Wearing.isWearingWearable(player)) + if (Wearing.isHoldingWearable(player)) { - if (BackpackUtils.equipWearable(player.getCurrentEquippedItem(), player) == BackpackUtils.Reasons.SUCCESSFUL) + if (Wearing.isWearingWearable(player)) { - player.inventory.setInventorySlotContents(player.inventory.currentItem, null); - player.inventoryContainer.detectAndSendChanges(); + Wearing.WearableType wtype = Wearing.getWearingWearableType(player); + if (wtype != Wearing.WearableType.UNKNOWN) + player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.equipped." + wtype.name().toLowerCase())); } - } - else if (Wearing.isWearingWearable(player)) - { - if (Wearing.isWearingBackpack(player)) - { - player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.equipped.backpack")); - } - else if (Wearing.isWearingCopter(player)) - { - player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.equipped.copterpack")); - } - else if (Wearing.isWearingJetpack(player)) + else { - player.addChatComponentMessage(new ChatComponentTranslation("adventurebackpack:messages.already.equipped.jetpack")); + if (BackpackUtils.equipWearable(player.getCurrentEquippedItem(), player) == BackpackUtils.Reasons.SUCCESSFUL) + { + player.inventory.setInventorySlotContents(player.inventory.currentItem, null); + player.inventoryContainer.detectAndSendChanges(); + } } } } diff --git a/src/main/java/com/darkona/adventurebackpack/util/CoordsUtils.java b/src/main/java/com/darkona/adventurebackpack/util/CoordsUtils.java index 02f1455c..ee982146 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/CoordsUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/CoordsUtils.java @@ -209,43 +209,23 @@ private static int[] getDirectionAndCoordsForSleepingBag(int switchBy, World wor { case 0: --cZ; - if (world.isAirBlock(cX, cY, cZ) && world.getBlock(cX, cY - 1, cZ).getMaterial().isSolid()) - { - if (world.isAirBlock(cX, cY, cZ - 1) && world.getBlock(cX, cY - 1, cZ - 1).getMaterial().isSolid()) - { - direction = 2; - } - } + if (isAirAboveSolid(world, cX, cY, cZ) && isAirAboveSolid(world, cX, cY, cZ - 1)) + direction = 2; break; case 1: ++cX; - if (world.isAirBlock(cX, cY, cZ) && world.getBlock(cX, cY - 1, cZ).getMaterial().isSolid()) - { - if (world.isAirBlock(cX + 1, cY, cZ) && world.getBlock(cX + 1, cY - 1, cZ).getMaterial().isSolid()) - { - direction = 3; - } - } + if (isAirAboveSolid(world, cX, cY, cZ) && isAirAboveSolid(world, cX + 1, cY, cZ)) + direction = 3; break; case 2: ++cZ; - if (world.isAirBlock(cX, cY, cZ) && world.getBlock(cX, cY - 1, cZ).getMaterial().isSolid()) - { - if (world.isAirBlock(cX, cY, cZ + 1) && world.getBlock(cX, cY - 1, cZ + 1).getMaterial().isSolid()) - { - direction = 0; - } - } + if (isAirAboveSolid(world, cX, cY, cZ) && isAirAboveSolid(world, cX, cY, cZ + 1)) + direction = 0; break; case 3: --cX; - if (world.isAirBlock(cX, cY, cZ) && world.getBlock(cX, cY - 1, cZ).getMaterial().isSolid()) - { - if (world.isAirBlock(cX - 1, cY, cZ) && world.getBlock(cX - 1, cY - 1, cZ).getMaterial().isSolid()) - { - direction = 1; - } - } + if (isAirAboveSolid(world, cX, cY, cZ) && isAirAboveSolid(world, cX - 1, cY, cZ)) + direction = 1; break; default: break; @@ -253,6 +233,11 @@ private static int[] getDirectionAndCoordsForSleepingBag(int switchBy, World wor return new int[]{direction, cX, cY, cZ}; } + private static boolean isAirAboveSolid(World world, int cX, int cY, int cZ) + { + return world.isAirBlock(cX, cY, cZ) && world.getBlock(cX, cY - 1, cZ).getMaterial().isSolid(); + } + public static boolean spawnSleepingBag(EntityPlayer player, World world, int meta, int cX, int cY, int cZ) { Block sleepingBag = ModBlocks.blockSleepingBag; diff --git a/src/main/java/com/darkona/adventurebackpack/util/Wearing.java b/src/main/java/com/darkona/adventurebackpack/util/Wearing.java index 9b0c23df..13ddb639 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Wearing.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Wearing.java @@ -1,8 +1,12 @@ package com.darkona.adventurebackpack.util; +import javax.annotation.Nonnull; + import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.inventory.IInventoryTanks; import com.darkona.adventurebackpack.inventory.InventoryBackpack; import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; @@ -24,6 +28,23 @@ */ public class Wearing { + public enum WearableType + { + BACKPACK, COPTERPACK, JETPACK, UNKNOWN; + + public static WearableType get(@Nonnull ItemStack stack) + { + Item item = stack.getItem(); + if (item == ModItems.adventureBackpack) + return BACKPACK; + if (item == ModItems.copterPack) + return COPTERPACK; + if (item == ModItems.coalJetpack) + return JETPACK; + return UNKNOWN; + } + } + // Wearable public static boolean isWearingWearable(EntityPlayer player) { @@ -35,6 +56,11 @@ public static ItemStack getWearingWearable(EntityPlayer player) return isWearingWearable(player) ? BackpackProperty.get(player).getWearable() : null; } + public static WearableType getWearingWearableType(EntityPlayer player) + { + return isWearingWearable(player) ? WearableType.get(BackpackProperty.get(player).getWearable()) : WearableType.UNKNOWN; + } + public static IInventoryTanks getWearingWearableInv(EntityPlayer player) { ItemStack wearable = Wearing.getWearingWearable(player); From 845deb5b40640dae99b452d6515094aefa169b57 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 28 Feb 2018 18:46:24 +0700 Subject: [PATCH 447/462] Refactorings --- .../block/TileAdventure.java | 24 +++++--- .../block/TileAdventureBackpack.java | 7 ++- .../inventory/ContainerAdventure.java | 60 ++++++++++++++---- .../inventory/ContainerBackpack.java | 61 +++---------------- .../inventory/ContainerCopter.java | 29 +-------- .../inventory/ContainerJetpack.java | 37 ++--------- .../inventory/IInventoryTanks.java | 2 +- .../inventory/InventoryAdventure.java | 25 +++++--- .../inventory/InventoryBackpack.java | 5 +- .../inventory/InventoryCoalJetpack.java | 5 +- .../inventory/InventoryCopterPack.java | 6 +- 11 files changed, 110 insertions(+), 151 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventure.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventure.java index b14b0834..c1e9cecd 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventure.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventure.java @@ -20,16 +20,25 @@ @SuppressWarnings("WeakerAccess") abstract class TileAdventure extends TileEntity implements IInventoryTanks { + // when porting to java 8+ most this methods should move to IInventoryTanks + + protected ItemStack[] inventory; + + protected TileAdventure(int inventorySize) + { + this.inventory = new ItemStack[inventorySize]; + } + @Override public int getSizeInventory() { - return getInventory().length; + return inventory.length; } @Override public ItemStack getStackInSlot(int slot) { - return getInventory()[slot]; + return inventory[slot]; } @Nullable @@ -56,9 +65,9 @@ public ItemStack decrStackSize(int slot, int quantity) @Override public ItemStack getStackInSlotOnClosing(int slot) { - for (int s : getSlotsOnClosingArray()) + for (int s : getSlotsOnClosing()) if (slot == s) - return getInventory()[slot]; + return inventory[slot]; return null; } @@ -145,7 +154,7 @@ public void setInventorySlotContentsNoSave(int slot, @Nullable ItemStack stack) stack = null; } - getInventory()[slot] = stack; + inventory[slot] = stack; } @Override @@ -155,6 +164,7 @@ public void dirtyInventory() markDirty(); } + @Deprecated @Override public void dirtyTanks() { @@ -171,7 +181,7 @@ protected void setInventoryFromTagList(NBTTagList items) byte slot = item.getByte(TAG_SLOT); if (slot >= 0 && slot < getSizeInventory()) { - getInventory()[slot] = ItemStack.loadItemStackFromNBT(item); + inventory[slot] = ItemStack.loadItemStackFromNBT(item); } } } @@ -181,7 +191,7 @@ protected NBTTagList getInventoryTagList() NBTTagList items = new NBTTagList(); for (int i = 0; i < getSizeInventory(); i++) { - ItemStack stack = getInventory()[i]; + ItemStack stack = inventory[i]; if (stack != null) { NBTTagCompound item = new NBTTagCompound(); diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index c8716e75..7ce27b05 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -55,7 +55,6 @@ public class TileAdventureBackpack extends TileAdventure implements IInventoryBa private static final int[] MAIN_INVENTORY_SLOTS = Utils.createSlotArray(0, Constants.INVENTORY_MAIN_SIZE); private BackpackTypes type = BackpackTypes.STANDARD; - private ItemStack[] inventory = new ItemStack[Constants.INVENTORY_SIZE]; private FluidTank leftTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); private FluidTank rightTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); private NBTTagCompound extendedProperties = new NBTTagCompound(); @@ -76,7 +75,7 @@ public class TileAdventureBackpack extends TileAdventure implements IInventoryBa public TileAdventureBackpack() { - sleepingBagDeployed = false; + super(Constants.INVENTORY_SIZE); } @Override @@ -110,7 +109,7 @@ public FluidTank[] getTanksArray() } @Override - public int[] getSlotsOnClosingArray() + public int[] getSlotsOnClosing() { return new int[]{BUCKET_IN_LEFT, BUCKET_IN_RIGHT, BUCKET_OUT_LEFT, BUCKET_OUT_RIGHT}; } @@ -197,6 +196,7 @@ public boolean updateTankSlots() return changesMade; } + @Deprecated @Override public void dirtyExtended() { @@ -205,6 +205,7 @@ public void dirtyExtended() dirtyInventory(); } + @Deprecated @Override public void dirtyTime() { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventure.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventure.java index f53fc4c1..08e8decb 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventure.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventure.java @@ -23,10 +23,20 @@ abstract class ContainerAdventure extends Container protected static final int PLAYER_INV_END = PLAYER_INV_START + 26; protected static final int PLAYER_INV_LENGTH = PLAYER_INV_END + 1; - protected EntityPlayer player; - protected Source source; + protected final EntityPlayer player; + protected final IInventoryTanks inventory; + protected final Source source; - public abstract IInventoryTanks getInventoryTanks(); + private final int[] fluidsAmount; + private int itemsCount; + + protected ContainerAdventure(EntityPlayer player, IInventoryTanks inventory, Source source) + { + this.player = player; + this.inventory = inventory; + this.source = source; + this.fluidsAmount = new int[this.inventory.getTanksArray().length]; + } protected void bindPlayerInventory(InventoryPlayer invPlayer, int startX, int startY) { @@ -51,14 +61,44 @@ public void detectAndSendChanges() if (source == Source.HOLDING) // used for refresh tooltips and redraw tanks content while GUI is open { - if (detectChanges() && player instanceof EntityPlayerMP) + if ((detectItemChanges() | detectFluidChanges()) && player instanceof EntityPlayerMP) { ((EntityPlayerMP) player).sendContainerAndContentsToPlayer(this, this.getInventory()); } } } - protected abstract boolean detectChanges(); + protected boolean detectItemChanges() + { + ItemStack[] inv = inventory.getInventory(); + int tempCount = 0; + for (int i = 0; i < inv.length - inventory.getSlotsOnClosing().length; i++) + { + if (inv[i] != null) + tempCount++; + } + if (itemsCount != tempCount) + { + itemsCount = tempCount; + return true; + } + return false; + } + + private boolean detectFluidChanges() + { + boolean changesDetected = false; + for (int i = 0; i < fluidsAmount.length; i++) + { + int amount = inventory.getTanksArray()[i].getFluidAmount(); + if (fluidsAmount[i] != amount) + { + fluidsAmount[i] = amount; + changesDetected = true; + } + } + return changesDetected; + } @Override public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) @@ -126,7 +166,7 @@ public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) @Override public boolean canInteractWith(EntityPlayer player) { - return getInventoryTanks().isUseableByPlayer(player); + return inventory.isUseableByPlayer(player); } @Override @@ -221,14 +261,12 @@ public void onContainerClosed(EntityPlayer player) protected void dropContentOnClose() { - IInventoryTanks inv = getInventoryTanks(); - - for (int i = 0; i < inv.getSizeInventory(); i++) + for (int i = 0; i < inventory.getSizeInventory(); i++) { - ItemStack itemstack = inv.getStackInSlotOnClosing(i); + ItemStack itemstack = inventory.getStackInSlotOnClosing(i); if (itemstack != null) { - inv.setInventorySlotContents(i, null); + inventory.setInventorySlotContents(i, null); player.dropPlayerItemWithRandomChoice(itemstack, false); } } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index b986d3f7..99dc54e0 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -43,30 +43,17 @@ public class ContainerBackpack extends ContainerAdventure private InventoryCraftingBackpack craftMatrix = new InventoryCraftingBackpack(this, MATRIX_DIMENSION, MATRIX_DIMENSION); private IInventory craftResult = new InventoryCraftResult(); - private IInventoryBackpack inventory; - - private int leftAmount; - private int rightAmount; - private int invCount; public ContainerBackpack(EntityPlayer player, IInventoryBackpack backpack, Source source) { - this.player = player; - inventory = backpack; + super(player, backpack, source); makeSlots(player.inventory); inventory.openInventory(); - this.source = source; } public IInventoryBackpack getInventoryBackpack() { - return inventory; - } - - @Override - public IInventoryTanks getInventoryTanks() - { - return inventory; + return (IInventoryBackpack) inventory; } private void makeSlots(InventoryPlayer invPlayer) @@ -75,8 +62,6 @@ private void makeSlots(InventoryPlayer invPlayer) int startX = 62; int startY = 7; - int slot = 0; - for (int row = 0; row < BACK_INV_ROWS; row++) // 6*8 inventory, 48 Slots (#1-#48) [36-83] { for (int col = 0; col < BACK_INV_COLUMNS; col++) @@ -84,7 +69,7 @@ private void makeSlots(InventoryPlayer invPlayer) int offsetX = startX + (18 * col); int offsetY = startY + (18 * row); - addSlotToContainer(new SlotBackpack(inventory, slot++, offsetX, offsetY)); + addSlotToContainer(new SlotBackpack((IInventoryBackpack) inventory, (row * BACK_INV_COLUMNS + col), offsetX, offsetY)); } } @@ -108,6 +93,7 @@ private void makeSlots(InventoryPlayer invPlayer) addSlotToContainer(new SlotCraftMatrix(craftMatrix, (row * MATRIX_DIMENSION + col), offsetX, offsetY)); } } + addSlotToContainer(new SlotCraftResult(this, invPlayer.player, craftMatrix, craftResult, 0, 226, 97)); // craftResult [99] syncCraftMatrixWithInventory(true); } @@ -119,6 +105,7 @@ public void detectAndSendChanges() super.detectAndSendChanges(); } + @SuppressWarnings("unchecked") private void syncCraftResultToServer() { ItemStack stackA = ((Slot) inventorySlots.get(CRAFT_RESULT)).getStack(); @@ -134,38 +121,6 @@ private void syncCraftResultToServer() } } - @Override - protected boolean detectChanges() - { - boolean changesDetected = false; - - ItemStack[] inv = inventory.getInventory(); - int tempCount = 0; - for (int i = 0; i <= TOOL_LOWER; i++) - { - if (inv[i] != null) - tempCount++; - } - if (invCount != tempCount) - { - invCount = tempCount; - changesDetected = true; - } - - if (leftAmount != inventory.getLeftTank().getFluidAmount()) - { - leftAmount = inventory.getLeftTank().getFluidAmount(); - changesDetected = true; - } - if (rightAmount != inventory.getRightTank().getFluidAmount()) - { - rightAmount = inventory.getRightTank().getFluidAmount(); - changesDetected = true; - } - - return changesDetected; - } - @Override protected boolean transferStackToPack(ItemStack stack) { @@ -215,13 +170,13 @@ private boolean mergeRightBucket(ItemStack stack) private boolean isHoldingSpace() { - return inventory.getExtendedProperties().hasKey(Constants.TAG_HOLDING_SPACE); + return ((InventoryBackpack) inventory).getExtendedProperties().hasKey(Constants.TAG_HOLDING_SPACE); } private boolean transferFluidContainer(ItemStack container) { - FluidTank leftTank = inventory.getLeftTank(); - FluidTank rightTank = inventory.getRightTank(); + FluidTank leftTank = ((InventoryBackpack) inventory).getLeftTank(); + FluidTank rightTank = ((InventoryBackpack) inventory).getRightTank(); ItemStack leftStackOut = getSlot(BUCKET_LEFT + 1).getStack(); ItemStack rightStackOut = getSlot(BUCKET_RIGHT + 1).getStack(); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java index 56388b3b..60c2a3c5 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java @@ -19,22 +19,11 @@ public class ContainerCopter extends ContainerAdventure { private static final int COPTER_INV_START = PLAYER_INV_END + 1; - private InventoryCopterPack inventory; - private int fuelAmount; - public ContainerCopter(EntityPlayer player, InventoryCopterPack copter, Source source) { - this.player = player; - inventory = copter; + super(player, copter, source); makeSlots(player.inventory); inventory.openInventory(); - this.source = source; - } - - @Override - public IInventoryTanks getInventoryTanks() - { - return inventory; } private void makeSlots(InventoryPlayer invPlayer) @@ -45,26 +34,12 @@ private void makeSlots(InventoryPlayer invPlayer) addSlotToContainer(new SlotFluidFuel(inventory, BUCKET_OUT, 44, 53)); } - @Override - protected boolean detectChanges() - { - boolean changesDetected = false; - - if (fuelAmount != inventory.getFuelTank().getFluidAmount()) - { - fuelAmount = inventory.getFuelTank().getFluidAmount(); - changesDetected = true; - } - - return changesDetected; - } - @Override public boolean transferStackToPack(ItemStack stack) { if (SlotFluid.isContainer(stack)) { - FluidTank fuelTank = inventory.getFuelTank(); + FluidTank fuelTank = ((InventoryCopterPack) inventory).getFuelTank(); ItemStack stackOut = getSlot(COPTER_INV_START + 1).getStack(); boolean isFuelTankEmpty = SlotFluid.isEmpty(fuelTank); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java index c74b2f1b..70239b56 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java @@ -21,25 +21,13 @@ public class ContainerJetpack extends ContainerAdventure private static final int JETPACK_INV_START = PLAYER_INV_END + 1; private static final int JETPACK_FUEL_START = PLAYER_INV_END + 3; - private InventoryCoalJetpack inventory; - - private int waterAmount; - private int steamAmount; private ItemStack fuelStack; public ContainerJetpack(EntityPlayer player, InventoryCoalJetpack jetpack, Source source) { - this.player = player; - inventory = jetpack; + super(player, jetpack, source); makeSlots(player.inventory); inventory.openInventory(); - this.source = source; - } - - @Override - public IInventoryTanks getInventoryTanks() - { - return inventory; } private void makeSlots(InventoryPlayer invPlayer) @@ -52,29 +40,16 @@ private void makeSlots(InventoryPlayer invPlayer) } @Override - protected boolean detectChanges() + protected boolean detectItemChanges() { - boolean changesDetected = false; - + // determine not only the presence of item in the slot but also check if the item type same as tick before ItemStack[] inv = inventory.getInventory(); if (inv[FUEL_SLOT] != fuelStack) { fuelStack = inv[FUEL_SLOT]; - changesDetected = true; + return true; } - - if (waterAmount != inventory.getWaterTank().getFluidAmount()) - { - waterAmount = inventory.getWaterTank().getFluidAmount(); - changesDetected = true; - } - if (steamAmount != inventory.getSteamTank().getFluidAmount()) - { - steamAmount = inventory.getSteamTank().getFluidAmount(); - changesDetected = true; - } - - return changesDetected; + return false; } @Override @@ -82,7 +57,7 @@ public boolean transferStackToPack(ItemStack stack) { if (SlotFluid.isContainer(stack)) { - FluidTank waterTank = inventory.getWaterTank(); + FluidTank waterTank = ((InventoryCoalJetpack ) inventory).getWaterTank(); ItemStack stackOut = getSlot(JETPACK_INV_START + 1).getStack(); boolean isWaterTankEmpty = SlotFluid.isEmpty(waterTank); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryTanks.java b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryTanks.java index a11aa3fb..2b4456ba 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryTanks.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/IInventoryTanks.java @@ -15,7 +15,7 @@ public interface IInventoryTanks extends IAsynchronousInventory FluidTank[] getTanksArray(); - int[] getSlotsOnClosingArray(); + int[] getSlotsOnClosing(); void loadFromNBT(NBTTagCompound compound); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventure.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventure.java index b5c80b24..57e076ae 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventure.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventure.java @@ -19,18 +19,27 @@ @SuppressWarnings("WeakerAccess") abstract class InventoryAdventure implements IInventoryTanks { - ItemStack containerStack; + // when porting to java 8+ most this methods should move to IInventoryTanks + + protected final ItemStack containerStack; + protected final ItemStack[] inventory; + + protected InventoryAdventure(ItemStack container, int inventorySize) + { + this.containerStack = container; + this.inventory = new ItemStack[inventorySize]; + } @Override public int getSizeInventory() { - return getInventory().length; + return inventory.length; } @Override public ItemStack getStackInSlot(int slot) { - return getInventory()[slot]; + return inventory[slot]; } @Nullable @@ -52,9 +61,9 @@ public ItemStack decrStackSize(int slot, int quantity) @Override public ItemStack getStackInSlotOnClosing(int slot) { - for (int s : getSlotsOnClosingArray()) + for (int s : getSlotsOnClosing()) if (slot == s) - return getInventory()[slot]; + return inventory[slot]; return null; } @@ -145,7 +154,7 @@ public void setInventorySlotContentsNoSave(int slot, @Nullable ItemStack stack) stack = null; } - getInventory()[slot] = stack; + inventory[slot] = stack; } @Override @@ -171,7 +180,7 @@ protected void setInventoryFromTagList(NBTTagList items) byte slot = item.getByte(TAG_SLOT); if (slot >= 0 && slot < getSizeInventory()) { - getInventory()[slot] = ItemStack.loadItemStackFromNBT(item); + inventory[slot] = ItemStack.loadItemStackFromNBT(item); } } } @@ -181,7 +190,7 @@ protected NBTTagList getInventoryTagList() NBTTagList items = new NBTTagList(); for (int i = 0; i < getSizeInventory(); i++) { - ItemStack stack = getInventory()[i]; + ItemStack stack = inventory[i]; if (stack != null) { NBTTagCompound item = new NBTTagCompound(); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index 5aca48ed..ed745022 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -40,7 +40,6 @@ public class InventoryBackpack extends InventoryAdventure implements IInventoryB private static final String TAG_SLEEPING_BAG_Z = "sleepingBagZ"; private BackpackTypes type = BackpackTypes.STANDARD; - private ItemStack[] inventory = new ItemStack[Constants.INVENTORY_SIZE]; private FluidTank leftTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); private FluidTank rightTank = new FluidTank(Constants.BASIC_TANK_CAPACITY); private NBTTagCompound extendedProperties = new NBTTagCompound(); @@ -56,7 +55,7 @@ public class InventoryBackpack extends InventoryAdventure implements IInventoryB public InventoryBackpack(ItemStack backpack) { - containerStack = backpack; + super(backpack, Constants.INVENTORY_SIZE); detectAndConvertFromOldNBTFormat(containerStack.stackTagCompound); openInventory(); } @@ -92,7 +91,7 @@ public FluidTank[] getTanksArray() } @Override - public int[] getSlotsOnClosingArray() + public int[] getSlotsOnClosing() { return new int[]{BUCKET_IN_LEFT, BUCKET_IN_RIGHT, BUCKET_OUT_LEFT, BUCKET_OUT_RIGHT}; } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index 3ef396d1..e5c46018 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -24,7 +24,6 @@ */ public class InventoryCoalJetpack extends InventoryAdventure { - private ItemStack[] inventory = new ItemStack[Constants.Jetpack.INVENTORY_SIZE]; private FluidTank waterTank = new FluidTank(Constants.Jetpack.WATER_CAPACITY); private FluidTank steamTank = new FluidTank(Constants.Jetpack.STEAM_CAPACITY); @@ -39,7 +38,7 @@ public class InventoryCoalJetpack extends InventoryAdventure public InventoryCoalJetpack(final ItemStack jetpack) { - containerStack = jetpack; + super(jetpack, Constants.Jetpack.INVENTORY_SIZE); detectAndConvertFromOldNBTFormat(containerStack.stackTagCompound); openInventory(); } @@ -67,7 +66,7 @@ public FluidTank[] getTanksArray() } @Override - public int[] getSlotsOnClosingArray() + public int[] getSlotsOnClosing() { return new int[]{BUCKET_IN, BUCKET_OUT}; } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java index 357b20f1..85c95f55 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java @@ -10,7 +10,6 @@ import static com.darkona.adventurebackpack.common.Constants.Copter.BUCKET_IN; import static com.darkona.adventurebackpack.common.Constants.Copter.BUCKET_OUT; -import static com.darkona.adventurebackpack.common.Constants.Copter.INVENTORY_SIZE; import static com.darkona.adventurebackpack.common.Constants.Copter.TAG_FUEL_TANK; import static com.darkona.adventurebackpack.common.Constants.Copter.TAG_STATUS; import static com.darkona.adventurebackpack.common.Constants.TAG_INVENTORY; @@ -24,14 +23,13 @@ public class InventoryCopterPack extends InventoryAdventure { private FluidTank fuelTank = new FluidTank(Constants.Copter.FUEL_CAPACITY); - private ItemStack[] inventory = new ItemStack[INVENTORY_SIZE]; private byte status = ItemCopterPack.OFF_MODE; private int tickCounter = 0; public InventoryCopterPack(ItemStack copterPack) { - containerStack = copterPack; + super(copterPack, Constants.Copter.INVENTORY_SIZE); detectAndConvertFromOldNBTFormat(containerStack.stackTagCompound); openInventory(); } @@ -54,7 +52,7 @@ public FluidTank[] getTanksArray() } @Override - public int[] getSlotsOnClosingArray() + public int[] getSlotsOnClosing() { return new int[]{BUCKET_IN, BUCKET_OUT}; } From acb0db0b8edff584cc466bc0c7263e7fb4ee6576 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 28 Feb 2018 22:57:27 +0700 Subject: [PATCH 448/462] Hides technical blocks in NEI --- .../com/darkona/adventurebackpack/AdventureBackpack.java | 2 +- .../adventurebackpack/block/BlockAdventureBackpack.java | 3 +-- .../darkona/adventurebackpack/block/TileAdventure.java | 2 +- .../adventurebackpack/inventory/ContainerBackpack.java | 6 +++--- .../adventurebackpack/inventory/InventoryBackpack.java | 2 +- .../com/darkona/adventurebackpack/proxy/ClientProxy.java | 9 +++++++++ .../darkona/adventurebackpack/reference/LoadedMods.java | 1 + .../reference/WailaTileAdventureBackpack.java | 2 -- 8 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java index 7c8e0d90..7ed743e8 100644 --- a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java @@ -73,6 +73,7 @@ public void preInit(FMLPreInitializationEvent event) @Mod.EventHandler public void init(FMLInitializationEvent event) { + LoadedMods.init(); proxy.init(); ModRecipes.init(); ModWorldGen.init(); @@ -85,7 +86,6 @@ public void init(FMLInitializationEvent event) @Mod.EventHandler public void postInit(FMLPostInitializationEvent event) { - LoadedMods.init(); GeneralReference.init(); //ConditionalFluidEffect.init(); diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java index ae65096e..1f4fb490 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java @@ -193,7 +193,7 @@ public String getUnlocalizedName() @Override @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) + public void registerBlockIcons(IIconRegister iconRegister) //TODO why this is HERE? { Icons.milkStill = iconRegister.registerIcon(ModInfo.MOD_ID + ":fluid.milk"); Icons.melonJuiceStill = iconRegister.registerIcon(ModInfo.MOD_ID + ":fluid.melonJuiceStill"); @@ -408,7 +408,6 @@ public void breakBlock(World world, int x, int y, int z, Block block, int meta) world.spawnEntityInWorld(droppedItem); } } - } super.breakBlock(world, x, y, z, world.getBlock(x, y, z), meta); diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventure.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventure.java index c1e9cecd..b7d7e507 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventure.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventure.java @@ -22,7 +22,7 @@ abstract class TileAdventure extends TileEntity implements IInventoryTanks { // when porting to java 8+ most this methods should move to IInventoryTanks - protected ItemStack[] inventory; + protected final ItemStack[] inventory; protected TileAdventure(int inventorySize) { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 99dc54e0..7422cf02 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -170,13 +170,13 @@ private boolean mergeRightBucket(ItemStack stack) private boolean isHoldingSpace() { - return ((InventoryBackpack) inventory).getExtendedProperties().hasKey(Constants.TAG_HOLDING_SPACE); + return getInventoryBackpack().getExtendedProperties().hasKey(Constants.TAG_HOLDING_SPACE); } private boolean transferFluidContainer(ItemStack container) { - FluidTank leftTank = ((InventoryBackpack) inventory).getLeftTank(); - FluidTank rightTank = ((InventoryBackpack) inventory).getRightTank(); + FluidTank leftTank = getInventoryBackpack().getLeftTank(); + FluidTank rightTank = getInventoryBackpack().getRightTank(); ItemStack leftStackOut = getSlot(BUCKET_LEFT + 1).getStack(); ItemStack rightStackOut = getSlot(BUCKET_RIGHT + 1).getStack(); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java index ed745022..b8d48d5d 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryBackpack.java @@ -106,7 +106,7 @@ public NBTTagCompound getExtendedProperties() public void loadFromNBT(NBTTagCompound compound) { if (compound == null) - return; //this need for NEI trying to render tile.backpack and comes here w/o nbt + return; // this need for NEI and WAILA trying to render tile.backpack and comes here w/o nbt NBTTagCompound backpackTag = compound.getCompoundTag(TAG_WEARABLE_COMPOUND); type = BackpackTypes.getType(backpackTag.getByte(TAG_TYPE)); diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java index ae9b3307..d2fb5703 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java @@ -4,9 +4,11 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.client.MinecraftForgeClient; import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.oredict.OreDictionary; import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.FMLCommonHandler; @@ -35,6 +37,7 @@ import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; +import com.darkona.adventurebackpack.reference.LoadedMods; /** * Created on 10/10/2014 @@ -54,6 +57,12 @@ public void init() initRenderers(); registerKeybindings(); MinecraftForge.EVENT_BUS.register(new GuiOverlay(Minecraft.getMinecraft())); + + if (LoadedMods.NEI) + { + codechicken.nei.api.API.hideItem(new ItemStack(ModBlocks.blockBackpack, 1, OreDictionary.WILDCARD_VALUE)); + codechicken.nei.api.API.hideItem(new ItemStack(ModBlocks.blockSleepingBag, 1, OreDictionary.WILDCARD_VALUE)); + } } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/reference/LoadedMods.java b/src/main/java/com/darkona/adventurebackpack/reference/LoadedMods.java index d4985da4..e5172e05 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/LoadedMods.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/LoadedMods.java @@ -18,6 +18,7 @@ public final class LoadedMods public static final boolean BUILDCRAFT = registerMod("BuildCraft|Core"); public static final boolean ENDERIO = registerMod("EnderIO"); public static final boolean GREGTECH = registerMod("gregtech"); + public static final boolean NEI = registerMod("NotEnoughItems"); public static final boolean TCONSTRUCT = registerMod("TConstruct"); public static final boolean THAUMCRAFT = registerMod("Thaumcraft"); diff --git a/src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java index 67afde62..1bc5e2aa 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java @@ -41,8 +41,6 @@ public static void init() FMLInterModComms.sendMessage("Waila", "register", "com.darkona.adventurebackpack.reference.WailaTileAdventureBackpack.callbackRegister"); } - //TODO fix the icon. for some reason WAILA shows "standard" icon for all of backpacks. in the same time NEI tooltips shows right icon - public static void callbackRegister(IWailaRegistrar registrar) { registrar.registerHeadProvider(new WailaTileAdventureBackpack(), TileAdventureBackpack.class); From b937cccb3a31fd63c05df987cc4d6b1b04b2021b Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 1 Mar 2018 20:50:20 +0700 Subject: [PATCH 449/462] Fixed WAILA icon BackpackUtils and so on --- .../block/TileAdventureBackpack.java | 2 +- .../client/audio/CopterPackSound.java | 4 +- .../client/models/ModelCopterPack.java | 35 ++++----- .../common/ServerActions.java | 72 +++++-------------- .../handlers/TooltipEventHandler.java | 7 +- .../adventurebackpack/init/ModRecipes.java | 17 +---- .../inventory/ContainerAdventure.java | 38 +++++----- .../inventory/InventoryAdventure.java | 5 +- .../inventory/InventoryCoalJetpack.java | 3 +- .../inventory/InventoryCopterPack.java | 1 + .../adventurebackpack/item/ItemAdventure.java | 46 ++++++++++++ .../item/ItemAdventureBackpack.java | 55 +++----------- .../item/ItemCoalJetpack.java | 45 ++---------- .../item/ItemCopterPack.java | 47 ++---------- .../reference/BackpackTypes.java | 14 ++-- .../reference/WailaTileAdventureBackpack.java | 27 ++++--- .../adventurebackpack/util/BackpackUtils.java | 61 +++++++++++++--- .../adventurebackpack/util/CoordsUtils.java | 24 +++---- 18 files changed, 217 insertions(+), 286 deletions(-) create mode 100644 src/main/java/com/darkona/adventurebackpack/item/ItemAdventure.java diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 7ce27b05..d41b437b 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -276,7 +276,7 @@ public boolean drop(World world, EntityPlayer player, int x, int y, int z) return world.spawnEntityInWorld(droppedItem); } - private void transferToItemStack(ItemStack stack) + private void transferToItemStack(ItemStack stack) //TODO replace by BackpackUtils.createBackpackStack() { NBTTagCompound compound = new NBTTagCompound(); saveToNBT(compound); diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java index ba9b0c93..85f2b792 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java @@ -7,11 +7,11 @@ import com.darkona.adventurebackpack.item.ItemCopterPack; import com.darkona.adventurebackpack.reference.ModInfo; +import com.darkona.adventurebackpack.util.BackpackUtils; import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Wearing; import static com.darkona.adventurebackpack.common.Constants.Copter.TAG_STATUS; -import static com.darkona.adventurebackpack.common.Constants.TAG_WEARABLE_COMPOUND; /** * Created on 16/10/2014 @@ -73,7 +73,7 @@ public void update() return; } - status = copter.getTagCompound().getCompoundTag(TAG_WEARABLE_COMPOUND).getByte(TAG_STATUS); + status = BackpackUtils.getWearableCompound(copter).getByte(TAG_STATUS); if (status == ItemCopterPack.OFF_MODE) { setDonePlaying(); diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelCopterPack.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelCopterPack.java index 506ca8ff..6eff580d 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelCopterPack.java @@ -12,10 +12,10 @@ import com.darkona.adventurebackpack.inventory.InventoryCopterPack; import com.darkona.adventurebackpack.item.ItemCopterPack; +import com.darkona.adventurebackpack.util.BackpackUtils; import com.darkona.adventurebackpack.util.Utils; import static com.darkona.adventurebackpack.common.Constants.Copter.TAG_STATUS; -import static com.darkona.adventurebackpack.common.Constants.TAG_WEARABLE_COMPOUND; /** * Created on 31/12/2014 @@ -182,12 +182,6 @@ public ModelCopterPack setWearable(ItemStack wearable) return this; } - public ModelCopterPack(ItemStack wearable) - { - this.copterPack = wearable; - init(); - } - public ModelCopterPack() { init(); @@ -198,25 +192,20 @@ private void renderCopterPack(Entity entity, float scale) InventoryCopterPack copterInv = new InventoryCopterPack(this.copterPack); copterInv.openInventory(); Axis.isHidden = true; - if (copterPack != null && copterPack.hasTagCompound() - && copterPack.stackTagCompound.hasKey(TAG_WEARABLE_COMPOUND) - && copterPack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).hasKey(TAG_STATUS)) + if (BackpackUtils.getWearableCompound(copterPack).getByte(TAG_STATUS) != ItemCopterPack.OFF_MODE) { - if (copterPack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).getByte(TAG_STATUS) != ItemCopterPack.OFF_MODE) + Axis.isHidden = false; + int degrees; + if (entity.onGround || (entity.isSneaking())) { - Axis.isHidden = false; - int degrees; - if (entity.onGround || (entity.isSneaking())) - { - degrees = 16; - } - else - { - degrees = entity.motionY > 0 ? 36 : 28; - } - float deg = Utils.radiansToDegrees(this.Axis.rotateAngleY); - this.Axis.rotateAngleY = (deg <= 360 + degrees) ? Utils.degreesToRadians(deg + degrees) : 0; + degrees = 16; + } + else + { + degrees = entity.motionY > 0 ? 36 : 28; } + float deg = Utils.radiansToDegrees(this.Axis.rotateAngleY); + this.Axis.rotateAngleY = (deg <= 360 + degrees) ? Utils.degreesToRadians(deg + degrees) : 0; } this.Base.render(scale); this.Axis.render(scale); diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index 034a2d18..a710bbc1 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -32,15 +32,14 @@ import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.reference.GeneralReference; +import com.darkona.adventurebackpack.util.BackpackUtils; import com.darkona.adventurebackpack.util.CoordsUtils; -import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Wearing; import static com.darkona.adventurebackpack.common.Constants.BUCKET; import static com.darkona.adventurebackpack.common.Constants.Copter.TAG_STATUS; import static com.darkona.adventurebackpack.common.Constants.TOOL_LOWER; import static com.darkona.adventurebackpack.common.Constants.TOOL_UPPER; -import static com.darkona.adventurebackpack.common.Constants.TAG_WEARABLE_COMPOUND; /** * Created on 23/12/2014 @@ -53,59 +52,28 @@ public class ServerActions public static final boolean HOSE_TOGGLE = true; /** - * Cycles tools. In a cycle. The tool in your hand with the tools in the special tool slot of the backpack, to be precise. + * Cycles tools. In a cycle. The tool in your hand with the tools in the special tool playerSlot of the backpack, + * to be precise. * - * @param player Duh - * @param isWheelUp An boolean indicating the direction of the switch. Nobody likes to swith always in the same - * direction all the timeInSeconds. That's stupid. - * @param slot The slot that will be switched with the backpack. + * @param player Duh + * @param isWheelUp A boolean indicating the direction of the switch. Nobody likes to swith always in the same + * direction all the timeInSeconds. That's stupid. + * @param playerSlot The slot that will be switched with the backpack. */ - public static void cycleTool(EntityPlayer player, boolean isWheelUp, int slot) + public static void cycleTool(EntityPlayer player, boolean isWheelUp, int playerSlot) { if (!GeneralReference.isDimensionAllowed(player)) return; - try + ItemStack current = player.getCurrentEquippedItem(); + if (SlotTool.isValidTool(current)) { + int backpackSlot = isWheelUp ? TOOL_UPPER : TOOL_LOWER; InventoryBackpack backpack = Wearing.getWearingBackpackInv(player); - ItemStack current = player.getCurrentEquippedItem(); backpack.openInventory(); - if (SlotTool.isValidTool(current)) - { - if (isWheelUp) - { - player.inventory.mainInventory[slot] = backpack.getStackInSlot(TOOL_UPPER); - backpack.setInventorySlotContentsNoSave(TOOL_UPPER, current); - } - else - { - player.inventory.mainInventory[slot] = backpack.getStackInSlot(TOOL_LOWER); - backpack.setInventorySlotContentsNoSave(TOOL_LOWER, current); - } - } - //old behavior, cycling all 3 slots: - /*if (SlotTool.isValidTool(current)) - { - if (direction < 0) - { - player.inventory.mainInventory[slot] = backpack.getStackInSlot(TOOL_UPPER); - backpack.setInventorySlotContentsNoSave(TOOL_UPPER, backpack.getStackInSlot(TOOL_LOWER)); - backpack.setInventorySlotContentsNoSave(TOOL_LOWER, current); - } - else if (direction > 0) - { - player.inventory.mainInventory[slot] = backpack.getStackInSlot(TOOL_LOWER); - backpack.setInventorySlotContentsNoSave(TOOL_LOWER, backpack.getStackInSlot(TOOL_UPPER)); - backpack.setInventorySlotContentsNoSave(TOOL_UPPER, current); - } - }*/ - backpack.markDirty(); - player.inventory.closeInventory(); - } - catch (Exception oops) - { - LogHelper.debug("Exception trying to cycle tools."); - oops.printStackTrace(); + player.inventory.mainInventory[playerSlot] = backpack.getStackInSlot(backpackSlot); + backpack.setInventorySlotContentsNoSave(backpackSlot, current); + backpack.dirtyInventory(); } } @@ -115,7 +83,7 @@ else if (direction > 0) * @param player Is a player. To whom the nice or evil effects you're going to apply will affect. * See? I know the proper use of the words "effect" & "affect". * @param tank The tank that holds the fluid, whose effect will affect the player that's in the world. - * @return If the effect can be applied, and it is actually applied, returns true. + * @return If the effect can be applied, and it is actually applied, returns true. */ public static boolean setFluidEffect(World world, EntityPlayer player, FluidTank tank) { @@ -341,8 +309,7 @@ public static void pistonBootsJump(EntityPlayer player) public static void copterSoundAtLogin(EntityPlayer player) { - byte status = BackpackProperty.get(player).getWearable().getTagCompound() - .getCompoundTag(TAG_WEARABLE_COMPOUND).getByte(TAG_STATUS); + byte status = BackpackUtils.getWearableCompound(BackpackProperty.get(player).getWearable()).getByte(TAG_STATUS); if (!player.worldObj.isRemote && status != ItemCopterPack.OFF_MODE) { @@ -352,8 +319,7 @@ public static void copterSoundAtLogin(EntityPlayer player) public static void jetpackSoundAtLogin(EntityPlayer player) { - boolean isBoiling = BackpackProperty.get(player).getWearable().getTagCompound() - .getCompoundTag(TAG_WEARABLE_COMPOUND).getBoolean("boiling"); + boolean isBoiling = BackpackUtils.getWearableCompound(BackpackProperty.get(player).getWearable()).getBoolean("boiling"); if (!player.worldObj.isRemote && isBoiling) { @@ -366,7 +332,7 @@ public static void toggleCopterPack(EntityPlayer player, ItemStack copter, byte { String message = ""; boolean actionPerformed = false; - byte mode = copter.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).getByte(TAG_STATUS); + byte mode = BackpackUtils.getWearableCompound(copter).getByte(TAG_STATUS); byte newMode = ItemCopterPack.OFF_MODE; if (type == WearableModePacket.COPTER_ON_OFF) @@ -407,7 +373,7 @@ public static void toggleCopterPack(EntityPlayer player, ItemStack copter, byte if (actionPerformed) { - copter.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setByte(TAG_STATUS, newMode); + BackpackUtils.getWearableCompound(copter).setByte(TAG_STATUS, newMode); if (player.worldObj.isRemote) { player.addChatComponentMessage(new ChatComponentTranslation(message)); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java index 5d88ff69..aa551d0b 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java @@ -27,6 +27,7 @@ import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.reference.GeneralReference; +import com.darkona.adventurebackpack.util.BackpackUtils; /** * Created on 24.03.2017 @@ -51,7 +52,7 @@ public void itemsTooltips(ItemTooltipEvent event) if (theItem instanceof ItemAdventureBackpack) { FluidTank tank = new FluidTank(Constants.BASIC_TANK_CAPACITY); - NBTTagCompound backpackTag = event.itemStack.stackTagCompound.getCompoundTag(Constants.TAG_WEARABLE_COMPOUND); + NBTTagCompound backpackTag = BackpackUtils.getWearableCompound(event.itemStack); if (GuiScreen.isShiftKeyDown()) { @@ -91,7 +92,7 @@ else if (theItem instanceof ItemCoalJetpack) { FluidTank waterTank = new FluidTank(Constants.Jetpack.WATER_CAPACITY); FluidTank steamTank = new FluidTank(Constants.Jetpack.STEAM_CAPACITY); - NBTTagCompound jetpackTag = event.itemStack.stackTagCompound.getCompoundTag(Constants.TAG_WEARABLE_COMPOUND); + NBTTagCompound jetpackTag = BackpackUtils.getWearableCompound(event.itemStack); if (GuiScreen.isShiftKeyDown()) { @@ -122,7 +123,7 @@ else if (!GuiScreen.isCtrlKeyDown()) else if (theItem instanceof ItemCopterPack) { FluidTank fuelTank = new FluidTank(Constants.Copter.FUEL_CAPACITY); - NBTTagCompound copterTag = event.itemStack.stackTagCompound.getCompoundTag(Constants.TAG_WEARABLE_COMPOUND); + NBTTagCompound copterTag = BackpackUtils.getWearableCompound(event.itemStack); if (GuiScreen.isShiftKeyDown()) { diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java index 0156e02e..c5220ff9 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java @@ -5,14 +5,13 @@ import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.oredict.ShapedOreRecipe; import cpw.mods.fml.common.registry.GameRegistry; -import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.init.recipes.BackpackRecipesList; import com.darkona.adventurebackpack.reference.BackpackTypes; +import com.darkona.adventurebackpack.util.BackpackUtils; import com.darkona.adventurebackpack.util.LogHelper; /** @@ -52,12 +51,7 @@ public static void init() if (ConfigHandler.recipeCopterPack) { //Copter Pack - ItemStack copterStack = new ItemStack(ModItems.copterPack); - NBTTagCompound copterCompound = new NBTTagCompound(); - copterCompound.setTag(Constants.TAG_WEARABLE_COMPOUND, new NBTTagCompound()); - copterStack.setTagCompound(copterCompound); - - GameRegistry.addRecipe(copterStack, + GameRegistry.addRecipe(BackpackUtils.createCopterStack(), "WBW", "TEI", "CDI", @@ -73,12 +67,7 @@ public static void init() if (ConfigHandler.recipeCoalJetpack) { //CoalJetpack - ItemStack jetpackStack = new ItemStack(ModItems.coalJetpack); - NBTTagCompound jetpackCompound = new NBTTagCompound(); - jetpackCompound.setTag(Constants.TAG_WEARABLE_COMPOUND, new NBTTagCompound()); - jetpackStack.setTagCompound(jetpackCompound); - - GameRegistry.addRecipe(jetpackStack, + GameRegistry.addRecipe(BackpackUtils.createJetpackStack(), "SWT", "GIG", "FWS", diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventure.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventure.java index 08e8decb..2e72097c 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventure.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventure.java @@ -1,5 +1,7 @@ package com.darkona.adventurebackpack.inventory; +import javax.annotation.Nullable; + import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.InventoryPlayer; @@ -15,12 +17,13 @@ * @author Ugachaga */ @SuppressWarnings("WeakerAccess") -abstract class ContainerAdventure extends Container +public abstract class ContainerAdventure extends Container { + protected static final int PLAYER_INV_ROWS = 3; + protected static final int PLAYER_INV_COLUMNS = 9; protected static final int PLAYER_HOT_START = 0; - protected static final int PLAYER_HOT_END = PLAYER_HOT_START + 8; - protected static final int PLAYER_INV_START = PLAYER_HOT_END + 1; - protected static final int PLAYER_INV_END = PLAYER_INV_START + 26; + protected static final int PLAYER_HOT_END = PLAYER_HOT_START + PLAYER_INV_COLUMNS - 1; + protected static final int PLAYER_INV_END = PLAYER_HOT_END + PLAYER_INV_COLUMNS * PLAYER_INV_ROWS; protected static final int PLAYER_INV_LENGTH = PLAYER_INV_END + 1; protected final EntityPlayer player; @@ -40,18 +43,12 @@ protected ContainerAdventure(EntityPlayer player, IInventoryTanks inventory, Sou protected void bindPlayerInventory(InventoryPlayer invPlayer, int startX, int startY) { - for (int x = 0; x < 9; x++) // hotbar - 9 slots - { - addSlotToContainer(new Slot(invPlayer, x, (startX + 18 * x), (58 + startY))); - } + for (int col = 0; col < PLAYER_INV_COLUMNS; col++) // hotbar - 9 slots + addSlotToContainer(new Slot(invPlayer, col, (startX + 18 * col), (58 + startY))); - for (int y = 0; y < 3; y++) // inventory - 9*3, 27 slots - { - for (int x = 0; x < 9; x++) - { - addSlotToContainer(new Slot(invPlayer, (x + y * 9 + 9), (startX + 18 * x), (startY + y * 18))); - } - } + for (int row = 0; row < PLAYER_INV_ROWS; row++) // inventory - 3*9, 27 slots + for (int col = 0; col < PLAYER_INV_COLUMNS; col++) + addSlotToContainer(new Slot(invPlayer, (PLAYER_INV_COLUMNS + row * PLAYER_INV_COLUMNS + col), (startX + 18 * col), (startY + row * 18))); } @Override @@ -100,6 +97,7 @@ private boolean detectFluidChanges() return changesDetected; } + @Nullable @Override public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) { @@ -111,15 +109,14 @@ public ItemStack transferStackInSlot(EntityPlayer player, int fromSlot) ItemStack stack = slot.getStack(); ItemStack result = stack.copy(); - if (fromSlot >= PLAYER_INV_LENGTH) + if (fromSlot < PLAYER_INV_LENGTH) { - if (!mergePlayerInv(stack)) + if (!transferStackToPack(stack)) return null; } - - if (fromSlot < PLAYER_INV_LENGTH) + else { - if (!transferStackToPack(stack)) + if (!mergePlayerInv(stack)) return null; } @@ -146,6 +143,7 @@ protected boolean mergePlayerInv(ItemStack stack) protected abstract boolean transferStackToPack(ItemStack stack); + @Nullable @Override public ItemStack slotClick(int slot, int button, int flag, EntityPlayer player) { diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventure.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventure.java index 57e076ae..4622a383 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventure.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryAdventure.java @@ -7,9 +7,10 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import com.darkona.adventurebackpack.util.BackpackUtils; + import static com.darkona.adventurebackpack.common.Constants.TAG_INVENTORY; import static com.darkona.adventurebackpack.common.Constants.TAG_SLOT; -import static com.darkona.adventurebackpack.common.Constants.TAG_WEARABLE_COMPOUND; /** * Created on 15.07.2017 @@ -169,7 +170,7 @@ public void dirtyInventory() protected NBTTagCompound getWearableCompound() { - return containerStack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND); + return BackpackUtils.getWearableCompound(containerStack); } protected void setInventoryFromTagList(NBTTagList items) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java index e5c46018..62310b1a 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCoalJetpack.java @@ -91,7 +91,7 @@ public void loadFromNBT(NBTTagCompound compound) @Override public void saveToNBT(NBTTagCompound compound) { - NBTTagCompound jetpackTag = compound.getCompoundTag(TAG_WEARABLE_COMPOUND); + NBTTagCompound jetpackTag = new NBTTagCompound(); jetpackTag.setTag(TAG_INVENTORY, getInventoryTagList()); jetpackTag.setTag(TAG_WATER_TANK, waterTank.writeToNBT(new NBTTagCompound())); jetpackTag.setTag(TAG_STEAM_TANK, steamTank.writeToNBT(new NBTTagCompound())); @@ -103,6 +103,7 @@ public void saveToNBT(NBTTagCompound compound) jetpackTag.setInteger("burnTicks", burnTicks); jetpackTag.setInteger("coolTicks", coolTicks); jetpackTag.setInteger("currentBurn", currentItemBurnTime); + compound.setTag(TAG_WEARABLE_COMPOUND, jetpackTag); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java index 85c95f55..e1716264 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/InventoryCopterPack.java @@ -75,6 +75,7 @@ public void saveToNBT(NBTTagCompound compound) copterTag.setTag(TAG_FUEL_TANK, fuelTank.writeToNBT(new NBTTagCompound())); copterTag.setByte(TAG_STATUS, status); copterTag.setInteger("tickCounter", this.tickCounter); + compound.setTag(TAG_WEARABLE_COMPOUND, copterTag); } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventure.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventure.java new file mode 100644 index 00000000..ec25281a --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventure.java @@ -0,0 +1,46 @@ +package com.darkona.adventurebackpack.item; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; + +import com.darkona.adventurebackpack.inventory.ContainerAdventure; +import com.darkona.adventurebackpack.util.EnchUtils; + +/** + * Created on 01.03.2018 + * + * @author Ugachaga + */ +@SuppressWarnings("WeakerAccess") +public abstract class ItemAdventure extends ItemAB implements IBackWearableItem +{ + public ItemAdventure() + { + super(); + setFull3D(); + setMaxStackSize(1); + } + + @Override + public int getItemEnchantability() + { + return 0; + } + + @Override + public boolean onDroppedByPlayer(ItemStack stack, EntityPlayer player) + { + if (stack != null && player instanceof EntityPlayerMP && player.openContainer instanceof ContainerAdventure) + player.closeScreen(); + + return super.onDroppedByPlayer(stack, player); + } + + @Override + public boolean isBookEnchantable(ItemStack stack, ItemStack book) + { + return EnchUtils.isSoulBook(book); + } + +} diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index bf7d48c9..c4b0ecbd 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -7,7 +7,6 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -17,7 +16,6 @@ import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.common.util.ForgeDirection; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -32,7 +30,6 @@ import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.init.ModDates; import com.darkona.adventurebackpack.init.ModNetwork; -import com.darkona.adventurebackpack.inventory.ContainerBackpack; import com.darkona.adventurebackpack.network.GUIPacket; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.proxy.ClientProxy; @@ -50,18 +47,16 @@ * * @author Darkona */ -public class ItemAdventureBackpack extends ItemAB implements IBackWearableItem +public class ItemAdventureBackpack extends ItemAdventure { public ItemAdventureBackpack() { super(); setUnlocalizedName("adventureBackpack"); - setFull3D(); - setMaxStackSize(1); } @Override - @SuppressWarnings({"unchecked", "rawtypes"}) + @SuppressWarnings({"unchecked"}) @SideOnly(Side.CLIENT) public void getSubItems(Item item, CreativeTabs par2CreativeTabs, List subItems) { @@ -70,12 +65,7 @@ public void getSubItems(Item item, CreativeTabs par2CreativeTabs, List subItems) if (type == BackpackTypes.UNKNOWN) continue; - ItemStack backpackStack = new ItemStack(this, 1, 0); - backpackStack.setItemDamage(BackpackTypes.getMeta(type)); - NBTTagCompound compound = new NBTTagCompound(); - compound.setByte(TAG_TYPE, BackpackTypes.getMeta(type)); - BackpackUtils.setBackpackTag(backpackStack, compound); - subItems.add(backpackStack); + subItems.add(BackpackUtils.createBackpackStack(type)); } } @@ -84,7 +74,7 @@ public void getSubItems(Item item, CreativeTabs par2CreativeTabs, List subItems) @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4) { - NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(stack); + NBTTagCompound backpackTag = BackpackUtils.getWearableCompound(stack); if (backpackTag.hasKey(TAG_TYPE)) { BackpackTypes type = BackpackTypes.getType(backpackTag.getByte(TAG_TYPE)); @@ -119,16 +109,6 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla return stack; } - @Override - public boolean onDroppedByPlayer(ItemStack stack, EntityPlayer player) - { - if (stack != null && player instanceof EntityPlayerMP && player.openContainer instanceof ContainerBackpack) - { - player.closeScreen(); - } - return super.onDroppedByPlayer(stack, player); - } - @Override public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) { @@ -146,7 +126,7 @@ public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) BackpackProperty.get(player).setWearable(null); } - private boolean tryPlace(World world, EntityPlayer player, ItemStack backpack) + private boolean tryPlace(World world, EntityPlayer player, ItemStack backpack) //TODO extract behavior to CoordsUtils { int X = (int) player.posX; if (player.posX < 0) X--; @@ -276,13 +256,12 @@ public double getDurabilityForDisplay(ItemStack stack) private int getItemCount(ItemStack backpack) { - NBTTagCompound backpackTag = backpack.stackTagCompound.getCompoundTag(Constants.TAG_WEARABLE_COMPOUND); - NBTTagList itemList = backpackTag.getTagList(Constants.TAG_INVENTORY, NBT.TAG_COMPOUND); + NBTTagList itemList = BackpackUtils.getInventoryTag(backpack); int itemCount = itemList.tagCount(); for (int i = itemCount - 1; i >= 0; i--) { int slotAtI = itemList.getCompoundTagAt(i).getInteger(Constants.TAG_SLOT); - if (slotAtI <= Constants.END_OF_INVENTORY) + if (slotAtI < Constants.INVENTORY_MAIN_SIZE) break; itemCount--; } @@ -307,7 +286,7 @@ public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack stack, public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) { String modelTexture; - if (BackpackTypes.getType(stack) == BackpackTypes.STANDARD) + if (BackpackTypes.getType(stack) == BackpackTypes.STANDARD) //TODO see RendererAdventureBackpackBlock and RendererItemAdventureBackpack for same code { modelTexture = Resources.backpackTextureFromString(ModDates.getHoliday()).toString(); } @@ -342,24 +321,6 @@ public ResourceLocation getWearableTexture(ItemStack wearable) return modelTexture; } - @Override - public boolean getIsRepairable(ItemStack toRepair, ItemStack repair) - { - return false; - } - - @Override - public int getItemEnchantability() - { - return 0; - } - - @Override - public boolean isBookEnchantable(ItemStack stack, ItemStack book) - { - return EnchUtils.isSoulBook(book); - } - @Override public boolean isDamageable() { diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index 39e2f368..6b4c4af9 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -10,8 +10,6 @@ import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import net.minecraftforge.common.BiomeDictionary; @@ -23,14 +21,13 @@ import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.init.ModNetwork; -import com.darkona.adventurebackpack.inventory.ContainerJetpack; import com.darkona.adventurebackpack.inventory.InventoryCoalJetpack; import com.darkona.adventurebackpack.network.GUIPacket; import com.darkona.adventurebackpack.network.PlayerActionPacket; import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; import com.darkona.adventurebackpack.network.messages.EntitySoundPacket; import com.darkona.adventurebackpack.proxy.ClientProxy; -import com.darkona.adventurebackpack.util.EnchUtils; +import com.darkona.adventurebackpack.util.BackpackUtils; import com.darkona.adventurebackpack.util.Resources; /** @@ -38,31 +35,19 @@ * * @author Darkona */ -public class ItemCoalJetpack extends ItemAB implements IBackWearableItem +public class ItemCoalJetpack extends ItemAdventure { public ItemCoalJetpack() { super(); setUnlocalizedName("coalJetpack"); - setFull3D(); - setMaxStackSize(1); } @Override @SuppressWarnings("unchecked") public void getSubItems(Item item, CreativeTabs tab, List list) { - ItemStack iStack = new ItemStack(item, 1, 0); - NBTTagCompound compound = new NBTTagCompound(); - iStack.setTagCompound(compound); - - NBTTagCompound jetpackTag = new NBTTagCompound(); - //jetpackTag.setTag(Constants.Jetpack.TAG_WATER_TANK, new FluidTank(Constants.Jetpack.WATER_CAPACITY).writeToNBT(new NBTTagCompound())); - //jetpackTag.setTag(Constants.Jetpack.TAG_STEAM_TANK, new FluidTank(Constants.Jetpack.STEAM_CAPACITY).writeToNBT(new NBTTagCompound())); - jetpackTag.setTag(Constants.TAG_INVENTORY, new NBTTagList()); - compound.setTag(Constants.TAG_WEARABLE_COMPOUND, jetpackTag); - - list.add(iStack); + list.add(BackpackUtils.createJetpackStack()); } @Override @@ -83,7 +68,7 @@ public void onEquipped(World world, EntityPlayer player, ItemStack stack) } @Override - public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) + public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) //TODO extract behavior to separate class { InventoryCoalJetpack inv = new InventoryCoalJetpack(stack); inv.openInventory(); @@ -272,16 +257,6 @@ public void onUnequipped(World world, EntityPlayer player, ItemStack stack) inv.markDirty(); } - @Override - public boolean onDroppedByPlayer(ItemStack stack, EntityPlayer player) - { - if (stack != null && player instanceof EntityPlayerMP && player.openContainer instanceof ContainerJetpack) - { - player.closeScreen(); - } - return super.onDroppedByPlayer(stack, player); - } - @Override public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) { @@ -296,7 +271,7 @@ public double getDurabilityForDisplay(ItemStack stack) private int getTemperature(ItemStack jetpack) { - return jetpack.stackTagCompound.getCompoundTag(Constants.TAG_WEARABLE_COMPOUND).getInteger("temperature"); + return BackpackUtils.getWearableCompound(jetpack).getInteger("temperature"); } @Override @@ -350,15 +325,5 @@ public ResourceLocation getWearableTexture(ItemStack wearable) return Resources.modelTextures("coalJetpack"); } - @Override - public int getItemEnchantability() - { - return 0; - } - @Override - public boolean isBookEnchantable(ItemStack stack, ItemStack book) - { - return EnchUtils.isSoulBook(book); - } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java index 2ba978e3..7bb1cc04 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java @@ -9,10 +9,8 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.ResourceLocation; @@ -23,25 +21,23 @@ import com.darkona.adventurebackpack.client.models.ModelCopterPack; import com.darkona.adventurebackpack.init.ModNetwork; -import com.darkona.adventurebackpack.inventory.ContainerCopter; import com.darkona.adventurebackpack.inventory.InventoryCopterPack; import com.darkona.adventurebackpack.network.GUIPacket; import com.darkona.adventurebackpack.network.messages.EntityParticlePacket; import com.darkona.adventurebackpack.proxy.ClientProxy; import com.darkona.adventurebackpack.reference.GeneralReference; -import com.darkona.adventurebackpack.util.EnchUtils; +import com.darkona.adventurebackpack.util.BackpackUtils; import com.darkona.adventurebackpack.util.Resources; import com.darkona.adventurebackpack.util.Wearing; import static com.darkona.adventurebackpack.common.Constants.Copter.TAG_STATUS; -import static com.darkona.adventurebackpack.common.Constants.TAG_WEARABLE_COMPOUND; /** * Created on 31/12/2014 * * @author Darkona */ -public class ItemCopterPack extends ItemAB implements IBackWearableItem +public class ItemCopterPack extends ItemAdventure { public static byte OFF_MODE = 0; public static byte NORMAL_MODE = 1; @@ -53,23 +49,13 @@ public ItemCopterPack() { super(); setUnlocalizedName("copterPack"); - setFull3D(); - setMaxStackSize(1); } @Override @SuppressWarnings("unchecked") public void getSubItems(Item item, CreativeTabs tab, List list) { - ItemStack iStack = new ItemStack(item, 1, 0); - NBTTagCompound compound = new NBTTagCompound(); - iStack.setTagCompound(compound); - - NBTTagCompound copterTag = new NBTTagCompound(); - //copterTag.setTag(Constants.Copter.TAG_FUEL_TANK, new FluidTank(Constants.Copter.FUEL_CAPACITY).writeToNBT(new NBTTagCompound())); - compound.setTag(TAG_WEARABLE_COMPOUND, copterTag); - - list.add(iStack); + list.add(BackpackUtils.createCopterStack()); } @Override @@ -91,11 +77,11 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla @Override public void onEquipped(World world, EntityPlayer player, ItemStack stack) { - stack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setByte(TAG_STATUS, OFF_MODE); + BackpackUtils.getWearableCompound(stack).setByte(TAG_STATUS, OFF_MODE); } @Override - public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) + public void onEquippedUpdate(World world, EntityPlayer player, ItemStack stack) //TODO extract behavior to separate class { InventoryCopterPack inv = new InventoryCopterPack(Wearing.getWearingCopter(player)); inv.openInventory(); @@ -287,17 +273,7 @@ private void pushEntities(World world, EntityPlayer player, float speed) @Override public void onUnequipped(World world, EntityPlayer player, ItemStack stack) { - stack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND).setByte(TAG_STATUS, OFF_MODE); - } - - @Override - public boolean onDroppedByPlayer(ItemStack stack, EntityPlayer player) - { - if (stack != null && player instanceof EntityPlayerMP && player.openContainer instanceof ContainerCopter) - { - player.closeScreen(); - } - return super.onDroppedByPlayer(stack, player); + BackpackUtils.getWearableCompound(stack).setByte(TAG_STATUS, OFF_MODE); } @Override @@ -337,15 +313,4 @@ public ResourceLocation getWearableTexture(ItemStack wearable) return Resources.modelTextures("copterPack"); } - @Override - public int getItemEnchantability() - { - return 0; - } - - @Override - public boolean isBookEnchantable(ItemStack stack, ItemStack book) - { - return EnchUtils.isSoulBook(book); - } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java index 1a67ffb6..7bbb0831 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java @@ -227,8 +227,8 @@ public static BackpackTypes getType(ItemStack backpack) if (backpack == null) // well... Wearing.getWearingBackpack() may return null... //TODO solve this damn null return null; - NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(backpack); - if (backpackTag.getByte(TAG_TYPE) == UNKNOWN.meta) //TODO remove? stay? + NBTTagCompound backpackTag = BackpackUtils.getWearableCompound(backpack); + if (backpackTag.getByte(TAG_TYPE) == UNKNOWN.meta) //TODO remove? are we rly need to normalize it? { backpackTag.setByte(TAG_TYPE, STANDARD.meta); } @@ -280,23 +280,23 @@ public enum Props // --- - public static ItemStack setBackpackTypeFromMeta(ItemStack backpack, int meta) + public static ItemStack setBackpackTypeFromMeta(ItemStack backpack, int meta) //TODO what if meta value is wrong? { if (backpack == null || !(backpack.getItem() instanceof ItemAdventureBackpack)) return null; - NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(backpack); + NBTTagCompound backpackTag = BackpackUtils.getWearableCompound(backpack); backpack.setItemDamage(meta); backpackTag.setByte(TAG_TYPE, (byte) meta); - BackpackUtils.setBackpackTag(backpack, backpackTag); + BackpackUtils.setWearableCompound(backpack, backpackTag); return backpack; } public static void setBackpackType(ItemStack backpack, BackpackTypes type) { - NBTTagCompound backpackTag = BackpackUtils.getBackpackTag(backpack); + NBTTagCompound backpackTag = BackpackUtils.getWearableCompound(backpack); backpackTag.setByte(TAG_TYPE, getMeta(type)); - BackpackUtils.setBackpackTag(backpack, backpackTag); + BackpackUtils.setWearableCompound(backpack, backpackTag); } } diff --git a/src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java index 1bc5e2aa..1bfc2985 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java @@ -16,6 +16,7 @@ import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.handlers.TooltipEventHandler; +import com.darkona.adventurebackpack.util.BackpackUtils; import com.darkona.adventurebackpack.util.Utils; import mcp.mobius.waila.api.IWailaConfigHandler; @@ -43,6 +44,7 @@ public static void init() public static void callbackRegister(IWailaRegistrar registrar) { + registrar.registerStackProvider(new WailaTileAdventureBackpack(), TileAdventureBackpack.class); registrar.registerHeadProvider(new WailaTileAdventureBackpack(), TileAdventureBackpack.class); registrar.registerBodyProvider(new WailaTileAdventureBackpack(), TileAdventureBackpack.class); } @@ -50,7 +52,18 @@ public static void callbackRegister(IWailaRegistrar registrar) @Override public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) { - return null; + return addTypeToStack(accessor); + } + + private ItemStack addTypeToStack(IWailaDataAccessor accessor) + { + if (accessor.getNBTData().hasKey(TAG_WEARABLE_COMPOUND)) + { + NBTTagCompound backpackTag = accessor.getNBTData().getCompoundTag(TAG_WEARABLE_COMPOUND); + BackpackTypes type = BackpackTypes.getType(backpackTag.getByte(TAG_TYPE)); + return BackpackUtils.createBackpackStack(type); + } + return BackpackUtils.createBackpackStack(BackpackTypes.STANDARD); } @Override @@ -75,7 +88,7 @@ private static void addHeadToBackpack(List currenttip, NBTTagCompound ba BackpackTypes type = BackpackTypes.getType(backpackTag.getByte(TAG_TYPE)); String skin = ""; if (type != BackpackTypes.STANDARD) - skin = " [" + Utils.getColoredSkinName(type) + EnumChatFormatting.WHITE + "]"; + skin = EnumChatFormatting.GRAY + " \"" + Utils.getColoredSkinName(type) + EnumChatFormatting.GRAY + "\""; currenttip.add(EnumChatFormatting.WHITE + "Adventure Backpack" + skin); } @@ -88,14 +101,10 @@ public List getWailaBody(ItemStack itemStack, List currenttip, I private static void addTipToBackpack(List currenttip, IWailaDataAccessor accessor) { - TileEntity te = accessor.getTileEntity(); - if (te instanceof TileAdventureBackpack) + if (accessor.getNBTData().hasKey(TAG_WEARABLE_COMPOUND)) { - if (accessor.getNBTData().hasKey(TAG_WEARABLE_COMPOUND)) - { - NBTTagCompound backpackTag = accessor.getNBTData().getCompoundTag(TAG_WEARABLE_COMPOUND); - addTipToBackpack(currenttip, backpackTag); - } + NBTTagCompound backpackTag = accessor.getNBTData().getCompoundTag(TAG_WEARABLE_COMPOUND); + addTipToBackpack(currenttip, backpackTag); } } diff --git a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java index 743ddaf2..7b981c26 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java @@ -6,12 +6,18 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; import net.minecraft.util.ChatComponentTranslation; import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.util.Constants.NBT; import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.events.WearableEvent; +import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; +import com.darkona.adventurebackpack.reference.BackpackTypes; + +import static com.darkona.adventurebackpack.common.Constants.TAG_TYPE; /** * Created on 08/01/2015 @@ -53,25 +59,60 @@ public static void unequipWearable(EntityPlayer player) timer.schedule(unequipTask, 200); } - //TODO as we unificate NTB structure for all wearables, have to remake this to getWearableTag - public static NBTTagCompound getBackpackTag(ItemStack backpack) + public static NBTTagCompound getWearableCompound(ItemStack stack) { - if (backpack.hasTagCompound() && backpack.stackTagCompound.hasKey(Constants.TAG_WEARABLE_COMPOUND)) - { - return backpack.stackTagCompound.getCompoundTag(Constants.TAG_WEARABLE_COMPOUND); - } - return new NBTTagCompound(); + if (!stack.hasTagCompound() || !stack.stackTagCompound.hasKey(Constants.TAG_WEARABLE_COMPOUND)) + setWearableCompound(stack, new NBTTagCompound()); + + return stack.stackTagCompound.getCompoundTag(Constants.TAG_WEARABLE_COMPOUND); } - public static void setBackpackTag(ItemStack stack, NBTTagCompound compound) + public static void setWearableCompound(ItemStack stack, NBTTagCompound compound) { if (!stack.hasTagCompound()) - { stack.stackTagCompound = new NBTTagCompound(); - } + stack.stackTagCompound.setTag(Constants.TAG_WEARABLE_COMPOUND, compound); } + public static NBTTagList getInventoryTag(NBTTagCompound compound) + { + if (!compound.hasKey(Constants.TAG_INVENTORY)) + return compound.getTagList(Constants.TAG_INVENTORY, NBT.TAG_COMPOUND); + + return new NBTTagList(); + } + + public static NBTTagList getInventoryTag(ItemStack stack) + { + return getInventoryTag(getWearableCompound(stack)); + } + + public static ItemStack createBackpackStack(BackpackTypes type) + { + ItemStack backpackStack = new ItemStack(ModItems.adventureBackpack, 1, 0); + backpackStack.setItemDamage(BackpackTypes.getMeta(type)); + NBTTagCompound compound = new NBTTagCompound(); + compound.setByte(TAG_TYPE, BackpackTypes.getMeta(type)); + setWearableCompound(backpackStack, compound); + return backpackStack; + } + + public static ItemStack createCopterStack() + { + ItemStack copterStack = new ItemStack(ModItems.copterPack, 1, 0); + setWearableCompound(copterStack, new NBTTagCompound()); + return copterStack; + } + + public static ItemStack createJetpackStack() + { + ItemStack jetpackStack = new ItemStack(ModItems.coalJetpack, 1, 0); + setWearableCompound(jetpackStack, new NBTTagCompound()); + return jetpackStack; + } + + private static class DelayUnequipTask extends TimerTask { private EntityPlayer player; diff --git a/src/main/java/com/darkona/adventurebackpack/util/CoordsUtils.java b/src/main/java/com/darkona/adventurebackpack/util/CoordsUtils.java index ee982146..444b1676 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/CoordsUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/CoordsUtils.java @@ -1,5 +1,7 @@ package com.darkona.adventurebackpack.util; +import javax.annotation.Nullable; + import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ChunkCoordinates; @@ -53,19 +55,15 @@ public static ChunkCoordinates findBlock3D(World world, int cX, int cY, int cZ, return null; } - private static ChunkCoordinates checkCoordsForBackpack(IBlockAccess world, int origX, int origZ, int cX, int cY, int cZ, boolean except) + @Nullable + private static ChunkCoordinates checkCoordsForBackpack(IBlockAccess world, int cX, int cY, int cZ) { - if (world.isAirBlock(cX, cY, cZ) || isReplaceable(world, cX, cY, cZ)) - { - return new ChunkCoordinates(cX, cY, cZ); - } - return null; + return isAirOrReplaceable(world, cX, cY, cZ) ? new ChunkCoordinates(cX, cY, cZ) : null; } - public static boolean isReplaceable(IBlockAccess world, int cX, int cY, int cZ) + private static boolean isAirOrReplaceable(IBlockAccess world, int cX, int cY, int cZ) { - Block block = world.getBlock(cX, cY, cZ); - return block.isReplaceable(world, cX, cY, cZ); + return world.isAirBlock(cX, cY, cZ) && world.getBlock(cX, cY, cZ).isReplaceable(world, cX, cY, cZ); } private static ChunkCoordinates checkCoordsForPlayer(IBlockAccess world, int origX, int origZ, int cX, int cY, int cZ, boolean except) @@ -118,7 +116,7 @@ public static ChunkCoordinates getNearestEmptyChunkCoordinatesSpiral(IBlockAcces { for (; i <= cX + steps; i++) { - ChunkCoordinates coords = type ? checkCoordsForPlayer(world, origX, origZ, cX, cY, cZ, except) : checkCoordsForBackpack(world, origX, origZ, cX, cY, cZ, except); + ChunkCoordinates coords = type ? checkCoordsForPlayer(world, origX, origZ, cX, cY, cZ, except) : checkCoordsForBackpack(world, cX, cY, cZ); if (coords != null) { return coords; @@ -131,7 +129,7 @@ public static ChunkCoordinates getNearestEmptyChunkCoordinatesSpiral(IBlockAcces { for (; j >= cZ - steps; j--) { - ChunkCoordinates coords = type ? checkCoordsForPlayer(world, origX, origZ, cX, cY, cZ, except) : checkCoordsForBackpack(world, origX, origZ, cX, cY, cZ, except); + ChunkCoordinates coords = type ? checkCoordsForPlayer(world, origX, origZ, cX, cY, cZ, except) : checkCoordsForBackpack(world, cX, cY, cZ); if (coords != null) { return coords; @@ -149,7 +147,7 @@ public static ChunkCoordinates getNearestEmptyChunkCoordinatesSpiral(IBlockAcces { for (; i >= cX - steps; i--) { - ChunkCoordinates coords = type ? checkCoordsForPlayer(world, origX, origZ, cX, cY, cZ, except) : checkCoordsForBackpack(world, origX, origZ, cX, cY, cZ, except); + ChunkCoordinates coords = type ? checkCoordsForPlayer(world, origX, origZ, cX, cY, cZ, except) : checkCoordsForBackpack(world, cX, cY, cZ); if (coords != null) { return coords; @@ -162,7 +160,7 @@ public static ChunkCoordinates getNearestEmptyChunkCoordinatesSpiral(IBlockAcces { for (; j <= cZ + steps; j++) { - ChunkCoordinates coords = type ? checkCoordsForPlayer(world, origX, origZ, cX, cY, cZ, except) : checkCoordsForBackpack(world, origX, origZ, cX, cY, cZ, except); + ChunkCoordinates coords = type ? checkCoordsForPlayer(world, origX, origZ, cX, cY, cZ, except) : checkCoordsForBackpack(world, cX, cY, cZ); if (coords != null) { return coords; From 46a9d8f4e213f309fd2f34a4cab857caa36baf44 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sat, 3 Mar 2018 05:15:25 +0700 Subject: [PATCH 450/462] Simplification, compaction, shooting on zombies --- .../adventurebackpack/CreativeTabAB.java | 2 +- .../block/BlockAdventureBackpack.java | 6 +- .../block/BlockCampFire.java | 2 +- .../block/TileAdventureBackpack.java | 25 ++-- .../adventurebackpack/block/TileCampfire.java | 6 +- .../client/audio/BoilingBoilerSound.java | 10 -- .../client/audio/CopterPackSound.java | 10 -- .../client/audio/JetpackSoundOn.java | 10 -- .../client/audio/LeakingBoilerSound.java | 10 -- .../client/audio/NyanMovingSound.java | 12 +- .../client/gui/GuiWithTanks.java | 3 +- .../client/models/ModelAdventureHat.java | 11 +- .../client/models/ModelBackpackArmor.java | 1 - .../client/models/ModelSleepingBag.java | 1 - .../RendererAdventureBackpackBlock.java | 13 +- .../client/render/RendererCampFire.java | 1 - .../client/render/RendererHose.java | 2 - .../render/RendererItemAdventureBackpack.java | 18 +-- .../common/BackpackRemovals.java | 14 --- .../common/ServerActions.java | 4 +- .../adventurebackpack/config/Keybindings.java | 6 +- .../adventurebackpack/entity/EntityBolt.java | 10 -- .../entity/EntityCrossbowProjectile.java | 10 -- .../entity/EntityFriendlySpider.java | 50 +------- .../entity/EntityInflatableBoat.java | 9 -- .../entity/ai/AvoidEntitySelector.java | 3 - .../ai/EntityAIAvoidPlayerWithBackpack.java | 15 --- .../fluids/effects/FuelEffect.java | 9 -- .../fluids/effects/MelonJuiceEffect.java | 9 -- .../fluids/effects/OilEffect.java | 9 -- .../handlers/ClientEventHandler.java | 3 +- .../handlers/PlayerEventHandler.java | 4 - .../adventurebackpack/init/ModRecipes.java | 7 +- .../adventurebackpack/init/ModWorldGen.java | 20 ++- .../init/recipes/BackpackRecipesList.java | 3 +- .../inventory/ContainerBackpack.java | 13 +- .../inventory/ContainerCopter.java | 14 +-- .../inventory/ContainerJetpack.java | 17 +-- .../adventurebackpack/item/ArmorAB.java | 2 +- .../adventurebackpack/item/ItemAB.java | 2 +- .../adventurebackpack/item/ItemAdventure.java | 6 + .../item/ItemAdventureBackpack.java | 54 +------- .../item/ItemCoalJetpack.java | 12 -- .../adventurebackpack/item/ItemComponent.java | 72 ++--------- .../item/ItemCopterPack.java | 19 --- .../adventurebackpack/item/ItemCrossbow.java | 4 - .../adventurebackpack/item/ItemHose.java | 46 +------ .../item/ItemJuiceBottle.java | 8 +- .../adventurebackpack/item/ItemMachete.java | 55 +------- .../adventurebackpack/item/ToolAB.java | 2 +- .../playerProperties/BackpackProperty.java | 55 +------- .../adventurebackpack/proxy/ClientProxy.java | 6 - .../adventurebackpack/proxy/IProxy.java | 3 - .../adventurebackpack/proxy/ServerProxy.java | 19 +-- .../reference/BackpackTypes.java | 22 ---- .../reference/WailaTileAdventureBackpack.java | 4 + .../adventurebackpack/util/BackpackUtils.java | 104 +++++++-------- .../adventurebackpack/util/Resources.java | 21 ++-- .../darkona/adventurebackpack/util/Utils.java | 119 +++++++++--------- 59 files changed, 216 insertions(+), 791 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/CreativeTabAB.java b/src/main/java/com/darkona/adventurebackpack/CreativeTabAB.java index fb063c75..b082bc49 100644 --- a/src/main/java/com/darkona/adventurebackpack/CreativeTabAB.java +++ b/src/main/java/com/darkona/adventurebackpack/CreativeTabAB.java @@ -13,7 +13,7 @@ */ public class CreativeTabAB { - public static final CreativeTabs ADVENTURE_BACKPACK_CREATIVE_TAB = new CreativeTabs(ModInfo.MOD_ID) + public static final CreativeTabs TAB_AB = new CreativeTabs(ModInfo.MOD_ID) { @Override public Item getTabIconItem() diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java index 1f4fb490..3edf7398 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockAdventureBackpack.java @@ -32,10 +32,10 @@ import com.darkona.adventurebackpack.AdventureBackpack; import com.darkona.adventurebackpack.client.Icons; import com.darkona.adventurebackpack.handlers.GuiHandler; -import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.reference.GeneralReference; import com.darkona.adventurebackpack.reference.ModInfo; +import com.darkona.adventurebackpack.util.BackpackUtils; import com.darkona.adventurebackpack.util.CoordsUtils; import static com.darkona.adventurebackpack.reference.BackpackTypes.BOOKSHELF; @@ -245,9 +245,7 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p @Override public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z, EntityPlayer player) { - ItemStack backpack = new ItemStack(ModItems.adventureBackpack, 1); - BackpackTypes.setBackpackTypeFromMeta(backpack, BackpackTypes.getMeta(getAssociatedTileBackpackType(world, x, y, z))); - return backpack; + return BackpackUtils.createBackpackStack(getAssociatedTileBackpackType(world, x, y, z)); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java b/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java index 89e4977b..a9879573 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java +++ b/src/main/java/com/darkona/adventurebackpack/block/BlockCampFire.java @@ -32,7 +32,7 @@ public BlockCampFire() { super(Material.rock); this.setTickRandomly(true); - this.setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); + this.setCreativeTab(CreativeTabAB.TAB_AB); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index d41b437b..f59500b7 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -20,7 +20,6 @@ import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.init.ModBlocks; -import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.inventory.IInventoryBackpack; import com.darkona.adventurebackpack.inventory.InventoryActions; import com.darkona.adventurebackpack.inventory.SlotBackpack; @@ -241,9 +240,11 @@ public void consumeInventoryItem(Item item) // Logic: from tile to item public boolean equip(World world, EntityPlayer player, int x, int y, int z) { - ItemStack stacky = new ItemStack(ModItems.adventureBackpack, 1); - transferToItemStack(stacky); removeSleepingBag(world); + + ItemStack stacky = BackpackUtils.createBackpackStack(type); + transferCompoundToStack(stacky); + if (BackpackUtils.equipWearable(stacky, player) != BackpackUtils.Reasons.SUCCESSFUL) { Wearing.WearableType wtype = Wearing.getWearingWearableType(player); @@ -259,9 +260,12 @@ public boolean equip(World world, EntityPlayer player, int x, int y, int z) public boolean drop(World world, EntityPlayer player, int x, int y, int z) { removeSleepingBag(world); - if (player.capabilities.isCreativeMode) return true; - ItemStack stacky = new ItemStack(ModItems.adventureBackpack, 1); - transferToItemStack(stacky); + + if (player.capabilities.isCreativeMode) + return true; + + ItemStack stacky = BackpackUtils.createBackpackStack(type); + transferCompoundToStack(stacky); float spawnX = x + world.rand.nextFloat(); float spawnY = y + world.rand.nextFloat(); @@ -269,19 +273,18 @@ public boolean drop(World world, EntityPlayer player, int x, int y, int z) EntityItem droppedItem = new EntityItem(world, spawnX, spawnY, spawnZ, stacky); float mult = 0.05F; - droppedItem.motionX = (-0.5F + world.rand.nextFloat()) * mult; - droppedItem.motionY = (4 + world.rand.nextFloat()) * mult; - droppedItem.motionZ = (-0.5F + world.rand.nextFloat()) * mult; + droppedItem.motionX = (-0.3F + world.rand.nextFloat()) * mult; + droppedItem.motionY = (3 + world.rand.nextFloat()) * mult; + droppedItem.motionZ = (-0.3F + world.rand.nextFloat()) * mult; return world.spawnEntityInWorld(droppedItem); } - private void transferToItemStack(ItemStack stack) //TODO replace by BackpackUtils.createBackpackStack() + private void transferCompoundToStack(ItemStack stack) { NBTTagCompound compound = new NBTTagCompound(); saveToNBT(compound); stack.setTagCompound(compound); - stack.setItemDamage(BackpackTypes.getMeta(type)); // save the meta, cuz why not } // Sleeping Bag diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileCampfire.java b/src/main/java/com/darkona/adventurebackpack/block/TileCampfire.java index 066aebbb..ec6e9d86 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileCampfire.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileCampfire.java @@ -10,11 +10,11 @@ */ public class TileCampfire extends TileEntity { + private int burnTicks; + private ItemStack[] foodCooking = new ItemStack[4]; + public TileCampfire() { } - - private int burnTicks; - private ItemStack[] foodCooking = new ItemStack[4]; } diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java index 94b13d15..bf0c9f93 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/BoilingBoilerSound.java @@ -28,16 +28,6 @@ public BoilingBoilerSound(EntityPlayer player) thePlayer = player; } - public EntityPlayer getThePlayer() - { - return thePlayer; - } - - public void setThePlayer(EntityPlayer player) - { - thePlayer = player; - } - public void setDonePlaying() { repeat = false; diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java index 85f2b792..f1ba46f6 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/CopterPackSound.java @@ -33,16 +33,6 @@ public CopterPackSound(EntityPlayer player) thePlayer = player; } - public EntityPlayer getThePlayer() - { - return thePlayer; - } - - public void setThePlayer(EntityPlayer player) - { - thePlayer = player; - } - public void setRepeat(boolean newRepeat) { LogHelper.info("Setting sound repeat"); diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java b/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java index c4f62e68..911d299c 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/JetpackSoundOn.java @@ -28,16 +28,6 @@ public JetpackSoundOn(EntityPlayer player) thePlayer = player; } - public EntityPlayer getThePlayer() - { - return thePlayer; - } - - public void setThePlayer(EntityPlayer player) - { - thePlayer = player; - } - public void setDonePlaying() { repeat = false; diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java index a62e36cd..d013a2bd 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/LeakingBoilerSound.java @@ -28,16 +28,6 @@ public LeakingBoilerSound(EntityPlayer player) thePlayer = player; } - public EntityPlayer getThePlayer() - { - return thePlayer; - } - - public void setThePlayer(EntityPlayer player) - { - thePlayer = player; - } - public void setDonePlaying() { repeat = false; diff --git a/src/main/java/com/darkona/adventurebackpack/client/audio/NyanMovingSound.java b/src/main/java/com/darkona/adventurebackpack/client/audio/NyanMovingSound.java index 14727933..667402c1 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/audio/NyanMovingSound.java +++ b/src/main/java/com/darkona/adventurebackpack/client/audio/NyanMovingSound.java @@ -17,19 +17,9 @@ public class NyanMovingSound extends MovingSound { public static NyanMovingSound instance = new NyanMovingSound(); - public EntityPlayer getPlayer() - { - return player; - } - - public NyanMovingSound setPlayer(EntityPlayer p) - { - this.player = p; - return this; - } - private EntityPlayer player; + public NyanMovingSound(EntityPlayer player) { super(new ResourceLocation(ModInfo.MOD_ID, "nyan")); diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java index 5bd3901b..1c09babd 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiWithTanks.java @@ -93,7 +93,8 @@ public void handleMouseInput() { if (j > marginY && j < marginY + ySize) { - return; // forbid mouseWheel when mouse over our GUI, + return; + // forbid mouseWheel when mouse over our GUI, // Shift+Wheel on stacks of fluid containers places them to clients bucket slots, causes desync } } diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelAdventureHat.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelAdventureHat.java index ffb05cc3..01b16a0b 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelAdventureHat.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelAdventureHat.java @@ -6,10 +6,9 @@ public class ModelAdventureHat extends ModelBiped { - //fields - ModelRenderer wing; - ModelRenderer top; - ModelRenderer thing; + private ModelRenderer wing; + private ModelRenderer top; + private ModelRenderer thing; public static ModelAdventureHat instance = new ModelAdventureHat(); @@ -44,6 +43,7 @@ public ModelAdventureHat() this.bipedHead.addChild(thing); } + @Override public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { setRotationAngles(entity, f, f1, f2, f3, f4, f5); @@ -54,12 +54,9 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f ((ModelRenderer) part).rotateAngleY = bipedHead.rotateAngleY; ((ModelRenderer) part).rotateAngleZ = bipedHead.rotateAngleZ; } - /*GL11.glPushMatrix(); - GL11.glScalef(1.2f, 1.2f, 1.2f);*/ wing.render(f5); thing.render(f5); top.render(f5); - /* GL11.glPopMatrix();*/ } private void setRotation(ModelRenderer model, float x, float y, float z) diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java index 7ae6cd37..387e027c 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java @@ -309,7 +309,6 @@ private void renderBackpack(Float scale) @Override public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - isSneak = ((entity != null) && (entity).isSneaking()); setRotationAngles(f, f1, f2, f3, f4, f5, entity); float oV = (isSneak) ? 0 : .3F; diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelSleepingBag.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelSleepingBag.java index 07c3e270..8edd5465 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelSleepingBag.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelSleepingBag.java @@ -13,7 +13,6 @@ public class ModelSleepingBag extends ModelBase { - //fields ModelRenderer footer; ModelRenderer header; ModelRenderer pillow; diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java index 4f2af03f..1084fe02 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererAdventureBackpackBlock.java @@ -9,8 +9,6 @@ import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.client.models.ModelBackpackBlock; -import com.darkona.adventurebackpack.init.ModDates; -import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.util.Resources; /** @@ -21,7 +19,6 @@ public class RendererAdventureBackpackBlock extends TileEntitySpecialRenderer { - //private ModelAdventureBackpackBlock model; private ModelBackpackBlock model; public RendererAdventureBackpackBlock() @@ -63,15 +60,7 @@ public void renderTileEntityAt(TileEntity te, double x, double y, double z, floa { GL11.glRotatef(dir * (-180F), 0.0F, 1.0F, 0.0F); } - ResourceLocation modelTexture; - if (tileBackpack.getType() == BackpackTypes.STANDARD) - { - modelTexture = Resources.backpackTextureFromString(ModDates.getHoliday()); - } - else - { - modelTexture = Resources.backpackTextureFromSkin(tileBackpack); - } + ResourceLocation modelTexture = Resources.getBackpackTexture(tileBackpack.getType()); bindTexture(modelTexture); model.render(null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 1 / 20F, tileBackpack); diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererCampFire.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererCampFire.java index 8d18ddfd..66eea57b 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererCampFire.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererCampFire.java @@ -17,7 +17,6 @@ */ public class RendererCampFire extends TileEntitySpecialRenderer { - //private ModelAdventureBackpackBlock model; private ModelCampFire model; public RendererCampFire() diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java index 9e020d3d..60d08070 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererHose.java @@ -19,9 +19,7 @@ public class RendererHose implements IItemRenderer { private static RenderItem renderHose = new RenderItem(); - @SuppressWarnings("FieldCanBeLocal") private FontRenderer fontRenderer; - //private Tessellator tessellator = Tessellator.instance; @Override public boolean handleRenderType(ItemStack item, ItemRenderType type) diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java index f5ce8775..2c3a0955 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererItemAdventureBackpack.java @@ -8,7 +8,6 @@ import net.minecraftforge.client.IItemRenderer; import com.darkona.adventurebackpack.client.models.ModelBackpackBlock; -import com.darkona.adventurebackpack.init.ModDates; import com.darkona.adventurebackpack.inventory.InventoryBackpack; import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.util.Resources; @@ -67,21 +66,13 @@ public boolean shouldUseRenderHelper(IItemRenderer.ItemRenderType type, ItemStac } @Override - public void renderItem(IItemRenderer.ItemRenderType type, ItemStack backpack, Object... data) + public void renderItem(IItemRenderer.ItemRenderType renderType, ItemStack backpack, Object... data) { InventoryBackpack inv = new InventoryBackpack(backpack); - ResourceLocation modelTexture; - if (BackpackTypes.getType(backpack) == BackpackTypes.STANDARD) - { - modelTexture = Resources.backpackTextureFromString(ModDates.getHoliday()); - } - else - { - modelTexture = Resources.backpackTextureFromSkin(inv); - } - switch (type) - { + ResourceLocation modelTexture = Resources.getBackpackTexture(BackpackTypes.getType(backpack)); + switch (renderType) + { case INVENTORY: Minecraft.getMinecraft().renderEngine.bindTexture(modelTexture); { @@ -187,4 +178,5 @@ public void renderItem(IItemRenderer.ItemRenderType type, ItemStack backpack, Ob break; } } + } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java index a7aa7d72..94fa1781 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackRemovals.java @@ -142,19 +142,5 @@ public void itemRainbow(EntityPlayer player, World world, ItemStack backpack) } } } - /*potion = null; - if (player.isPotionActive(Potion.jump.id)) { - potion = player.getActivePotionEffect(Potion.jump); - if (potion != null && potion.getAmplifier() == 1) - { - if (player.worldObj.isRemote) - { - player.removePotionEffectClient(Potion.jump.id); - } else - { - player.removePotionEffect(Potion.jump.id); - } - } - }*/ } } diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index a710bbc1..6e44d448 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -149,11 +149,11 @@ public static void electrify(EntityPlayer player) if (BackpackTypes.getType(backpack) == BackpackTypes.PIG) { - BackpackTypes.setBackpackType(backpack, BackpackTypes.PIGMAN); + BackpackUtils.setBackpackType(backpack, BackpackTypes.PIGMAN); } if (BackpackTypes.getType(backpack) == BackpackTypes.DIAMOND) { - BackpackTypes.setBackpackType(backpack, BackpackTypes.ELECTRIC); + BackpackUtils.setBackpackType(backpack, BackpackTypes.ELECTRIC); } } diff --git a/src/main/java/com/darkona/adventurebackpack/config/Keybindings.java b/src/main/java/com/darkona/adventurebackpack/config/Keybindings.java index 6a30d356..f856cf6e 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/Keybindings.java +++ b/src/main/java/com/darkona/adventurebackpack/config/Keybindings.java @@ -12,12 +12,12 @@ */ public class Keybindings { - private static final String CATEGORY = "keys.adventureBackpack.category"; + private static final String KEYS_CATEGORY = "keys.adventureBackpack.category"; private static final String OPEN_INVENTORY = "keys.adventureBackpack.openInventory"; private static final String TOGGLE_ACTIONS = "keys.adventureBackpack.toggleActions"; - public static KeyBinding openInventory = new KeyBinding(OPEN_INVENTORY, Keyboard.KEY_B, CATEGORY); - public static KeyBinding toggleActions = new KeyBinding(TOGGLE_ACTIONS, Keyboard.KEY_N, CATEGORY); + public static KeyBinding openInventory = new KeyBinding(OPEN_INVENTORY, Keyboard.KEY_B, KEYS_CATEGORY); + public static KeyBinding toggleActions = new KeyBinding(TOGGLE_ACTIONS, Keyboard.KEY_N, KEYS_CATEGORY); public static String getInventoryKeyName() { diff --git a/src/main/java/com/darkona/adventurebackpack/entity/EntityBolt.java b/src/main/java/com/darkona/adventurebackpack/entity/EntityBolt.java index 2679a751..1b1beef3 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/EntityBolt.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/EntityBolt.java @@ -25,8 +25,6 @@ protected void entityInit() /** * (abstract) Protected helper method to read subclass entity data from NBT. - * - * @param compound */ @Override protected void readEntityFromNBT(NBTTagCompound compound) @@ -36,8 +34,6 @@ protected void readEntityFromNBT(NBTTagCompound compound) /** * (abstract) Protected helper method to write subclass entity data to NBT. - * - * @param compound */ @Override protected void writeEntityToNBT(NBTTagCompound compound) @@ -47,12 +43,6 @@ protected void writeEntityToNBT(NBTTagCompound compound) /** * Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction. - * - * @param x - * @param y - * @param z - * @param speedMultiplier - * @param whatever */ @Override public void setThrowableHeading(double x, double y, double z, float speedMultiplier, float whatever) diff --git a/src/main/java/com/darkona/adventurebackpack/entity/EntityCrossbowProjectile.java b/src/main/java/com/darkona/adventurebackpack/entity/EntityCrossbowProjectile.java index 38ac208a..0c91f721 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/EntityCrossbowProjectile.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/EntityCrossbowProjectile.java @@ -25,8 +25,6 @@ protected void entityInit() /** * (abstract) Protected helper method to read subclass entity data from NBT. - * - * @param p_70037_1_ */ @Override protected void readEntityFromNBT(NBTTagCompound p_70037_1_) @@ -36,8 +34,6 @@ protected void readEntityFromNBT(NBTTagCompound p_70037_1_) /** * (abstract) Protected helper method to write subclass entity data to NBT. - * - * @param p_70014_1_ */ @Override protected void writeEntityToNBT(NBTTagCompound p_70014_1_) @@ -47,12 +43,6 @@ protected void writeEntityToNBT(NBTTagCompound p_70014_1_) /** * Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction. - * - * @param p_70186_1_ - * @param p_70186_3_ - * @param p_70186_5_ - * @param p_70186_7_ - * @param p_70186_8_ */ @Override public void setThrowableHeading(double p_70186_1_, double p_70186_3_, double p_70186_5_, float p_70186_7_, float p_70186_8_) diff --git a/src/main/java/com/darkona/adventurebackpack/entity/EntityFriendlySpider.java b/src/main/java/com/darkona/adventurebackpack/entity/EntityFriendlySpider.java index 0588df97..3da598b2 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/EntityFriendlySpider.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/EntityFriendlySpider.java @@ -34,12 +34,10 @@ */ public class EntityFriendlySpider extends EntityCreature { - private float prevRearingAmount; private int jumpTicks; private EntityPlayer owner; private boolean tamed = false; - @SuppressWarnings("FieldCanBeLocal") private final EntityAIControlledByPlayer aiControlledByPlayer; @Override @@ -81,27 +79,18 @@ public int getTalkInterval() return 300; } - /** - * Returns the sound this mob makes while it's alive. - */ @Override protected String getLivingSound() { return "mob.spider.say"; } - /** - * Returns the sound this mob makes when it is hurt. - */ @Override protected String getHurtSound() { return "mob.spider.say"; } - /** - * Returns the sound this mob makes on death. - */ @Override protected String getDeathSound() { @@ -157,19 +146,12 @@ else if (super.attackEntityFrom(damageSource, amount)) } } - /** - * Takes a coordinate in and returns a weight to determine how likely this creature will try to path to the block. - * Args: x, y, z - */ @Override public float getBlockPathWeight(int p_70783_1_, int p_70783_2_, int p_70783_3_) { return 0.5F - this.worldObj.getLightBrightness(p_70783_1_, p_70783_2_, p_70783_3_); } - /** - * Checks if the entity's current position is a valid location to spawn this entity. - */ @Override public boolean getCanSpawnHere() { @@ -182,30 +164,18 @@ protected boolean func_146066_aG() return true; } - /** - * Returns the item that this EntityLiving is holding, if any. - */ @Override public ItemStack getHeldItem() { return null; } - /** - * 0: Tool in Hand; 1-4: Armor - */ @Override public ItemStack getEquipmentInSlot(int slot) { return null; } - /** - * Sets the held item, or an armor slot. Slot 0 is held item. Slot 1-4 is armor. Params: Item, slot - * - * @param slot - * @param stack - */ @Override public void setCurrentItemOrArmor(int slot, ItemStack stack) { @@ -253,6 +223,7 @@ protected Entity findPlayerToAttack() { if (this.riddenByEntity != null) return null; + float f = this.getBrightness(1.0F); if (f < 0.5F) @@ -508,7 +479,7 @@ public void updateRiderPosition() } - public void spiderJump() + public void spiderJump() //TODO { this.getJumpHelper().setJumping(); //this.getJumpHelper().doJump(); @@ -542,9 +513,6 @@ else if (i <= 4) } } - /** - * Basic mob attack. Default to touch of death in EntityCreature. Overridden by each mob to define their attack. - */ @Override protected void attackEntity(Entity p_70785_1_, float p_70785_2_) { @@ -581,10 +549,6 @@ protected Item getDropItem() return Items.string; } - /** - * Drop 0-2 items of this living's type. @param par1 - Whether this entity has recently been hit by a player. @param - * par2 - Level of Looting used to kill this mob. - */ @Override protected void dropFewItems(boolean p_70628_1_, int p_70628_2_) { @@ -596,26 +560,18 @@ protected void dropFewItems(boolean p_70628_1_, int p_70628_2_) } } - /** - * returns true if this entity is by a ladder, false otherwise - */ @Override public boolean isOnLadder() { return this.isBesideClimbableBlock(); } - /** - * Sets the Entity inside a web block. - */ @Override public void setInWeb() { + } - /** - * Get this Entity's EnumCreatureAttribute - */ @Override public EnumCreatureAttribute getCreatureAttribute() { diff --git a/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java b/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java index e3c597b4..4dda1d95 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/EntityInflatableBoat.java @@ -77,9 +77,6 @@ public boolean isInflated() return inflated; } - /** - * Called to update the entity's position/logic. - */ @Override public void onUpdate() { @@ -420,9 +417,6 @@ public boolean interactFirst(EntityPlayer p_130002_1_) } } - /** - * Save the entity to NBT (calls an abstract helper method to write extra data) - */ @Override public void writeToNBT(NBTTagCompound compound) { @@ -430,9 +424,6 @@ public void writeToNBT(NBTTagCompound compound) writeEntityToNBT(compound); } - /** - * Reads the entity from NBT (calls an abstract helper method to read specialized data) - */ @Override public void readFromNBT(NBTTagCompound compound) { diff --git a/src/main/java/com/darkona/adventurebackpack/entity/ai/AvoidEntitySelector.java b/src/main/java/com/darkona/adventurebackpack/entity/ai/AvoidEntitySelector.java index b9e6e81c..86e5c4d9 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/ai/AvoidEntitySelector.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/ai/AvoidEntitySelector.java @@ -12,9 +12,6 @@ public class AvoidEntitySelector implements IEntitySelector this.entityAvoiderAI = par1EntityAIAvoidEntity; } - /** - * Return whether the specified com.darkona.adventurebackpack.entity is applicable to this filter. - */ @Override public boolean isEntityApplicable(Entity par1Entity) { diff --git a/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIAvoidPlayerWithBackpack.java b/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIAvoidPlayerWithBackpack.java index 0c493dbe..f4752534 100644 --- a/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIAvoidPlayerWithBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/entity/ai/EntityAIAvoidPlayerWithBackpack.java @@ -61,9 +61,6 @@ public EntityAIAvoidPlayerWithBackpack(EntityCreature par1EntityCreature, Class this.type = type; } - /** - * Returns whether the EntityAIBase should begin execution. - */ @Override public boolean shouldExecute() { @@ -113,36 +110,24 @@ else if (this.closestLivingEntity.getDistanceSq(vec3.xCoord, vec3.yCoord, vec3.z return false; } - /** - * Returns whether an in-progress EntityAIBase should continue executing - */ @Override public boolean continueExecuting() { return !this.entityPathNavigate.noPath(); } - /** - * Execute a one shot task or start executing a continuous task - */ @Override public void startExecuting() { this.entityPathNavigate.setPath(this.entityPathEntity, this.farSpeed); } - /** - * Resets the task - */ @Override public void resetTask() { this.closestLivingEntity = null; } - /** - * Updates the task - */ @Override public void updateTask() { diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/effects/FuelEffect.java b/src/main/java/com/darkona/adventurebackpack/fluids/effects/FuelEffect.java index bceda7cb..56f2cd1e 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/effects/FuelEffect.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/effects/FuelEffect.java @@ -23,15 +23,6 @@ public FuelEffect() super(FluidRegistry.getFluid("fuel"), 20); } - /** - * This method determines what will happen to the player when drinking the - * corresponding fluid. For example set potion effects, set player on fire, - * heal, fill hunger, etc. You can use the world parameter to make - * conditions based on where the player is. - * - * @param world The World. - * @param entity The Player. - */ @Override public void affectDrinker(World world, Entity entity) { diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/effects/MelonJuiceEffect.java b/src/main/java/com/darkona/adventurebackpack/fluids/effects/MelonJuiceEffect.java index 957e941c..1998784b 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/effects/MelonJuiceEffect.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/effects/MelonJuiceEffect.java @@ -20,15 +20,6 @@ public MelonJuiceEffect() super(ModFluids.melonJuice, 30); } - /** - * This method determines what will happen to the player when drinking the - * corresponding fluid. For example set potion effects, set player on fire, - * heal, fill hunger, etc. You can use the world parameter to make - * conditions based on where the player is. - * - * @param world The World. - * @param entity The Player. - */ @Override public void affectDrinker(World world, Entity entity) { diff --git a/src/main/java/com/darkona/adventurebackpack/fluids/effects/OilEffect.java b/src/main/java/com/darkona/adventurebackpack/fluids/effects/OilEffect.java index 33fcbb87..fb56a454 100644 --- a/src/main/java/com/darkona/adventurebackpack/fluids/effects/OilEffect.java +++ b/src/main/java/com/darkona/adventurebackpack/fluids/effects/OilEffect.java @@ -19,15 +19,6 @@ public OilEffect() super(FluidRegistry.getFluid("oil"), 20); } - /** - * This method determines what will happen to the player when drinking the - * corresponding fluid. For example set potion effects, set player on fire, - * heal, fill hunger, etc. You can use the world parameter to make - * conditions based on where the player is. - * - * @param world The World. - * @param entity The Player. - */ @Override public void affectDrinker(World world, Entity entity) { diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java index 798d6c9c..74427783 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java @@ -55,8 +55,7 @@ public void mouseWheelDetect(MouseEvent event) ServerActions.cycleTool(player, isWheelUp, slot); event.setCanceled(true); } - - if (theItem instanceof ItemHose) + else if (theItem instanceof ItemHose) { ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(isWheelUp, slot, CycleToolPacket.SWITCH_HOSE_ACTION)); ServerActions.switchHose(player, isWheelUp, ServerActions.HOSE_SWITCH); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index a74a7922..1a4515b1 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -57,10 +57,6 @@ public void registerBackpackProperty(EntityEvent.EntityConstructing event) if (event.entity instanceof EntityPlayer && BackpackProperty.get((EntityPlayer) event.entity) == null) { BackpackProperty.register((EntityPlayer) event.entity); - /*if (!event.entity.worldObj.isRemote) - { - AdventureBackpack.proxy.joinPlayer((EntityPlayer)event.entity); - }*/ } } diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java index c5220ff9..6c1724a3 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java @@ -21,11 +21,6 @@ */ public class ModRecipes { - private static ItemStack bc(int meta) - { - return BackpackTypes.setBackpackTypeFromMeta(new ItemStack(ModItems.adventureBackpack), meta); - } - public static void init() { if (ConfigHandler.recipeSaddle) @@ -258,7 +253,7 @@ public static void init() { if (field.getName().equals(BackpackTypes.getSkinName(type))) { - GameRegistry.addRecipe(new ShapedOreRecipe(BackpackTypes.setBackpackTypeFromMeta(new ItemStack(ModItems.adventureBackpack), BackpackTypes.getMeta(type)), (Object[]) field.get(br))); + GameRegistry.addRecipe(new ShapedOreRecipe(BackpackUtils.createBackpackStack(type), (Object[]) field.get(br))); counter++; } } diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java b/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java index 3c3df8d8..cd2be860 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModWorldGen.java @@ -13,6 +13,7 @@ import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.reference.BackpackTypes; +import com.darkona.adventurebackpack.util.BackpackUtils; import static com.darkona.adventurebackpack.reference.BackpackTypes.BAT; import static com.darkona.adventurebackpack.reference.BackpackTypes.IRON_GOLEM; @@ -30,31 +31,31 @@ public class ModWorldGen public static void init() { { - ItemStack backpack = BackpackTypes.setBackpackTypeFromMeta(new ItemStack(ModItems.adventureBackpack), BackpackTypes.getMeta(VILLAGER)); + ItemStack backpack = BackpackUtils.createBackpackStack(VILLAGER); VillagerRegistry.instance().registerVillageTradeHandler(1, new ModWorldGen.TradeHandler(backpack)); VillagerRegistry.instance().registerVillageTradeHandler(2, new ModWorldGen.TradeHandler(backpack)); VillagerRegistry.instance().registerVillageTradeHandler(3, new ModWorldGen.TradeHandler(backpack)); } if (ConfigHandler.allowGolemGen) { - ItemStack backpack = BackpackTypes.setBackpackTypeFromMeta(new ItemStack(ModItems.adventureBackpack), BackpackTypes.getMeta(IRON_GOLEM)); + ItemStack backpack = BackpackUtils.createBackpackStack(IRON_GOLEM); ChestGenHooks.addItem(ChestGenHooks.VILLAGE_BLACKSMITH, new WeightedRandomChestContent(backpack, 1, 1, 2)); } if (ConfigHandler.allowBatGen) { - ItemStack backpack = BackpackTypes.setBackpackTypeFromMeta(new ItemStack(ModItems.adventureBackpack), BackpackTypes.getMeta(BAT)); + ItemStack backpack = BackpackUtils.createBackpackStack(BAT); ChestGenHooks.addItem(ChestGenHooks.DUNGEON_CHEST, new WeightedRandomChestContent(backpack, 1, 1, 2)); ChestGenHooks.addItem(ChestGenHooks.MINESHAFT_CORRIDOR, new WeightedRandomChestContent(backpack, 1, 1, 12)); } if (ConfigHandler.allowPigmanGen) { - ItemStack backpack = BackpackTypes.setBackpackTypeFromMeta(new ItemStack(ModItems.adventureBackpack), BackpackTypes.getMeta(PIGMAN)); + ItemStack backpack = BackpackUtils.createBackpackStack(PIGMAN); ChestGenHooks.addItem(ChestGenHooks.PYRAMID_DESERT_CHEST, new WeightedRandomChestContent(backpack, 1, 1, 12)); VillagerRegistry.instance().registerVillageTradeHandler(BackpackTypes.getMeta(PIGMAN), new ModWorldGen.TradeHandler(backpack)); } if (ConfigHandler.allowBonusGen) { - ItemStack backpack = BackpackTypes.setBackpackTypeFromMeta(new ItemStack(ModItems.adventureBackpack), BackpackTypes.getMeta(STANDARD)); + ItemStack backpack = BackpackUtils.createBackpackStack(STANDARD); ChestGenHooks.addItem(ChestGenHooks.BONUS_CHEST, new WeightedRandomChestContent(backpack, 0, 1, 5)); } } @@ -68,10 +69,6 @@ public static class TradeHandler implements VillagerRegistry.IVillageTradeHandle this.backpack = backpack; } - /** - * Called to allow changing the content of the {@link net.minecraft.village.MerchantRecipeList} for the villager - * supplied during creation - */ @Override @SuppressWarnings("unchecked") public void manipulateTradesForVillager(EntityVillager villager, MerchantRecipeList recipeList, Random random) @@ -79,13 +76,12 @@ public void manipulateTradesForVillager(EntityVillager villager, MerchantRecipeL //0 Farmer, 1 Librarian, 2Priest, 3 Blacksmith, 4 Butcher if (villager.getProfession() == 1 || villager.getProfession() == 2) { - ItemStack payment = BackpackTypes.setBackpackTypeFromMeta(new ItemStack(ModItems.adventureBackpack), 0); + ItemStack payment = BackpackUtils.createBackpackStack(STANDARD); recipeList.add(new MerchantRecipe(new ItemStack(Items.emerald, 10), payment, this.backpack)); } if (villager.getProfession() == 3) { - ItemStack payment = new ItemStack(ModItems.adventureBackpack); - BackpackTypes.setBackpackType(payment, IRON_GOLEM); + ItemStack payment = BackpackUtils.createBackpackStack(IRON_GOLEM); recipeList.add(new MerchantRecipe(new ItemStack(Items.emerald, 10), payment, this.backpack)); } } diff --git a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipesList.java b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipesList.java index 81f3ee9c..6c610d76 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipesList.java +++ b/src/main/java/com/darkona/adventurebackpack/init/recipes/BackpackRecipesList.java @@ -8,6 +8,7 @@ import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.reference.BackpackTypes; +import com.darkona.adventurebackpack.util.BackpackUtils; /** * Created on 20/10/2014 @@ -21,7 +22,7 @@ public class BackpackRecipesList public BackpackRecipesList() { String[] covered = {"XXX", "XaX", "XXX"}; - ItemStack backpack = BackpackTypes.setBackpackTypeFromMeta(new ItemStack(ModItems.adventureBackpack), 0); + ItemStack backpack = BackpackUtils.createBackpackStack(BackpackTypes.STANDARD); ItemStack woolWhite = new ItemStack(Blocks.wool, 1, 0); ItemStack woolOrange = new ItemStack(Blocks.wool, 1, 1); diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index 7422cf02..b9f8480a 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -127,23 +127,16 @@ protected boolean transferStackToPack(ItemStack stack) if (SlotTool.isValidTool(stack)) { if (!mergeToolSlot(stack)) - { if (SlotBackpack.isValidItem(stack)) - { - if (!mergeBackpackInv(stack)) - return false; - } - } + return mergeBackpackInv(stack); } else if (SlotFluid.isContainer(stack) && !isHoldingSpace()) { - if (!transferFluidContainer(stack)) - return false; + return transferFluidContainer(stack); } else if (SlotBackpack.isValidItem(stack)) { - if (!mergeBackpackInv(stack)) - return false; + return mergeBackpackInv(stack); } return true; } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java index 60c2a3c5..f7cfc555 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerCopter.java @@ -49,24 +49,14 @@ public boolean transferStackToPack(ItemStack stack) if (SlotFluid.isFilled(stack)) { if ((stackOut == null || areSameType) && SlotFluidFuel.isValidItem(stack)) - { if (isFuelTankEmpty || suitableToTank) - { - if (!mergeBucket(stack)) - return false; - } - } + return mergeBucket(stack); } else if (SlotFluid.isEmpty(stack)) { if ((stackOut == null || areSameType) && SlotFluidFuel.isValidItem(stack)) - { if (!isFuelTankEmpty) - { - if (!mergeBucket(stack)) - return false; - } - } + return mergeBucket(stack); } } return true; diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java index 70239b56..db18ade1 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerJetpack.java @@ -67,30 +67,19 @@ public boolean transferStackToPack(ItemStack stack) if (SlotFluid.isFilled(stack)) { if ((stackOut == null || areSameType) && SlotFluidWater.isValidItem(stack)) - { if (isWaterTankEmpty || suitableToTank) - { - if (!mergeBucket(stack)) - return false; - } - } + return mergeBucket(stack); } else if (SlotFluid.isEmpty(stack)) { if ((stackOut == null || areSameType) && SlotFluidWater.isValidItem(stack)) - { if (!isWaterTankEmpty) - { - if (!mergeBucket(stack)) - return false; - } - } + return mergeBucket(stack); } } else if (SlotFuel.isValidItem(stack)) { - if (!mergeFuel(stack)) - return false; + return mergeFuel(stack); } return true; } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ArmorAB.java b/src/main/java/com/darkona/adventurebackpack/item/ArmorAB.java index da812d36..4cc45f8a 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ArmorAB.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ArmorAB.java @@ -26,7 +26,7 @@ public class ArmorAB extends ItemArmor ArmorAB(int renderIndex, int type) { super(ModMaterials.ruggedLeather, renderIndex, type); - setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); + setCreativeTab(CreativeTabAB.TAB_AB); } private String getUnwrappedUnlocalizedName(String unlocalizedName) diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAB.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAB.java index 5098fd05..65cbcdc9 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAB.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAB.java @@ -17,7 +17,7 @@ public class ItemAB extends Item ItemAB() { super(); - setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); + setCreativeTab(CreativeTabAB.TAB_AB); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventure.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventure.java index ec25281a..3fcfd28e 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventure.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventure.java @@ -22,6 +22,12 @@ public ItemAdventure() setMaxStackSize(1); } + @Override + public boolean isDamageable() + { + return false; + } + @Override public int getItemEnchantability() { diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index c4b0ecbd..90e0d430 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -4,8 +4,6 @@ import net.minecraft.client.model.ModelBiped; import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -16,19 +14,18 @@ import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.common.util.ForgeDirection; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import com.darkona.adventurebackpack.block.BlockAdventureBackpack; import com.darkona.adventurebackpack.block.TileAdventureBackpack; -import com.darkona.adventurebackpack.client.models.ModelBackpackArmor; import com.darkona.adventurebackpack.common.BackpackAbilities; import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.events.WearableEvent; import com.darkona.adventurebackpack.init.ModBlocks; -import com.darkona.adventurebackpack.init.ModDates; import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.network.GUIPacket; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; @@ -83,10 +80,10 @@ public void addInformation(ItemStack stack, EntityPlayer player, List list, bool } @Override - public void onCreated(ItemStack stack, World par2World, EntityPlayer par3EntityPlayer) + public void onCreated(ItemStack stack, World world, EntityPlayer player) { - super.onCreated(stack, par2World, par3EntityPlayer); - BackpackTypes.setBackpackTypeFromMeta(stack, stack.getItemDamage()); + super.onCreated(stack, world, player); + BackpackUtils.setBackpackType(stack, BackpackTypes.getType(stack.getItemDamage())); } @Override @@ -256,7 +253,7 @@ public double getDurabilityForDisplay(ItemStack stack) private int getItemCount(ItemStack backpack) { - NBTTagList itemList = BackpackUtils.getInventoryTag(backpack); + NBTTagList itemList = BackpackUtils.getWearableCompound(backpack).getTagList(Constants.TAG_INVENTORY, NBT.TAG_COMPOUND); int itemCount = itemList.tagCount(); for (int i = itemCount - 1; i >= 0; i--) { @@ -274,29 +271,6 @@ public boolean showDurabilityBar(ItemStack stack) return ConfigHandler.enableFullnessBar && getItemCount(stack) > 0; } - @Override - @SideOnly(Side.CLIENT) - public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack stack, int armorSlot) - { - return new ModelBackpackArmor(); - } - - @Override - @SideOnly(Side.CLIENT) - public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) - { - String modelTexture; - if (BackpackTypes.getType(stack) == BackpackTypes.STANDARD) //TODO see RendererAdventureBackpackBlock and RendererItemAdventureBackpack for same code - { - modelTexture = Resources.backpackTextureFromString(ModDates.getHoliday()).toString(); - } - else - { - modelTexture = Resources.backpackTexturesStringFromSkin(stack); - } - return modelTexture; - } - @Override @SideOnly(Side.CLIENT) public ModelBiped getWearableModel(ItemStack wearable) @@ -308,22 +282,6 @@ public ModelBiped getWearableModel(ItemStack wearable) @SideOnly(Side.CLIENT) public ResourceLocation getWearableTexture(ItemStack wearable) { - ResourceLocation modelTexture; - - if (BackpackTypes.getType(wearable) == BackpackTypes.STANDARD) - { - modelTexture = Resources.backpackTextureFromString(ModDates.getHoliday()); - } - else - { - modelTexture = Resources.backpackTextureFromString(BackpackTypes.getSkinName(wearable)); - } - return modelTexture; - } - - @Override - public boolean isDamageable() - { - return false; + return Resources.getBackpackTexture(BackpackTypes.getType(wearable)); } } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index 6b4c4af9..36792ece 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -5,7 +5,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelBiped; import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; @@ -301,16 +300,6 @@ private int getBiomeMinTemp(EntityPlayer player, World world) return 25; } - @Override - @SideOnly(Side.CLIENT) - public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) - { - String modelTexture; - modelTexture = Resources.modelTextures("coalJetpack").toString(); - - return modelTexture; - } - @Override @SideOnly(Side.CLIENT) public ModelBiped getWearableModel(ItemStack wearable) @@ -325,5 +314,4 @@ public ResourceLocation getWearableTexture(ItemStack wearable) return Resources.modelTextures("coalJetpack"); } - } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java b/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java index 1da4ac5a..df8dc4c6 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemComponent.java @@ -28,7 +28,7 @@ */ public class ItemComponent extends ItemAB { - private HashMap componentIcons = new HashMap(); + private HashMap componentIcons = new HashMap<>(); private String[] names = { "sleepingBag", "backpackTank", @@ -53,13 +53,11 @@ public ItemComponent() @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister iconRegister) { - for (String name : names) { IIcon temporalIcon = iconRegister.registerIcon(super.getUnlocalizedName(name).substring(this.getUnlocalizedName().indexOf(".") + 1)); componentIcons.put(name, temporalIcon); } - itemIcon = iconRegister.registerIcon(super.getUnlocalizedName("sleepingBag").substring(this.getUnlocalizedName().indexOf(".") + 1)); } @@ -74,14 +72,12 @@ public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemS public IIcon getIconFromDamage(int damage) { return componentIcons.get(names[damage - 1]); - } @Override public String getUnlocalizedName(ItemStack stack) { return super.getUnlocalizedName(names[getDamage(stack) - 1]); - } @Override @@ -96,59 +92,13 @@ public void getSubItems(Item item, CreativeTabs creativeTabs, List list) } @Override - public boolean onItemUse(ItemStack itemStack, EntityPlayer player, World world, int x, int y, int z, int meta, float f1, float f2, float f3) + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - return false; - /*if (itemStack.getItemDamage() != 1) return true; - if (world.isRemote) - { - return true; - } else if (meta != 1) - { - return false; - } else - { - /* ++y; - BlockSleepingBag blockbed = ModBlocks.blockSleepingBag; - int i1 = MathHelper.floor_double((double) (player.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; - byte b0 = 0; - byte b1 = 0; - if (i1 == 0) - { - b1 = 1; - } - if (i1 == 1) - { - b0 = -1; - } - if (i1 == 2) - { - b1 = -1; - } - if (i1 == 3) - { - b0 = 1; - } - if (player.canPlayerEdit(x, y, z, meta, itemStack) && player.canPlayerEdit(x + b0, y, z + b1, meta, itemStack)) - { - if (world.isAirBlock(x, y, z) && world.isAirBlock(x + b0, y, z + b1) && World.doesBlockHaveSolidTopSurface(world, x, y - 1, z) && World.doesBlockHaveSolidTopSurface(world, x + b0, y - 1, z + b1)) - { - world.setBlock(x, y, z, blockbed, i1, 3); - if (world.getBlock(x, y, z) == blockbed) - { - world.setBlock(x + b0, y, z + b1, blockbed, i1 + 8, 3); - } - --itemStack.stackSize; - return true; - } else - { - return false; - } - } else - { - return false; - } - }*/ + if (stack.getItemDamage() == 7) + return placeBoat(stack, world, player, false); + if (stack.getItemDamage() == 8) + return placeBoat(stack, world, player, true); + return stack; } private ItemStack placeBoat(ItemStack stack, World world, EntityPlayer player, boolean motorized) @@ -237,12 +187,4 @@ private ItemStack placeBoat(ItemStack stack, World world, EntityPlayer player, b } } } - - @Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) - { - if (stack.getItemDamage() == 7) return placeBoat(stack, world, player, false); - if (stack.getItemDamage() == 8) return placeBoat(stack, world, player, true); - return stack; - } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java index 7bb1cc04..127ba4ef 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java @@ -6,7 +6,6 @@ import net.minecraft.client.model.ModelBiped; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -19,7 +18,6 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import com.darkona.adventurebackpack.client.models.ModelCopterPack; import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.inventory.InventoryCopterPack; import com.darkona.adventurebackpack.network.GUIPacket; @@ -282,23 +280,6 @@ public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) onUnequipped(world, player, stack); } - @Override - @SideOnly(Side.CLIENT) - public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack stack, int armorSlot) - { - return ModelCopterPack.instance.setWearable(stack); - } - - @Override - @SideOnly(Side.CLIENT) - public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) - { - String modelTexture; - modelTexture = Resources.modelTextures("copterPack").toString(); - - return modelTexture; - } - @Override @SideOnly(Side.CLIENT) public ModelBiped getWearableModel(ItemStack wearable) diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCrossbow.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCrossbow.java index 889d0584..6ab66d12 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCrossbow.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCrossbow.java @@ -91,10 +91,6 @@ public void onUpdate(ItemStack stack, World world, Entity entity, int slot, bool int reloading = stack.stackTagCompound.getInteger("Reloading"); if (shot > 0) stack.stackTagCompound.setByte("Shot", (byte) (shot - 1)); if (reloading > 0) stack.stackTagCompound.setInteger("Reloading", reloading - 1); - /*if (entity instanceof EntityPlayer) - { - //((EntityPlayer)entity).setItemInUse(stack,2); - }*/ } } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java b/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java index b5782cf6..0dbe540c 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java @@ -54,13 +54,11 @@ public ItemHose() super(); setMaxStackSize(1); setFull3D(); - //.setCreativeTab(CreativeTabs.tabTools) setNoRepair(); setUnlocalizedName("backpackHose"); - setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); + setCreativeTab(CreativeTabAB.TAB_AB); } - // ================================================ GETTERS =====================================================// @Override @SideOnly(Side.CLIENT) public IIcon getIcon(ItemStack stack, int pass) @@ -140,8 +138,6 @@ public int getMaxDamage(ItemStack stack) return 0; } - // ================================================ SETTERS =====================================================// - // ================================================= ICONS ======================================================// @Override @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister iconRegister) @@ -151,7 +147,6 @@ public void registerIcons(IIconRegister iconRegister) suckIcon = iconRegister.registerIcon(Resources.getIconString("hoseSuck")); itemIcon = iconRegister.registerIcon(Resources.getIconString("hoseLeft")); } - // ================================================ ACTIONS =====================================================// @Override public void onUpdate(ItemStack stack, World world, Entity entity, int inv_slot, boolean isCurrent) @@ -202,7 +197,7 @@ public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int if (te != null && te instanceof IFluidHandler) { IFluidHandler exTank = (IFluidHandler) te; - int accepted = 0; + int accepted; switch (getHoseMode(stack)) { case HOSE_SUCK_MODE: @@ -234,19 +229,6 @@ public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int } - @Override - public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity) - { - return false; - } - - /** - * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer - * - * @param stack - * @param world - * @param player - */ @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { @@ -263,11 +245,6 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla if (mop != null && mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) { - /* if (!world.canMineBlock(player, mop.blockX, mop.blockY, mop.blockZ)) - { - return stack; - }*/ - if (!player.canPlayerEdit(mop.blockX, mop.blockY, mop.blockZ, mop.sideHit, null)) { return stack; @@ -398,18 +375,6 @@ else if (world.setBlock(x, y, z, fluid.getFluid().getBlock(), 0, 3)) return stack; } - @Override - public boolean onBlockStartBreak(ItemStack itemstack, int X, int Y, int Z, EntityPlayer player) - { - return false; - } - - @Override - public boolean onEntitySwing(EntityLivingBase entityLiving, ItemStack stack) - { - return false; - } - @Override public ItemStack onEaten(ItemStack hose, World world, EntityPlayer player) { @@ -438,13 +403,6 @@ public ItemStack onEaten(ItemStack hose, World world, EntityPlayer player) return hose; } - @Override - public boolean onDroppedByPlayer(ItemStack item, EntityPlayer player) - { - return true; - } - - // ================================================ BOOLEANS =====================================================// @Override public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity) { diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemJuiceBottle.java b/src/main/java/com/darkona/adventurebackpack/item/ItemJuiceBottle.java index fe3d95c3..25ac9bb6 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemJuiceBottle.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemJuiceBottle.java @@ -22,7 +22,7 @@ public class ItemJuiceBottle extends ItemAB public ItemJuiceBottle() { super(); - setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); + setCreativeTab(CreativeTabAB.TAB_AB); setFull3D(); setUnlocalizedName("melonJuiceBottle"); setMaxStackSize(1); @@ -42,12 +42,6 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla return stack; } - @Override - public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int meta, float hitX, float hitY, float hitZ) - { - return false; - } - @Override public EnumAction getItemUseAction(ItemStack p_77661_1_) { diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemMachete.java b/src/main/java/com/darkona/adventurebackpack/item/ItemMachete.java index 1458936c..b1378f65 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemMachete.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemMachete.java @@ -27,7 +27,7 @@ */ public class ItemMachete extends ToolAB { - private static final Set breakableBlocks = Sets.newHashSet( + private static final Set BREAKABLE_BLOCKS = Sets.newHashSet( Blocks.pumpkin, Blocks.web, Blocks.leaves, @@ -58,8 +58,8 @@ public class ItemMachete extends ToolAB public ItemMachete() { - super(ModMaterials.ruggedIron, breakableBlocks); - setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); + super(ModMaterials.ruggedIron, BREAKABLE_BLOCKS); + setCreativeTab(CreativeTabAB.TAB_AB); setMaxDamage(Items.iron_sword.getMaxDamage() + 250); this.field_150934_a = ModMaterials.ruggedIron.getDamageVsEntity(); this.setUnlocalizedName("machete"); @@ -79,10 +79,6 @@ public float func_150893_a(ItemStack stack, Block block) return material == Material.plants || material == Material.vine || material == Material.coral || material == Material.gourd || material == Material.leaves || material == Material.cloth ? 12.0F : 0.5F; } - /** - * Current implementations of this method in child classes do not use the entry argument beside ev. They just raise - * the damage on the stack. - */ @Override public boolean hitEntity(ItemStack p_77644_1_, EntityLivingBase p_77644_2_, EntityLivingBase p_77644_3_) { @@ -93,54 +89,13 @@ public boolean hitEntity(ItemStack p_77644_1_, EntityLivingBase p_77644_2_, Enti @Override public boolean onBlockDestroyed(ItemStack stack, World world, Block block, int x, int y, int z, EntityLivingBase entityLivingBase) { - if (block != Blocks.vine && !(block instanceof IShearable)) - { - return super.onBlockDestroyed(stack, world, block, x, y, z, entityLivingBase); - } - else - { - return true; - } + return block == Blocks.vine || block instanceof IShearable + || super.onBlockDestroyed(stack, world, block, x, y, z, entityLivingBase); } @Override public boolean onBlockStartBreak(ItemStack itemstack, int x, int y, int z, EntityPlayer player) { - /*if (player.worldObj.isRemote) - { - return false; - } - int id = player.worldObj.getBlockId(x, y, z); - for(ItemStack stacky : OreDictionary.getOres("treeLeaves")){ - if (stacky.itemID == id) return false; - } - - if (Block.blocksList[id] instanceof IShearable ) - { - IShearable target = (IShearable)Block.blocksList[id]; - if (target.isShearable(itemstack, player.worldObj, x, y, z)) - { - ArrayList drops = target.onSheared(itemstack, player.worldObj, x, y, z, - EnchantmentHelper.getEnchantmentLevel(Enchantment.fortune.effectId, itemstack)); - Random rand = new Random(); - - for(ItemStack stack : drops) - { - float f = 0.7F; - double d = (double)(rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D; - double d1 = (double)(rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D; - double d2 = (double)(rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D; - EntityItem entityitem = new EntityItem(player.worldObj, (double)x + d, (double)y + d1, (double)z + d2, stack); - entityitem.delayBeforeCanPickup = 10; - player.worldObj.spawnEntityInWorld(entityitem); - } - - itemstack.damageItem(1, player); - player.addStat(StatList.mineBlockStatArray[id], 1); - } - } - return false;*/ - return new ItemStack(new ItemShears()).getItem().onBlockStartBreak(itemstack, x, y, z, player); } } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ToolAB.java b/src/main/java/com/darkona/adventurebackpack/item/ToolAB.java index aa4a6b9e..aea4b004 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ToolAB.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ToolAB.java @@ -20,7 +20,7 @@ public class ToolAB extends ItemTool ToolAB(ToolMaterial material, Set breakableBlocks) { super(1f, material, breakableBlocks); - //setCreativeTab(CreativeTabAB.ADVENTURE_BACKPACK_CREATIVE_TAB); + //setCreativeTab(CreativeTabAB.TAB_AB); } @Override diff --git a/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java b/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java index 3a9698a1..2312645f 100644 --- a/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java +++ b/src/main/java/com/darkona/adventurebackpack/playerProperties/BackpackProperty.java @@ -21,10 +21,10 @@ public class BackpackProperty implements IExtendedEntityProperties { private static final String PROPERTY_NAME = "abp.property"; - private EntityPlayer player = null; + + private EntityPlayer player; private ItemStack wearable = null; private ChunkCoordinates campFire = null; - private NBTTagCompound wearableData = new NBTTagCompound(); private boolean forceCampFire = false; private int dimension = 0; @@ -40,11 +40,6 @@ public boolean isWakingUpInPortableBag() return this.isWakingUpInPortableBag; } - public NBTTagCompound getWearableData() - { - return wearableData; - } - public static void sync(EntityPlayer player) { if (player instanceof EntityPlayerMP) @@ -91,12 +86,6 @@ public static BackpackProperty get(EntityPlayer player) return (BackpackProperty) player.getExtendedProperties(PROPERTY_NAME); } - /** - * Called when the entity that this class is attached to is saved. - * Any custom entity data that needs saving should be saved here. - * - * @param compound The compound to save to. - */ @Override public void saveNBTData(NBTTagCompound compound) { @@ -111,13 +100,6 @@ public void saveNBTData(NBTTagCompound compound) compound.setBoolean("forceCampFire", forceCampFire); } - /** - * Called when the entity that this class is attached to is loaded. - * In order to hook into this, you will need to subscribe to the EntityConstructing event. - * Otherwise, you will need to initialize manually. - * - * @param compound The compound to load from. - */ @Override public void loadNBTData(NBTTagCompound compound) { @@ -130,16 +112,6 @@ public void loadNBTData(NBTTagCompound compound) } } - /** - * Used to initialize the extended properties with the entity that this is attached to, as well - * as the world object. - * Called automatically if you register with the EntityConstructing event. - * May be called multiple times if the extended properties is moved over to a new entity. - * Such as when a player switches dimension {Minecraft re-creates the player entity} - * - * @param entity The entity that this extended properties is attached to - * @param world The world in which the entity exists - */ @Override public void init(Entity entity, World world) { @@ -161,11 +133,6 @@ public void setCampFire(ChunkCoordinates cf) campFire = cf; } - public boolean hasWearable() - { - return wearable != null; - } - public ChunkCoordinates getCampFire() { return campFire; @@ -176,16 +143,6 @@ public EntityPlayer getPlayer() return player; } - public void setDimension(int dimension) - { - this.dimension = dimension; - } - - public int getDimension() - { - return dimension; - } - public boolean isForcedCampFire() { return forceCampFire; @@ -205,14 +162,6 @@ public void executeWearableUpdateProtocol() } } - public void executeWearableDeathProtocol() - { - if (wearable.getItem() instanceof IBackWearableItem) - { - ((IBackWearableItem) wearable.getItem()).onPlayerDeath(player.getEntityWorld(), player, wearable); - } - } - public void executeWearableEquipProtocol() { if (wearable.getItem() instanceof IBackWearableItem) diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java index d2fb5703..06139230 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java @@ -71,12 +71,6 @@ public void initNetwork() } - @Override - public void joinPlayer(EntityPlayer player) - { - - } - @Override public void synchronizePlayer(int id, NBTTagCompound properties) { diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java index 4f45de75..fea7845a 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java @@ -1,6 +1,5 @@ package com.darkona.adventurebackpack.proxy; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; /** @@ -16,7 +15,5 @@ public interface IProxy void initNetwork(); - void joinPlayer(EntityPlayer player); - void synchronizePlayer(int id, NBTTagCompound compound); } diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java index 71befbfa..6519e371 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java @@ -18,7 +18,7 @@ */ public class ServerProxy implements IProxy { - private static final Map extendedEntityData = new HashMap(); + private static final Map extendedEntityData = new HashMap<>(); @Override public void init() @@ -38,23 +38,6 @@ public void initNetwork() } - @Override - public void joinPlayer(EntityPlayer player) - { - NBTTagCompound playerData = extractPlayerProps(player.getUniqueID()); - - if (playerData != null) - { - LogHelper.info("Stored properties retrieved"); - BackpackProperty.get(player).loadNBTData(playerData); - BackpackProperty.sync(player); - } - else - { - LogHelper.info("Data is null! WTF!"); - } - } - @Override public void synchronizePlayer(int id, NBTTagCompound compound) { diff --git a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java index 7bbb0831..cb33f834 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java @@ -15,7 +15,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import com.darkona.adventurebackpack.item.ItemAdventureBackpack; import com.darkona.adventurebackpack.util.BackpackUtils; import static com.darkona.adventurebackpack.common.Constants.TAG_TYPE; @@ -278,25 +277,4 @@ public enum Props public static final ImmutableSet POTION_EFFECT = Sets.immutableEnumSet(SPECIAL, REMOVAL); } - // --- - - public static ItemStack setBackpackTypeFromMeta(ItemStack backpack, int meta) //TODO what if meta value is wrong? - { - if (backpack == null || !(backpack.getItem() instanceof ItemAdventureBackpack)) - return null; - - NBTTagCompound backpackTag = BackpackUtils.getWearableCompound(backpack); - backpack.setItemDamage(meta); - backpackTag.setByte(TAG_TYPE, (byte) meta); - BackpackUtils.setWearableCompound(backpack, backpackTag); - - return backpack; - } - - public static void setBackpackType(ItemStack backpack, BackpackTypes type) - { - NBTTagCompound backpackTag = BackpackUtils.getWearableCompound(backpack); - backpackTag.setByte(TAG_TYPE, getMeta(type)); - BackpackUtils.setWearableCompound(backpack, backpackTag); - } } diff --git a/src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java index 1bfc2985..787e2df6 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java @@ -1,5 +1,6 @@ package com.darkona.adventurebackpack.reference; +import javax.annotation.Nullable; import java.util.List; import net.minecraft.entity.player.EntityPlayerMP; @@ -42,6 +43,7 @@ public static void init() FMLInterModComms.sendMessage("Waila", "register", "com.darkona.adventurebackpack.reference.WailaTileAdventureBackpack.callbackRegister"); } + @SuppressWarnings("unused") public static void callbackRegister(IWailaRegistrar registrar) { registrar.registerStackProvider(new WailaTileAdventureBackpack(), TileAdventureBackpack.class); @@ -124,12 +126,14 @@ private static void addTipToBackpack(List currenttip, NBTTagCompound bac + ": " + TooltipEventHandler.tankTooltip(tank)); } + @Nullable @Override public List getWailaTail(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { return null; } + @Nullable @Override public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, int x, int y, int z) { diff --git a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java index 7b981c26..1f042f32 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java @@ -6,18 +6,16 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; import net.minecraft.util.ChatComponentTranslation; import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.common.util.Constants.NBT; -import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.events.WearableEvent; import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.reference.BackpackTypes; import static com.darkona.adventurebackpack.common.Constants.TAG_TYPE; +import static com.darkona.adventurebackpack.common.Constants.TAG_WEARABLE_COMPOUND; /** * Created on 08/01/2015 @@ -26,7 +24,7 @@ */ public class BackpackUtils { - private static Timer timer = new Timer(); + private static Timer timer = new Timer(); //TODO remove timer, find the dupe, fix the dupe public enum Reasons { @@ -59,60 +57,6 @@ public static void unequipWearable(EntityPlayer player) timer.schedule(unequipTask, 200); } - public static NBTTagCompound getWearableCompound(ItemStack stack) - { - if (!stack.hasTagCompound() || !stack.stackTagCompound.hasKey(Constants.TAG_WEARABLE_COMPOUND)) - setWearableCompound(stack, new NBTTagCompound()); - - return stack.stackTagCompound.getCompoundTag(Constants.TAG_WEARABLE_COMPOUND); - } - - public static void setWearableCompound(ItemStack stack, NBTTagCompound compound) - { - if (!stack.hasTagCompound()) - stack.stackTagCompound = new NBTTagCompound(); - - stack.stackTagCompound.setTag(Constants.TAG_WEARABLE_COMPOUND, compound); - } - - public static NBTTagList getInventoryTag(NBTTagCompound compound) - { - if (!compound.hasKey(Constants.TAG_INVENTORY)) - return compound.getTagList(Constants.TAG_INVENTORY, NBT.TAG_COMPOUND); - - return new NBTTagList(); - } - - public static NBTTagList getInventoryTag(ItemStack stack) - { - return getInventoryTag(getWearableCompound(stack)); - } - - public static ItemStack createBackpackStack(BackpackTypes type) - { - ItemStack backpackStack = new ItemStack(ModItems.adventureBackpack, 1, 0); - backpackStack.setItemDamage(BackpackTypes.getMeta(type)); - NBTTagCompound compound = new NBTTagCompound(); - compound.setByte(TAG_TYPE, BackpackTypes.getMeta(type)); - setWearableCompound(backpackStack, compound); - return backpackStack; - } - - public static ItemStack createCopterStack() - { - ItemStack copterStack = new ItemStack(ModItems.copterPack, 1, 0); - setWearableCompound(copterStack, new NBTTagCompound()); - return copterStack; - } - - public static ItemStack createJetpackStack() - { - ItemStack jetpackStack = new ItemStack(ModItems.coalJetpack, 1, 0); - setWearableCompound(jetpackStack, new NBTTagCompound()); - return jetpackStack; - } - - private static class DelayUnequipTask extends TimerTask { private EntityPlayer player; @@ -146,4 +90,48 @@ public void run() } } } + + public static NBTTagCompound getWearableCompound(ItemStack stack) + { + // well, it also creates wearable compound if stack has no own, so maybe worth to rename the method + if (!stack.hasTagCompound() || !stack.stackTagCompound.hasKey(TAG_WEARABLE_COMPOUND)) + createWearableCompound(stack); + + return stack.stackTagCompound.getCompoundTag(TAG_WEARABLE_COMPOUND); + } + + private static void createWearableCompound(ItemStack stack) + { + if (!stack.hasTagCompound()) + stack.stackTagCompound = new NBTTagCompound(); + + stack.stackTagCompound.setTag(TAG_WEARABLE_COMPOUND, new NBTTagCompound()); + } + + public static ItemStack createBackpackStack(BackpackTypes type) + { + ItemStack backpackStack = new ItemStack(ModItems.adventureBackpack, 1, BackpackTypes.getMeta(type)); + setBackpackType(backpackStack, type); + return backpackStack; + } + + public static void setBackpackType(ItemStack stack, BackpackTypes type) + { + getWearableCompound(stack).setByte(TAG_TYPE, BackpackTypes.getMeta(type)); + } + + public static ItemStack createCopterStack() + { + ItemStack copterStack = new ItemStack(ModItems.copterPack, 1, 0); + createWearableCompound(copterStack); + return copterStack; + } + + public static ItemStack createJetpackStack() + { + ItemStack jetpackStack = new ItemStack(ModItems.coalJetpack, 1, 0); + createWearableCompound(jetpackStack); + return jetpackStack; + } + } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/util/Resources.java b/src/main/java/com/darkona/adventurebackpack/util/Resources.java index 6e38cdc2..13cf533c 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Resources.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Resources.java @@ -1,9 +1,8 @@ package com.darkona.adventurebackpack.util; -import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; -import com.darkona.adventurebackpack.inventory.IInventoryBackpack; +import com.darkona.adventurebackpack.init.ModDates; import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.reference.ModInfo; @@ -16,24 +15,26 @@ public class Resources { private static final String TEXTURE_LOCATION = ModInfo.MOD_ID; - public static String modelTextureResourceString(String name) + public static ResourceLocation getBackpackTexture(BackpackTypes type) { - return new ResourceLocation(TEXTURE_LOCATION, "textures/models/" + name).toString(); + return type == BackpackTypes.STANDARD + ? backpackTextureFromString(ModDates.getHoliday()) + : backpackTextureFromType(type); } - public static String backpackTexturesStringFromSkin(ItemStack backpack) + private static ResourceLocation backpackTextureFromString(String color) { - return new ResourceLocation(TEXTURE_LOCATION, "textures/backpack/" + BackpackTypes.getSkinName(backpack) + ".png").toString(); + return new ResourceLocation(TEXTURE_LOCATION, "textures/backpack/" + color + ".png"); } - public static ResourceLocation backpackTextureFromString(String color) + private static ResourceLocation backpackTextureFromType(BackpackTypes type) { - return new ResourceLocation(TEXTURE_LOCATION, "textures/backpack/" + color + ".png"); + return new ResourceLocation(TEXTURE_LOCATION, "textures/backpack/" + BackpackTypes.getSkinName(type) + ".png"); } - public static ResourceLocation backpackTextureFromSkin(IInventoryBackpack adventureBackpack) + public static String modelTextureResourceString(String name) { - return new ResourceLocation(TEXTURE_LOCATION, "textures/backpack/" + BackpackTypes.getSkinName(adventureBackpack.getType()) + ".png"); + return new ResourceLocation(TEXTURE_LOCATION, "textures/models/" + name).toString(); } public static ResourceLocation guiTextures(String name) diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index 4887b41c..b92e375e 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -1,13 +1,7 @@ package com.darkona.adventurebackpack.util; -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.client.Minecraft; import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraftforge.fluids.Fluid; -import net.minecraftforge.fluids.FluidRegistry; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; @@ -20,6 +14,16 @@ */ public class Utils { + public static boolean inServer() + { + return FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER; + } + + public static boolean inClient() + { + return FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT; + } + public static float degreesToRadians(float degrees) { return degrees / 57.2957795f; @@ -35,49 +39,14 @@ public static int secondsToTicks(int seconds) return seconds * 20; } - public static int isBlockRegisteredAsFluid(Block block) + public static int[] createSlotArray(int first, int count) { - int fluidID = -1; - for (Fluid fluid : FluidRegistry.getRegisteredFluids().values()) + int[] slots = new int[count]; + for (int i = first; i < first + count; i++) { - fluidID = (fluid.getBlock() == block) ? fluid.getID() : -1; - if (fluidID > 0) - { - return fluidID; - } + slots[i - first] = i; } - return fluidID; - } - - //This is some black magic that returns a block or entity as far as the argument reach goes. - public static MovingObjectPosition getMovingObjectPositionFromPlayersHat(World world, EntityPlayer player, boolean flag, double reach) - { - float f = 1.0F; - float playerPitch = player.prevRotationPitch + (player.rotationPitch - player.prevRotationPitch) * f; - float playerYaw = player.prevRotationYaw + (player.rotationYaw - player.prevRotationYaw) * f; - double playerPosX = player.prevPosX + (player.posX - player.prevPosX) * f; - double playerPosY = (player.prevPosY + (player.posY - player.prevPosY) * f + 1.6200000000000001D) - player.yOffset; - double playerPosZ = player.prevPosZ + (player.posZ - player.prevPosZ) * f; - Vec3 vecPlayer = Vec3.createVectorHelper(playerPosX, playerPosY, playerPosZ); - float cosYaw = (float) Math.cos(-playerYaw * 0.01745329F - 3.141593F); - float sinYaw = (float) Math.sin(-playerYaw * 0.01745329F - 3.141593F); - float cosPitch = (float) -Math.cos(-playerPitch * 0.01745329F); - float sinPitch = (float) Math.sin(-playerPitch * 0.01745329F); - float pointX = sinYaw * cosPitch; - float pointY = sinPitch; - float pointZ = cosYaw * cosPitch; - Vec3 vecPoint = vecPlayer.addVector(pointX * reach, pointY * reach, pointZ * reach); - return world.func_147447_a/*rayTraceBlocks_do_do*/(vecPlayer, vecPoint, flag, !flag, flag); - } - - public static boolean inServer() - { - return FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER; - } - - public static boolean inClient() - { - return FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT; + return slots; } private static final EnumChatFormatting[] RAINBOW_SEQUENCE = {EnumChatFormatting.RED, EnumChatFormatting.GOLD, @@ -86,24 +55,16 @@ public static boolean inClient() public static String makeItRainbow(String theString) { - StringBuilder rainbowed = new StringBuilder(); - for (int i = 0; i < theString.length(); i++) + int len = theString.length(); + StringBuilder rainbowed = new StringBuilder( len * 3); + for (int i = 0; i < len; i++) { rainbowed.append(RAINBOW_SEQUENCE[i % RAINBOW_SEQUENCE.length]).append(theString.charAt(i)); } + System.out.println(rainbowed.length()); return rainbowed.toString(); } - public static int[] createSlotArray(int first, int count) - { - int[] slots = new int[count]; - for (int i = first; i < first + count; i++) - { - slots[i - first] = i; - } - return slots; - } - public static String getColoredSkinName(BackpackTypes type) { String result = ""; @@ -125,10 +86,50 @@ public static String getColoredSkinName(BackpackTypes type) case SQUID: result += EnumChatFormatting.DARK_AQUA + skinName; break; + case QUARTZ: + result += makeWhiteAnimation(skinName); + break; default: result += skinName; break; } return result; } + + private static String makeWhiteAnimation(String string) + { + return animateString(string, EnumChatFormatting.GRAY, EnumChatFormatting.WHITE); + } + + private static String animateString(String stringIn, EnumChatFormatting regular, EnumChatFormatting bold) + { + int len = stringIn.length(); + int time = Math.abs((int) Minecraft.getMinecraft().theWorld.getWorldTime()); + int charID = time % len; + + int n = 10; + int phaseFactor = time % (n * len); // makes n phases with len length + int phase = 1 + phaseFactor / len; + + if (phase < 3) + { + return decorateCharInString(stringIn, charID, regular, bold, phase % 2 != 0); + } + return stringIn; + } + + private static String decorateCharInString(String stringIn, int charID, EnumChatFormatting regular, EnumChatFormatting bold, boolean dir) + { + int len = stringIn.length(); + StringBuilder decorated = new StringBuilder(); + for (int i = dir ? 0 : len - 1; dir ? i < len : i >= 0; i = dir ? ++i : --i) + { + if (i == charID) + decorated.append(bold); + else if (i == (dir ? charID + 1 : charID - 1) && regular != null) + decorated.append(regular); + decorated.append(stringIn.charAt(dir ? i : len - 1 - i)); + } + return decorated.toString(); + } } From cfa587a98cc719e94357140a0a97497d0e6fbb4d Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sat, 3 Mar 2018 12:50:34 +0700 Subject: [PATCH 451/462] Fixed "flickering" tooltips Added inventory transfer from ingredient backpack to crafted backpack --- .../adventurebackpack/AdventureBackpack.java | 3 - .../config/ConfigHandler.java | 2 - .../handlers/PlayerEventHandler.java | 4 +- .../handlers/TooltipEventHandler.java | 400 ------------------ .../adventurebackpack/init/ModRecipes.java | 3 +- .../init/recipes/ShapedBackpackRecipe.java | 62 +++ .../item/ItemAdventureBackpack.java | 54 ++- .../item/ItemCoalJetpack.java | 46 ++ .../item/ItemCopterPack.java | 38 ++ .../adventurebackpack/item/ItemHose.java | 27 ++ .../reference/WailaTileAdventureBackpack.java | 12 +- .../adventurebackpack/util/BackpackUtils.java | 19 +- .../adventurebackpack/util/TipUtils.java | 221 ++++++++++ .../darkona/adventurebackpack/util/Utils.java | 12 +- .../assets/adventurebackpack/lang/en_US.lang | 20 +- 15 files changed, 490 insertions(+), 433 deletions(-) delete mode 100644 src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java create mode 100644 src/main/java/com/darkona/adventurebackpack/init/recipes/ShapedBackpackRecipe.java create mode 100644 src/main/java/com/darkona/adventurebackpack/util/TipUtils.java diff --git a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java index 7ed743e8..788bb2a1 100644 --- a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java @@ -15,7 +15,6 @@ import com.darkona.adventurebackpack.handlers.GeneralEventHandler; import com.darkona.adventurebackpack.handlers.GuiHandler; import com.darkona.adventurebackpack.handlers.PlayerEventHandler; -import com.darkona.adventurebackpack.handlers.TooltipEventHandler; import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.init.ModDates; import com.darkona.adventurebackpack.init.ModEntities; @@ -64,9 +63,7 @@ public void preInit(FMLPreInitializationEvent event) //Events MinecraftForge.EVENT_BUS.register(new GeneralEventHandler()); MinecraftForge.EVENT_BUS.register(new ClientEventHandler()); - MinecraftForge.EVENT_BUS.register(new TooltipEventHandler()); MinecraftForge.EVENT_BUS.register(new PlayerEventHandler()); - FMLCommonHandler.instance().bus().register(new PlayerEventHandler()); } diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index bb5b84b1..36d9762a 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -30,7 +30,6 @@ public class ConfigHandler public static boolean enableFullnessBar = false; public static boolean enableTemperatureBar = false; public static boolean enableToolsRender = true; - public static boolean enableTooltips = true; public static int typeTankRender = 2; public static boolean tanksHoveringText = false; @@ -119,7 +118,6 @@ private static void loadConfiguration() enableFullnessBar = config.getBoolean("Enable Fullness Bar", "graphics", false, "Enable durability bar showing fullness of backpacks inventory"); enableTemperatureBar = config.getBoolean("Enable Temperature Bar", "graphics", false, "Enable durability bar showing temperature of jetpack"); enableToolsRender = config.getBoolean("Enable Tools Render", "graphics", true, "Enable rendering for tools in the backpack tool slots"); - enableTooltips = config.getBoolean("Enable Tooltips", "graphics", true, "Enable tooltips? Client side"); tanksHoveringText = config.getBoolean("Hovering Text", "graphics", false, "Show hovering text on fluid tanks?"); // Graphics.Status diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 1a4515b1..180770e4 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -271,7 +271,9 @@ public void playerCraftsBackpack(PlayerEvent.ItemCraftedEvent event) { if (event.crafting.getItem() == ModItems.adventureBackpack) { - LogHelper.info("Player crafted a backpack, and that backpack's appearance is: " + BackpackTypes.getSkinName(event.crafting)); + LogHelper.info("Player crafted a backpack, and that backpack's appearance is: " + + BackpackTypes.getSkinName(event.crafting)); + if (!ConfigHandler.consumeDragonEgg && BackpackTypes.getType(event.crafting) == BackpackTypes.DRAGON) { event.player.dropPlayerItemWithRandomChoice(new ItemStack(Blocks.dragon_egg, 1), false); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java deleted file mode 100644 index aa551d0b..00000000 --- a/src/main/java/com/darkona/adventurebackpack/handlers/TooltipEventHandler.java +++ /dev/null @@ -1,400 +0,0 @@ -package com.darkona.adventurebackpack.handlers; - -import java.util.List; - -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.StatCollector; -import net.minecraftforge.common.util.Constants.NBT; -import net.minecraftforge.event.entity.player.ItemTooltipEvent; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidTank; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.common.registry.GameData; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.config.ConfigHandler; -import com.darkona.adventurebackpack.config.Keybindings; -import com.darkona.adventurebackpack.item.ItemAdventureBackpack; -import com.darkona.adventurebackpack.item.ItemCoalJetpack; -import com.darkona.adventurebackpack.item.ItemCopterPack; -import com.darkona.adventurebackpack.item.ItemHose; -import com.darkona.adventurebackpack.reference.BackpackTypes; -import com.darkona.adventurebackpack.reference.GeneralReference; -import com.darkona.adventurebackpack.util.BackpackUtils; - -/** - * Created on 24.03.2017 - * - * @author Ugachaga - */ -public class TooltipEventHandler -{ - private List eventTip; - - @SubscribeEvent - @SideOnly(Side.CLIENT) - @SuppressWarnings("unused") - public void itemsTooltips(ItemTooltipEvent event) - { - if (!ConfigHandler.enableTooltips) - return; - - eventTip = event.toolTip; - Item theItem = event.itemStack.getItem(); - - if (theItem instanceof ItemAdventureBackpack) - { - FluidTank tank = new FluidTank(Constants.BASIC_TANK_CAPACITY); - NBTTagCompound backpackTag = BackpackUtils.getWearableCompound(event.itemStack); - - if (GuiScreen.isShiftKeyDown()) - { - NBTTagList itemList = backpackTag.getTagList(Constants.TAG_INVENTORY, NBT.TAG_COMPOUND); - makeTip(local("backpack.slots.used") + ": " + inventoryTooltip(itemList)); - - tank.readFromNBT(backpackTag.getCompoundTag(Constants.TAG_LEFT_TANK)); - makeTip(local("backpack.tank.left") + ": " + tankTooltip(tank)); - - tank.readFromNBT(backpackTag.getCompoundTag(Constants.TAG_RIGHT_TANK)); - makeTip(local("backpack.tank.right") + ": " + tankTooltip(tank)); - - shiftFooter(); - } - else if (!GuiScreen.isCtrlKeyDown()) - { - makeTip(holdShift()); - } - - if (GuiScreen.isCtrlKeyDown()) - { - boolean cycling = !backpackTag.getBoolean(Constants.TAG_DISABLE_CYCLING); - makeTip(local("backpack.cycling") + ": " + switchTooltip(cycling, true)); - makeTip(pressKeyFormat(actionKeyFormat()), locals("backpack.cycling.key"), - " " + switchTooltip(!cycling, false)); - - if (BackpackTypes.isNightVision(BackpackTypes.getType(backpackTag.getByte(Constants.TAG_TYPE)))) - { - boolean vision = !backpackTag.getBoolean(Constants.TAG_DISABLE_NVISION); - makeTip(local("backpack.vision") + ": " + switchTooltip(vision, true)); - makeTip(pressShiftKeyFormat(actionKeyFormat()), locals("backpack.vision.key"), - " " + switchTooltip(!vision, false)); - } - } - } - else if (theItem instanceof ItemCoalJetpack) - { - FluidTank waterTank = new FluidTank(Constants.Jetpack.WATER_CAPACITY); - FluidTank steamTank = new FluidTank(Constants.Jetpack.STEAM_CAPACITY); - NBTTagCompound jetpackTag = BackpackUtils.getWearableCompound(event.itemStack); - - if (GuiScreen.isShiftKeyDown()) - { - NBTTagList itemList = jetpackTag.getTagList(Constants.TAG_INVENTORY, NBT.TAG_COMPOUND); - makeTip(local("jetpack.fuel") + ": " + slotStackTooltip(itemList, Constants.Jetpack.FUEL_SLOT)); - - waterTank.readFromNBT(jetpackTag.getCompoundTag(Constants.Jetpack.TAG_WATER_TANK)); - makeTip(local("jetpack.tank.water") + ": " + tankTooltip(waterTank)); - - steamTank.readFromNBT(jetpackTag.getCompoundTag(Constants.Jetpack.TAG_STEAM_TANK)); - // special case for steam, have to set displayed fluid name manually, cuz technically it's water - String theSteam = steamTank.getFluidAmount() > 0 ? EnumChatFormatting.AQUA + local("steam") : ""; - makeTip(local("jetpack.tank.steam") + ": " + tankTooltip(steamTank, false) + theSteam); - - shiftFooter(); - } - else if (!GuiScreen.isCtrlKeyDown()) - { - makeTip(holdShift()); - } - - if (GuiScreen.isCtrlKeyDown()) - { - makeTip(local("max.altitude") + ": " + whiteFormat("185 "), locals("meters")); - makeTip(pressShiftKeyFormat(actionKeyFormat()), locals("jetpack.key.onoff"), " " + local("on")); - } - } - else if (theItem instanceof ItemCopterPack) - { - FluidTank fuelTank = new FluidTank(Constants.Copter.FUEL_CAPACITY); - NBTTagCompound copterTag = BackpackUtils.getWearableCompound(event.itemStack); - - if (GuiScreen.isShiftKeyDown()) - { - fuelTank.readFromNBT(copterTag.getCompoundTag(Constants.Copter.TAG_FUEL_TANK)); - makeTip(local("copter.tank.fuel") + ": " + tankTooltip(fuelTank)); - makeTip(local("copter.rate.fuel") + ": " + fuelConsumptionTooltip(fuelTank)); - - shiftFooter(); - } - else if (!GuiScreen.isCtrlKeyDown()) - { - makeTip(holdShift()); - } - - if (GuiScreen.isCtrlKeyDown()) - { - makeTip(local("max.altitude") + ": " + whiteFormat("250 "), locals("meters")); - makeTip(pressShiftKeyFormat(actionKeyFormat()), locals("copter.key.onoff"), " " + local("on")); - makeTip(pressKeyFormat(actionKeyFormat()), locals("copter.key.hover")); - } - } - else if (theItem instanceof ItemHose) - { - if (GuiScreen.isCtrlKeyDown()) - { - makeTip(local("hose.key.header") + ":"); - makeTip("- " + pressKeyFormat(actionKeyFormat()), locals("hose.key.tank")); - makeTip("- " + pressShiftKeyFormat(whiteFormat(local("mouse.wheel"))), locals("hose.key.mode")); - makeTip(locals("hose.dump")); - makeTip(EnumChatFormatting.RED.toString() + local("hose.dump.warn")); - } - else - { - makeTip(holdCtrl()); - } - } - } - - private void shiftFooter() - { - if (GuiScreen.isCtrlKeyDown()) - makeEmptyTip(); - else - makeTip(holdCtrl()); - } - - private void makeTip(String tooltip) - { - eventTip.add(tooltip); - } - - private void makeTip(String[] tooltips) - { - makeTip(null, tooltips, null); - } - - private void makeTip(String before, String[] tooltips) - { - makeTip(before, tooltips, null); - } - - private void makeTip(String before, String[] tooltips, String after) - { - for (int i = 0; i < tooltips.length; i++) - { - String tip = ""; - if (i == 0 && before != null) - tip += before; - tip += tooltips[i]; - if (i == tooltips.length - 1 && after != null) - tip += after; - eventTip.add(tip); - } - } - - private void makeEmptyTip() - { - makeTip(""); - } - - // Static things --- - - private static String holdShift() - { - return holdThe(true); - } - - private static String holdCtrl() - { - return holdThe(false); - } - - private static String holdThe(boolean button) - { - return whiteFormat(EnumChatFormatting.ITALIC + "<" + (button ? local("hold.shift") - : local("hold.ctrl")) + ">"); - } - - private static String whiteFormat(String theString) - { - return EnumChatFormatting.WHITE + theString + EnumChatFormatting.GRAY; - } - - private static String actionKeyFormat() - { - return whiteFormat(Keybindings.getActionKeyName()); - } - - private static String pressKeyFormat(String button) - { - return local("press") + " '" + button + "' "; - } - - private static String pressShiftKeyFormat(String button) - { - return local("press") + " Shift+'" + button + "' "; - } - - public static String inventoryTooltip(NBTTagList itemList) - { - int itemCount = itemList.tagCount(); - boolean toolSlotU = false; - boolean toolSlotL = false; - for (int i = itemCount - 1; i >= 0; i--) - { - int slotAtI = itemList.getCompoundTagAt(i).getInteger(Constants.TAG_SLOT); - if (slotAtI < Constants.TOOL_UPPER) - break; - else if (slotAtI == Constants.TOOL_UPPER) - toolSlotU = true; - else if (slotAtI == Constants.TOOL_LOWER) - toolSlotL = true; - else - itemCount--; // this need for correct count while GUI is open and bucket slots may be occupied - } - itemCount -= (toolSlotU ? 1 : 0) + (toolSlotL ? 1 : 0); - return toolSlotFormat(toolSlotU) + toolSlotFormat(toolSlotL) + " " + mainSlotsFormat(itemCount); - } - - private static String toolSlotFormat(boolean isTool) - { - return (isTool ? EnumChatFormatting.WHITE : EnumChatFormatting.DARK_GRAY) + "[]"; - } - - private static String mainSlotsFormat(int slotsUsed) - { - String slotsFormatted = Integer.toString(slotsUsed); - if (slotsUsed == 0) - slotsFormatted = EnumChatFormatting.DARK_GRAY + slotsFormatted; - else if (slotsUsed == Constants.INVENTORY_MAIN_SIZE) - slotsFormatted = EnumChatFormatting.WHITE + slotsFormatted; - else - slotsFormatted = EnumChatFormatting.GRAY + slotsFormatted; - return slotsFormatted + "/" + Constants.INVENTORY_MAIN_SIZE; - } - - public static String tankTooltip(FluidTank tank) - { - return tankTooltip(tank, true); - } - - private static String tankTooltip(FluidTank tank, boolean attachName) - { - String fluidAmount = fluidAmountFormat(tank.getFluidAmount(), tank.getCapacity()); - String fluidName = tank.getFluid() == null ? "" : attachName ? fluidNameFormat(tank.getFluid()) : " "; - return fluidAmount + (tank.getFluidAmount() > 0 ? "/" + tank.getCapacity() : "") + fluidName; - } - - private static String fluidAmountFormat(int fluidAmount, int tankCapacity) - { - String amountFormatted = Integer.toString(fluidAmount); - if (fluidAmount == tankCapacity) - amountFormatted = EnumChatFormatting.WHITE + amountFormatted; - else if (fluidAmount == 0) - amountFormatted = emptyFormat(); - return amountFormatted; - } - - private static String fluidNameFormat(FluidStack fluid) - { - String nameUnlocalized = fluid.getUnlocalizedName().toLowerCase(); - String nameFormatted = " "; - if (nameUnlocalized.contains("lava") || nameUnlocalized.contains("fire")) - nameFormatted += EnumChatFormatting.RED; - else if (nameUnlocalized.contains("water")) - nameFormatted += EnumChatFormatting.BLUE; - else if (nameUnlocalized.contains("oil")) - nameFormatted += EnumChatFormatting.DARK_GRAY; - else if (nameUnlocalized.contains("fuel") || nameUnlocalized.contains("creosote")) - nameFormatted += EnumChatFormatting.YELLOW; - else if (nameUnlocalized.contains("milk")) - nameFormatted += EnumChatFormatting.WHITE; - else if (nameUnlocalized.contains("xpjuice")) - nameFormatted += EnumChatFormatting.GREEN; - else - nameFormatted += EnumChatFormatting.GRAY; - return nameFormatted + fluid.getLocalizedName(); - } - - private static String switchTooltip(boolean status, boolean doFormat) - { - return doFormat ? switchFormat(status) : status ? local("on") : local("off"); - } - - private static String switchFormat(boolean status) - { - String switchFormatted = status ? EnumChatFormatting.WHITE + local("on") - : EnumChatFormatting.DARK_GRAY + local("off"); - return "[" + switchFormatted + EnumChatFormatting.GRAY + "]"; - } - - private static String slotStackTooltip(NBTTagList itemList, int slot) - { - int slotID, slotMeta, slotCount = slotID = slotMeta = 0; - for (int i = 0; i <= slot; i++) - { - int slotAtI = itemList.getCompoundTagAt(i).getInteger(Constants.TAG_SLOT); - if (slotAtI == slot) - { - slotID = itemList.getCompoundTagAt(i).getInteger("id"); - slotMeta = itemList.getCompoundTagAt(i).getInteger("Damage"); - slotCount = itemList.getCompoundTagAt(i).getInteger("Count"); - break; - } - } - return stackDataFormat(slotID, slotMeta, slotCount); - } - - private static String stackDataFormat(int id, int meta, int count) - { - if (count == 0) - return emptyFormat(); - - String dataFormatted; - try - { - ItemStack iStack = new ItemStack(GameData.getItemRegistry().getObjectById(id), 0, meta); - dataFormatted = iStack.getDisplayName() + " (" + stackSizeFormat(iStack, count) + ")"; - } - catch (Exception e) - { - dataFormatted = EnumChatFormatting.RED + local("error"); - //e.printStackTrace(); - } - return dataFormatted; - } - - private static String stackSizeFormat(ItemStack stack, int count) - { - return stack.getMaxStackSize() == count ? whiteFormat(Integer.toString(count)) : Integer.toString(count); - } - - private static String fuelConsumptionTooltip(FluidTank tank) - { - return (tank.getFluid() != null) - ? String.format("x%.2f", GeneralReference.getFuelRate(tank.getFluid().getFluid().getName())) - : EnumChatFormatting.DARK_GRAY + "-" ; - } - - private static String emptyFormat() - { - return EnumChatFormatting.DARK_GRAY.toString() + EnumChatFormatting.ITALIC + local("empty"); - } - - public static String local(String tip) - { - return StatCollector.translateToLocal("adventurebackpack:tooltips." + tip); - } - - private static String[] locals(String tips) - { - return local(tips).split("@", 5); - } -} \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java index 6c1724a3..acf45dfa 100644 --- a/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java +++ b/src/main/java/com/darkona/adventurebackpack/init/ModRecipes.java @@ -10,6 +10,7 @@ import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.init.recipes.BackpackRecipesList; +import com.darkona.adventurebackpack.init.recipes.ShapedBackpackRecipe; import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.util.BackpackUtils; import com.darkona.adventurebackpack.util.LogHelper; @@ -253,7 +254,7 @@ public static void init() { if (field.getName().equals(BackpackTypes.getSkinName(type))) { - GameRegistry.addRecipe(new ShapedOreRecipe(BackpackUtils.createBackpackStack(type), (Object[]) field.get(br))); + GameRegistry.addRecipe(new ShapedBackpackRecipe(BackpackUtils.createBackpackStack(type), (Object[]) field.get(br))); counter++; } } diff --git a/src/main/java/com/darkona/adventurebackpack/init/recipes/ShapedBackpackRecipe.java b/src/main/java/com/darkona/adventurebackpack/init/recipes/ShapedBackpackRecipe.java new file mode 100644 index 00000000..3d729d76 --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/init/recipes/ShapedBackpackRecipe.java @@ -0,0 +1,62 @@ +package com.darkona.adventurebackpack.init.recipes; + +import net.minecraft.inventory.InventoryCrafting; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagList; +import net.minecraftforge.oredict.RecipeSorter; +import net.minecraftforge.oredict.ShapedOreRecipe; + +import com.darkona.adventurebackpack.init.ModItems; +import com.darkona.adventurebackpack.reference.BackpackTypes; +import com.darkona.adventurebackpack.reference.ModInfo; +import com.darkona.adventurebackpack.util.BackpackUtils; +import com.darkona.adventurebackpack.util.LogHelper; + +import static com.darkona.adventurebackpack.common.Constants.TAG_INVENTORY; + +/** + * Created on 03.03.2018 + * + * @author Ugachaga + */ +public class ShapedBackpackRecipe extends ShapedOreRecipe +{ + static + { + RecipeSorter.register(ModInfo.MOD_ID + ":shapedbackpackrecipe", ShapedBackpackRecipe.class, + RecipeSorter.Category.SHAPED,"after:forge:shapedore before:minecraft:shapeless"); + } + + public ShapedBackpackRecipe(ItemStack result, Object... recipe) + { + super(result, recipe); + } + + @Override + public ItemStack getCraftingResult(InventoryCrafting craftMatrix) + { + ItemStack craftResult = super.getCraftingResult(craftMatrix); + + if (!(craftResult.getItem() == ModItems.adventureBackpack)) + return craftResult; // in case recipe is using backpack only as ingredient + + for (int i = 0; i < craftMatrix.getSizeInventory(); i++) + { + ItemStack matrixStack = craftMatrix.getStackInSlot(i); + if (matrixStack != null && matrixStack.getItem() == ModItems.adventureBackpack + && BackpackUtils.getWearableCompound(matrixStack).hasKey(TAG_INVENTORY)) + { + NBTTagList itemList = BackpackUtils.getWearableInventory(matrixStack); + BackpackUtils.getWearableCompound(craftResult).setTag(TAG_INVENTORY, itemList); + + LogHelper.info("Successfully transferred inventory from the ingredient backpack [" + + BackpackTypes.getSkinName(matrixStack) + "] to the crafted backpack [" + + BackpackTypes.getSkinName(craftResult) + "]"); + + break; // copy inventory content only from the 1st found backpack in the craftMatrix + } + } + + return craftResult; + } +} diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 90e0d430..93283a71 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -2,6 +2,7 @@ import java.util.List; +import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.model.ModelBiped; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; @@ -16,6 +17,7 @@ import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.FluidTank; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -25,6 +27,7 @@ import com.darkona.adventurebackpack.common.Constants; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.events.WearableEvent; +import com.darkona.adventurebackpack.util.TipUtils; import com.darkona.adventurebackpack.init.ModBlocks; import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.network.GUIPacket; @@ -37,7 +40,14 @@ import com.darkona.adventurebackpack.util.Resources; import com.darkona.adventurebackpack.util.Utils; +import static com.darkona.adventurebackpack.common.Constants.BASIC_TANK_CAPACITY; +import static com.darkona.adventurebackpack.common.Constants.TAG_DISABLE_CYCLING; +import static com.darkona.adventurebackpack.common.Constants.TAG_DISABLE_NVISION; +import static com.darkona.adventurebackpack.common.Constants.TAG_INVENTORY; +import static com.darkona.adventurebackpack.common.Constants.TAG_LEFT_TANK; +import static com.darkona.adventurebackpack.common.Constants.TAG_RIGHT_TANK; import static com.darkona.adventurebackpack.common.Constants.TAG_TYPE; +import static com.darkona.adventurebackpack.util.TipUtils.l10n; /** * Created on 12/10/2014 @@ -69,13 +79,47 @@ public void getSubItems(Item item, CreativeTabs par2CreativeTabs, List subItems) @Override @SuppressWarnings({"unchecked"}) @SideOnly(Side.CLIENT) - public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4) + public void addInformation(ItemStack stack, EntityPlayer player, List tooltips, boolean advanced) { NBTTagCompound backpackTag = BackpackUtils.getWearableCompound(stack); - if (backpackTag.hasKey(TAG_TYPE)) + + BackpackTypes type = BackpackTypes.getType(backpackTag.getByte(TAG_TYPE)); + tooltips.add(Utils.getColoredSkinName(type)); + + FluidTank tank = new FluidTank(BASIC_TANK_CAPACITY); + + if (GuiScreen.isShiftKeyDown()) + { + NBTTagList itemList = backpackTag.getTagList(TAG_INVENTORY, NBT.TAG_COMPOUND); + tooltips.add(l10n("backpack.slots.used") + ": " + TipUtils.inventoryTooltip(itemList)); + + tank.readFromNBT(backpackTag.getCompoundTag(TAG_LEFT_TANK)); + tooltips.add(l10n("backpack.tank.left") + ": " + TipUtils.tankTooltip(tank)); + + tank.readFromNBT(backpackTag.getCompoundTag(TAG_RIGHT_TANK)); + tooltips.add(l10n("backpack.tank.right") + ": " + TipUtils.tankTooltip(tank)); + + TipUtils.shiftFooter(tooltips); + } + else if (!GuiScreen.isCtrlKeyDown()) + { + tooltips.add(TipUtils.holdShift()); + } + + if (GuiScreen.isCtrlKeyDown()) { - BackpackTypes type = BackpackTypes.getType(backpackTag.getByte(TAG_TYPE)); - list.add(Utils.getColoredSkinName(type)); + boolean cycling = !backpackTag.getBoolean(TAG_DISABLE_CYCLING); + tooltips.add(l10n("backpack.cycling") + ": " + TipUtils.switchTooltip(cycling, true)); + tooltips.add(TipUtils.pressKeyFormat(TipUtils.actionKeyFormat()) + l10n("backpack.cycling.key1")); + tooltips.add(l10n("backpack.cycling.key2") + " " + TipUtils.switchTooltip(!cycling, false)); + + if (BackpackTypes.isNightVision(BackpackTypes.getType(backpackTag.getByte(TAG_TYPE)))) + { + boolean vision = !backpackTag.getBoolean(TAG_DISABLE_NVISION); + tooltips.add(l10n("backpack.vision") + ": " + TipUtils.switchTooltip(vision, true)); + tooltips.add(TipUtils.pressShiftKeyFormat(TipUtils.actionKeyFormat()) + l10n("backpack.vision.key1")); + tooltips.add(l10n("backpack.vision.key2") + " " + TipUtils.switchTooltip(!vision, false)); + } } } @@ -253,7 +297,7 @@ public double getDurabilityForDisplay(ItemStack stack) private int getItemCount(ItemStack backpack) { - NBTTagList itemList = BackpackUtils.getWearableCompound(backpack).getTagList(Constants.TAG_INVENTORY, NBT.TAG_COMPOUND); + NBTTagList itemList = BackpackUtils.getWearableInventory(backpack); int itemCount = itemList.tagCount(); for (int i = itemCount - 1; i >= 0; i--) { diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java index 36792ece..7597cddb 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCoalJetpack.java @@ -3,17 +3,23 @@ import java.util.List; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.model.ModelBiped; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import net.minecraftforge.common.BiomeDictionary; +import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -28,6 +34,9 @@ import com.darkona.adventurebackpack.proxy.ClientProxy; import com.darkona.adventurebackpack.util.BackpackUtils; import com.darkona.adventurebackpack.util.Resources; +import com.darkona.adventurebackpack.util.TipUtils; + +import static com.darkona.adventurebackpack.util.TipUtils.l10n; /** * Created on 15/01/2015 @@ -49,6 +58,43 @@ public void getSubItems(Item item, CreativeTabs tab, List list) list.add(BackpackUtils.createJetpackStack()); } + @Override + @SuppressWarnings({"unchecked"}) + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List tooltips, boolean advanced) + { + FluidTank waterTank = new FluidTank(Constants.Jetpack.WATER_CAPACITY); + FluidTank steamTank = new FluidTank(Constants.Jetpack.STEAM_CAPACITY); + NBTTagCompound jetpackTag = BackpackUtils.getWearableCompound(stack); + + if (GuiScreen.isShiftKeyDown()) + { + NBTTagList itemList = jetpackTag.getTagList(Constants.TAG_INVENTORY, NBT.TAG_COMPOUND); + tooltips.add(l10n("jetpack.fuel") + ": " + TipUtils.slotStackTooltip(itemList, Constants.Jetpack.FUEL_SLOT)); + + waterTank.readFromNBT(jetpackTag.getCompoundTag(Constants.Jetpack.TAG_WATER_TANK)); + tooltips.add(l10n("jetpack.tank.water") + ": " + TipUtils.tankTooltip(waterTank)); + + steamTank.readFromNBT(jetpackTag.getCompoundTag(Constants.Jetpack.TAG_STEAM_TANK)); + // special case for steam, have to set displayed fluid name manually, cuz technically it's water + String theSteam = steamTank.getFluidAmount() > 0 ? EnumChatFormatting.AQUA + l10n("steam") : ""; + tooltips.add(l10n("jetpack.tank.steam") + ": " + TipUtils.tankTooltip(steamTank, false) + theSteam); + + TipUtils.shiftFooter(tooltips); + } + else if (!GuiScreen.isCtrlKeyDown()) + { + tooltips.add(TipUtils.holdShift()); + } + + if (GuiScreen.isCtrlKeyDown()) + { + tooltips.add(l10n("max.altitude") + ": " + TipUtils.whiteFormat("185 ") + l10n("meters")); + tooltips.add(TipUtils.pressShiftKeyFormat(TipUtils.actionKeyFormat()) + l10n("jetpack.key.onoff1")); + tooltips.add(l10n("jetpack.key.onoff2") + " " + l10n("on")); + } + } + @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java index 127ba4ef..7b227cd1 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemCopterPack.java @@ -3,6 +3,7 @@ import java.util.List; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.model.ModelBiped; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; @@ -10,6 +11,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.ResourceLocation; @@ -26,9 +28,13 @@ import com.darkona.adventurebackpack.reference.GeneralReference; import com.darkona.adventurebackpack.util.BackpackUtils; import com.darkona.adventurebackpack.util.Resources; +import com.darkona.adventurebackpack.util.TipUtils; import com.darkona.adventurebackpack.util.Wearing; +import static com.darkona.adventurebackpack.common.Constants.Copter.FUEL_CAPACITY; +import static com.darkona.adventurebackpack.common.Constants.Copter.TAG_FUEL_TANK; import static com.darkona.adventurebackpack.common.Constants.Copter.TAG_STATUS; +import static com.darkona.adventurebackpack.util.TipUtils.l10n; /** * Created on 31/12/2014 @@ -56,6 +62,38 @@ public void getSubItems(Item item, CreativeTabs tab, List list) list.add(BackpackUtils.createCopterStack()); } + @Override + @SuppressWarnings({"unchecked"}) + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List tooltips, boolean advanced) + { + FluidTank fuelTank = new FluidTank(FUEL_CAPACITY); + NBTTagCompound copterTag = BackpackUtils.getWearableCompound(stack); + + if (GuiScreen.isShiftKeyDown()) + { + fuelTank.readFromNBT(copterTag.getCompoundTag(TAG_FUEL_TANK)); + tooltips.add(l10n("copter.tank.fuel") + ": " + TipUtils.tankTooltip(fuelTank)); + tooltips.add(l10n("copter.rate.fuel") + ": " + TipUtils.fuelConsumptionTooltip(fuelTank)); + + TipUtils.shiftFooter(tooltips); + } + else if (!GuiScreen.isCtrlKeyDown()) + { + tooltips.add(TipUtils.holdShift()); + } + + if (GuiScreen.isCtrlKeyDown()) + { + tooltips.add(l10n("max.altitude") + ": " + TipUtils.whiteFormat("250 ") + l10n("meters")); + tooltips.add(TipUtils.pressShiftKeyFormat(TipUtils.actionKeyFormat()) + l10n("copter.key.onoff1")); + tooltips.add(l10n("copter.key.onoff2") + " " + l10n("on")); + + tooltips.add(TipUtils.pressKeyFormat(TipUtils.actionKeyFormat()) + l10n("copter.key.hover1")); + tooltips.add(l10n("copter.key.hover2")); + } + } + @Override public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isCurrent) { diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java b/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java index 0dbe540c..b3fffa29 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemHose.java @@ -1,9 +1,12 @@ package com.darkona.adventurebackpack.item; +import java.util.List; + import org.apache.commons.lang3.text.WordUtils; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -15,6 +18,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IIcon; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; @@ -33,9 +37,11 @@ import com.darkona.adventurebackpack.init.ModFluids; import com.darkona.adventurebackpack.inventory.InventoryBackpack; import com.darkona.adventurebackpack.util.Resources; +import com.darkona.adventurebackpack.util.TipUtils; import com.darkona.adventurebackpack.util.Wearing; import static com.darkona.adventurebackpack.common.Constants.BUCKET; +import static com.darkona.adventurebackpack.util.TipUtils.l10n; /** * Created by Darkona on 12/10/2014. @@ -59,6 +65,27 @@ public ItemHose() setCreativeTab(CreativeTabAB.TAB_AB); } + @Override + @SuppressWarnings({"unchecked"}) + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List tooltips, boolean advanced) + { + if (GuiScreen.isCtrlKeyDown()) + { + tooltips.add(l10n("hose.key.header")); + tooltips.add("- " + TipUtils.pressKeyFormat(TipUtils.actionKeyFormat()) + l10n("hose.key.tank")); + tooltips.add("- " + TipUtils.pressShiftKeyFormat(TipUtils.whiteFormat(l10n("mouse.wheel"))) + l10n("hose.key.mode")); + tooltips.add(""); + tooltips.add(l10n("hose.dump1")); + tooltips.add(l10n("hose.dump2")); + tooltips.add(EnumChatFormatting.RED.toString() + l10n("hose.dump.warn")); + } + else + { + tooltips.add(TipUtils.holdCtrl()); + } + } + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(ItemStack stack, int pass) diff --git a/src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java index 787e2df6..3147bf57 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/WailaTileAdventureBackpack.java @@ -16,7 +16,7 @@ import com.darkona.adventurebackpack.block.TileAdventureBackpack; import com.darkona.adventurebackpack.common.Constants; -import com.darkona.adventurebackpack.handlers.TooltipEventHandler; +import com.darkona.adventurebackpack.util.TipUtils; import com.darkona.adventurebackpack.util.BackpackUtils; import com.darkona.adventurebackpack.util.Utils; @@ -113,17 +113,17 @@ private static void addTipToBackpack(List currenttip, IWailaDataAccessor private static void addTipToBackpack(List currenttip, NBTTagCompound backpackTag) { NBTTagList itemList = backpackTag.getTagList(TAG_INVENTORY, NBT.TAG_COMPOUND); - currenttip.add(TooltipEventHandler.local("backpack.slots.used") + ": " + TooltipEventHandler.inventoryTooltip(itemList)); + currenttip.add(TipUtils.l10n("backpack.slots.used") + ": " + TipUtils.inventoryTooltip(itemList)); FluidTank tank = new FluidTank(Constants.BASIC_TANK_CAPACITY); tank.readFromNBT(backpackTag.getCompoundTag(TAG_LEFT_TANK)); - currenttip.add(EnumChatFormatting.RESET + TooltipEventHandler.local("backpack.tank.left") - + ": " + TooltipEventHandler.tankTooltip(tank)); + currenttip.add(EnumChatFormatting.RESET + TipUtils.l10n("backpack.tank.left") + + ": " + TipUtils.tankTooltip(tank)); tank.readFromNBT(backpackTag.getCompoundTag(TAG_RIGHT_TANK)); - currenttip.add(EnumChatFormatting.RESET + TooltipEventHandler.local("backpack.tank.right") - + ": " + TooltipEventHandler.tankTooltip(tank)); + currenttip.add(EnumChatFormatting.RESET + TipUtils.l10n("backpack.tank.right") + + ": " + TipUtils.tankTooltip(tank)); } @Nullable diff --git a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java index 1f042f32..b8d48d41 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/BackpackUtils.java @@ -6,14 +6,17 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; import net.minecraft.util.ChatComponentTranslation; import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.util.Constants; import com.darkona.adventurebackpack.events.WearableEvent; import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.reference.BackpackTypes; +import static com.darkona.adventurebackpack.common.Constants.TAG_INVENTORY; import static com.darkona.adventurebackpack.common.Constants.TAG_TYPE; import static com.darkona.adventurebackpack.common.Constants.TAG_WEARABLE_COMPOUND; @@ -93,7 +96,7 @@ public void run() public static NBTTagCompound getWearableCompound(ItemStack stack) { - // well, it also creates wearable compound if stack has no own, so maybe worth to rename the method + // it also creates wearable compound if stack has no own, so maybe worth to rename the method if (!stack.hasTagCompound() || !stack.stackTagCompound.hasKey(TAG_WEARABLE_COMPOUND)) createWearableCompound(stack); @@ -108,6 +111,20 @@ private static void createWearableCompound(ItemStack stack) stack.stackTagCompound.setTag(TAG_WEARABLE_COMPOUND, new NBTTagCompound()); } + public static NBTTagList getWearableInventory(ItemStack stack) + { + // it also creates TagList if stack has no own, so maybe worth to rename the method + if (!getWearableCompound(stack).hasKey(TAG_INVENTORY)) + createWearableInventory(stack); + + return getWearableCompound(stack).getTagList(TAG_INVENTORY, Constants.NBT.TAG_COMPOUND); + } + + private static void createWearableInventory(ItemStack stack) + { + getWearableCompound(stack).setTag(TAG_INVENTORY, new NBTTagList()); + } + public static ItemStack createBackpackStack(BackpackTypes type) { ItemStack backpackStack = new ItemStack(ModItems.adventureBackpack, 1, BackpackTypes.getMeta(type)); diff --git a/src/main/java/com/darkona/adventurebackpack/util/TipUtils.java b/src/main/java/com/darkona/adventurebackpack/util/TipUtils.java new file mode 100644 index 00000000..3e99cce1 --- /dev/null +++ b/src/main/java/com/darkona/adventurebackpack/util/TipUtils.java @@ -0,0 +1,221 @@ +package com.darkona.adventurebackpack.util; + +import java.util.List; + +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.StatCollector; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; +import cpw.mods.fml.common.registry.GameData; + +import com.darkona.adventurebackpack.common.Constants; +import com.darkona.adventurebackpack.config.Keybindings; +import com.darkona.adventurebackpack.reference.GeneralReference; + +/** + * Created on 24.03.2017 + * + * @author Ugachaga + */ +public final class TipUtils +{ + private TipUtils() {} + + public static String l10n(String tip) + { + return StatCollector.translateToLocal("adventurebackpack:tooltips." + tip); + } + + public static void shiftFooter(List eventTips) + { + if (GuiScreen.isCtrlKeyDown()) + eventTips.add(""); + else + eventTips.add(holdCtrl()); + } + + public static String holdShift() + { + return holdThe(true); + } + + public static String holdCtrl() + { + return holdThe(false); + } + + private static String holdThe(boolean button) + { + return whiteFormat(EnumChatFormatting.ITALIC + "<" + (button ? l10n("hold.shift") + : l10n("hold.ctrl")) + ">"); + } + + public static String whiteFormat(String theString) + { + return EnumChatFormatting.WHITE + theString + EnumChatFormatting.GRAY; + } + + public static String actionKeyFormat() + { + return whiteFormat(Keybindings.getActionKeyName()); + } + + public static String pressKeyFormat(String button) + { + return l10n("press") + " '" + button + "' "; + } + + public static String pressShiftKeyFormat(String button) + { + return l10n("press") + " Shift+'" + button + "' "; + } + + public static String inventoryTooltip(NBTTagList itemList) + { + int itemCount = itemList.tagCount(); + boolean toolSlotU = false; + boolean toolSlotL = false; + for (int i = itemCount - 1; i >= 0; i--) + { + int slotAtI = itemList.getCompoundTagAt(i).getInteger(Constants.TAG_SLOT); + if (slotAtI < Constants.TOOL_UPPER) + break; + else if (slotAtI == Constants.TOOL_UPPER) + toolSlotU = true; + else if (slotAtI == Constants.TOOL_LOWER) + toolSlotL = true; + else + itemCount--; // this need for correct count while GUI is open and bucket slots may be occupied + } + itemCount -= (toolSlotU ? 1 : 0) + (toolSlotL ? 1 : 0); + return toolSlotFormat(toolSlotU) + toolSlotFormat(toolSlotL) + " " + mainSlotsFormat(itemCount); + } + + private static String toolSlotFormat(boolean isTool) + { + return (isTool ? EnumChatFormatting.WHITE : EnumChatFormatting.DARK_GRAY) + "[]"; + } + + private static String mainSlotsFormat(int slotsUsed) + { + String slotsFormatted = Integer.toString(slotsUsed); + if (slotsUsed == 0) + slotsFormatted = EnumChatFormatting.DARK_GRAY + slotsFormatted; + else if (slotsUsed == Constants.INVENTORY_MAIN_SIZE) + slotsFormatted = EnumChatFormatting.WHITE + slotsFormatted; + else + slotsFormatted = EnumChatFormatting.GRAY + slotsFormatted; + return slotsFormatted + "/" + Constants.INVENTORY_MAIN_SIZE; + } + + public static String tankTooltip(FluidTank tank) + { + return tankTooltip(tank, true); + } + + public static String tankTooltip(FluidTank tank, boolean attachName) + { + String fluidAmount = fluidAmountFormat(tank.getFluidAmount(), tank.getCapacity()); + String fluidName = tank.getFluid() == null ? "" : attachName ? fluidNameFormat(tank.getFluid()) : " "; + return fluidAmount + (tank.getFluidAmount() > 0 ? "/" + tank.getCapacity() : "") + fluidName; + } + + private static String fluidAmountFormat(int fluidAmount, int tankCapacity) + { + String amountFormatted = Integer.toString(fluidAmount); + if (fluidAmount == tankCapacity) + amountFormatted = EnumChatFormatting.WHITE + amountFormatted; + else if (fluidAmount == 0) + amountFormatted = emptyFormat(); + return amountFormatted; + } + + private static String fluidNameFormat(FluidStack fluid) + { + String nameUnlocalized = fluid.getUnlocalizedName().toLowerCase(); + String nameFormatted = " "; + if (nameUnlocalized.contains("lava") || nameUnlocalized.contains("fire")) + nameFormatted += EnumChatFormatting.RED; + else if (nameUnlocalized.contains("water")) + nameFormatted += EnumChatFormatting.BLUE; + else if (nameUnlocalized.contains("oil")) + nameFormatted += EnumChatFormatting.DARK_GRAY; + else if (nameUnlocalized.contains("fuel") || nameUnlocalized.contains("creosote")) + nameFormatted += EnumChatFormatting.YELLOW; + else if (nameUnlocalized.contains("milk")) + nameFormatted += EnumChatFormatting.WHITE; + else if (nameUnlocalized.contains("xpjuice")) + nameFormatted += EnumChatFormatting.GREEN; + else + nameFormatted += EnumChatFormatting.GRAY; + return nameFormatted + fluid.getLocalizedName(); + } + + public static String switchTooltip(boolean status, boolean doFormat) + { + return doFormat ? switchFormat(status) : status ? l10n("on") : l10n("off"); + } + + private static String switchFormat(boolean status) + { + String switchFormatted = status ? EnumChatFormatting.WHITE + l10n("on") + : EnumChatFormatting.DARK_GRAY + l10n("off"); + return "[" + switchFormatted + EnumChatFormatting.GRAY + "]"; + } + + public static String slotStackTooltip(NBTTagList itemList, int slot) + { + int slotID, slotMeta, slotCount = slotID = slotMeta = 0; + for (int i = 0; i <= slot; i++) + { + int slotAtI = itemList.getCompoundTagAt(i).getInteger(Constants.TAG_SLOT); + if (slotAtI == slot) + { + slotID = itemList.getCompoundTagAt(i).getInteger("id"); + slotMeta = itemList.getCompoundTagAt(i).getInteger("Damage"); + slotCount = itemList.getCompoundTagAt(i).getInteger("Count"); + break; + } + } + return stackDataFormat(slotID, slotMeta, slotCount); + } + + private static String stackDataFormat(int id, int meta, int count) + { + if (count == 0) + return emptyFormat(); + + String dataFormatted; + try + { + ItemStack iStack = new ItemStack(GameData.getItemRegistry().getObjectById(id), 0, meta); + dataFormatted = iStack.getDisplayName() + " (" + stackSizeFormat(iStack, count) + ")"; + } + catch (Exception e) + { + dataFormatted = EnumChatFormatting.RED + l10n("error"); + } + return dataFormatted; + } + + private static String stackSizeFormat(ItemStack stack, int count) + { + return stack.getMaxStackSize() == count ? whiteFormat(Integer.toString(count)) : Integer.toString(count); + } + + public static String fuelConsumptionTooltip(FluidTank tank) + { + return (tank.getFluid() != null) + ? String.format("x%.2f", GeneralReference.getFuelRate(tank.getFluid().getFluid().getName())) + : EnumChatFormatting.DARK_GRAY + "-" ; + } + + private static String emptyFormat() + { + return EnumChatFormatting.DARK_GRAY.toString() + EnumChatFormatting.ITALIC + l10n("empty"); + } + +} \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index b92e375e..9c2ae9eb 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -55,13 +55,11 @@ public static int[] createSlotArray(int first, int count) public static String makeItRainbow(String theString) { - int len = theString.length(); - StringBuilder rainbowed = new StringBuilder( len * 3); - for (int i = 0; i < len; i++) + StringBuilder rainbowed = new StringBuilder(theString.length() * 3); // special characters = length * 2 + for (int i = 0; i < theString.length(); i++) { rainbowed.append(RAINBOW_SEQUENCE[i % RAINBOW_SEQUENCE.length]).append(theString.charAt(i)); } - System.out.println(rainbowed.length()); return rainbowed.toString(); } @@ -80,15 +78,15 @@ public static String getColoredSkinName(BackpackTypes type) case PIGMAN: result += EnumChatFormatting.RED + skinName; break; + case QUARTZ: + result += makeWhiteAnimation(skinName); + break; case RAINBOW: result += makeItRainbow(skinName); break; case SQUID: result += EnumChatFormatting.DARK_AQUA + skinName; break; - case QUARTZ: - result += makeWhiteAnimation(skinName); - break; default: result += skinName; break; diff --git a/src/main/resources/assets/adventurebackpack/lang/en_US.lang b/src/main/resources/assets/adventurebackpack/lang/en_US.lang index 29287e66..b77d936b 100644 --- a/src/main/resources/assets/adventurebackpack/lang/en_US.lang +++ b/src/main/resources/assets/adventurebackpack/lang/en_US.lang @@ -79,7 +79,7 @@ adventurebackpack:messages.cycling.on=Tool Cycling: On. adventurebackpack:messages.cycling.off=Tool Cycling: Off. adventurebackpack:messages.crossbow.outofammo=Clockwork Crossbow: Out of ammo. -## Tooltips ("@" - line separator) +## Tooltips adventurebackpack:tooltips.on=ON adventurebackpack:tooltips.off=OFF adventurebackpack:tooltips.empty=Empty @@ -96,22 +96,28 @@ adventurebackpack:tooltips.backpack.slots.used=Slots used adventurebackpack:tooltips.backpack.tank.left=Left Tank adventurebackpack:tooltips.backpack.tank.right=Right Tank adventurebackpack:tooltips.backpack.cycling=Tool Cycling -adventurebackpack:tooltips.backpack.cycling.key=while wearing@backpack, for turn cycling +adventurebackpack:tooltips.backpack.cycling.key1=while wearing +adventurebackpack:tooltips.backpack.cycling.key2=backpack, for turn cycling adventurebackpack:tooltips.backpack.vision=Night Vision -adventurebackpack:tooltips.backpack.vision.key=while wearing@backpack, for turn nightvision +adventurebackpack:tooltips.backpack.vision.key1=while wearing +adventurebackpack:tooltips.backpack.vision.key2=backpack, for turn nightvision adventurebackpack:tooltips.jetpack.fuel=Fuel adventurebackpack:tooltips.jetpack.tank.water=Left Tank adventurebackpack:tooltips.jetpack.tank.steam=Right Tank -adventurebackpack:tooltips.jetpack.key.onoff=while wearing@jetpack, for turn it +adventurebackpack:tooltips.jetpack.key.onoff1=while wearing +adventurebackpack:tooltips.jetpack.key.onoff2=jetpack, for turn it adventurebackpack:tooltips.copter.tank.fuel=Fuel Tank adventurebackpack:tooltips.copter.rate.fuel=Fuel consumption rate -adventurebackpack:tooltips.copter.key.onoff=while wearing@copterpack, for turn it -adventurebackpack:tooltips.copter.key.hover=during flight to@switch hover mode +adventurebackpack:tooltips.copter.key.onoff1=while wearing +adventurebackpack:tooltips.copter.key.onoff2=copterpack, for turn it +adventurebackpack:tooltips.copter.key.hover1=during flight to +adventurebackpack:tooltips.copter.key.hover2=switch hover mode adventurebackpack:tooltips.hose.key.header=While holding Hose: adventurebackpack:tooltips.hose.key.tank=to change active tank adventurebackpack:tooltips.hose.key.mode=to change mode -adventurebackpack:tooltips.hose.dump=@Put Hose into bucketOut slot of wearable pack@to empty corresponded tank +adventurebackpack:tooltips.hose.dump1=Put Hose into bucketOut slot of wearable pack +adventurebackpack:tooltips.hose.dump2=to empty corresponded tank adventurebackpack:tooltips.hose.dump.warn=WARNING! Fluid will be dumped and lost. Forever. From 25d015bc7aa8a3ac290778178ef882870b927283 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Tue, 6 Mar 2018 13:00:19 +0700 Subject: [PATCH 452/462] Backpack types localizable --- gradle.properties | 2 +- .../block/TileAdventure.java | 1 - .../block/TileAdventureBackpack.java | 2 - .../item/ItemAdventureBackpack.java | 2 +- .../reference/BackpackTypes.java | 6 ++ .../adventurebackpack/util/CoordsUtils.java | 2 +- .../adventurebackpack/util/TipUtils.java | 4 +- .../darkona/adventurebackpack/util/Utils.java | 56 ++++++++----- .../assets/adventurebackpack/lang/en_US.lang | 80 +++++++++++++++++++ 9 files changed, 128 insertions(+), 27 deletions(-) diff --git a/gradle.properties b/gradle.properties index 42cb626b..8c786c98 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -buildnumber=h1 +buildnumber=h8 mod_version=0.9 minecraft_version=1.7.10 diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventure.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventure.java index b7d7e507..089ea259 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventure.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventure.java @@ -168,7 +168,6 @@ public void dirtyInventory() @Override public void dirtyTanks() { - // for now none is calling this for tile.backpack // if we really want to use it, we have to re-implement it, more efficient way dirtyInventory(); } diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index f59500b7..6014378a 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -199,7 +199,6 @@ public boolean updateTankSlots() @Override public void dirtyExtended() { - // for now none is calling this for tile.backpack // if we really want to use it, we have to re-implement it, more efficient way dirtyInventory(); } @@ -208,7 +207,6 @@ public void dirtyExtended() @Override public void dirtyTime() { - // for now none is calling this for tile.backpack // if we really want to use it, we have to re-implement it, more efficient way dirtyInventory(); } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 93283a71..06475cca 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -113,7 +113,7 @@ else if (!GuiScreen.isCtrlKeyDown()) tooltips.add(TipUtils.pressKeyFormat(TipUtils.actionKeyFormat()) + l10n("backpack.cycling.key1")); tooltips.add(l10n("backpack.cycling.key2") + " " + TipUtils.switchTooltip(!cycling, false)); - if (BackpackTypes.isNightVision(BackpackTypes.getType(backpackTag.getByte(TAG_TYPE)))) + if (BackpackTypes.isNightVision(type)) { boolean vision = !backpackTag.getBoolean(TAG_DISABLE_NVISION); tooltips.add(l10n("backpack.vision") + ": " + TipUtils.switchTooltip(vision, true)); diff --git a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java index cb33f834..5b29ee68 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java @@ -14,6 +14,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.StatCollector; import com.darkona.adventurebackpack.util.BackpackUtils; @@ -192,6 +193,11 @@ public static String getSkinName(ItemStack backpack) return getSkinName(getType(backpack)); } + public static String getLocalizedName(BackpackTypes type) + { + return StatCollector.translateToLocal("adventurebackpack:skin.name." + type.name().toLowerCase()); + } + public static byte getMeta(BackpackTypes type) { return type.meta; diff --git a/src/main/java/com/darkona/adventurebackpack/util/CoordsUtils.java b/src/main/java/com/darkona/adventurebackpack/util/CoordsUtils.java index 444b1676..4183149d 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/CoordsUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/CoordsUtils.java @@ -63,7 +63,7 @@ private static ChunkCoordinates checkCoordsForBackpack(IBlockAccess world, int c private static boolean isAirOrReplaceable(IBlockAccess world, int cX, int cY, int cZ) { - return world.isAirBlock(cX, cY, cZ) && world.getBlock(cX, cY, cZ).isReplaceable(world, cX, cY, cZ); + return world.isAirBlock(cX, cY, cZ) || world.getBlock(cX, cY, cZ).isReplaceable(world, cX, cY, cZ); } private static ChunkCoordinates checkCoordsForPlayer(IBlockAccess world, int origX, int origZ, int cX, int cY, int cZ, boolean except) diff --git a/src/main/java/com/darkona/adventurebackpack/util/TipUtils.java b/src/main/java/com/darkona/adventurebackpack/util/TipUtils.java index 3e99cce1..6c941fd6 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/TipUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/TipUtils.java @@ -53,9 +53,9 @@ private static String holdThe(boolean button) : l10n("hold.ctrl")) + ">"); } - public static String whiteFormat(String theString) + public static String whiteFormat(String stringIn) { - return EnumChatFormatting.WHITE + theString + EnumChatFormatting.GRAY; + return EnumChatFormatting.WHITE + stringIn + EnumChatFormatting.GRAY; } public static String actionKeyFormat() diff --git a/src/main/java/com/darkona/adventurebackpack/util/Utils.java b/src/main/java/com/darkona/adventurebackpack/util/Utils.java index 9c2ae9eb..27efcdd8 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/Utils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/Utils.java @@ -53,63 +53,80 @@ public static int[] createSlotArray(int first, int count) EnumChatFormatting.YELLOW, EnumChatFormatting.GREEN, EnumChatFormatting.AQUA, EnumChatFormatting.BLUE, EnumChatFormatting.DARK_PURPLE}; - public static String makeItRainbow(String theString) + public static String makeItRainbow(String stringIn) { - StringBuilder rainbowed = new StringBuilder(theString.length() * 3); // special characters = length * 2 - for (int i = 0; i < theString.length(); i++) + StringBuilder rainbowed = new StringBuilder(stringIn.length() * 3); // special characters = length * 2 + for (int i = 0; i < stringIn.length(); i++) { - rainbowed.append(RAINBOW_SEQUENCE[i % RAINBOW_SEQUENCE.length]).append(theString.charAt(i)); + rainbowed.append(RAINBOW_SEQUENCE[i % RAINBOW_SEQUENCE.length]).append(stringIn.charAt(i)); } return rainbowed.toString(); } public static String getColoredSkinName(BackpackTypes type) { - String result = ""; - String skinName = BackpackTypes.getSkinName(type); + String result; + String name = BackpackTypes.getLocalizedName(type); switch (type) { case BAT: - result += EnumChatFormatting.DARK_PURPLE + skinName; + result = EnumChatFormatting.DARK_PURPLE + name; + break; + case EMERALD: + result = animateString(name, EnumChatFormatting.GREEN); + break; + case DIAMOND: + result = animateString(name, EnumChatFormatting.AQUA); break; case DRAGON: - result += EnumChatFormatting.LIGHT_PURPLE + skinName; + result = EnumChatFormatting.LIGHT_PURPLE + name; + break; + case GOLD: + result = animateString(name, EnumChatFormatting.YELLOW); + break; + case IRON_GOLEM: + result = EnumChatFormatting.WHITE + name; + break; + case OBSIDIAN: + result = animateString(name, EnumChatFormatting.DARK_PURPLE); break; case PIGMAN: - result += EnumChatFormatting.RED + skinName; + result = EnumChatFormatting.RED + name; break; case QUARTZ: - result += makeWhiteAnimation(skinName); + result = animateString(name, EnumChatFormatting.WHITE); break; case RAINBOW: - result += makeItRainbow(skinName); + result = makeItRainbow(name); break; case SQUID: - result += EnumChatFormatting.DARK_AQUA + skinName; + result = EnumChatFormatting.DARK_AQUA + name; break; default: - result += skinName; + result = name; break; } return result; } - private static String makeWhiteAnimation(String string) + private static String animateString(String stringIn, EnumChatFormatting bold) { - return animateString(string, EnumChatFormatting.GRAY, EnumChatFormatting.WHITE); + return animateString(stringIn, EnumChatFormatting.GRAY, bold); } private static String animateString(String stringIn, EnumChatFormatting regular, EnumChatFormatting bold) { int len = stringIn.length(); int time = Math.abs((int) Minecraft.getMinecraft().theWorld.getWorldTime()); - int charID = time % len; - int n = 10; - int phaseFactor = time % (n * len); // makes n phases with len length + int k = 1; // animation slowness coefficient, changes charID every k ticks, k = 1 for max speed + int charID = (time / k) % len ; + + int n = 100 / len; // makes n phases with len length + int phaseFactor = (time / k) % (len * n); int phase = 1 + phaseFactor / len; - if (phase < 3) + if (phase == 1) { return decorateCharInString(stringIn, charID, regular, bold, phase % 2 != 0); } @@ -130,4 +147,5 @@ else if (i == (dir ? charID + 1 : charID - 1) && regular != null) } return decorated.toString(); } + } diff --git a/src/main/resources/assets/adventurebackpack/lang/en_US.lang b/src/main/resources/assets/adventurebackpack/lang/en_US.lang index b77d936b..24e40d74 100644 --- a/src/main/resources/assets/adventurebackpack/lang/en_US.lang +++ b/src/main/resources/assets/adventurebackpack/lang/en_US.lang @@ -121,3 +121,83 @@ adventurebackpack:tooltips.hose.key.mode=to change mode adventurebackpack:tooltips.hose.dump1=Put Hose into bucketOut slot of wearable pack adventurebackpack:tooltips.hose.dump2=to empty corresponded tank adventurebackpack:tooltips.hose.dump.warn=WARNING! Fluid will be dumped and lost. Forever. + +## Skins +adventurebackpack:skin.name.standard=Standard +adventurebackpack:skin.name.bat=Bat +adventurebackpack:skin.name.black=Black +adventurebackpack:skin.name.blaze=Blaze +adventurebackpack:skin.name.blue=Blue +adventurebackpack:skin.name.bookshelf=Bookshelf +adventurebackpack:skin.name.brown=Brown +adventurebackpack:skin.name.brown_mushroom=Brown Mushroom +adventurebackpack:skin.name.cactus=Cactus +adventurebackpack:skin.name.cake=Cake +adventurebackpack:skin.name.carrot=Carrot +adventurebackpack:skin.name.chest=Chest +adventurebackpack:skin.name.chicken=Chicken +adventurebackpack:skin.name.coal=Coal +adventurebackpack:skin.name.cookie=Cookie +adventurebackpack:skin.name.cow=Cow +adventurebackpack:skin.name.creeper=Creeper +adventurebackpack:skin.name.cyan=Cyan +adventurebackpack:skin.name.deluxe=Deluxe +adventurebackpack:skin.name.diamond=Diamond +adventurebackpack:skin.name.dragon=Dragon +adventurebackpack:skin.name.egg=Egg +adventurebackpack:skin.name.electric=Electric +adventurebackpack:skin.name.emerald=Emerald +adventurebackpack:skin.name.end=End +adventurebackpack:skin.name.enderman=Enderman +adventurebackpack:skin.name.ghast=Ghast +adventurebackpack:skin.name.glowstone=Glowstone +adventurebackpack:skin.name.gold=Gold +adventurebackpack:skin.name.gray=Gray +adventurebackpack:skin.name.green=Green +adventurebackpack:skin.name.haybale=Haybale +adventurebackpack:skin.name.horse=Horse +adventurebackpack:skin.name.iron=Iron +adventurebackpack:skin.name.iron_golem=Iron Golem +adventurebackpack:skin.name.lapis=Lapis +adventurebackpack:skin.name.leather=Leather +adventurebackpack:skin.name.light_blue=Light Blue +adventurebackpack:skin.name.light_gray=Light Gray +adventurebackpack:skin.name.lime=Lime +adventurebackpack:skin.name.magenta=Magenta +adventurebackpack:skin.name.magma_cube=Magma Cube +adventurebackpack:skin.name.melon=Melon +adventurebackpack:skin.name.modded_network=Modded Network +adventurebackpack:skin.name.mooshroom=Mooshroom +adventurebackpack:skin.name.nether=Nether +adventurebackpack:skin.name.obsidian=Obsidian +adventurebackpack:skin.name.ocelot=Ocelot +adventurebackpack:skin.name.orange=Orange +adventurebackpack:skin.name.overworld=Overworld +adventurebackpack:skin.name.pig=Pig +adventurebackpack:skin.name.pigman=Pigman +adventurebackpack:skin.name.pink=Pink +adventurebackpack:skin.name.pumpkin=Pumpkin +adventurebackpack:skin.name.purple=Purple +adventurebackpack:skin.name.quartz=Quartz +adventurebackpack:skin.name.rainbow=Rainbow +adventurebackpack:skin.name.red=Red +adventurebackpack:skin.name.red_mushroom=Red Mushroom +adventurebackpack:skin.name.redstone=Redstone +adventurebackpack:skin.name.sandstone=Sandstone +adventurebackpack:skin.name.sheep=Sheep +adventurebackpack:skin.name.silverfish=Silverfish +adventurebackpack:skin.name.skeleton=Skeleton +adventurebackpack:skin.name.slime=Slime +adventurebackpack:skin.name.snow=Snow +adventurebackpack:skin.name.spider=Spider +adventurebackpack:skin.name.sponge=Sponge +adventurebackpack:skin.name.squid=Squid +adventurebackpack:skin.name.sunflower=Sunflower +adventurebackpack:skin.name.villager=Villager +adventurebackpack:skin.name.white=White +adventurebackpack:skin.name.wither=Wither +adventurebackpack:skin.name.wither_skeleton=Wither Skeleton +adventurebackpack:skin.name.wolf=Wolf +adventurebackpack:skin.name.yellow=Yellow +adventurebackpack:skin.name.zombie=Zombie +adventurebackpack:skin.name.unknown=UNKNOWN \ No newline at end of file From c7869584a44fe7eb6ba7d362ce825907469e78a4 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Thu, 5 Jul 2018 08:00:10 +0700 Subject: [PATCH 453/462] Fixed crash with Battlear2 slots and Tool Slot Protip: using Tool Slot you can put TiCo tool into the Battlegear slots --- .../com/darkona/adventurebackpack/common/ServerActions.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index 6e44d448..a260a048 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -70,10 +70,8 @@ public static void cycleTool(EntityPlayer player, boolean isWheelUp, int playerS { int backpackSlot = isWheelUp ? TOOL_UPPER : TOOL_LOWER; InventoryBackpack backpack = Wearing.getWearingBackpackInv(player); - backpack.openInventory(); - player.inventory.mainInventory[playerSlot] = backpack.getStackInSlot(backpackSlot); - backpack.setInventorySlotContentsNoSave(backpackSlot, current); - backpack.dirtyInventory(); + player.inventory.setInventorySlotContents(playerSlot, backpack.getStackInSlot(backpackSlot)); + backpack.setInventorySlotContents(backpackSlot, current); } } From 92a6a417b8a0706ebb9042be27fbbe9d524d2bf0 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 11 Jul 2018 06:14:42 +0700 Subject: [PATCH 454/462] Fixed WAILA dependency --- .../com/darkona/adventurebackpack/AdventureBackpack.java | 3 +-- .../com/darkona/adventurebackpack/proxy/ClientProxy.java | 6 ------ .../java/com/darkona/adventurebackpack/proxy/IProxy.java | 2 -- .../com/darkona/adventurebackpack/proxy/ServerProxy.java | 6 ------ .../com/darkona/adventurebackpack/reference/LoadedMods.java | 1 + 5 files changed, 2 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java index 788bb2a1..e5915f3b 100644 --- a/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/AdventureBackpack.java @@ -58,7 +58,6 @@ public void preInit(FMLPreInitializationEvent event) FluidEffectRegistry.init(); ModEntities.init(); ModNetwork.init(); - proxy.initNetwork(); //Events MinecraftForge.EVENT_BUS.register(new GeneralEventHandler()); @@ -74,7 +73,7 @@ public void init(FMLInitializationEvent event) proxy.init(); ModRecipes.init(); ModWorldGen.init(); - WailaTileAdventureBackpack.init(); + if (LoadedMods.WAILA) WailaTileAdventureBackpack.init(); //GUIs NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandler()); diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java index 06139230..e23a6f48 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ClientProxy.java @@ -65,12 +65,6 @@ public void init() } } - @Override - public void initNetwork() - { - - } - @Override public void synchronizePlayer(int id, NBTTagCompound properties) { diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java index fea7845a..a5ecbaf2 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/IProxy.java @@ -13,7 +13,5 @@ public interface IProxy void registerKeybindings(); - void initNetwork(); - void synchronizePlayer(int id, NBTTagCompound compound); } diff --git a/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java b/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java index 6519e371..00d20cef 100644 --- a/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java +++ b/src/main/java/com/darkona/adventurebackpack/proxy/ServerProxy.java @@ -32,12 +32,6 @@ public void registerKeybindings() } - @Override - public void initNetwork() - { - - } - @Override public void synchronizePlayer(int id, NBTTagCompound compound) { diff --git a/src/main/java/com/darkona/adventurebackpack/reference/LoadedMods.java b/src/main/java/com/darkona/adventurebackpack/reference/LoadedMods.java index e5172e05..04b1153f 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/LoadedMods.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/LoadedMods.java @@ -21,6 +21,7 @@ public final class LoadedMods public static final boolean NEI = registerMod("NotEnoughItems"); public static final boolean TCONSTRUCT = registerMod("TConstruct"); public static final boolean THAUMCRAFT = registerMod("Thaumcraft"); + public static final boolean WAILA = registerMod("waila"); private LoadedMods() {} From 2e515575caa931246c186ad98d15001b6f14808d Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sun, 22 Jul 2018 00:41:52 +0700 Subject: [PATCH 455/462] getTinkersRecipe synchronized --- .../java/com/darkona/adventurebackpack/util/TinkersUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java index 0fc174ec..a3264444 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java @@ -131,7 +131,7 @@ public static boolean isTool(String clazzName) } @Nullable - public static ItemStack getTinkersRecipe(InventoryCrafting craftMatrix) + public synchronized static ItemStack getTinkersRecipe(InventoryCrafting craftMatrix) { if (craftingStationInstance == null) return null; From 9a17aaacd4de78bb6be315947f179fbbbf272997 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 29 Aug 2018 09:55:59 +0700 Subject: [PATCH 456/462] Russian translation by @pingvikin --- .../assets/adventurebackpack/lang/ru_RU.lang | 119 ++++++++++++++++-- 1 file changed, 112 insertions(+), 7 deletions(-) diff --git a/src/main/resources/assets/adventurebackpack/lang/ru_RU.lang b/src/main/resources/assets/adventurebackpack/lang/ru_RU.lang index 9116ee7b..4ebe7d9d 100644 --- a/src/main/resources/assets/adventurebackpack/lang/ru_RU.lang +++ b/src/main/resources/assets/adventurebackpack/lang/ru_RU.lang @@ -1,3 +1,5 @@ +#Перевод сделан pingvikin + # Items ## Component Items For Crafting @@ -5,6 +7,7 @@ item.adventurebackpack:backpackComponent.name=Компонент рюкзака item.adventurebackpack:sleepingBag.name=Спальный мешок item.adventurebackpack:backpackTank.name=Резервуар для жидкости рюкзака item.adventurebackpack:macheteHandle=Ручка от мачете +item.adventurebackpack:macheteHandle.name=Ручка от мачете item.adventurebackpack:hoseHead.name=Наконечник для трубки item.adventurebackpack:copterEngine.name=Двухцилиндровый дизельный двигатель item.adventurebackpack:copterBlades.name=Вертолётные лопасти @@ -28,25 +31,28 @@ item.adventurebackpack:hose_rightTank_drink.name=Трубка для жидко item.adventurebackpack:hoseUseless.name=Трубка для жидкостей: Не используется / Нет рюкзака ## Wearables -item.adventurebackpack:adventureBackpack.name=Рюкзак искателя приключений +item.adventurebackpack:adventureBackpack.name=Рюкзак путешественника item.adventurebackpack:copterPack.name=Вертолётный ранец item.adventurebackpack:steamJetpack.name=Паровой ранец +item.adventurebackpack:coalJetpack.name=Угольный Ранец ## Armor -item.adventurebackpack:adventureSuit.name=Костюм искателя приключений -item.adventurebackpack:adventureHat.name=Фетровая шляпа искателя приключений +item.adventurebackpack:adventureSuit.name=Дублёнка +item.adventurebackpack:adventureHat.name=Фетровая шляпа +item.adventurebackpack:adventurePants.name=Штаны из Дублёной кожи item.adventurebackpack:pistonBoots.name=Поршневые ботинки ## Blocks -block.adventurebackpack:blockAdventureBackpack.name=Основа рюкзака искателя приключений +block.adventurebackpack:blockAdventureBackpack.name=Основа рюкзака путешественника block.adventurebackpack:blockCampFire.name=Костёр +blockCampFire.name=Костёр block.adventurebackpack:blockSleepingBag.name=Спальный мешок ## CreativeTab -itemGroup.adventurebackpack=Рюкзак искателя приключений +itemGroup.adventurebackpack=Рюкзак путешественника ## Keybindings -keys.adventureBackpack.category=Рюкзак искателя приключений +keys.adventureBackpack.category=Рюкзак путешественника keys.adventureBackpack.openBackpackInventory=Открыть инвентарь рюкзака keys.adventureBackpack.switchHoseTank=Сменить используемый резервуар @@ -67,9 +73,108 @@ adventurebackpack:messages.jetpack.on=Паровой ранец: Включен. adventurebackpack:messages.jetpack.off=Паровой ранец: Выключен. adventurebackpack:messages.crossbow.outofammo=Арбалет с часовым механизмом: Нет боеприпасов. +adventurebackpack:messages.backpack.cant.bag=Недостаточно места, для установки спального мешка +adventurebackpack:messages.cant.sleep.here=Древние силы не приветствуют сон здесь. +adventurebackpack:messages.nightvision.on=Ночное зрение Включено. +adventurebackpack:messages.nightvision.off=Ночное зрение Выключено. +adventurebackpack:messages.cycling.on=Карманы для инструментов Включены. +adventurebackpack:messages.cycling.off=Карманы для инструментов Выключены. ## adventurebackpack:tooltips.on=ВКЛ adventurebackpack:tooltips.off=ВЫКЛ adventurebackpack:tooltips.empty=Пусто -adventurebackpack:tooltips.meters=метров (кубов)@над уровнем бедрока \ No newline at end of file +adventurebackpack:tooltips.meters=метров (кубов)@над уровнем бедрока +adventurebackpack:tooltips.backpack.slots.used=Доступные слоты +adventurebackpack:tooltips.backpack.tank.left=Левый бак +adventurebackpack:tooltips.backpack.tank.right=Правый бак +adventurebackpack:tooltips.backpack.cycling=Карманы для инструментов +adventurebackpack:tooltips.backpack.cycling.key1=во время ношения +adventurebackpack:tooltips.backpack.cycling.key2=рюкзака +adventurebackpack:tooltips.backpack.vision=Ночное зрение +adventurebackpack:tooltips.backpack.vision.key1=во время носки +adventurebackpack:tooltips.backpack.vision.key2=рюкзака + +adventurebackpack:tooltips.jetpack.fuel=Топливо +adventurebackpack:tooltips.jetpack.tank.water=Левый бак +adventurebackpack:tooltips.jetpack.tank.steam=Правый бак + +## Skins +adventurebackpack:skin.name.standard=Обычный +adventurebackpack:skin.name.bat=Летучие мыши ^-^ +adventurebackpack:skin.name.black=Чёрный +adventurebackpack:skin.name.blaze=Ифрита +adventurebackpack:skin.name.blue=Синий +adventurebackpack:skin.name.bookshelf=Книжный +adventurebackpack:skin.name.brown=Серый +adventurebackpack:skin.name.brown_mushroom=Серый Гриб +adventurebackpack:skin.name.cactus=Кактус +adventurebackpack:skin.name.cake=Торт +adventurebackpack:skin.name.carrot=Морковь +adventurebackpack:skin.name.chest=Сундук +adventurebackpack:skin.name.chicken=Курица +adventurebackpack:skin.name.coal=Уголь +adventurebackpack:skin.name.cookie=Печенька +adventurebackpack:skin.name.cow=Бык +adventurebackpack:skin.name.creeper=Крипер +adventurebackpack:skin.name.cyan=Бирюзовый +adventurebackpack:skin.name.deluxe=Делюкс +adventurebackpack:skin.name.diamond=Алмазный +adventurebackpack:skin.name.dragon=Дракон +adventurebackpack:skin.name.egg=Яйцо +adventurebackpack:skin.name.electric=Электрический +adventurebackpack:skin.name.emerald=Изумруд +adventurebackpack:skin.name.end=Край +adventurebackpack:skin.name.enderman=Эндермен +adventurebackpack:skin.name.ghast=Гаст +adventurebackpack:skin.name.glowstone=Свето-каменный +adventurebackpack:skin.name.gold=Золотой +adventurebackpack:skin.name.gray=Серый +adventurebackpack:skin.name.green=Зелёный +adventurebackpack:skin.name.haybale=СЕНО +adventurebackpack:skin.name.horse=Пони +adventurebackpack:skin.name.iron=Железный +adventurebackpack:skin.name.iron_golem=Железный Голем +adventurebackpack:skin.name.lapis=Лазурит +adventurebackpack:skin.name.leather=Кожанный +adventurebackpack:skin.name.light_blue=Голубой +adventurebackpack:skin.name.light_gray=Светло-Серый +adventurebackpack:skin.name.lime=Лаймовый +adventurebackpack:skin.name.magenta=Пурпурный +adventurebackpack:skin.name.magma_cube=Магмовый Куб +adventurebackpack:skin.name.melon=Арбузный +adventurebackpack:skin.name.modded_network=Молодёжный +adventurebackpack:skin.name.mooshroom=Грибной +adventurebackpack:skin.name.nether=Адский +adventurebackpack:skin.name.obsidian=Обсидиановый +adventurebackpack:skin.name.ocelot=Кошачий +adventurebackpack:skin.name.orange=Оранжевый +adventurebackpack:skin.name.overworld=Земной +adventurebackpack:skin.name.pig=Поросёнок +adventurebackpack:skin.name.pigman=Свино-Зомби +adventurebackpack:skin.name.pink=Розовый +adventurebackpack:skin.name.pumpkin=Тыква +adventurebackpack:skin.name.purple=Фиолетовый +adventurebackpack:skin.name.quartz=Кварцевый +adventurebackpack:skin.name.rainbow=Нян-Кет +adventurebackpack:skin.name.red=Красный +adventurebackpack:skin.name.red_mushroom=Красный Гриб +adventurebackpack:skin.name.redstone=Красный камень +adventurebackpack:skin.name.sandstone=Песчанник +adventurebackpack:skin.name.sheep=Овечка +adventurebackpack:skin.name.silverfish=Чешуйница +adventurebackpack:skin.name.skeleton=Скелет +adventurebackpack:skin.name.slime=Слизень +adventurebackpack:skin.name.snow=Зимний +adventurebackpack:skin.name.spider=Паук +adventurebackpack:skin.name.sponge=Губка +adventurebackpack:skin.name.squid=Спрут +adventurebackpack:skin.name.sunflower=Подсолнух +adventurebackpack:skin.name.villager=Житель +adventurebackpack:skin.name.white=Белый +adventurebackpack:skin.name.wither=Иссушитель +adventurebackpack:skin.name.wither_skeleton=Скелет-Иссушитель +adventurebackpack:skin.name.wolf=Волк +adventurebackpack:skin.name.yellow=Жёлтый +adventurebackpack:skin.name.zombie=Зомби +adventurebackpack:skin.name.unknown=Неизвестный \ No newline at end of file From 288b8620549fa6928de278914110720cdae3dfe5 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 29 Aug 2018 10:32:49 +0700 Subject: [PATCH 457/462] Russian translation fixes --- .../assets/adventurebackpack/lang/ru_RU.lang | 93 ++++++++++++------- 1 file changed, 58 insertions(+), 35 deletions(-) diff --git a/src/main/resources/assets/adventurebackpack/lang/ru_RU.lang b/src/main/resources/assets/adventurebackpack/lang/ru_RU.lang index 4ebe7d9d..9186740a 100644 --- a/src/main/resources/assets/adventurebackpack/lang/ru_RU.lang +++ b/src/main/resources/assets/adventurebackpack/lang/ru_RU.lang @@ -1,60 +1,58 @@ #Перевод сделан pingvikin -# Items - ## Component Items For Crafting item.adventurebackpack:backpackComponent.name=Компонент рюкзака item.adventurebackpack:sleepingBag.name=Спальный мешок -item.adventurebackpack:backpackTank.name=Резервуар для жидкости рюкзака -item.adventurebackpack:macheteHandle=Ручка от мачете +item.adventurebackpack:backpackTank.name=Бак для жидкости item.adventurebackpack:macheteHandle.name=Ручка от мачете -item.adventurebackpack:hoseHead.name=Наконечник для трубки +item.adventurebackpack:hoseHead.name=Наконечник шланга item.adventurebackpack:copterEngine.name=Двухцилиндровый дизельный двигатель item.adventurebackpack:copterBlades.name=Вертолётные лопасти item.adventurebackpack:hydroBlades.name=Водяные лопасти item.adventurebackpack:inflatableBoat.name=Надувная лодка item.adventurebackpack:inflatableBoatMotorized.name=Надувная лодка с мотором +## Entity +entity.adventurebackpack.inflatableBoat.name=Надувная лодка + ## Tools and consumables item.adventurebackpack:clockworkCrossbow.name=Арбалет с часовым механизмом item.adventurebackpack:melonJuiceBottle.name=Бутылка с арбузным соком item.adventurebackpack:machete.name=Мачете -item.adventurebackpack:backpackHose.name=Трубка для жидкостей рюкзака -item.adventurebackpack:hose_leftTank_suck.name=Трубка для жидкостей: Левая ёмкость / Режим закачивания -item.adventurebackpack:hose_leftTank_spill.name=Трубка для жидкостей: Левая ёмкость / Режим откачивания -item.adventurebackpack:hose_leftTank_drink.name=Трубка для жидкостей: Левая ёмкость / Режим питья +item.adventurebackpack:backpackHose.name=Шланг для рюкзака +item.adventurebackpack:hose_leftTank_suck.name=Шланг: Левый бак / Режим закачивания +item.adventurebackpack:hose_leftTank_spill.name=Шланг: Левый бак / Режим откачивания +item.adventurebackpack:hose_leftTank_drink.name=Шланг: Левый бак / Режим питья -item.adventurebackpack:hose_rightTank_suck.name=Трубка для жидкостей: Правая ёмкость / Режим закачивания -item.adventurebackpack:hose_rightTank_spill.name=Трубка для жидкостей: Правая ёмкость / Режим откачивания -item.adventurebackpack:hose_rightTank_drink.name=Трубка для жидкостей: Правая ёмкость / Режим питья -item.adventurebackpack:hoseUseless.name=Трубка для жидкостей: Не используется / Нет рюкзака +item.adventurebackpack:hose_rightTank_suck.name=Шланг: Правый бак / Режим закачивания +item.adventurebackpack:hose_rightTank_spill.name=Шланг: Правый бак / Режим откачивания +item.adventurebackpack:hose_rightTank_drink.name=Шланг: Правый бак / Режим питья +item.adventurebackpack:hoseUseless.name=Шланг: Не используется / Нет рюкзака ## Wearables item.adventurebackpack:adventureBackpack.name=Рюкзак путешественника item.adventurebackpack:copterPack.name=Вертолётный ранец -item.adventurebackpack:steamJetpack.name=Паровой ранец -item.adventurebackpack:coalJetpack.name=Угольный Ранец +item.adventurebackpack:coalJetpack.name=Паровой ранец ## Armor item.adventurebackpack:adventureSuit.name=Дублёнка item.adventurebackpack:adventureHat.name=Фетровая шляпа -item.adventurebackpack:adventurePants.name=Штаны из Дублёной кожи +item.adventurebackpack:adventurePants.name=Дублёные штаны item.adventurebackpack:pistonBoots.name=Поршневые ботинки ## Blocks -block.adventurebackpack:blockAdventureBackpack.name=Основа рюкзака путешественника -block.adventurebackpack:blockCampFire.name=Костёр +blockAdventureBackpack.name=Основа рюкзака путешественника blockCampFire.name=Костёр -block.adventurebackpack:blockSleepingBag.name=Спальный мешок +blockSleepingBag.name=Спальный мешок ## CreativeTab itemGroup.adventurebackpack=Рюкзак путешественника ## Keybindings keys.adventureBackpack.category=Рюкзак путешественника -keys.adventureBackpack.openBackpackInventory=Открыть инвентарь рюкзака -keys.adventureBackpack.switchHoseTank=Сменить используемый резервуар +keys.adventureBackpack.openInventory=Открыть инвентарь +keys.adventureBackpack.toggleActions=Toggle Actions ## Fluids fluid.melonJuice=Арбузный сок @@ -62,42 +60,67 @@ fluid.milk=Молоко fluid.mushrromstew=Тушеные грибы ## Messages -adventurebackpack:already.equipped=Рюкзак уже надет на вас. +adventurebackpack:messages.already.equipped.backpack=Рюкзак уже надет на вас. +adventurebackpack:messages.already.equipped.copterpack=Вертолётный ранец уже надет. +adventurebackpack:messages.already.equipped.jetpack=Паровой ранец уже надет. adventurebackpack:messages.already.impossibru=Вы не можете надеть больше рюкзаков. -adventurebackpack:messages.copterpack.hover=Вертолётный ранец: Режим зависания. +adventurebackpack:messages.backpack.cant.bag=Недостаточно места, для установки спального мешка. +adventurebackpack:messages.cant.sleep.here=Древние силы не дают вам уснуть. +adventurebackpack:messages.copterpack.hover=Вертолётный ранец: Режим парения. adventurebackpack:messages.copterpack.normal=Вертолётный ранец: Обычный режим. adventurebackpack:messages.copterpack.outoffuel=Вертолётный ранец: Нет топлива. adventurebackpack:messages.copterpack.cantwater=Вертолётный ранец: Невозможно работать в воде. adventurebackpack:messages.copterpack.off=Вертолётный ранец: Выключен. adventurebackpack:messages.jetpack.on=Паровой ранец: Включен. adventurebackpack:messages.jetpack.off=Паровой ранец: Выключен. +adventurebackpack:messages.nightvision.on=Ночное зрение: Включено. +adventurebackpack:messages.nightvision.off=Ночное зрение: Выключено. +adventurebackpack:messages.cycling.on=Карманы для инструментов: Включены. +adventurebackpack:messages.cycling.off=Карманы для инструментов: Выключены. adventurebackpack:messages.crossbow.outofammo=Арбалет с часовым механизмом: Нет боеприпасов. -adventurebackpack:messages.backpack.cant.bag=Недостаточно места, для установки спального мешка -adventurebackpack:messages.cant.sleep.here=Древние силы не приветствуют сон здесь. -adventurebackpack:messages.nightvision.on=Ночное зрение Включено. -adventurebackpack:messages.nightvision.off=Ночное зрение Выключено. -adventurebackpack:messages.cycling.on=Карманы для инструментов Включены. -adventurebackpack:messages.cycling.off=Карманы для инструментов Выключены. - -## +## Tooltips adventurebackpack:tooltips.on=ВКЛ adventurebackpack:tooltips.off=ВЫКЛ adventurebackpack:tooltips.empty=Пусто -adventurebackpack:tooltips.meters=метров (кубов)@над уровнем бедрока +adventurebackpack:tooltips.meters=метров +adventurebackpack:tooltips.error=Ошибка +adventurebackpack:tooltips.steam=Пар +adventurebackpack:tooltips.press=Нажмите +adventurebackpack:tooltips.hold.shift=Удерживайте Shift +adventurebackpack:tooltips.hold.ctrl=Удерживайте Ctrl +adventurebackpack:tooltips.mouse.wheel=Wheel +adventurebackpack:tooltips.max.altitude=Максмальная высота + adventurebackpack:tooltips.backpack.slots.used=Доступные слоты adventurebackpack:tooltips.backpack.tank.left=Левый бак adventurebackpack:tooltips.backpack.tank.right=Правый бак adventurebackpack:tooltips.backpack.cycling=Карманы для инструментов adventurebackpack:tooltips.backpack.cycling.key1=во время ношения -adventurebackpack:tooltips.backpack.cycling.key2=рюкзака +adventurebackpack:tooltips.backpack.cycling.key2=рюкзака чтобы adventurebackpack:tooltips.backpack.vision=Ночное зрение -adventurebackpack:tooltips.backpack.vision.key1=во время носки -adventurebackpack:tooltips.backpack.vision.key2=рюкзака +adventurebackpack:tooltips.backpack.vision.key1=во время ношения +adventurebackpack:tooltips.backpack.vision.key2=рюкзака чтобы adventurebackpack:tooltips.jetpack.fuel=Топливо adventurebackpack:tooltips.jetpack.tank.water=Левый бак adventurebackpack:tooltips.jetpack.tank.steam=Правый бак +adventurebackpack:tooltips.jetpack.key.onoff1=во время ношения +adventurebackpack:tooltips.jetpack.key.onoff2=ранца чтобы + +adventurebackpack:tooltips.copter.tank.fuel=Бак топлива +adventurebackpack:tooltips.copter.rate.fuel=Потребления топлива +adventurebackpack:tooltips.copter.key.onoff1=во время ношения +adventurebackpack:tooltips.copter.key.onoff2=ранца чтобы +adventurebackpack:tooltips.copter.key.hover1=во время полета +adventurebackpack:tooltips.copter.key.hover2=переключить режим парения + +adventurebackpack:tooltips.hose.key.header=Когда держите Шланг: +adventurebackpack:tooltips.hose.key.tank=чтобы изменить активный бак +adventurebackpack:tooltips.hose.key.mode=чтобы изменить режим +adventurebackpack:tooltips.hose.dump1=Поместите Шланг в выходящий слот Ранца +adventurebackpack:tooltips.hose.dump2=чтобы опустошить соответствующий бак +adventurebackpack:tooltips.hose.dump.warn=ВНИМАНИЕ! Жидкость будет слита и потеряна. Навсегда. ## Skins adventurebackpack:skin.name.standard=Обычный From d23a14f56a8c6f6ac8b5c489f22973cff6065bff Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Wed, 29 Aug 2018 15:04:40 +0700 Subject: [PATCH 458/462] Fix visual glitch when shift+q lava crystal --- .../inventory/ContainerAdventure.java | 11 ++++++++++- .../darkona/adventurebackpack/util/TinkersUtils.java | 2 +- .../assets/adventurebackpack/lang/ru_RU.lang | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventure.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventure.java index 2e72097c..c71f6f46 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventure.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventure.java @@ -32,6 +32,7 @@ public abstract class ContainerAdventure extends Container private final int[] fluidsAmount; private int itemsCount; + private boolean requestedUpdate; protected ContainerAdventure(EntityPlayer player, IInventoryTanks inventory, Source source) { @@ -58,9 +59,17 @@ public void detectAndSendChanges() if (source == Source.HOLDING) // used for refresh tooltips and redraw tanks content while GUI is open { - if ((detectItemChanges() | detectFluidChanges()) && player instanceof EntityPlayerMP) + // intentionally update container with 1 tick delay after detect changes due to visual glitches + // in rare cases on some modded items, ex.: shift+q on blood magic lava crystals + if (requestedUpdate && player instanceof EntityPlayerMP) { ((EntityPlayerMP) player).sendContainerAndContentsToPlayer(this, this.getInventory()); + requestedUpdate = false; + } + + if ((detectItemChanges() | detectFluidChanges())) + { + requestedUpdate = true; } } } diff --git a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java index a3264444..c062668d 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java @@ -1,8 +1,8 @@ package com.darkona.adventurebackpack.util; +import java.util.UUID; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import java.util.UUID; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.InventoryPlayer; diff --git a/src/main/resources/assets/adventurebackpack/lang/ru_RU.lang b/src/main/resources/assets/adventurebackpack/lang/ru_RU.lang index 9186740a..dcb791a4 100644 --- a/src/main/resources/assets/adventurebackpack/lang/ru_RU.lang +++ b/src/main/resources/assets/adventurebackpack/lang/ru_RU.lang @@ -42,7 +42,7 @@ item.adventurebackpack:adventurePants.name=Дублёные штаны item.adventurebackpack:pistonBoots.name=Поршневые ботинки ## Blocks -blockAdventureBackpack.name=Основа рюкзака путешественника +blockAdventureBackpack.name=Рюкзак путешественника blockCampFire.name=Костёр blockSleepingBag.name=Спальный мешок From 9a5c164bb8cb2bab1370e1721f09f5a00ccc2972 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sun, 22 Mar 2020 06:29:57 +0700 Subject: [PATCH 459/462] Fixed NPE in wearable packet --- .../network/WearableModePacket.java | 44 +++++++++++-------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java b/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java index ceeb58a7..6ee7be5d 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java @@ -3,6 +3,7 @@ import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; import cpw.mods.fml.common.network.ByteBufUtils; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; @@ -33,22 +34,32 @@ public Message onMessage(Message message, MessageContext ctx) if (player != null) { - if ((message.type == COPTER_ON_OFF || message.type == COPTER_TOGGLE)) - ServerActions.toggleCopterPack(player, Wearing.getWearingCopter(player), message.type); - + if (message.type == COPTER_ON_OFF || message.type == COPTER_TOGGLE) + { + ItemStack copter = Wearing.getWearingCopter(player); + // for concurrency reasons, at the time of death with OpenBlocks mod, the copter may already be + // in the grave, and Wearing#getWearingCopter will return null (c) Relvl + if (copter != null) + ServerActions.toggleCopterPack(player, copter, message.type); + } if (message.type == JETPACK_ON_OFF) - ServerActions.toggleCoalJetpack(player, Wearing.getWearingJetpack(player)); - - if (message.type == CYCLING_ON_OFF) - ServerActions.toggleToolCycling(player, Wearing.getWearingBackpack(player)); - - if (message.type == NIGHTVISION_ON_OFF) - ServerActions.toggleNightVision(player, Wearing.getWearingBackpack(player)); + { + ItemStack jetpack = Wearing.getWearingJetpack(player); + if (jetpack != null) // so now we are well-defended + ServerActions.toggleCoalJetpack(player, jetpack); + } + if (message.type == CYCLING_ON_OFF || message.type == NIGHTVISION_ON_OFF) + { + ItemStack backpack = Wearing.getWearingBackpack(player); + if (backpack != null) // null shall not pass! + { + if (message.type == CYCLING_ON_OFF) + ServerActions.toggleToolCycling(player, backpack); + if (message.type == NIGHTVISION_ON_OFF) + ServerActions.toggleNightVision(player, backpack); + } + } } - } - if (ctx.side.isClient()) - { - } return null; } @@ -58,10 +69,7 @@ public static class Message implements IMessage private byte type; private String playerID; - public Message() - { - - } + public Message() {} public Message(byte type, String playerID) { From 8e77e487861130a1e7b491b0638b204c6eac5e8f Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Sun, 22 Mar 2020 08:41:09 +0700 Subject: [PATCH 460/462] Some forgotten ancient fixes --- .../block/TileAdventureBackpack.java | 2 +- .../client/gui/GuiOverlay.java | 4 +-- .../client/gui/ModGuiConfig.java | 2 +- .../inventory/ContainerAdventure.java | 2 +- .../inventory/ContainerBackpack.java | 27 ++++------------- .../inventory/SlotBackpack.java | 3 +- .../inventory/SlotFluid.java | 29 ------------------- .../network/PlayerActionPacket.java | 15 +++++----- .../network/WearableModePacket.java | 2 +- .../reference/BackpackTypes.java | 2 +- .../adventurebackpack/util/FluidUtils.java | 2 +- .../adventurebackpack/util/TinkersUtils.java | 1 - 12 files changed, 22 insertions(+), 69 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java index 6014378a..e92572d5 100644 --- a/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/block/TileAdventureBackpack.java @@ -328,7 +328,7 @@ public void removeSleepingBag(World world) public int[] getAccessibleSlotsFromSide(int side) { if (GeneralReference.isDimensionAllowed(worldObj.provider.dimensionId)) - return MAIN_INVENTORY_SLOTS; + return MAIN_INVENTORY_SLOTS.clone(); return null; } diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java index 198b66ea..c06b8e6a 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java @@ -182,8 +182,8 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) } if (Wearing.isWearingBackpack(player)) { - int u[] = {10, 10}; - int v[] = {0, 0}; + int[] u = {10, 10}; + int[] v = {0, 0}; int[] xStart = {xPos, xPos + textureWidth + 1}; int[] yStart = {yPos, yPos}; short tank = -1; diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java b/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java index 2cad8f0e..3edba703 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/ModGuiConfig.java @@ -25,7 +25,7 @@ public ModGuiConfig(GuiScreen guiScreen) private static List getConfigElements() { - List configElements = new ArrayList(); + List configElements = new ArrayList<>(); List topCategories = Arrays.asList("gameplay", "graphics", "sound", "items", "worldgen", "experimental"); for (String categoryName : topCategories) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventure.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventure.java index c71f6f46..7ca6b29d 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventure.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerAdventure.java @@ -67,7 +67,7 @@ public void detectAndSendChanges() requestedUpdate = false; } - if ((detectItemChanges() | detectFluidChanges())) + if (detectItemChanges() | detectFluidChanges()) { requestedUpdate = true; } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java index b9f8480a..c200cd23 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/ContainerBackpack.java @@ -63,15 +63,8 @@ private void makeSlots(InventoryPlayer invPlayer) int startX = 62; int startY = 7; for (int row = 0; row < BACK_INV_ROWS; row++) // 6*8 inventory, 48 Slots (#1-#48) [36-83] - { for (int col = 0; col < BACK_INV_COLUMNS; col++) - { - int offsetX = startX + (18 * col); - int offsetY = startY + (18 * row); - - addSlotToContainer(new SlotBackpack((IInventoryBackpack) inventory, (row * BACK_INV_COLUMNS + col), offsetX, offsetY)); - } - } + addSlotToContainer(new SlotBackpack(inventory, (row * BACK_INV_COLUMNS + col), (startX + 18 * col), (startY + 18 * row))); addSlotToContainer(new SlotTool(inventory, TOOL_UPPER, 44, 79)); // #49 [84] addSlotToContainer(new SlotTool(inventory, TOOL_LOWER, 44, 97)); // #50 [85] @@ -82,17 +75,10 @@ private void makeSlots(InventoryPlayer invPlayer) addSlotToContainer(new SlotFluid(inventory, BUCKET_OUT_RIGHT, 226, 37)); // #54 [89] startX = 215; - startY = -2500; - //startY = LoadedMods.DEV_ENV ? 125 : -2500; + startY = -2500; //startY = LoadedMods.DEV_ENV ? 125 : -2500; for (int row = 0; row < MATRIX_DIMENSION; row++) // craftMatrix, usually 9 slots, [90-98] - { for (int col = 0; col < MATRIX_DIMENSION; col++) - { - int offsetX = startX + (18 * col); - int offsetY = startY + (18 * row); - addSlotToContainer(new SlotCraftMatrix(craftMatrix, (row * MATRIX_DIMENSION + col), offsetX, offsetY)); - } - } + addSlotToContainer(new SlotCraftMatrix(craftMatrix, (row * MATRIX_DIMENSION + col), (startX + 18 * col), (startY + 18 * row))); addSlotToContainer(new SlotCraftResult(this, invPlayer.player, craftMatrix, craftResult, 0, 226, 97)); // craftResult [99] syncCraftMatrixWithInventory(true); @@ -241,12 +227,9 @@ protected void dropContentOnClose() public void onCraftMatrixChanged(IInventory inventory) { if (ConfigHandler.tinkerToolsMaintenance && TinkersUtils.isToolOrWeapon(craftMatrix.getStackInSlot(4))) - { craftResult.setInventorySlotContents(0, TinkersUtils.getTinkersRecipe(craftMatrix)); - return; - } - - craftResult.setInventorySlotContents(0, CraftingManager.getInstance().findMatchingRecipe(craftMatrix, player.worldObj)); + else + craftResult.setInventorySlotContents(0, CraftingManager.getInstance().findMatchingRecipe(craftMatrix, player.worldObj)); } protected void syncCraftMatrixWithInventory(boolean preCraft) diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java index 2ae8a923..d9629809 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotBackpack.java @@ -1,5 +1,6 @@ package com.darkona.adventurebackpack.inventory; +import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -29,7 +30,7 @@ public class SlotBackpack extends SlotAdventure // Project Red Exploration Backpacks "mrtjp.projectred.exploration.ItemBackpack",}; - SlotBackpack(IInventoryBackpack inventory, int slotIndex, int posX, int posY) + SlotBackpack(IInventory inventory, int slotIndex, int posX, int posY) { super(inventory, slotIndex, posX, posY); } diff --git a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java index 896956a5..08d0d439 100644 --- a/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java +++ b/src/main/java/com/darkona/adventurebackpack/inventory/SlotFluid.java @@ -42,40 +42,11 @@ static boolean isFilled(ItemStack stack) return FluidContainerRegistry.isFilledContainer(stack); } - static boolean isBucket(ItemStack stack) - { - return FluidContainerRegistry.isBucket(stack); - } - - static boolean isEmptyBucket(ItemStack stack) - { - return FluidContainerRegistry.isBucket(stack) && isEmpty(stack); - } - - static boolean isFilledBucket(ItemStack stack) - { - return FluidContainerRegistry.isBucket(stack) && isFilled(stack); - } - static boolean isEqualFluid(ItemStack container, FluidTank tank) { return getFluidID(container) == getFluidID(tank); } - static String getFluidName(ItemStack stack) - { - if (stack == null || isEmpty(stack)) - return ""; - return FluidContainerRegistry.getFluidForFilledItem(stack).getFluid().getName(); - } - - static String getFluidName(FluidTank tank) - { - if (tank == null || tank.getFluidAmount() <= 0) - return ""; - return tank.getFluid().getFluid().getName(); - } - static int getFluidID(ItemStack stack) { if (stack == null || isEmpty(stack)) diff --git a/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java b/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java index e151899c..6edcf8f8 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/PlayerActionPacket.java @@ -3,6 +3,7 @@ import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; @@ -32,11 +33,11 @@ public IMessage onMessage(ActionMessage message, MessageContext ctx) { EntityPlayerMP player = ctx.getServerHandler().playerEntity; - if (player != null) + if (player != null && !player.isDead) { if (message.type == SPIDER_JUMP) { - if (player.ridingEntity != null && player.ridingEntity instanceof EntityFriendlySpider) + if (player.ridingEntity instanceof EntityFriendlySpider) { ((EntityFriendlySpider) player.ridingEntity).setJumping(true); } @@ -44,9 +45,10 @@ public IMessage onMessage(ActionMessage message, MessageContext ctx) if (message.type == JETPACK_IN_USE || message.type == JETPACK_NOT_IN_USE) { - if (Wearing.isWearingJetpack(player)) + ItemStack jetpack = Wearing.getWearingJetpack(player); + if (jetpack != null) { - InventoryCoalJetpack inv = new InventoryCoalJetpack(Wearing.getWearingJetpack(player)); + InventoryCoalJetpack inv = new InventoryCoalJetpack(jetpack); inv.setInUse(message.type == JETPACK_IN_USE); inv.markDirty(); } @@ -77,10 +79,7 @@ public static class ActionMessage implements IMessage { private byte type; - public ActionMessage() - { - - } + public ActionMessage() {} public ActionMessage(byte type) { diff --git a/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java b/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java index 6ee7be5d..5dd63902 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java @@ -32,7 +32,7 @@ public Message onMessage(Message message, MessageContext ctx) { EntityPlayerMP player = ctx.getServerHandler().playerEntity; - if (player != null) + if (player != null && !player.isDead) { if (message.type == COPTER_ON_OFF || message.type == COPTER_TOGGLE) { diff --git a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java index 5b29ee68..47df08f8 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java @@ -131,7 +131,7 @@ public enum BackpackTypes this.meta = (byte) meta; this.skinName = skin.isEmpty() ? generateSkinName() : skin; - this.props = Sets.immutableEnumSet((Arrays.asList(props))); + this.props = Sets.immutableEnumSet(Arrays.asList(props)); } BackpackTypes(int meta, Props... props) diff --git a/src/main/java/com/darkona/adventurebackpack/util/FluidUtils.java b/src/main/java/com/darkona/adventurebackpack/util/FluidUtils.java index af697203..d0c79d01 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/FluidUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/FluidUtils.java @@ -20,7 +20,7 @@ public static boolean isContainerForFluid(ItemStack container, Fluid fluid) if (data.fluid != null && data.fluid.getFluid() != null && data.fluid.getFluid().getID() == fluid.getID() && (data.emptyContainer.getItem().equals(container.getItem()) - || data.filledContainer.getItem().equals(container.getItem()))) + || data.filledContainer.getItem().equals(container.getItem()))) { return true; } diff --git a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java index c062668d..405513ee 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java @@ -117,7 +117,6 @@ public static boolean isToolOrWeapon(@Nullable ItemStack stack) String cn = stack.getItem().getClass().getName(); return cn.startsWith(PACKAGE_TCONSTRUCT) && (cn.startsWith(PACKAGE_TOOLS) || cn.startsWith(PACKAGE_WEAPONS) || cn.startsWith(PACKAGE_AMMO)); - } public static boolean isTool(@Nonnull ItemStack stack) From ef038c1736239278cb4eb1762e3c8908ae7dd678 Mon Sep 17 00:00:00 2001 From: Ugachaga Date: Mon, 23 Mar 2020 20:58:24 +0700 Subject: [PATCH 461/462] More work on packets --- .../handlers/KeyInputEventHandler.java | 4 +- .../network/CycleToolPacket.java | 4 + .../EquipUnequipBackWearablePacket.java | 38 +++--- .../adventurebackpack/network/GUIPacket.java | 118 +++++++----------- .../network/PlayerActionPacket.java | 55 ++++---- .../network/SleepingBagPacket.java | 13 +- .../network/SyncPropertiesPacket.java | 6 +- .../network/WearableModePacket.java | 58 +++++---- 8 files changed, 130 insertions(+), 166 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java index 4ed05c0a..da6393b7 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java @@ -35,7 +35,7 @@ public void handleKeyInputEvent(InputEvent.KeyInputEvent event) Minecraft mc = Minecraft.getMinecraft(); EntityPlayer player = mc.thePlayer; - if (pressedKey == Key.UNKNOWN || player == null) + if (pressedKey == Key.UNKNOWN || player == null || player.isDead) return; if (pressedKey == Key.INVENTORY && mc.inGameHasFocus) @@ -157,7 +157,7 @@ private void sendGUIPacket(byte type, byte from) private void sendWearableModePacket(byte type) { - ModNetwork.net.sendToServer(new WearableModePacket.Message(type, "")); //TODO playerID? + ModNetwork.net.sendToServer(new WearableModePacket.Message(type)); } private void sendCycleToolPacket(int slot, byte type) diff --git a/src/main/java/com/darkona/adventurebackpack/network/CycleToolPacket.java b/src/main/java/com/darkona/adventurebackpack/network/CycleToolPacket.java index afbee8b0..4f24876e 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/CycleToolPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/CycleToolPacket.java @@ -26,6 +26,10 @@ public IMessage onMessage(CycleToolMessage message, MessageContext ctx) if (ctx.side.isServer()) { EntityPlayerMP player = ctx.getServerHandler().playerEntity; + + if (player == null || player.isDead) + return null; + switch (message.typeOfAction) { case CYCLE_TOOL_ACTION: diff --git a/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java b/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java index e3194be8..27d02e50 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/EquipUnequipBackWearablePacket.java @@ -24,31 +24,28 @@ public class EquipUnequipBackWearablePacket implements IMessageHandler Date: Tue, 24 Mar 2020 19:16:08 +0700 Subject: [PATCH 462/462] And even more --- .../common/BackpackAbilities.java | 2 +- .../common/ServerActions.java | 36 ++++++------ .../handlers/ClientEventHandler.java | 57 ++++++++----------- .../handlers/KeyInputEventHandler.java | 19 +++---- .../network/CowAbilityPacket.java | 6 +- .../network/CycleToolPacket.java | 13 +---- .../network/WearableModePacket.java | 9 ++- .../reference/BackpackTypes.java | 25 -------- 8 files changed, 59 insertions(+), 108 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java index 8ff76208..379dacc2 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java +++ b/src/main/java/com/darkona/adventurebackpack/common/BackpackAbilities.java @@ -498,7 +498,7 @@ public void itemCreeper(EntityPlayer player, World world, ItemStack backpack) */ public void itemCow(EntityPlayer player, World world, ItemStack backpack) { - if (world.isRemote) return; //TODO not syncing properly with client if GUI is open + if (world.isRemote) return; //TODO not syncing properly with client if GUI is open (see unused CowAbilityPacket?) InventoryBackpack inv = new InventoryBackpack(backpack); inv.openInventory(); diff --git a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java index a260a048..42994874 100644 --- a/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java +++ b/src/main/java/com/darkona/adventurebackpack/common/ServerActions.java @@ -55,16 +55,16 @@ public class ServerActions * Cycles tools. In a cycle. The tool in your hand with the tools in the special tool playerSlot of the backpack, * to be precise. * - * @param player Duh - * @param isWheelUp A boolean indicating the direction of the switch. Nobody likes to swith always in the same - * direction all the timeInSeconds. That's stupid. - * @param playerSlot The slot that will be switched with the backpack. + * @param player Duh + * @param isWheelUp A boolean indicating the direction of the switch. Nobody likes to swith always in the same + * direction all the timeInSeconds. That's stupid. */ - public static void cycleTool(EntityPlayer player, boolean isWheelUp, int playerSlot) + public static void cycleTool(EntityPlayer player, boolean isWheelUp) { if (!GeneralReference.isDimensionAllowed(player)) return; + int playerSlot = player.inventory.currentItem; ItemStack current = player.getCurrentEquippedItem(); if (SlotTool.isValidTool(current)) { @@ -81,7 +81,7 @@ public static void cycleTool(EntityPlayer player, boolean isWheelUp, int playerS * @param player Is a player. To whom the nice or evil effects you're going to apply will affect. * See? I know the proper use of the words "effect" & "affect". * @param tank The tank that holds the fluid, whose effect will affect the player that's in the world. - * @return If the effect can be applied, and it is actually applied, returns true. + * @return If the effect can be applied, and it is actually applied, returns true. */ public static boolean setFluidEffect(World world, EntityPlayer player, FluidTank tank) { @@ -149,7 +149,7 @@ public static void electrify(EntityPlayer player) { BackpackUtils.setBackpackType(backpack, BackpackTypes.PIGMAN); } - if (BackpackTypes.getType(backpack) == BackpackTypes.DIAMOND) + else if (BackpackTypes.getType(backpack) == BackpackTypes.DIAMOND) { BackpackUtils.setBackpackType(backpack, BackpackTypes.ELECTRIC); } @@ -207,17 +207,17 @@ public static void leakArrow(EntityPlayer player, ItemStack bow, int charge) else { /* - * From here, instead of leaking an arrow to the player inventory, which may be full and then it would be - * pointless, leak an arrow straight from the backpack ^_^ - * - * It could be possible to switch a whole stack with the player inventory, fire the arrow, and then - * switch back, but that's stupid. - * - * That's how you make a quiver (for vanilla bows at least, or anything that uses the events and vanilla - * arrows) Until we have an event that fires when a player consumes items in his/her inventory. - * - * I should make a pull request. Too lazy, though. - * */ + * From here, instead of leaking an arrow to the player inventory, which may be full and then it would be + * pointless, leak an arrow straight from the backpack ^_^ + * + * It could be possible to switch a whole stack with the player inventory, fire the arrow, and then + * switch back, but that's stupid. + * + * That's how you make a quiver (for vanilla bows at least, or anything that uses the events and vanilla + * arrows) Until we have an event that fires when a player consumes items in his/her inventory. + * + * I should make a pull request. Too lazy, though. + * */ backpack.consumeInventoryItem(Items.arrow); backpack.dirtyInventory(); } diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java index 74427783..5043a4b0 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/ClientEventHandler.java @@ -12,10 +12,9 @@ import com.darkona.adventurebackpack.common.ServerActions; import com.darkona.adventurebackpack.config.ConfigHandler; +import com.darkona.adventurebackpack.init.ModItems; import com.darkona.adventurebackpack.init.ModNetwork; import com.darkona.adventurebackpack.inventory.SlotTool; -import com.darkona.adventurebackpack.item.ItemAdventureBackpack; -import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.network.CycleToolPacket; import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.util.Wearing; @@ -32,38 +31,30 @@ public class ClientEventHandler public void mouseWheelDetect(MouseEvent event) { /*Special thanks go to MachineMuse, both for inspiration and the event. God bless you girl.*/ - Minecraft mc = Minecraft.getMinecraft(); - if (event.dwheel != 0) - { - boolean isWheelUp = event.dwheel > 0; - EntityClientPlayerMP player = mc.thePlayer; - if (player != null && !player.isDead && player.isSneaking()) - { - ItemStack backpack = Wearing.getWearingBackpack(player); - if (backpack != null && backpack.getItem() instanceof ItemAdventureBackpack) - { - if (player.getCurrentEquippedItem() != null) - { - int slot = player.inventory.currentItem; - ItemStack heldItem = player.inventory.getStackInSlot(slot); - Item theItem = heldItem.getItem(); + EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer; + if (event.dwheel == 0 || player == null || player.isDead || !player.isSneaking()) + return; + + ItemStack backpack = Wearing.getWearingBackpack(player); + ItemStack heldItem = player.getCurrentEquippedItem(); + if (backpack == null || heldItem == null) + return; + + boolean isWheelUp = event.dwheel > 0; + Item theItem = heldItem.getItem(); - if ((ConfigHandler.enableToolsCycling && !Wearing.getWearingBackpackInv(player).getDisableCycling() && SlotTool.isValidTool(heldItem)) - || (BackpackTypes.getType(backpack) == BackpackTypes.SKELETON && theItem.equals(Items.bow))) - { - ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(isWheelUp, slot, CycleToolPacket.CYCLE_TOOL_ACTION)); - ServerActions.cycleTool(player, isWheelUp, slot); - event.setCanceled(true); - } - else if (theItem instanceof ItemHose) - { - ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(isWheelUp, slot, CycleToolPacket.SWITCH_HOSE_ACTION)); - ServerActions.switchHose(player, isWheelUp, ServerActions.HOSE_SWITCH); - event.setCanceled(true); - } - } - } - } + if (ConfigHandler.enableToolsCycling && !Wearing.getWearingBackpackInv(player).getDisableCycling() && SlotTool.isValidTool(heldItem) + || BackpackTypes.getType(backpack) == BackpackTypes.SKELETON && theItem.equals(Items.bow)) //TODO add bow case to server + { + ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(isWheelUp, CycleToolPacket.CYCLE_TOOL_ACTION)); + ServerActions.cycleTool(player, isWheelUp); + event.setCanceled(true); + } + else if (theItem == ModItems.hose) + { + ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(isWheelUp, CycleToolPacket.SWITCH_HOSE_ACTION)); + ServerActions.switchHose(player, isWheelUp, ServerActions.HOSE_SWITCH); + event.setCanceled(true); } } } \ No newline at end of file diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java index da6393b7..16ea66f4 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/KeyInputEventHandler.java @@ -20,7 +20,6 @@ /** * Created by Darkona on 11/10/2014. */ - public class KeyInputEventHandler { public enum Key @@ -59,13 +58,11 @@ else if (Wearing.isHoldingBackpack(player)) { sendGUIPacket(GUIPacket.BACKPACK_GUI, GUIPacket.FROM_HOLDING); } - - if (Wearing.isWearingCopter(player)) + else if (Wearing.isWearingCopter(player)) { sendGUIPacket(GUIPacket.COPTER_GUI, GUIPacket.FROM_WEARING); } - - if (Wearing.isWearingJetpack(player)) + else if (Wearing.isWearingJetpack(player)) { sendGUIPacket(GUIPacket.JETPACK_GUI, GUIPacket.FROM_WEARING); } @@ -76,7 +73,7 @@ else if (Wearing.isHoldingBackpack(player)) { if (Wearing.isHoldingHose(player)) { - sendCycleToolPacket(player.inventory.currentItem, CycleToolPacket.TOGGLE_HOSE_TANK); + sendCycleToolPacket(CycleToolPacket.TOGGLE_HOSE_TANK); ServerActions.switchHose(player, false, ServerActions.HOSE_TOGGLE); } else if (Wearing.isWearingBackpack(player)) @@ -95,7 +92,7 @@ else if (Wearing.isWearingBackpack(player)) ServerActions.toggleToolCycling(player, Wearing.getWearingBackpack(player)); } } - if (Wearing.isWearingCopter(player)) + else if (Wearing.isWearingCopter(player)) { if (player.isSneaking()) { @@ -108,7 +105,7 @@ else if (Wearing.isWearingBackpack(player)) ServerActions.toggleCopterPack(player, Wearing.getWearingCopter(player), WearableModePacket.COPTER_TOGGLE); } } - if (Wearing.isWearingJetpack(player)) + else if (Wearing.isWearingJetpack(player)) { if (player.isSneaking()) { @@ -120,7 +117,7 @@ else if (Wearing.isWearingBackpack(player)) if (pressedKey == Key.JUMP) { - if (player.ridingEntity != null && player.ridingEntity instanceof EntityFriendlySpider) + if (player.ridingEntity instanceof EntityFriendlySpider) { sendPlayerActionPacket(PlayerActionPacket.SPIDER_JUMP); ((EntityFriendlySpider) player.ridingEntity).setJumping(true); @@ -160,9 +157,9 @@ private void sendWearableModePacket(byte type) ModNetwork.net.sendToServer(new WearableModePacket.Message(type)); } - private void sendCycleToolPacket(int slot, byte type) + private void sendCycleToolPacket(byte type) { - ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(false, slot, type)); + ModNetwork.net.sendToServer(new CycleToolPacket.CycleToolMessage(false, type)); } private void sendPlayerActionPacket(byte type) diff --git a/src/main/java/com/darkona/adventurebackpack/network/CowAbilityPacket.java b/src/main/java/com/darkona/adventurebackpack/network/CowAbilityPacket.java index a64dc148..8f88832b 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/CowAbilityPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/CowAbilityPacket.java @@ -48,13 +48,10 @@ public IMessage onMessage(CowAbilityMessage message, MessageContext ctx) public static class CowAbilityMessage implements IMessage { - private byte action; private String playerID; - public CowAbilityMessage() - { - } + public CowAbilityMessage() {} public CowAbilityMessage(String playerID, byte action) { @@ -65,7 +62,6 @@ public CowAbilityMessage(String playerID, byte action) @Override public void fromBytes(ByteBuf buf) { - playerID = ByteBufUtils.readUTF8String(buf); action = buf.readByte(); } diff --git a/src/main/java/com/darkona/adventurebackpack/network/CycleToolPacket.java b/src/main/java/com/darkona/adventurebackpack/network/CycleToolPacket.java index 4f24876e..25e95a21 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/CycleToolPacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/CycleToolPacket.java @@ -33,7 +33,7 @@ public IMessage onMessage(CycleToolMessage message, MessageContext ctx) switch (message.typeOfAction) { case CYCLE_TOOL_ACTION: - ServerActions.cycleTool(player, message.isWheelUp, message.slot); + ServerActions.cycleTool(player, message.isWheelUp); break; case TOGGLE_HOSE_TANK: ServerActions.switchHose(player, message.isWheelUp, ServerActions.HOSE_TOGGLE); @@ -50,18 +50,13 @@ public static class CycleToolMessage implements IMessage { private byte typeOfAction; private boolean isWheelUp; - private int slot; - public CycleToolMessage() - { - - } + public CycleToolMessage() {} - public CycleToolMessage(boolean isWheelUp, int slot, byte typeOfAction) + public CycleToolMessage(boolean isWheelUp, byte typeOfAction) { this.typeOfAction = typeOfAction; this.isWheelUp = isWheelUp; - this.slot = slot; } @Override @@ -69,7 +64,6 @@ public void fromBytes(ByteBuf buf) { this.typeOfAction = buf.readByte(); this.isWheelUp = buf.readBoolean(); - this.slot = buf.readInt(); } @Override @@ -77,7 +71,6 @@ public void toBytes(ByteBuf buf) { buf.writeByte(typeOfAction); buf.writeBoolean(isWheelUp); - buf.writeInt(slot); } } } diff --git a/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java b/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java index 81982fad..ed30b551 100644 --- a/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java +++ b/src/main/java/com/darkona/adventurebackpack/network/WearableModePacket.java @@ -30,10 +30,9 @@ public Message onMessage(Message message, MessageContext ctx) if (ctx.side.isServer()) { EntityPlayerMP player = ctx.getServerHandler().playerEntity; - // we don't want to process any packets from a player who's already considered dead on the server. // in the current tick, at the time the packets are processed, the entity data must already be updated - // and isDead flag must already be set + // and isDead flag will be set, see: MinecraftServer#updateTimeLightAndEntities (func_71190_q) if (player == null || player.isDead) return null; @@ -45,20 +44,20 @@ public Message onMessage(Message message, MessageContext ctx) if (copter != null) ServerActions.toggleCopterPack(player, copter, message.type); } - if (message.type == JETPACK_ON_OFF) + else if (message.type == JETPACK_ON_OFF) { ItemStack jetpack = Wearing.getWearingJetpack(player); if (jetpack != null) // so now we are well-defended ServerActions.toggleCoalJetpack(player, jetpack); } - if (message.type == CYCLING_ON_OFF || message.type == NIGHTVISION_ON_OFF) + else if (message.type == CYCLING_ON_OFF || message.type == NIGHTVISION_ON_OFF) { ItemStack backpack = Wearing.getWearingBackpack(player); if (backpack != null) // null shall not pass! { if (message.type == CYCLING_ON_OFF) ServerActions.toggleToolCycling(player, backpack); - if (message.type == NIGHTVISION_ON_OFF) + else if (message.type == NIGHTVISION_ON_OFF) ServerActions.toggleNightVision(player, backpack); } } diff --git a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java index 47df08f8..7e7bab26 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/BackpackTypes.java @@ -1,7 +1,6 @@ package com.darkona.adventurebackpack.reference; import java.util.Arrays; -import java.util.EnumSet; import com.google.common.collect.BiMap; import com.google.common.collect.EnumHashBiMap; @@ -117,9 +116,6 @@ public enum BackpackTypes // @formatter:on public static final ImmutableBiMap BY_META; - public static final ImmutableSet SPECIAL_TYPES; //TODO okay... how can we use all these sets? - public static final ImmutableSet REMOVAL_TYPES; - public static final ImmutableSet NIGHT_VISION_TYPES; private final byte meta; private final String skinName; @@ -149,33 +145,12 @@ private String generateSkinName() static { BiMap byMeta = EnumHashBiMap.create(BackpackTypes.class); - EnumSet specials = EnumSet.noneOf(BackpackTypes.class); - EnumSet removals = EnumSet.noneOf(BackpackTypes.class); - EnumSet nightVisions = EnumSet.noneOf(BackpackTypes.class); for (BackpackTypes type : BackpackTypes.values()) - { if (byMeta.put(type, type.meta) != null) throw new IllegalArgumentException("duplicate meta: " + type.meta); - for (Props property : type.props) - { - if (property == SPECIAL) - specials.add(type); - if (property == REMOVAL) - removals.add(type); - if (property == NIGHT_VISION) - nightVisions.add(type); - } - } - BY_META = ImmutableBiMap.copyOf(byMeta.inverse()); - SPECIAL_TYPES = Sets.immutableEnumSet(specials); - REMOVAL_TYPES = Sets.immutableEnumSet(removals); - NIGHT_VISION_TYPES = Sets.immutableEnumSet(nightVisions); - - //ImmutableSet.builder().addAll(SPECIAL).addAll(TILE).addAll(OTHER).build(); - //TODO LogHelper.info("Registered blablabla types, blabla specials..."); } public static String getSkinName(BackpackTypes type)