From e1c677d3d854c2387239d421a57ce3151806ccdd Mon Sep 17 00:00:00 2001 From: Pahimar Date: Mon, 21 Jul 2014 14:47:00 -0400 Subject: [PATCH] Some new textures from BigBadChris, got conditional player mod sounds working again (same as in older versions of EE3), and worked on a bit of tool functionality --- .../DrawBlockHighlightEventHandler.java | 113 ++++++++++-------- .../ee3/client/util/ClientSoundHelper.java | 13 ++ .../ee3/handler/ConfigurationHandler.java | 3 +- .../pahimar/ee3/item/ItemDarkMatterAxe.java | 51 ++------ .../pahimar/ee3/item/ItemDarkMatterHoe.java | 17 ++- .../ee3/item/ItemDarkMatterPickAxe.java | 46 +------ .../ee3/item/ItemDarkMatterShovel.java | 51 ++------ .../com/pahimar/ee3/item/ItemToolModalEE.java | 71 +++++++++++ .../pahimar/ee3/network/PacketHandler.java | 1 + .../network/message/MessageSoundEvent.java | 97 +++++++++++++++ .../com/pahimar/ee3/proxy/ClientProxy.java | 7 ++ .../java/com/pahimar/ee3/proxy/IProxy.java | 2 + .../com/pahimar/ee3/proxy/ServerProxy.java | 6 + .../com/pahimar/ee3/reference/Messages.java | 4 + .../com/pahimar/ee3/reference/Settings.java | 9 ++ .../com/pahimar/ee3/reference/Sounds.java | 33 +++-- .../com/pahimar/ee3/reference/ToolMode.java | 2 +- .../pahimar/ee3/util/NetworkSoundHelper.java | 19 +++ src/main/resources/assets/ee3/lang/en_US.lang | 7 +- .../textures/items/alchemicalBag.closed.png | Bin 349 -> 1760 bytes .../ee3/textures/items/alchemicalBag.open.png | Bin 360 -> 1601 bytes .../items/alchemicalBag.symbolTier1.png | Bin 148 -> 772 bytes .../items/alchemicalBag.symbolTier2.png | Bin 153 -> 797 bytes .../items/alchemicalBag.symbolTier3.png | Bin 181 -> 953 bytes .../ee3/textures/items/alchemicalDust.png | Bin 548 -> 1792 bytes .../assets/ee3/textures/items/diviningRod.png | Bin 399 -> 1583 bytes .../textures/items/diviningRodEffectGlow.png | Bin 525 -> 2022 bytes .../assets/ee3/textures/items/kunai.png | Bin 576 -> 1521 bytes .../assets/ee3/textures/items/ocarina.png | Bin 364 -> 2065 bytes .../assets/ee3/textures/items/shardMinium.png | Bin 1326 -> 1866 bytes .../assets/ee3/textures/items/stoneInert.png | Bin 400 -> 1772 bytes .../assets/ee3/textures/items/stoneMinium.png | Bin 351 -> 1959 bytes 32 files changed, 349 insertions(+), 203 deletions(-) create mode 100644 src/main/java/com/pahimar/ee3/client/util/ClientSoundHelper.java create mode 100644 src/main/java/com/pahimar/ee3/item/ItemToolModalEE.java create mode 100644 src/main/java/com/pahimar/ee3/network/message/MessageSoundEvent.java create mode 100644 src/main/java/com/pahimar/ee3/util/NetworkSoundHelper.java diff --git a/src/main/java/com/pahimar/ee3/client/handler/DrawBlockHighlightEventHandler.java b/src/main/java/com/pahimar/ee3/client/handler/DrawBlockHighlightEventHandler.java index aaba1c28..a1f9a993 100644 --- a/src/main/java/com/pahimar/ee3/client/handler/DrawBlockHighlightEventHandler.java +++ b/src/main/java/com/pahimar/ee3/client/handler/DrawBlockHighlightEventHandler.java @@ -53,74 +53,80 @@ public class DrawBlockHighlightEventHandler private void drawSelectionBoxForShovel(DrawBlockHighlightEvent event, IModalTool modalTool) { - event.setCanceled(true); ToolMode toolMode = modalTool.getCurrentToolMode(event.currentItem); int facing = MathHelper.floor_double(event.player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - if (toolMode == ToolMode.STANDARD) + if (toolMode != ToolMode.UNKNOWN) { - drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); + event.setCanceled(true); + if (toolMode == ToolMode.STANDARD) + { + drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); + } } } private void drawSelectionBoxForPickAxe(DrawBlockHighlightEvent event, IModalTool modalTool) { - event.setCanceled(true); ToolMode toolMode = modalTool.getCurrentToolMode(event.currentItem); int facing = MathHelper.floor_double(event.player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - if (toolMode == ToolMode.STANDARD) + if (toolMode != ToolMode.UNKNOWN) { - drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); - } - else if (toolMode == ToolMode.WIDE) - { - drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); + event.setCanceled(true); + if (toolMode == ToolMode.STANDARD) + { + drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); + } + else if (toolMode == ToolMode.WIDE) + { + drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); - if (event.target.sideHit == ForgeDirection.NORTH.ordinal() || event.target.sideHit == ForgeDirection.SOUTH.ordinal()) - { - drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX - 1, event.target.blockY, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); - drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX + 1, event.target.blockY, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); - } - else if (event.target.sideHit == ForgeDirection.EAST.ordinal() || event.target.sideHit == ForgeDirection.WEST.ordinal()) - { - drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY, event.target.blockZ - 1, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); - drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY, event.target.blockZ + 1, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); - } - else - { - if (facing == 0 || facing == 2) + if (event.target.sideHit == ForgeDirection.NORTH.ordinal() || event.target.sideHit == ForgeDirection.SOUTH.ordinal()) { drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX - 1, event.target.blockY, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX + 1, event.target.blockY, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); } - else + else if (event.target.sideHit == ForgeDirection.EAST.ordinal() || event.target.sideHit == ForgeDirection.WEST.ordinal()) { drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY, event.target.blockZ - 1, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY, event.target.blockZ + 1, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); } + else + { + if (facing == 0 || facing == 2) + { + drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX - 1, event.target.blockY, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); + drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX + 1, event.target.blockY, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); + } + else + { + drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY, event.target.blockZ - 1, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); + drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY, event.target.blockZ + 1, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); + } + } } - } - else if (toolMode == ToolMode.TALL) - { - drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); + else if (toolMode == ToolMode.TALL) + { + drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); - if (event.target.sideHit == ForgeDirection.NORTH.ordinal() || event.target.sideHit == ForgeDirection.SOUTH.ordinal() || event.target.sideHit == ForgeDirection.EAST.ordinal() || event.target.sideHit == ForgeDirection.WEST.ordinal()) - { - drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY - 1, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); - drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY + 1, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); - } - else - { - if (facing == 1 || facing == 3) + if (event.target.sideHit == ForgeDirection.NORTH.ordinal() || event.target.sideHit == ForgeDirection.SOUTH.ordinal() || event.target.sideHit == ForgeDirection.EAST.ordinal() || event.target.sideHit == ForgeDirection.WEST.ordinal()) { - drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX - 1, event.target.blockY, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); - drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX + 1, event.target.blockY, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); + drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY - 1, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); + drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY + 1, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); } else { - drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY, event.target.blockZ - 1, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); - drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY, event.target.blockZ + 1, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); + if (facing == 1 || facing == 3) + { + drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX - 1, event.target.blockY, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); + drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX + 1, event.target.blockY, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); + } + else + { + drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY, event.target.blockZ - 1, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); + drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY, event.target.blockZ + 1, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); + } } } } @@ -128,37 +134,46 @@ public class DrawBlockHighlightEventHandler private void drawSelectionBoxForHammer(DrawBlockHighlightEvent event, IModalTool modalTool) { - event.setCanceled(true); ToolMode toolMode = modalTool.getCurrentToolMode(event.currentItem); int facing = MathHelper.floor_double(event.player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - if (toolMode == ToolMode.STANDARD) + if (toolMode != ToolMode.UNKNOWN) { - drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); + event.setCanceled(true); + if (toolMode == ToolMode.STANDARD) + { + drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); + } } } private void drawSelectionBoxForAxe(DrawBlockHighlightEvent event, IModalTool modalTool) { - event.setCanceled(true); ToolMode toolMode = modalTool.getCurrentToolMode(event.currentItem); int facing = MathHelper.floor_double(event.player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - if (toolMode == ToolMode.STANDARD) + if (toolMode != ToolMode.UNKNOWN) { - drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); + event.setCanceled(true); + if (toolMode == ToolMode.STANDARD) + { + drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); + } } } private void drawSelectionBoxForHoe(DrawBlockHighlightEvent event, IModalTool modalTool) { - event.setCanceled(true); ToolMode toolMode = modalTool.getCurrentToolMode(event.currentItem); int facing = MathHelper.floor_double(event.player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - if (toolMode == ToolMode.STANDARD) + if (toolMode != ToolMode.UNKNOWN) { - drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); + event.setCanceled(true); + if (toolMode == ToolMode.STANDARD) + { + drawSelectionBox(event.context, event.player, new MovingObjectPosition(event.target.blockX, event.target.blockY, event.target.blockZ, event.target.sideHit, event.target.hitVec), 0, event.partialTicks); + } } } diff --git a/src/main/java/com/pahimar/ee3/client/util/ClientSoundHelper.java b/src/main/java/com/pahimar/ee3/client/util/ClientSoundHelper.java new file mode 100644 index 00000000..cae272ae --- /dev/null +++ b/src/main/java/com/pahimar/ee3/client/util/ClientSoundHelper.java @@ -0,0 +1,13 @@ +package com.pahimar.ee3.client.util; + +import com.pahimar.ee3.util.ResourceLocationHelper; +import cpw.mods.fml.client.FMLClientHandler; +import net.minecraft.client.audio.PositionedSoundRecord; + +public class ClientSoundHelper +{ + public static void playSound(String soundName, float xCoord, float yCoord, float zCoord, float volume, float pitch) + { + FMLClientHandler.instance().getClient().getSoundHandler().playSound(new PositionedSoundRecord(ResourceLocationHelper.getResourceLocation(soundName), volume, pitch, xCoord, yCoord, zCoord)); + } +} diff --git a/src/main/java/com/pahimar/ee3/handler/ConfigurationHandler.java b/src/main/java/com/pahimar/ee3/handler/ConfigurationHandler.java index 6859e99b..8317e71e 100644 --- a/src/main/java/com/pahimar/ee3/handler/ConfigurationHandler.java +++ b/src/main/java/com/pahimar/ee3/handler/ConfigurationHandler.java @@ -28,8 +28,9 @@ public class ConfigurationHandler private static void loadConfiguration() { // TODO Come back and do these constants in logical locations and names - Settings.Transmutation.knowledgeMode = ConfigurationHelper.getString(configuration, Messages.Configuration.TRANSMUTATION_KNOWLEDGE_MODE, Messages.Configuration.CATEGORY_TRANSMUTATION, "All", StatCollector.translateToLocal(Messages.Configuration.TRANSMUTATION_KNOWLEDGE_MODE_COMMENT), new String[]{"All", "Select", "None"}, Messages.Configuration.TRANSMUTATION_KNOWLEDGE_MODE_LABEL); + Settings.Transmutation.knowledgeMode = ConfigurationHelper.getString(configuration, Messages.Configuration.TRANSMUTATION_KNOWLEDGE_MODE, Messages.Configuration.CATEGORY_TRANSMUTATION, Settings.Transmutation.KNOWLEDGE_MODE_ALL, StatCollector.translateToLocal(Messages.Configuration.TRANSMUTATION_KNOWLEDGE_MODE_COMMENT), new String[]{Settings.Transmutation.KNOWLEDGE_MODE_ALL, Settings.Transmutation.KNOWLEDGE_MODE_SELECT, Settings.Transmutation.KNOWLEDGE_MODE_NONE}, Messages.Configuration.TRANSMUTATION_KNOWLEDGE_MODE_LABEL); Settings.Transmutation.useTemplateFile = configuration.getBoolean(Messages.Configuration.TRANSMUTATION_KNOWLEDGE_TEMPLATE, Messages.Configuration.CATEGORY_TRANSMUTATION, true, StatCollector.translateToLocal(Messages.Configuration.TRANSMUTATION_KNOWLEDGE_TEMPLATE_COMMENT), Messages.Configuration.TRANSMUTATION_KNOWLEDGE_TEMPLATE_LABEL); + Settings.Sounds.soundMode = ConfigurationHelper.getString(configuration, Messages.Configuration.SOUND_MODE, Configuration.CATEGORY_GENERAL, Settings.Sounds.SOUND_MODE_ALL, StatCollector.translateToLocal(Messages.Configuration.SOUND_MODE_COMMENT), new String[]{Settings.Sounds.SOUND_MODE_ALL, Settings.Sounds.SOUND_MODE_SELF, Settings.Sounds.SOUND_MODE_NONE}, Messages.Configuration.SOUND_MODE_LABEL); LogHelper.info(Settings.Transmutation.knowledgeMode); if (configuration.hasChanged()) diff --git a/src/main/java/com/pahimar/ee3/item/ItemDarkMatterAxe.java b/src/main/java/com/pahimar/ee3/item/ItemDarkMatterAxe.java index 071a513d..c98dddb1 100644 --- a/src/main/java/com/pahimar/ee3/item/ItemDarkMatterAxe.java +++ b/src/main/java/com/pahimar/ee3/item/ItemDarkMatterAxe.java @@ -5,17 +5,18 @@ import com.google.common.collect.Sets; import com.pahimar.ee3.reference.*; import com.pahimar.ee3.util.IChargeable; import com.pahimar.ee3.util.IKeyBound; -import com.pahimar.ee3.util.IModalTool; import com.pahimar.ee3.util.NBTHelper; +import com.pahimar.ee3.util.NetworkSoundHelper; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; +import java.util.Arrays; import java.util.List; import java.util.Set; -public class ItemDarkMatterAxe extends ItemToolEE implements IKeyBound, IChargeable, IModalTool +public class ItemDarkMatterAxe extends ItemToolModalEE implements IKeyBound, IChargeable { private static final Set blocksEffectiveAgainst = Sets.newHashSet(new Block[]{Blocks.planks, Blocks.bookshelf, Blocks.log, Blocks.log2, Blocks.chest, Blocks.pumpkin, Blocks.lit_pumpkin}); @@ -85,29 +86,30 @@ public class ItemDarkMatterAxe extends ItemToolEE implements IKeyBound, IChargea { if (getChargeLevel(itemStack) == this.getMaxChargeLevel()) { - entityPlayer.worldObj.playSoundEffect(entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, Sounds.FAIL, 1.5f, 1.5f); + NetworkSoundHelper.playSoundAt(entityPlayer, Sounds.FAIL, 1.5f, 1.5f); } else { increaseChargeLevel(itemStack); - entityPlayer.worldObj.playSoundEffect(entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, Sounds.CHARGE_UP, 0.5F, 0.5F + 0.5F * (getChargeLevel(itemStack) * 1.0F / this.getMaxChargeLevel())); + NetworkSoundHelper.playSoundAt(entityPlayer, Sounds.CHARGE_UP, 0.5F, 0.5F + 0.5F * (getChargeLevel(itemStack) * 1.0F / this.getMaxChargeLevel())); } } else { if (getChargeLevel(itemStack) == 0) { - entityPlayer.worldObj.playSoundEffect(entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, Sounds.FAIL, 1.5f, 1.5f); + NetworkSoundHelper.playSoundAt(entityPlayer, Sounds.FAIL, 1.5f, 1.5f); } else { decreaseChargeLevel(itemStack); - entityPlayer.worldObj.playSoundEffect(entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, Sounds.CHARGE_DOWN, 0.5F, 1.0F - (0.5F - 0.5F * (getChargeLevel(itemStack) * 1.0F / this.getMaxChargeLevel()))); + NetworkSoundHelper.playSoundAt(entityPlayer, Sounds.CHARGE_DOWN, 0.5F, 1.0F - (0.5F - 0.5F * (getChargeLevel(itemStack) * 1.0F / this.getMaxChargeLevel()))); } } } else if (key == Key.EXTRA) { + NetworkSoundHelper.playSoundAt(entityPlayer, Sounds.TOCK, 0.5f, 1.5F); changeToolMode(itemStack); } } @@ -116,41 +118,6 @@ public class ItemDarkMatterAxe extends ItemToolEE implements IKeyBound, IChargea public List getAvailableToolModes() { // TODO - return null; - } - - @Override - public ToolMode getCurrentToolMode(ItemStack itemStack) - { - if (NBTHelper.getShort(itemStack, Names.NBT.MODE) < ToolMode.TYPES.length) - { - return ToolMode.TYPES[NBTHelper.getShort(itemStack, Names.NBT.MODE)]; - } - - return null; - } - - @Override - public void setToolMode(ItemStack itemStack, ToolMode toolMode) - { - NBTHelper.setShort(itemStack, Names.NBT.MODE, (short) toolMode.ordinal()); - } - - @Override - public void changeToolMode(ItemStack itemStack) - { - ToolMode currentToolMode = getCurrentToolMode(itemStack); - - if (getAvailableToolModes().contains(currentToolMode)) - { - if (getAvailableToolModes().indexOf(currentToolMode) == getAvailableToolModes().size() - 1) - { - setToolMode(itemStack, getAvailableToolModes().get(0)); - } - else - { - setToolMode(itemStack, getAvailableToolModes().get(getAvailableToolModes().indexOf(currentToolMode) + 1)); - } - } + return Arrays.asList(ToolMode.STANDARD); } } diff --git a/src/main/java/com/pahimar/ee3/item/ItemDarkMatterHoe.java b/src/main/java/com/pahimar/ee3/item/ItemDarkMatterHoe.java index 0ed7c9ca..911ab255 100644 --- a/src/main/java/com/pahimar/ee3/item/ItemDarkMatterHoe.java +++ b/src/main/java/com/pahimar/ee3/item/ItemDarkMatterHoe.java @@ -2,10 +2,7 @@ package com.pahimar.ee3.item; import com.pahimar.ee3.creativetab.CreativeTab; import com.pahimar.ee3.reference.*; -import com.pahimar.ee3.util.IChargeable; -import com.pahimar.ee3.util.IKeyBound; -import com.pahimar.ee3.util.IModalTool; -import com.pahimar.ee3.util.NBTHelper; +import com.pahimar.ee3.util.*; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; @@ -13,6 +10,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemHoe; import net.minecraft.item.ItemStack; +import java.util.Arrays; import java.util.List; public class ItemDarkMatterHoe extends ItemHoe implements IKeyBound, IChargeable, IModalTool @@ -126,29 +124,30 @@ public class ItemDarkMatterHoe extends ItemHoe implements IKeyBound, IChargeable { if (getChargeLevel(itemStack) == this.getMaxChargeLevel()) { - entityPlayer.worldObj.playSoundEffect(entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, Sounds.FAIL, 1.5f, 1.5f); + NetworkSoundHelper.playSoundAt(entityPlayer, Sounds.FAIL, 1.5f, 1.5f); } else { increaseChargeLevel(itemStack); - entityPlayer.worldObj.playSoundEffect(entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, Sounds.CHARGE_UP, 0.5F, 0.5F + 0.5F * (getChargeLevel(itemStack) * 1.0F / this.getMaxChargeLevel())); + NetworkSoundHelper.playSoundAt(entityPlayer, Sounds.CHARGE_UP, 0.5F, 0.5F + 0.5F * (getChargeLevel(itemStack) * 1.0F / this.getMaxChargeLevel())); } } else { if (getChargeLevel(itemStack) == 0) { - entityPlayer.worldObj.playSoundEffect(entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, Sounds.FAIL, 1.5f, 1.5f); + NetworkSoundHelper.playSoundAt(entityPlayer, Sounds.FAIL, 1.5f, 1.5f); } else { decreaseChargeLevel(itemStack); - entityPlayer.worldObj.playSoundEffect(entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, Sounds.CHARGE_DOWN, 0.5F, 1.0F - (0.5F - 0.5F * (getChargeLevel(itemStack) * 1.0F / this.getMaxChargeLevel()))); + NetworkSoundHelper.playSoundAt(entityPlayer, Sounds.CHARGE_DOWN, 0.5F, 1.0F - (0.5F - 0.5F * (getChargeLevel(itemStack) * 1.0F / this.getMaxChargeLevel()))); } } } else if (key == Key.EXTRA) { + NetworkSoundHelper.playSoundAt(entityPlayer, Sounds.TOCK, 0.5f, 1.5F); changeToolMode(itemStack); } } @@ -157,7 +156,7 @@ public class ItemDarkMatterHoe extends ItemHoe implements IKeyBound, IChargeable public List getAvailableToolModes() { // TODO - return null; + return Arrays.asList(ToolMode.STANDARD); } @Override diff --git a/src/main/java/com/pahimar/ee3/item/ItemDarkMatterPickAxe.java b/src/main/java/com/pahimar/ee3/item/ItemDarkMatterPickAxe.java index 3b31c33f..eb71f8ff 100644 --- a/src/main/java/com/pahimar/ee3/item/ItemDarkMatterPickAxe.java +++ b/src/main/java/com/pahimar/ee3/item/ItemDarkMatterPickAxe.java @@ -16,7 +16,7 @@ import java.util.Arrays; import java.util.List; import java.util.Set; -public class ItemDarkMatterPickAxe extends ItemToolEE implements IKeyBound, IChargeable, IModalTool +public class ItemDarkMatterPickAxe extends ItemToolModalEE implements IKeyBound, IChargeable { private static final Set blocksEffectiveAgainst = Sets.newHashSet(new Block[]{Blocks.cobblestone, Blocks.double_stone_slab, Blocks.stone_slab, Blocks.stone, Blocks.sandstone, Blocks.mossy_cobblestone, Blocks.iron_ore, Blocks.iron_block, Blocks.coal_ore, Blocks.gold_block, Blocks.gold_ore, Blocks.diamond_ore, Blocks.diamond_block, Blocks.ice, Blocks.netherrack, Blocks.lapis_ore, Blocks.lapis_block, Blocks.redstone_ore, Blocks.lit_redstone_ore, Blocks.rail, Blocks.detector_rail, Blocks.golden_rail, Blocks.activator_rail}); @@ -117,29 +117,30 @@ public class ItemDarkMatterPickAxe extends ItemToolEE implements IKeyBound, ICha { if (getChargeLevel(itemStack) == this.getMaxChargeLevel()) { - entityPlayer.worldObj.playSoundEffect(entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, Sounds.FAIL, 1.5f, 1.5f); + NetworkSoundHelper.playSoundAt(entityPlayer, Sounds.FAIL, 1.5f, 1.5f); } else { increaseChargeLevel(itemStack); - entityPlayer.worldObj.playSoundEffect(entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, Sounds.CHARGE_UP, 0.5F, 0.5F + 0.5F * (getChargeLevel(itemStack) * 1.0F / this.getMaxChargeLevel())); + NetworkSoundHelper.playSoundAt(entityPlayer, Sounds.CHARGE_UP, 0.5F, 0.5F + 0.5F * (getChargeLevel(itemStack) * 1.0F / this.getMaxChargeLevel())); } } else { if (getChargeLevel(itemStack) == 0) { - entityPlayer.worldObj.playSoundEffect(entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, Sounds.FAIL, 1.5f, 1.5f); + NetworkSoundHelper.playSoundAt(entityPlayer, Sounds.FAIL, 1.5f, 1.5f); } else { decreaseChargeLevel(itemStack); - entityPlayer.worldObj.playSoundEffect(entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, Sounds.CHARGE_DOWN, 0.5F, 1.0F - (0.5F - 0.5F * (getChargeLevel(itemStack) * 1.0F / this.getMaxChargeLevel()))); + NetworkSoundHelper.playSoundAt(entityPlayer, Sounds.CHARGE_DOWN, 0.5F, 1.0F - (0.5F - 0.5F * (getChargeLevel(itemStack) * 1.0F / this.getMaxChargeLevel()))); } } } else if (key == Key.EXTRA) { + NetworkSoundHelper.playSoundAt(entityPlayer, Sounds.TOCK, 0.5f, 1.5F); changeToolMode(itemStack); } } @@ -149,39 +150,4 @@ public class ItemDarkMatterPickAxe extends ItemToolEE implements IKeyBound, ICha { return Arrays.asList(ToolMode.STANDARD, ToolMode.WIDE, ToolMode.TALL); } - - @Override - public ToolMode getCurrentToolMode(ItemStack itemStack) - { - if (NBTHelper.getShort(itemStack, Names.NBT.MODE) < ToolMode.TYPES.length) - { - return ToolMode.TYPES[NBTHelper.getShort(itemStack, Names.NBT.MODE)]; - } - - return null; - } - - @Override - public void setToolMode(ItemStack itemStack, ToolMode toolMode) - { - NBTHelper.setShort(itemStack, Names.NBT.MODE, (short) toolMode.ordinal()); - } - - @Override - public void changeToolMode(ItemStack itemStack) - { - ToolMode currentToolMode = getCurrentToolMode(itemStack); - - if (getAvailableToolModes().contains(currentToolMode)) - { - if (getAvailableToolModes().indexOf(currentToolMode) == getAvailableToolModes().size() - 1) - { - setToolMode(itemStack, getAvailableToolModes().get(0)); - } - else - { - setToolMode(itemStack, getAvailableToolModes().get(getAvailableToolModes().indexOf(currentToolMode) + 1)); - } - } - } } diff --git a/src/main/java/com/pahimar/ee3/item/ItemDarkMatterShovel.java b/src/main/java/com/pahimar/ee3/item/ItemDarkMatterShovel.java index 435f1f98..7b635c33 100644 --- a/src/main/java/com/pahimar/ee3/item/ItemDarkMatterShovel.java +++ b/src/main/java/com/pahimar/ee3/item/ItemDarkMatterShovel.java @@ -5,17 +5,18 @@ import com.google.common.collect.Sets; import com.pahimar.ee3.reference.*; import com.pahimar.ee3.util.IChargeable; import com.pahimar.ee3.util.IKeyBound; -import com.pahimar.ee3.util.IModalTool; import com.pahimar.ee3.util.NBTHelper; +import com.pahimar.ee3.util.NetworkSoundHelper; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; +import java.util.Arrays; import java.util.List; import java.util.Set; -public class ItemDarkMatterShovel extends ItemToolEE implements IKeyBound, IChargeable, IModalTool +public class ItemDarkMatterShovel extends ItemToolModalEE implements IKeyBound, IChargeable { private static final Set blocksEffectiveAgainst = Sets.newHashSet(new Block[]{Blocks.grass, Blocks.dirt, Blocks.sand, Blocks.gravel, Blocks.snow_layer, Blocks.snow, Blocks.clay, Blocks.farmland, Blocks.soul_sand, Blocks.mycelium}); @@ -85,29 +86,30 @@ public class ItemDarkMatterShovel extends ItemToolEE implements IKeyBound, IChar { if (getChargeLevel(itemStack) == this.getMaxChargeLevel()) { - entityPlayer.worldObj.playSoundEffect(entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, Sounds.FAIL, 1.5f, 1.5f); + NetworkSoundHelper.playSoundAt(entityPlayer, Sounds.FAIL, 1.5f, 1.5f); } else { increaseChargeLevel(itemStack); - entityPlayer.worldObj.playSoundEffect(entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, Sounds.CHARGE_UP, 0.5F, 0.5F + 0.5F * (getChargeLevel(itemStack) * 1.0F / this.getMaxChargeLevel())); + NetworkSoundHelper.playSoundAt(entityPlayer, Sounds.CHARGE_UP, 0.5F, 0.5F + 0.5F * (getChargeLevel(itemStack) * 1.0F / this.getMaxChargeLevel())); } } else { if (getChargeLevel(itemStack) == 0) { - entityPlayer.worldObj.playSoundEffect(entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, Sounds.FAIL, 1.5f, 1.5f); + NetworkSoundHelper.playSoundAt(entityPlayer, Sounds.FAIL, 1.5f, 1.5f); } else { decreaseChargeLevel(itemStack); - entityPlayer.worldObj.playSoundEffect(entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, Sounds.CHARGE_DOWN, 0.5F, 1.0F - (0.5F - 0.5F * (getChargeLevel(itemStack) * 1.0F / this.getMaxChargeLevel()))); + NetworkSoundHelper.playSoundAt(entityPlayer, Sounds.CHARGE_DOWN, 0.5F, 1.0F - (0.5F - 0.5F * (getChargeLevel(itemStack) * 1.0F / this.getMaxChargeLevel()))); } } } else if (key == Key.EXTRA) { + NetworkSoundHelper.playSoundAt(entityPlayer, Sounds.TOCK, 0.5f, 1.5F); changeToolMode(itemStack); } } @@ -116,41 +118,6 @@ public class ItemDarkMatterShovel extends ItemToolEE implements IKeyBound, IChar public List getAvailableToolModes() { // TODO - return null; - } - - @Override - public ToolMode getCurrentToolMode(ItemStack itemStack) - { - if (NBTHelper.getShort(itemStack, Names.NBT.MODE) < ToolMode.TYPES.length) - { - return ToolMode.TYPES[NBTHelper.getShort(itemStack, Names.NBT.MODE)]; - } - - return null; - } - - @Override - public void setToolMode(ItemStack itemStack, ToolMode toolMode) - { - NBTHelper.setShort(itemStack, Names.NBT.MODE, (short) toolMode.ordinal()); - } - - @Override - public void changeToolMode(ItemStack itemStack) - { - ToolMode currentToolMode = getCurrentToolMode(itemStack); - - if (getAvailableToolModes().contains(currentToolMode)) - { - if (getAvailableToolModes().indexOf(currentToolMode) == getAvailableToolModes().size() - 1) - { - setToolMode(itemStack, getAvailableToolModes().get(0)); - } - else - { - setToolMode(itemStack, getAvailableToolModes().get(getAvailableToolModes().indexOf(currentToolMode) + 1)); - } - } + return Arrays.asList(ToolMode.STANDARD); } } diff --git a/src/main/java/com/pahimar/ee3/item/ItemToolModalEE.java b/src/main/java/com/pahimar/ee3/item/ItemToolModalEE.java new file mode 100644 index 00000000..aab7be1a --- /dev/null +++ b/src/main/java/com/pahimar/ee3/item/ItemToolModalEE.java @@ -0,0 +1,71 @@ +package com.pahimar.ee3.item; + +import com.pahimar.ee3.reference.Names; +import com.pahimar.ee3.reference.ToolMode; +import com.pahimar.ee3.util.IModalTool; +import com.pahimar.ee3.util.NBTHelper; +import net.minecraft.item.ItemStack; + +import java.util.Arrays; +import java.util.List; +import java.util.Set; + +public class ItemToolModalEE extends ItemToolEE implements IModalTool +{ + public ItemToolModalEE(float damageVsEntity, ToolMaterial toolMaterial, Set blocksEffectiveAgainst) + { + super(damageVsEntity, toolMaterial, blocksEffectiveAgainst); + } + + @Override + public List getAvailableToolModes() + { + return Arrays.asList(ToolMode.UNKNOWN); + } + + @Override + public ToolMode getCurrentToolMode(ItemStack itemStack) + { + if (NBTHelper.getShort(itemStack, Names.NBT.MODE) < ToolMode.TYPES.length) + { + return ToolMode.TYPES[NBTHelper.getShort(itemStack, Names.NBT.MODE)]; + } + + return ToolMode.UNKNOWN; + } + + @Override + public void setToolMode(ItemStack itemStack, ToolMode toolMode) + { + NBTHelper.setShort(itemStack, Names.NBT.MODE, (short) toolMode.ordinal()); + } + + @Override + public void changeToolMode(ItemStack itemStack) + { + ToolMode currentToolMode = getCurrentToolMode(itemStack); + + if (getAvailableToolModes().size() > 0) + { + if (getAvailableToolModes().contains(currentToolMode)) + { + if (getAvailableToolModes().indexOf(currentToolMode) == getAvailableToolModes().size() - 1) + { + setToolMode(itemStack, getAvailableToolModes().get(0)); + } + else + { + setToolMode(itemStack, getAvailableToolModes().get(getAvailableToolModes().indexOf(currentToolMode) + 1)); + } + } + else + { + setToolMode(itemStack, getAvailableToolModes().get(0)); + } + } + else + { + setToolMode(itemStack, ToolMode.UNKNOWN); + } + } +} diff --git a/src/main/java/com/pahimar/ee3/network/PacketHandler.java b/src/main/java/com/pahimar/ee3/network/PacketHandler.java index 77527962..17b42d15 100644 --- a/src/main/java/com/pahimar/ee3/network/PacketHandler.java +++ b/src/main/java/com/pahimar/ee3/network/PacketHandler.java @@ -17,5 +17,6 @@ public class PacketHandler INSTANCE.registerMessage(MessageTileEntityAludel.class, MessageTileEntityAludel.class, 2, Side.CLIENT); INSTANCE.registerMessage(MessageTileEntityGlassBell.class, MessageTileEntityGlassBell.class, 3, Side.CLIENT); INSTANCE.registerMessage(MessageKeyPressed.class, MessageKeyPressed.class, 4, Side.SERVER); + INSTANCE.registerMessage(MessageSoundEvent.class, MessageSoundEvent.class, 5, Side.CLIENT); } } diff --git a/src/main/java/com/pahimar/ee3/network/message/MessageSoundEvent.java b/src/main/java/com/pahimar/ee3/network/message/MessageSoundEvent.java new file mode 100644 index 00000000..b6a2caba --- /dev/null +++ b/src/main/java/com/pahimar/ee3/network/message/MessageSoundEvent.java @@ -0,0 +1,97 @@ +package com.pahimar.ee3.network.message; + +import com.pahimar.ee3.EquivalentExchange3; +import com.pahimar.ee3.reference.Settings; +import cpw.mods.fml.client.FMLClientHandler; +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 java.util.UUID; + +public class MessageSoundEvent implements IMessage, IMessageHandler +{ + private long mostSigUUID, leastSigUUID; + private String soundName; + private float xCoord, yCoord, zCoord; + private float volume, pitch; + + public MessageSoundEvent() + { + + } + + public MessageSoundEvent(EntityPlayer entityPlayer, String soundName, float volume, float pitch) + { + this.mostSigUUID = entityPlayer.getUniqueID().getMostSignificantBits(); + this.leastSigUUID = entityPlayer.getUniqueID().getLeastSignificantBits(); + this.soundName = soundName; + this.xCoord = (float) entityPlayer.posX; + this.yCoord = (float) entityPlayer.posY; + this.zCoord = (float) entityPlayer.posZ; + this.volume = volume; + this.pitch = pitch; + } + + public MessageSoundEvent(String soundName, float xCoord, float yCoord, float zCoord, float volume, float pitch) + { + this.mostSigUUID = 0; + this.leastSigUUID = 0; + this.soundName = soundName; + this.xCoord = xCoord; + this.yCoord = yCoord; + this.zCoord = zCoord; + this.volume = volume; + this.pitch = pitch; + } + + @Override + public void fromBytes(ByteBuf byteBuf) + { + this.mostSigUUID = byteBuf.readLong(); + this.leastSigUUID = byteBuf.readLong(); + int soundNameLength = byteBuf.readInt(); + this.soundName = new String(byteBuf.readBytes(soundNameLength).array()); + this.xCoord = byteBuf.readFloat(); + this.yCoord = byteBuf.readFloat(); + this.zCoord = byteBuf.readFloat(); + this.volume = byteBuf.readFloat(); + this.pitch = byteBuf.readFloat(); + } + + @Override + public void toBytes(ByteBuf byteBuf) + { + byteBuf.writeLong(mostSigUUID); + byteBuf.writeLong(leastSigUUID); + byteBuf.writeInt(soundName.length()); + byteBuf.writeBytes(soundName.getBytes()); + byteBuf.writeFloat(xCoord); + byteBuf.writeFloat(yCoord); + byteBuf.writeFloat(zCoord); + byteBuf.writeFloat(volume); + byteBuf.writeFloat(pitch); + } + + @Override + public IMessage onMessage(MessageSoundEvent event, MessageContext context) + { + UUID originUUID = new UUID(event.mostSigUUID, event.leastSigUUID); + + if (Settings.Sounds.soundMode.equalsIgnoreCase(Settings.Sounds.SOUND_MODE_ALL)) + { + EquivalentExchange3.proxy.playSound(event.soundName, event.xCoord, event.yCoord, event.zCoord, event.volume, event.pitch); + } + else if (Settings.Sounds.soundMode.equalsIgnoreCase(Settings.Sounds.SOUND_MODE_SELF)) + { + if (FMLClientHandler.instance().getClient().thePlayer.getUniqueID().equals(originUUID)) + { + EquivalentExchange3.proxy.playSound(event.soundName, event.xCoord, event.yCoord, event.zCoord, event.volume, event.pitch); + } + } + + return null; + } +} diff --git a/src/main/java/com/pahimar/ee3/proxy/ClientProxy.java b/src/main/java/com/pahimar/ee3/proxy/ClientProxy.java index ced10e9e..466188bc 100644 --- a/src/main/java/com/pahimar/ee3/proxy/ClientProxy.java +++ b/src/main/java/com/pahimar/ee3/proxy/ClientProxy.java @@ -6,6 +6,7 @@ import com.pahimar.ee3.client.handler.KeyInputEventHandler; import com.pahimar.ee3.client.renderer.item.*; import com.pahimar.ee3.client.renderer.tileentity.*; import com.pahimar.ee3.client.settings.Keybindings; +import com.pahimar.ee3.client.util.ClientSoundHelper; import com.pahimar.ee3.init.ModBlocks; import com.pahimar.ee3.reference.RenderIds; import com.pahimar.ee3.tileentity.*; @@ -36,6 +37,12 @@ public class ClientProxy extends CommonProxy ClientRegistry.registerKeyBinding(Keybindings.toggle); } + @Override + public void playSound(String soundName, float xCoord, float yCoord, float zCoord, float volume, float pitch) + { + ClientSoundHelper.playSound(soundName, xCoord, yCoord, zCoord, volume, pitch); + } + @Override public void initRenderingAndTextures() { diff --git a/src/main/java/com/pahimar/ee3/proxy/IProxy.java b/src/main/java/com/pahimar/ee3/proxy/IProxy.java index bee15f3a..e2612946 100644 --- a/src/main/java/com/pahimar/ee3/proxy/IProxy.java +++ b/src/main/java/com/pahimar/ee3/proxy/IProxy.java @@ -9,4 +9,6 @@ public interface IProxy public abstract void registerEventHandlers(); public abstract void registerKeybindings(); + + public abstract void playSound(String soundName, float xCoord, float yCoord, float zCoord, float volume, float pitch); } diff --git a/src/main/java/com/pahimar/ee3/proxy/ServerProxy.java b/src/main/java/com/pahimar/ee3/proxy/ServerProxy.java index e4978704..c16064bf 100644 --- a/src/main/java/com/pahimar/ee3/proxy/ServerProxy.java +++ b/src/main/java/com/pahimar/ee3/proxy/ServerProxy.java @@ -13,4 +13,10 @@ public class ServerProxy extends CommonProxy { // NOOP } + + @Override + public void playSound(String soundName, float xCoord, float yCoord, float zCoord, float volume, float pitch) + { + // NOOP + } } diff --git a/src/main/java/com/pahimar/ee3/reference/Messages.java b/src/main/java/com/pahimar/ee3/reference/Messages.java index db957b59..12a3aa0a 100644 --- a/src/main/java/com/pahimar/ee3/reference/Messages.java +++ b/src/main/java/com/pahimar/ee3/reference/Messages.java @@ -20,5 +20,9 @@ public final class Messages public static final String TRANSMUTATION_KNOWLEDGE_TEMPLATE = "useTemplateFile"; public static final String TRANSMUTATION_KNOWLEDGE_TEMPLATE_LABEL = "general.transmutation.knowledge.template.label"; public static final String TRANSMUTATION_KNOWLEDGE_TEMPLATE_COMMENT = "general.transmutation.knowledge.template.comment"; + + public static final String SOUND_MODE = "soundMode"; + public static final String SOUND_MODE_LABEL = "general.sound.soundMode.label"; + public static final String SOUND_MODE_COMMENT = "general.sound.soundMode.comment"; } } diff --git a/src/main/java/com/pahimar/ee3/reference/Settings.java b/src/main/java/com/pahimar/ee3/reference/Settings.java index a9703c3e..9ac88fcc 100644 --- a/src/main/java/com/pahimar/ee3/reference/Settings.java +++ b/src/main/java/com/pahimar/ee3/reference/Settings.java @@ -8,6 +8,15 @@ public class Settings public static final String KNOWLEDGE_MODE_ALL = "All"; public static final String KNOWLEDGE_MODE_SELECT = "Select"; public static final String KNOWLEDGE_MODE_NONE = "None"; + public static boolean useTemplateFile; } + + public static class Sounds + { + public static String soundMode; + public static final String SOUND_MODE_ALL = "All"; + public static final String SOUND_MODE_SELF = "Self"; + public static final String SOUND_MODE_NONE = "None"; + } } diff --git a/src/main/java/com/pahimar/ee3/reference/Sounds.java b/src/main/java/com/pahimar/ee3/reference/Sounds.java index 6a0a08cf..d65df416 100644 --- a/src/main/java/com/pahimar/ee3/reference/Sounds.java +++ b/src/main/java/com/pahimar/ee3/reference/Sounds.java @@ -4,21 +4,20 @@ public class Sounds { public static final String CHEST_OPEN = "random.chestopen"; public static final String CHEST_CLOSE = "random.chestclosed"; - private static final String SOUND_PREFIX = Reference.MOD_ID.toLowerCase() + ":"; - public static final String CHARGE_DOWN = SOUND_PREFIX + "chargeDown"; - public static final String CHARGE_UP = SOUND_PREFIX + "chargeUp"; - public static final String DESTRUCTION = SOUND_PREFIX + "destruct"; - public static final String FAIL = SOUND_PREFIX + "fail"; - public static final String CHARGE_FAIL = FAIL; - public static final String GUST = SOUND_PREFIX + "gust"; - public static final String HEAL = SOUND_PREFIX + "heal"; - public static final String KINESIS = SOUND_PREFIX + "kinesis"; - public static final String LAUNCH = SOUND_PREFIX + "launch"; - public static final String NOVA = SOUND_PREFIX + "nova"; - public static final String PHILOSOPHERS_BALL = SOUND_PREFIX + "philball"; - public static final String TOCK = SOUND_PREFIX + "tock"; - public static final String TRANSMUTE = SOUND_PREFIX + "transmute"; - public static final String WALL = SOUND_PREFIX + "wall"; - public static final String WATER_BALL = SOUND_PREFIX + "waterball"; - public static final String WIND = SOUND_PREFIX + "wind"; + + public static final String CHARGE_DOWN = "chargeDown"; + public static final String CHARGE_UP = "chargeUp"; + public static final String DESTRUCTION = "destruct"; + public static final String FAIL = "fail"; + public static final String GUST = "gust"; + public static final String HEAL = "heal"; + public static final String KINESIS = "kinesis"; + public static final String LAUNCH = "launch"; + public static final String NOVA = "nova"; + public static final String PHILOSOPHERS_BALL = "philball"; + public static final String TOCK = "tock"; + public static final String TRANSMUTE = "transmute"; + public static final String WALL = "wall"; + public static final String WATER_BALL = "waterball"; + public static final String WIND = "wind"; } diff --git a/src/main/java/com/pahimar/ee3/reference/ToolMode.java b/src/main/java/com/pahimar/ee3/reference/ToolMode.java index 73456171..bb2e49c8 100644 --- a/src/main/java/com/pahimar/ee3/reference/ToolMode.java +++ b/src/main/java/com/pahimar/ee3/reference/ToolMode.java @@ -2,7 +2,7 @@ package com.pahimar.ee3.reference; public enum ToolMode { - STANDARD, DEEP, WIDE, TALL, SQUARE, CUBE, SLASH, MEGA; + UNKNOWN, STANDARD, DEEP, WIDE, TALL, SQUARE, CUBE, SLASH, MEGA; public static final ToolMode[] TYPES = ToolMode.values(); } diff --git a/src/main/java/com/pahimar/ee3/util/NetworkSoundHelper.java b/src/main/java/com/pahimar/ee3/util/NetworkSoundHelper.java new file mode 100644 index 00000000..7a85b0da --- /dev/null +++ b/src/main/java/com/pahimar/ee3/util/NetworkSoundHelper.java @@ -0,0 +1,19 @@ +package com.pahimar.ee3.util; + +import com.pahimar.ee3.network.PacketHandler; +import com.pahimar.ee3.network.message.MessageSoundEvent; +import cpw.mods.fml.common.network.NetworkRegistry; +import net.minecraft.entity.player.EntityPlayer; + +public class NetworkSoundHelper +{ + public static void playSoundAt(EntityPlayer entityPlayer, String soundName, float volume, float pitch) + { + playSoundAt(entityPlayer, soundName, volume, pitch, 32d); + } + + public static void playSoundAt(EntityPlayer entityPlayer, String soundName, float volume, float pitch, double range) + { + PacketHandler.INSTANCE.sendToAllAround(new MessageSoundEvent(entityPlayer, soundName, volume, pitch), new NetworkRegistry.TargetPoint(entityPlayer.worldObj.provider.dimensionId, entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, range)); + } +} diff --git a/src/main/resources/assets/ee3/lang/en_US.lang b/src/main/resources/assets/ee3/lang/en_US.lang index c51ac1bc..57861a75 100644 --- a/src/main/resources/assets/ee3/lang/en_US.lang +++ b/src/main/resources/assets/ee3/lang/en_US.lang @@ -6,6 +6,9 @@ general.transmutation.knowledge.mode.comment=All - Player can learn all items th general.transmutation.knowledge.template.label=Use Knowledge Template File general.transmutation.knowledge.template.comment=If true, new player's will have their transmutation knowledge copied from the knowledge template file (template.ee3) +general.sound.soundMode.label=Sounds +general.sound.soundMode.comment='All' plays mod sounds from all players, 'Self' only plays mod sounds from you, and 'None' plays no mod sounds + # Keys key.categories.ee3=Equivalent Exchange 3 key.charge=Charge @@ -47,11 +50,11 @@ item.ee3:matterVoid.name=Void Matter [WIP] # Tools item.ee3:shovelDarkMatter.name=Dark Matter Shovel [WIP] -item.ee3:pickaxeDarkMatter.name=Dark Matter Pickaxe [WIP] +item.ee3:pickAxeDarkMatter.name=Dark Matter Pickaxe [WIP] item.ee3:hammerDarkMatter.name=Dark Matter Hammer [WIP] item.ee3:axeDarkMatter.name=Dark Matter Axe [WIP] item.ee3:hoeDarkMatter.name=Dark Matter Hoe [WIP] -item.ee3:fishingrodDarkMatter.name=Dark Matter Fishing Rod [WIP] +item.ee3:fishingRodDarkMatter.name=Dark Matter Fishing Rod [WIP] item.ee3:shearsDarkMatter.name=Dark Matter Shears [WIP] # Weapons diff --git a/src/main/resources/assets/ee3/textures/items/alchemicalBag.closed.png b/src/main/resources/assets/ee3/textures/items/alchemicalBag.closed.png index db0831f808da6b0a45b7c3217d3e543e1d3215e1..edb88302b4f42492a3e318b5f01891e0ba78837c 100644 GIT binary patch literal 1760 zcmV<61|Ru}P)KLZ*U+=)p!fv7f#TG` zAxLl%!EgG`&*5<32cu%worY0{L9A7~=}6b}76Isk~1IN~P)K3@?4 z&zpALY4A7Z!>t0&I7qECf*j`WHIYAjW_h^ivJu4lvb8y9VL`DD`rG0ZKvcZ$L@8 zo)6*!Fng}&gE0q~LGCMnsiR8`P)pL0I_sTkS+y)n+TA3G1*bkskP$n%sE+W0q6h#0RR7NkUI_pAq+#K02RmJ z_;3_(YMn*pX(KU3ZRb>BT<`Z}H0`#)y>C-FiX-pjs;~5rC6ni~$irYwZl= zoH6G_?;U$@thLTJLkQ%Y`yQA{RY^qdtxGAy%;dc%RV8aJ8Dmb!e;WXx4*&oF|Nn$j zJC1}f41K|o7>SAlP^6)t<_J_=H8nS&;|$Q#AwB{TVo$Le#KNrBk_&(3=Vw1q+_h;M zxyU2_?;_i_m9FbBjw6^EQ52yp%O9cv=)VfBwUQ(W!Z5@z3;+OQ4Dvizzp1&6R8^HM z%Ocyh$vn^EoD=7q?E5b3x=P>o@)d%$R?;*@mStdOeEdX&&jSF!aU2j4yk4&-1Y-=e z)=)~pdw(|Z-h-JD1Ob#%AR>70g^1Mk*i>EDn5GHLd?pgndE-O`tu=xm01>ILZ+Ttf z)h>zxaU83A-kY+rS5+8@g7ECdRY;+Y2!RwnM|z(iJ5Yx*)yEOnQ!*v8b3Yq-Otr(#b-Xa7ys&Dxm+^Oa|j_k2x*#n6MgJpI2orfO6SdYf#;~d?YOT53?K(tuit{}8@!~kB>zdc=mABiiBOse?Pp4Bqt5OPe zUHgNMiOc1}mp+K12vHP42;oO_Ts*Dozglay1l)}fh9Q(v2!g=#-~=6sPUPhp9Viat z=N$xVEv&UrN_irG3kYj1UF%Xx^!t5~gfXT?WiuQ62w9e)C<^TN`&JG#3#62t;y-<` z-EMg}9C*LqX|1I(#>aVCmi#J}n|Uys%|P;H9{kW=_O7Y}K@>k5j9*!?k(D4qQizp; zSX$cnzoxddvlg+juopYA5M(sFx4E;7zGvROFZT|JDKs;)XY!kq(mW^|l@kAT>-8F^ z(+RQ(9-U8YJfY*;JSvL)e(&n_I?^=7a=8Q%A{h;Q&Ct-v! zDTO$WeG)cyGAW;kTrFGx5qWPXrTa9Ej(y#ihEVFun#(S&wf;B!&2n(^*Tq_7?GykU zk4J1a8#w21yWO62mAIANabo^R8z7ShL7)nUFw3&1cg|j~ha^b=0LGXLNyxLowBs0!M*f;#0{DJ>GVONzcb3sl#m4{%w#5g7J1^+~0000y{D6rAs2rD2XskIMF-vj0s$Wza@65b0002$NklgnS1{=o0u}~Yu8Qcm6-MG8W{xYAugak4$GRB-$RiP|P0D!eNdR^CL z>Di1+tm_)iIRJnVBKp%bVOf?7BzvkJAVLT@=diBpTQUnsA*p}3ZDtz(Qrbs~b4 z62FLuV2n909emRh{AWNq0~X-D$2g8`H7RBE!r8|y0Dw~J0!WkZTX=g1T5AyTH}l?O j7>3WEDS)^*_YxIfOtOl`qzK$b00000NkvXXu0mjf6U>G7 diff --git a/src/main/resources/assets/ee3/textures/items/alchemicalBag.open.png b/src/main/resources/assets/ee3/textures/items/alchemicalBag.open.png index 54183490151587bb6ecf2125088022e5cd786537..9e09f61da42118822d1d4c386f57eed0aa7e797c 100644 GIT binary patch literal 1601 zcmV-H2EO@;P)KLZ*U+=)p!fv7f#TG` zAxLl%!EgG`&*5<32cu%worY0{L9A7~=}6b}76Isk~1IN~P)K3@?4 z&zpALY4A7Z!>t0&I7qECf*j`WHIYAjW_h^ivJu4lvb8y9VL`DD`rG0ZKvcZ$L@8 zo)6*!Fng}&gE0q~LGCMnsiR8`P)pL0I_sTkS+y)n+TA3GUrB)00030|74EA3BWK6#IB(mX3I>IkDneS#*X?6rM;g(i2F6ZyWimM%sJIs z)81RX_e+4r7*rK&Ei&_b1|;A}W=2GinN$^k9smFU|Nn%Lu?++v5CgqHMjezynKVL7 z8ITYlgaBWF9{o!%ox=@w#(s5Bc*&IvA#m>v5rK#t!S4^wIe70OBA?S?lSGV>z4xC6 zIcMA!r4+8USZn2+ldUz5F-YVk z3Uh0Ps5ds9>5V8^`hSVo?<6y6(Lwc{yjkZQFr#Sr)riLj1vC7zV5B8cowcRbghx zvh1c{-*=c9@;v8_K~+`o-h(7!j0Xc%g{s0i2a*sG#28IPcz!m95U{Q*(ocy9LrIAj>j&cM-X+E1IUci+sz$vMiVD3R2$B5%t8h9LsRQN$x)@|GPCQwxsTb6||4B>em9LJGcbw`v^ zB4Xs=3JL((be<=O2t)+W^Td(A0u~XmUb64|(hohA*9EsvD9aMlG+`Xa+Z@mjTwFZ4 zHH@^r?|GhQ-uIn}NNl}+4*LFo&4WD8!OX^a@I!nRt11jb(G#hP6md|BMTDZLlbf4A z;J@Y@+?_f&=pQ&aIBF=~H|Pmzp0#<1yezGnnv>jf&pG{A5B^;az9AwWseM6UY5^RNM*)Dt;SjW=`~7b3yWK7TV6)j&f(a(! ze!rJEjsXDE>6Efq3Bd2Us#B>2ptY98VuAU5Zgu&5J|l`E^!t4Pz;?UE<#KuX{BStL zdcCeJ$=g1T;}}_%VKSLmi6Rl*QMEWnyWPg^c2fjg3qWfvv)K%T!2n5;*rY-N`k9G( zNdxxDS`-DnMAf#T)>_guMW@rT*5K-?F~)jLv)O#OnsX}dhKiyn>9H|JTCJ9<1VH&z zN+C^CyC{PlKf6BVCkPRNF~(*)myplUD9m+1LPS>cXt`_mch2FJ<>2BhO^6gL063ja z$nzW`g6s8Ks;e8e{C1;ny7uoIaHG+9--cT2(wo$1G(whT0DvS(e*K|qsqU-Vs~!7` z2MZCoF&>Xg-!GR-d+(y{D6rAs2rD2XskIMF-vj0s$W*TGm<50002>NklsnM3Ld4uv`|}C_Af>z!q|Nyi u{`o*D1)}m~Ap{^S%To5i8#m@I1b{EpdWsa56Rg4j0000vL>4nJa0`PlBg3pY5*&>~7`< z^Jj-cG833`$`|Xf1Ty{-x4NoutU>ZiFz+KigR7pq*&Z=!d@ZVH^m2Tc@8G#}9{(d| zgX(q9n+@4#IKI=dztA@R*|)kDh9j4fCyKT>m;Srky7BYxm^%{shac+t_;=-e z=gKonc)06C*y@0LO}{^iAKL8yPlj`|Iw+WvJ%W507^+km7#f-x7=Hc-(k~bof;bo$ zMI#s(tfn(Ci05CAlAiz!a92+k$B>F!Nq_$Tw`Vp=NOEA_!D?h|^v~G9zyN3z!~g$D zOV04HfdGVi$e?+FAd6_so{Eq5XF6RX8NrGcHA-i!d2q0q{lC0T#RvK2`UwZEYmf0f z+RF)+R$9@JU z`LZu&yKt}JOi$1M3ulfv6s4W=@c&=`|KH#L;(9SZz>FPN9u_k`etmttWZmCiM=#vG z*cdFxt=IX|IL#m>Eycjdz~E1MLPCPfv6&DzEV{wX{H{5Wy~iry3gZ+eF)v<+EOSGp z?LL`t0;y>!fArU{a1d;s_DjXGrBmp1{QkP$riFaJ{QET$T7G@24=OTZ27<$Tb{0#1 n2#sD`dT<4E0m$#b5MpL9Rl7FztmZyY;4^r-`njxgN@xNA1E)x1 delta 134 zcmZo+o5E<^8Q|y6%O%Cdz`(%k>ERLtqy<2jgAGW^fBv5cq}Y|gW!U_%O_7% z6!&6aFY)wsWxvP7#Hb*8cGI&gpfW{I7sn8b)5!@Etcx42C47E%_P=@ly+8AF&fd83 erT8ER6T`dDLK81nCqw}iGkCiCxvXvL>4nJa0`PlBg3pY5*&>~7`< z^Jj-cG833`$`|Xf1Ty{-x4NoutU>ZiFz+KigR7pq*&Z=!d@ZVH^m2Tc@8G#}9{(d| zgX(q9n+@4#IKI=dztA@R*|)kDh9j4fCyKT>m;Srky7BYxm^%{shac+t_;=-e z=gKonc)06C*y@0LO}{^iAKL8yPlj`|Iw+WvJ%W507^+km7#f-x7=Hc-(k~bof;bo$ zMI#s(tfn(Ci05CAlAiz!@HkHw$B>F!Nq_$Tw`Vp=NOEA_!D?h|^v~G9zyN3z!~g$D zOV04HfdGVi$e?+FAj{m+kB^T2pD8K%U*4wT!+Z^Gh~%P0(k~V~IM~eoKT+aYDo^}@ zrt)7sl1Hk6aSSv`X+=YlKMymrUG1+Hp*Jkdf>NUYB_$*zfcT%fsyfI@gEO`xn4#Zd~U-rdp7w$Ej>FN1@;Y>^P#sB~R2Y&eb`}_a&CCmSx_wfH;|Nr0L z|KfTvKfsI=MJHYv#$330@gT$5&Yt!0`_q1WeJ$?86WO<8Ps5z86TNRGPMZmJ@eOX~ zcg=z9Jyr=<7^g6adGR`AnLpIg*VOCS5IJe)#E<*;EMm&`ZCKMb;qi=)jW(K=GZ}B4 z_}!oL^Y!)hfd*F`{};Yo92M9Ta#(4*-NRB@%|OE_@g6IP;miy-GVgYNSv2boi0|p@ K=d#Wzp$P!$t5=Z# delta 139 zcmbQsHj~k~Gr-TCmrII^fq{Y7)59eQNDF{42OE%-|NK7@NUvL>4nJa0`PlBg3pY5*&>~7`< z^Jj-cG833`$`|Xf1Ty{-x4NoutU>ZiFz+KigR7pq*&Z=!d@ZVH^m2Tc@8G#}9{(d| zgX(q9n+@4#IKI=dztA@R*|)kDh9j4fCyKT>m;Srky7BYxm^%{shac+t_;=-e z=gKonc)06C*y@0LO}{^iAKL8yPlj`|Iw+WvJ%W507^+km7#f-x7=Hc-(k~bof;bo$ zMI#s(tfn(Ci05CAlAiz!@L!%Tjv*DdlK%YvZ_jL$kmSHz(0HbYhe!0kq=W=8Mi?0W z|4&jm*Tc>)_vieX6F>OHU%Yvd00JpM43R%%z`Wd;L+b=kdj8CbAOAl(+Wp_y*yx{q z#fJy>fng9uixx?*Sgv5K+{`GJrNJd?D5cu%&^78)|rm%@CYbl9}h)5U#jlaLAa#zdaZ4gddd zeAM&h%YOqaW!t%m%C>+1|NZ^l@JgUeFT??FLcMtpD2QlhC33Z~1TcuFaR~BrYrN1? zR%F~HTmFFaMfT*nZTw~jgcfYg+0U~!vpxETgc8$Y)9ke>oilqq`*`O0e>wMYilm;m|4(uUatel)sSFX2tLOeIN6JLT}LxR_1w= z++_`3H7LGk5DPLr;3W}J*&g!9z;C`Gv-7-FiVVhk_AFwW|L_Ih;ynsZ-&K9q0J*NR zMfxmjSN23PPk7XDrl;rshGVi@q7ob0m=3?bzCQ3uS69~|nS-FPX;{ObKIK7{j8L=j zrOW^4Ta~{0zcP6FKjqM9m6?v4TED-)|G$5Ao=O;RX!Q2Qtb$7+!NJUsHlMRE@a-}; O5Z}|)&t;ucLK6Vcvy#pL delta 167 zcmdnVzLn9qGr-TCmrII^fq{Y7)59eQNDF{42OE%-|NK7@NUEr|n*24@2k0#yNQ~9}G;`a6H(mdKI;Vst07|<#ApigX diff --git a/src/main/resources/assets/ee3/textures/items/alchemicalDust.png b/src/main/resources/assets/ee3/textures/items/alchemicalDust.png index 2ef83eeceeb4add5a12dc34519ec0a0d266c9069..f7683f74807e7a048187aa0e09057646fd979b8b 100644 GIT binary patch literal 1792 zcmV+b2mknqP)KLZ*U+=)p!fv7f#TG` zAxLl%!EgG`&*5<32cu%worY0{L9A7~=}6b}76Isk~1IN~P)K3@?4 z&zpALY4A7Z!>t0&I7qECf*j`WHIYAjW_h^ivJu4lvb8y9VL`DD`rG0ZKvcZ$L@8 zo)6*!Fng}&gE0q~LGCMnsiR8`P)pL0I_sTkS+y)n+TA3Gr!rHL6cM_DyQ`E!trat4?@eosF$T{oWG20L18{e(wE*k@00960 zjF2G?gg_7ki)7_OkVsxZc=PZB1bQ`Y#XbTH1AXcsCrGYUtEx`_zu_&nqLjjQUFy1y zx~{7qLP`mDSKGG47&(qZDW!+t?s9iR2(0UhyR+}RfGSMWB!Kfgk%T1rzGqpM=gDo` zG|w{tP17(81372LajcMpnaRvtKL7v#|Noqkv1)}t6hx28f+!*gVkOx64St7T zsimd(AJ(EEDi#VWTkNI?dC?+yA=6zLxHD(oa(Jg-Ic?i!_I)>h;&|t&lrlmHJkP@z zgAl^_zK_-#$8oH?|52gqI^%gBQ52!ICP@+;$9Z*MmIbXf(=@TJt5ufecY>yAjO)56 zrBF%%FpeYVc|H=}9)9lhbxA2Hih{OnndcdRAPBH+8_TlDvWz&63B!=OuAdC5sxo<= z)Av1TnlcOn0LO8>jKeS>rR2IUeq`_;eGpUjxQfG26#i_YAi$(R1Vn)-*#yfVs|*WZ z2^91cC>0VxAcZ8#k0K@Z6mODwJmzVN(P-S-IzQLv+<%*c{}1qdKL41+w;2RMK+`lv z2*F~p=>Gn5%fD67##jh}ZQCSCLLA48MkCBmrXUEu2Pn(ZSe8Yv*Fy+_Qi|DZh7cd* zkH^EbE9MQr_kELP8O9jux<)C55Q4HSNz=4bbGzNlTN@9D1CHZR*ELmDVcRyw7_`=C ztvR31NGY)_3n?Xeo*O`P0GG?fIF3VARb*MlcswQy!m%gp543;cCC_~!wLuY7E+#bh!erPLex zAHVPmA)*tpKL(&LUCudDN}*{QD5W5!Odc7Hmx!R0BF;I45bRq`XpF&ZHiP$`;-5yD z%(4u5o(h7bZ;YiO-g;$Vy=`a=lV z?RJn-B7~5(sA(E_@6om`&gV0WDl}qXzu!|V)V3|W_sH`c0PuJ`VmgEO9?m&jE|(E= zL^Mh-k(qv`8Zpq9IsmC~WTUF8MDw$vUDu&)+kT<+o``Tf9tU%xoWAS<=iJ~q?m1&D zfr)_nry*`v%(Ec`EEWrFHk;2+fwdOSInr7q&+|_we;mu@a*&PV=^-N2b)9nYI|IWW zh?kkFs!$XKvMj@PyG32sn9t`a^1d2nSteV2maRYL>QNKMNPIXPo)&mzlkfe5>-9z@;j|==^1poj524YJ`L;(K){{a7>y{D6rAs2rD2XskIMF-sj1QHS)+2IpZ0004@ zNklB7MiF8^#?-sswa2E$F*;(g`F98XLo@g8~uKtzVb$+LEquH?+S)t(Cv1Eq9~|V ztDJvr+oY;$03Z59?smI$yU@9J5Q(6 zZ`|MG{3F0|95hXXs;ZbyrzjK(xLht6jYfaSWHK-egDlIUk6UQ9TEz1_BuN6#^Kcvo z`~4n_F_ghIl-V z^ZAVD^NCz8huv=XYrEb4es`ejI<41h2!eoYHVavnp(qMG&jVu&^Z6Y4d>;4v9j;C5 zVmKUffkV=Dof3%z9LGU2nFP=CV2q(yEW&XdL?RLNdOhyHmsqdYiHIPIA`XWG27>|j bbD!=Hq3X97s8uYb00000NkvXXu0mjfM5W?X diff --git a/src/main/resources/assets/ee3/textures/items/diviningRod.png b/src/main/resources/assets/ee3/textures/items/diviningRod.png index 5d5f406357d0d8e7e86dfeae39fbdf10ff32a86c..1d60dfac0f80154496c6b3c8cfeed837b6363d76 100644 GIT binary patch literal 1583 zcmV+~2GIG5P)KLZ*U+=)p!fv7f#TG` zAxLl%!EgG`&*5<32cu%worY0{L9A7~=}6b}76Isk~1IN~P)K3@?4 z&zpALY4A7Z!>t0&I7qECf*j`WHIYAjW_h^ivJu4lvb8y9VL`DD`rG0ZKvcZ$L@8 zo)6*!Fng}&gE0q~LGCMnsiR8`P)pL0I_sTkS+y)n+TA3G26onG{oir(HUk5)>i_@$GZcio{D0@23umK9M7o*(N7umc|Nno6 zI4>&<2^a7~%Tgm{XX+`?VM&hLP{Qa~bkI9N<=Bn9wP3`~QR` z`x)Q+r9LmtnYi@g4)a02>1X0|Nus4@L&YFaH>X**O>z z7?l{Y8ZfOQ>Hp~Y2=KFs+4|9^%cM-vo7*X=(;bd&-(DPxv~fiMie9|?rB5sZ+*7QrF~ zXZ;Q72NM4D@tA8@?C#pfX-_7b$D)nB0GvM=jw4raGX zkbv>!QUm&%2hene=S~Q%ef9U;wWo*ZYly2nd(L1hX)k`w^2@F`)f zQG@>&V2|pgxpuMkRHh&s<;ar^RaU`!FGiH6Xg*a4R7YWmlbv`A2ROZXpwi;COoKO8 zmeKJ899_61gtBECJR9XmzcZXUw-Hn*7D zAGYIgt7SN;Gr#)q16Ujxrf8N4TRw_Z+LJ&W8XXIvC<^Ih8pn1S@b{tmeDugN!C(MA zndK^;VkoFmFCZPmVQpw6A3O zwg7Qskud=GT85+33+dO4s9wA2i7;9sN#e!8uxyUcE~Rch-47kuT3hy_;~`wPLN2fK zn99-DtB^M>fUd(E0#&p*{+z{l|45vC6X{)%K)|((&Wlm}6L3QZw%1oY56I+A467uy h``zwn2L5Bc4ge^DsLDV^z{vmr002ovPDHLkV1ns;?cD$X delta 387 zcmV-}0et?i437gtiBL{Q4GJ0x0000DNk~Le0000G0000G2nGNE03Y-JVE_OC1ZP1_ zK>z@;j|==^1poj524YJ`L;(K){{a7>y{D6rAs2rD2XskIMF-sj1QHTClI6z}0003D zNkl2WN7=9uJ?c5|#Ap=jAA&mA1lwEu1Z}txqf55zyVoyQ?9zr&^1~#&j z!D_Viu;=t9dEb}kBfx)Rw+eMcJw4Vl8+u5XuUX)N1unQ$I?XF$>vM({#Npi3A74L% z49I^Ny@+~x`?>%C9M3iOCqeFJ008Ug(bP{5cD2sEhMubLX%Z6V>&=p0-EpbVHFIW* z4ggr-0syi?AP(o|JSyQWrY5>(_`qwD<`v;mfdwuS=4KLZ*U+=)p!fv7f#TG` zAxLl%!EgG`&*5<32cu%worY0{L9A7~=}6b}76Isk~1IN~P)K3@?4 z&zpALY4A7Z!>t0&I7qECf*j`WHIYAjW_h^ivJu4lvb8y9VL`DD`rG0ZKvcZ$L@8 zo)6*!Fng}&gE0q~LGCMnsiR8`P)pL0I_sTkS+y)n+TA3G z^b1TCBWb>U_39O>z`c9-NHv3g0ssI20RR6Qv<{=1z}>rd5k7qR@+HIn|Nr3_xA#w+ zI00e&|No!i`0?Wm|NsAQc=_@rfvCiY{m-92|0g|=8&I^|y?d946a)YO0RR8OP(d(! zhO~kPTneZZ4#%{!0ZV!!4(CQ-Rz19H}VJh!|<5XMc$4u1U@K0 zwY#A9B}^1!6Td7#cLl`Q#63TB39#F}ZBvOzb5uEcy>&C!AJ|xXS@ViiA{8ymBIbF9 zQtH$NK6Hs2&N!whpDTxo00=21FMZW|V`yF1oQcWeCKvcI zpQZ^?N<5WRz4y6Rb_s+K5MxA>jpcC8z3+QJ5HMcsn!%BUAPk0svo%rM*tQBlIb7<#KtTm3L#cl>-25| z#KGA|jA3w#pNJ=x2YBzV{Y39Qiv7fOU9s0gET4ghu#hv}ku$!9oLLMAAwae9wgckE z3ul>m30Rhe)5d$YLM<~e)>?4Rak75O*0PVQxUIDS@YQ^ zI^A+kXDYFriO3v^R}G#z)V)I9`}EG2GbrVp+H}ToG?G;?b6VRWkW8( z@qC}0qPt$A7l1=#7Q~gwq%>3VgJz7x0wl1bQ_!jQoB-p>qEd5pw_Oa?YROdfCB6R_~rmn z(xQ%3Rb8h{$#+bdmz`yc~JphtY z&B+R`hO7iXWYXeLUl3NHw?{QYjNV#jDMMRV_mb6qaT2 zA;eejEJ&%QtOQR!-ejJ-`W_A(XVwH7$1$Z32=GYa8DkIt)8fC41#cv%*{1*5Ni7DRUZ^3uJT9m^d_ z)>>?4$I~=Hct3fAqoL5?kg{XhA@TbR7OI2A=fEpFKA+FXyGg=pU*jxT?HB;?dcC5x z7WvxHS_}94-2;HX-ELUj3yRpWDxm@>z@GpRc1+2?Xc|AM`QP=SqoTN>sSXhL5LN6r zqjQe!m>XJZ?gfz@Qx`Lu=b0{-OP>m;5-NZKd>p{{04VWNsAqlf!2kdN07*qoM6N<$ Eg00q~%m4rY delta 514 zcmV+d0{#8w4~+yviBL{Q4GJ0x0000DNk~Le0000G0000G2nGNE03Y-JVE_OC1ZP1_ zK>z@;j|==^1poj524YJ`L;(K){{a7>y{D6rAs2rD2XskIMF-sj1QHT3>p6e70004s zNklY5Pcg0NsNXRx14Z<5INGErA5vr2uiTh!a8Ct{sRmDgq@A;Rf?_s zhSXlST#CbDxe)RphJY{@a_i+T1mjf8?wfsYX5Ij6LI^=pO2U6a2tggkfK@F*2tgYs zH_d-Cx~_$;YoX&9OP>fKNGU}CkdGzWw#|~CG>noy&pyAvIfv(Y)NZ$7nkLJz_WONG ztFWp?t>UmzU0F&V0DRvk$8ngHl18Hu>h(Hivl;fSZ4KPn%7b&BALC5KPAK=rKIb#76X7d zxfhJlFiJ2h1pq)4MG!(z+{j##xqEWJ%t}Fnd%+lwPp@?M@Iq?3fLSTv^8A=3dy$Ko zFHVn`y<0{v7(-1LI@xty7KS0--aqts)4kBH>$;Y9UfRM*b2ZKK??^q*Tm7)c-bprh z=4!Q?c3s0Lt(eM({g000SaNLh0L01FcU01FcV0GgZ_0003wX+uL$P-t&- zZ*ypGa3D!TLm+T+Z)Rz1WdHzp+O3hXO2beThQAv{#i3RR;^1&6QBZ8v!Hh{;iXd34 zLz1mYLzU7b+}x^t2uHULF77^olcV6E_yoRz;?%(*NN^ItZ-4sE&*5<32cu%worY0{ zL9A7~=}6b}76Isk~1IN~P)K3@?4&zpALY4A7Z!>t0&I7qECf*j z`WHIYAjW_h^ivJu4lvb8y9VL`DD`rG0ZKvcZ$L@8o)6*!Fng}&gE0q~LGCMnsiR8` zP)pL0I_sTkS%0-GOWNHeh~)7o)6pQ4`*E14G*KNLb%Fdp02cGbcGHn-Rm<92=bv#s zU*`6HgaE|SW04hvLv{Y$g|YMdT-+Eh!{IGVPl{~!3T`%F;kw9Ht5Dv8`|%gTvrqmU z39}~v001CkNK#Dz0D2_=0Dyx40Qvs_0D$NK08$750e=-(0026d000+n*IFNt000Cs zNklL{KmE!4KD!aRE63)LQ%uJ!u-KwZO00030|6;^x z#;seo{!g7cm63&kfq|hm)9*j0tOZ0yK|$fai>(O*%nSek00960!Y~8b8OxV1M{yV2 z>IH^oZf{QYMTy{q@G7^5Vu4c>bIYOS=^wqO0^oPPl*rK~R`@p?XVzg=aFS!PcF&N*Gq z0@&u9E3vg!`@SD~cmn_c|No4VJ!->15JumIfFNCtpf;5ZDnt&Ed$^HKkOQdPV@M}S zxlNiueHc)oLd{m6E6Yx7$9^!y%r}29!!6-I8-_uW)V8gjcz|&n1<1@~W?I*kuIm88 zy?;x{%r+;bgu63M6F`VDUVh7wvMkm2JylhaQevKG+?{1v0Kzfv>IR?tk1hE1{lnYt z{ag+)Ms7B!>sqfbrvU)J-t!MZ5>3;{-6@KKoby(Fanmb21GswtlyeS`6rFS6tPF7+ z1i~o%Xb=?$RI!jIW6KFPS%t6fVYophhJOo;uh|oR8`-tPXtr{UjZ~LIZVZWp8$GX!~LVpO9 zWjP+C!+uBK=?%By_wd*80?+gQ1*vE7EKc$}PUoxkii?hc<2Ym(20k|{B>5cxwA1Httx73Ornvw>C=1^sQHIrGD7 z*|R1LMPc}f6jG=ZilC)K;UWm#{C^`|-TI&E=qO}z?@!1Y?kWy~gUFq{gBUa9cJTyL zQ=1RcJBGk>-h1wO-_zI+YFYt+HTdh`Cc7M>Q1x0WH zYpt=?%51XPYzn8O)8OhEjYc`J)|wy)NRk9&4Ez0_G);en*SdkP&ky$i9A4h96a#Fx zTL7%Jbh}-4yWLHHxT^xr_NAqTWk48)xqpVkAxV;Cx$zggQ~{UZ41QkP-d+z98I?V_ zQ~_72Gw`G2RZd-1_{{>8Qedvv>j7{&op^q_F9er~tWsH^lyZZ?fHX~IdEj_F<|3|% z(whY+rCh(?7t`> z88Y|K-X{P60nJH7K~z}7?U%7j0$~`&pD$V(yqhY)?VyBc=vHxQ5p8mmR0xE2q5cl{ zpvj6xw;-e(4v89EqBsp_9U5G837)1;yz|t%^E@GX;aiUH_`T2j-uryt36fZ6Y+%jt zpTK4q5LF0D*f%Lcf2)8h1XUq8U>^YR6IKf*!9CM}Dt3|3HRsJF16v9}1>n#$NcK52 z4IafJOzRpIfKKmh1gW@Z8W^yTt^GZW+8spWNkn(H=f51JV!4K~J^geOEw& z0pRNP0SR40v(>fiaie}|CzQ$oK#N6CZy27`1Ay>)A(1VpH;gHhX|}rKYPeDFIRRA& zmU1av-#<=ydHZAw+`>IMp#rd+OHsO?eff1$*YKxmB@m$J1Xc-On82#xa}#jtdC>5g z34{eFX&pm(d9;V8vGRK@mq)BTWWs2jau*VxrUO~C#QgaP+; d82!0_!(T$BZyxAX>YM-o002ovPDHLkV1lGj@ag~n diff --git a/src/main/resources/assets/ee3/textures/items/ocarina.png b/src/main/resources/assets/ee3/textures/items/ocarina.png index c6b2e93612aed1ab9d772346b5314297bfc9e3d3..a80fa3ac220cc2bbc2b6ac0e820d92bee477e01c 100644 GIT binary patch literal 2065 zcmV+s2=4cZP)KLZ*U+=)p!fv7f#TG` zAxLl%!EgG`&*5<32cu%worY0{L9A7~=}6b}76Isk~1IN~P)K3@?4 z&zpALY4A7Z!>t0&I7qECf*j`WHIYAjW_h^ivJu4lvb8y9VL`DD`rG0ZKvcZ$L@8 zo)6*!Fng}&gE0q~LGCMnsiR8`P)pL0I_sTkS+y)n+TA3Gqm@j&1b+|Ns9pFhK?X z%WK#$FfcGMF#iAlpFztq=s%aB9K-hyPZ$6I00960VnjEC(a<@Cfq{X6;osjs3>Ws# zXJGmD{o{W@2^9uzesKl{1_nk(brbLZjEu|-jEqbS96Uk{00000|Np`;10Aq1FfcG^ zn*0A3lu%>%|L-q@xV#?2hA9b*Cj9WkI(-zFfcHD|MZfPfq{Vm00030|03uHCI$ik?r|6plhyjaV}2nciV1A& z-2WLF8UKsQX#Rik;1VN>6+gbb`EP7$#=y+N%D}+Dz#yq;_}|be8SXHq|Ns6mY+qEv z@b=aYhBr@dGN`M_GO)69FxZFG{)fBa*SGio|NZ^T@Souy10w?ygA~svhUeb}8UFtM z0SPEJEFDvb3^M)zD_p0%4)RW^5zwVB?MQlePh z1BBcMtm~6?4AupFQIS$an}+e@9rKq&RoU1%(vGp9fCwwSDWh1C_bOf=&Z+B~<*mc- zdujcEP!5?q-L%g&_a&dRh%z@MAdqDS({+es#E&uY?OFb<@r$*x$!!{n!sxm0`Nbra zlM+Nq3RQ$al+p|kf2x2HGlT>a1}uafunsoBfB|fv1AbIR3_x^%N`-*pfP@2096NSw zKSqTXN-Gq;1$?^q>KxsP3ltM(;(|Yf+>JtO3;7!d`%PeHT5Uv>{pS@%VPLgW!k9AF z7P6;ITR7K`oIvi*CiT!#eeyL$M^3Ne*a7w z_nAF;+5TK%_4z}|^D#<0M7HOkgE0tPPw!g9M340&qzw7*i{c>rIB8Z~!ce}c) zdwM2155+(bF|%=P2!abApgULUUl7TU5p?a}2!asMgqVPWE;Je!nOBH0!O57%yn1H3 zTy&IcMlBiT|Yy+QN#5!bh~ZR=koZeEZR#UVo_OM7^=HR0?^#uH0iVB zH0w1S?-aK7utczR0_`TTN5=udaTD0K3u2*cm(tQ~{P=O`kH6vNTMuaNZW_l;0YVst zh=65llx3qFjhD<|+ZtOZFkugWB!^fEWjl0(7GW5&wr?KC>4P}hSXPu##j>cC7Xi5Y z@DZ~!(||$QE&z#C7UgI}1g(>3e)>b~Oi0kK6Pg~KR)d}D+E7q201<_k9wXQL zOrcne`k>V!JANGzi|Wb?0PascVgBWFl;a{IIIho?tJiqFI3G(d2;HDbuN$D0#@;X4 zM)@7By>C)ndi84w8r$neDF*}i*$Yum)K+nmS+b@;u~drAnoV-~n>emdeRYl?2mtm& z-)#Vt?eO*EGXU;QJ!WBU21}_p+f~1Oip}6aIBaaMo2bSi^rK-IVvHeq=3)#Aq9E#L z&XaDxr(CJvjZOmKxJk06z)GPI1Iy)a5cWEF{%IW72jKf=f#o;Tasa^FnWr%|mnQER z0Oh#!LuwxwF+4#y{O9?(h{eWM1q8G=5|5?r`qtrgIH-tyTl{&-iyAS9F%dHu17cyq vUgWzXSW07s0Xx;opsvId;(s?BTt5Z?{?5O|b5@^q00000NkvXXu0mjfW$@OB delta 352 zcmbOz@P^5`Gr-TCmrII^fq{Y7)59eQNDF{42OE%-|NK7@NU@|l`Z_W&Z0zU$lgJ9> zvn6@EyDGF_0i61uaKH;!N@dcZ~p6Xw-8(rgi4hH8bN9rZ~`20bX83a~0F$Jzma4Fk2 z|E?>WSf!!J;X3<@0~`KMv^V>z!Sug5X}&Rs=jKCu8_%Zhm%EdG~7X}6q?$a4NtuHpH1HH}Q>FVdQ&MBb@0I`>aLI3~& diff --git a/src/main/resources/assets/ee3/textures/items/shardMinium.png b/src/main/resources/assets/ee3/textures/items/shardMinium.png index da7418ea5999dabf9127cbc98c863e77a8a29b0e..33150990ef4a399da5395dd11b8d938725ebc910 100644 GIT binary patch delta 1859 zcmV-J2fX;M3d#eM({g000SaNLh0L01FcU01FcV0GgZ_0003wX+uL$P-t&- zZ*ypGa3D!TLm+T+Z)Rz1WdHzp+O3hXO2beThQAv{#i3RR;^1&6QBZ8v!Hh{;iXd34 zLz1mYLzU7b+}x^t2uHULF77^olcV6E_yoRz;?%(*NN^ItZ-4sE&*5<32cu%worY0{ zL9A7~=}6b}76Isk~1IN~P)K3@?4&zpALY4A7Z!>t0&I7qECf*j z`WHIYAjW_h^ivJu4lvb8y9VL`DD`rG0ZKvcZ$L@8o)6*!Fng}&gE0q~LGCMnsiR8` zP)pL0I_sTkS%0-GOWNHeh~)7o)6pQ4`*E14G*KNLb%Fdp02cGbcGHn-Rm<92=bv#s zU*`6HgaE|SW04hvLv{Y$g|YMdT-+Eh!{IGVPl{~!3T`%F;kw9Ht5Dv8`|%gTvrqmU z39}~v001CkNK#Dz0D2_=0Dyx40Qvs_0D$NK08$750e=-(0026d000+n*IFNt000Gx zNklRo_EfYF*tN^Exp zfSNPgoq3L300030|6)WpgNcEGf#F6-$p4KA3IE}S?z?e=;rh344E`_`FMt1Ln0)UZ zBLf2i1AhPj0RR7D`2YVu3VuFo*8fIz_5a(<%ozUv|BrAN%sD(PEDYSt%nYkuy!h`4 zb0^H=&wu|ieEs{E;nlBS44?k~Wk9jQUrGvYEHVZF00960!te(=U_$0ptE>Ni(%$}m zySX`B3~oY+ipqayVPS@IpFT10GBY#eUAe*tH-BNfxj6$1BO}9)zkeA7Sy&hz|M#hJ)|lGyM4XkAZ=K;Xho#me;TUfBEx=;n<583}S3-aO>e={rdNB zhTZSqGyMGbk747}r;HdeoG2y5$iTqB;Cb>ShBpBK00960q>-_T!ax*7Pr}GB2r4N} zX@9gzpVoFeKSeA5#KzLj-nF&0vj|p!6#`nUAR=RoM#o}zWd);!w|($9=iZk+yo$&> zv}-lf?R3~qCIAe>5Pd$=bR6qH$z9QZ1#d@ZEg#rL4W0-5rc(t+~Dt~nA_1nj)lq}PfZI&VJAK2fGtcMDp>$UNe z!c&S?qd~Oav&%9{LJ%bhQIgPKEUa9Gmg^b-zgQ&Hn)GtHq2}f78LzCA!Ab&A6ox+s zb;N~`%Tl30q{ZM1w1~EWK0#osXwy3A348*Vh07McKuAG5LBc>VT8PXT4%C2-<9|3h z&a}wH%2A{4_HzGw?z!jt{v06i$K_wPd67!Fr@0)L#Ug#%W5rZBuVtE zRklMRwDEZTCzJ~Xx027(lx3Q-%w9GNz@4VKD+A7xNq4JUW-!&#gRY~sTEA=JRjtOz zaTrb}97qzkl?r3mW#~9ucRKFUCVwVGk&R#wITE3xC?x82o(zL%Ab{WJn=#>8!C@xz zL1eqlrYQ0{8X*b-#$-azw&~fn_czXiv=fh`t18cf0l>^8dI( zmNhTI^#(~XO&$${xF`}91k`ECpErMp>r22*qrrW*%WgPK&$g-R`ocpiaeoG|9EY<+ z!ner8D_J;+#XL3s?>N5`TlPF{Ls1xhY!Z`pNf%gxKt))5ED=M+!q|~Nz}Btmi25O< z_BV85NdH1-M1_Qk)Gif5L{%wDQRAS5kCX(3IEh@F*rx+_DZIVmq!R%o7`VdwMIwzgWa0DwSC zzwWGn7ZVfmCY8d@<*2N$1CT2eTJdeuWGEWN@jQ1|`R#Np+o;gdk=sep*0@N9OLy^RgRUq=+BZMw^TO9JSf`tQS<)`p;-XTT95S13@h zEYkHl01sm^5`%+yBK)*0hBS?G7v8mQ)yYY3LKH?@;8=sz6g=UpUsN|<_6?&Cb91~q xJd{qDyeTSgZEk~vPe(?SaPqrc{~gDF1^~O|u~c_<9-IIG002ovPDHLkV1m{sd>8-# literal 1326 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=hEVuzdA&aSVyzJbG|re@wXKv4{76 z&z)I){>{4$QK!pwj!!e&urng;lA_cifB$nv@EQ}Tw^n6AKPrz%tKBmw?5%!qQ)&9HIY->GFW!7nBqY7oHGT1E z&p!;0q}IBw7jW&r{8Ys(s{5SV^vO3ebgiUg{T{IkSifsb?>6DeiT>g6u`g7oHsK-j zQR}dcUm9EaMSu!SJ7ht6+l`nGH8ey#=CM!@3$B@VzEfhq)Z5@c#XtJ|i~XlhuHa2_ z&%UUAWMPk?lES+iGu)E96jlg+&z(Q(jAZ~b|1V2!d7yjNJH7!~+snlGaa*WQii`k9 zlT=}jsk=mIPtDx80_%65Z$JN^`j8oHZT1$iy@3h}UGZ(T-&Ee+ZprM~^YsPuy!By! zQmmf-%yRv8`}m&!FBG}uHGm%07Py|FTeaBXh(tl1;5SRTt9L#+h$`pX{%Ux>TJ-44 zo05zB<%1#0LGEyfS-kZ{FOzzh@x(%h2Nfa3$C-~>7Mwb;cJh3~**=xm)Z==X|5ttD zl#g8#@x$TbQo&R;j{@>r0M~k~f!JgGu zEW5*eUTmd+xk$xrEj1%PjyIkr3zN56K<}deO*~tEPPAh+j zW#@DO>!|KH#XOA->dDIlg(cZpnjYk>xLI7-5*T8*$*c44CEOb^J3^TR)(`)+vCs-U(4SH6!zg%Q41AV6^$J*zq!X*~Ue6AF}<{LjY!)0U=J&CydYWZei1MA1jn+&Ep0bR(lLZPwCne_^SyI4uT@XXt@Vnjx^O=7hr{&A zJDP4>jQYY=sG*$HquN!T>m+ccV-csQd99D{Gp*+m%h&u=`Yuu*_rHJ9Y0n%%V4$6I zYqgjnXn0KM{jHWH|3^V!hj^RLd?fRDis@1Doy&imuJQzBfNdS%l(hgFSkA0jN0zFE zyxDo<+uS)vFBJEE_Kh?C&b{wUHpr73T|x0K`Y7O7NaIX5k=|oDwKLZ*U+=)p!fv7f#TG` zAxLl%!EgG`&*5<32cu%worY0{L9A7~=}6b}76Isk~1IN~P)K3@?4 z&zpALY4A7Z!>t0&I7qECf*j`WHIYAjW_h^ivJu4lvb8y9VL`DD`rG0ZKvcZ$L@8 zo)6*!Fng}&gE0q~LGCMnsiR8`P)pL0I_sTkS+y)n+TA3G#;pkP(Y1HktSE)*GU;*x_GFtmCjes%+orW9fLbfEO)14WXCx6q;G9EBiQc;&fR~Li0PP* z-rjqhbA%93Rj%ujob%hDs+bvOMy(YQVcWJF5Cv$hJ-}KEfa5qm4Py+<4CfpoLap`L zRDgZoWzI?OoiPTb6wdRMzcyb000960tdTJagfI|Af5sIPECdT%&*V)!i$}5c1UB|! zn?evQB#R7-JF{V^CEUL(-cpDwZ0c$Osb7a?>DT(YL545u%}B9gLd1#?#)?KN{&rli*R>CV&gXMBO#_k;`Mo61b4;gG-0yc7 zV^G&MthLzh_p;q?UtchpOh6J@mO(^P6QvZCQpochbzOrbuGcHyB%Dqsgb?7pPw~?C zJ#M!fL0toioVRXcjDazR(P)G?j49|p0!vk zJ~!cZyTx+3q{(Cg^O*1m+qOYO5JJFl94Mv07(FA22qE4oP}lX}i`GBI zlu{^)qAla~dbPe}!_(90VL7wL=fv!pPHV5=*3xa?g$H8zo z{1~fR;w;P1G!4=;MUo`ex1zX<2mqYVX8^!pFnBw?ZnvBDe;R%Ve+B?f`}YT&SMxdm O0000z@;j|==^1poj524YJ`L;(K){{a7>y{D6rAs2rD2XskIMF-sj1QHJ#&+giN0003E zNkl-8Fd zuIqm&%aX(4!0mPe&@*HP$T_pwY*?*Uc<+fZ5< diff --git a/src/main/resources/assets/ee3/textures/items/stoneMinium.png b/src/main/resources/assets/ee3/textures/items/stoneMinium.png index 3ef76802fe8f784ee6e14e8021be97bf45d81a1f..43686777a2fc1f79fd6d48fe15e148f5093bcba2 100644 GIT binary patch literal 1959 zcmV;Y2Uz%tP)KLZ*U+=)p!fv7f#TG` zAxLl%!EgG`&*5<32cu%worY0{L9A7~=}6b}76Isk~1IN~P)K3@?4 z&zpALY4A7Z!>t0&I7qECf*j`WHIYAjW_h^ivJu4lvb8y9VL`DD`rG0ZKvcZ$L@8 zo)6*!Fng}&gE0q~LGCMnsiR8`P)pL0I_sTkS+y)n+TA3GCB#@uR1UAICc@`ECEVLXLhHqwm8tkVi^IXfK(65AZmgzoC=?^#rNsxmDLHUz4+-TvuCSX9{=Lu3s1apX478{}me z%p(Lk5n2&y@41en`K#s&00960tdTKJ!$1&4-;CF`lmyF>5L79A0)*1hafdYAiZh_J zso)Hp!4j;56uFBMk|K_bcb5XE2q8+tl%vttoA=KioE!6dQBEeoRux~)K^LC&`&EW&b1squneM(6C5Vf-I=cP(n=&55cXnUtNW*`>i?>4 zEKqR6Q}zX3pPiYRLGHwp`CR@fg%_u%wyJAv%Y~1QkEy+<7>$@+Tu5&U^OF<%c7077 z0zO7el@tPBuCBOqc*yGVlIOFT?G-qmPVHxmtWzSI5zX)^@nAg0rNpbMBBsP-IOKdf z-4%FxbcCtmL~wx1!4Iny)pAKO7;twu#8mmQ+1O4IKh`z(%92uqK`vZUC3;Wk9FNCi zd>-_z$Zi)j^DuJmPf*Q}ye3{Q78K60F(Y-|ewa$YfLnR;I}w~2L6t6FZdLdD;ByE( zJUF0H<$hWI1yN^40&a`2>^k1J?Ji8e_YT1KtuJm1)v7E)=(qCQronnpu2bSu+w!Jq zq}R%o_fmP!v&qB?K=NaNuQBp&y_Wxv#$W7~%}x|S6otR4uKpW9WFV4=i3t-ESh?ag z*s}HwcnSBu0!!m#=w2fU3nS=&ME)`iFg-opQ&ram%{U+om|3{-t}C}r-E-=kJ2rxG zOY@J*JoMnF)m7s12vazAYrr`71nl$(J=;is~YYx{$7!qiW zR*EPHuro8fn4RV4;UQjYYC(W9=1wym3E=h8l01uJRCRHpuJ;JFCeWIhG-Y{ij)QI& z=RMzx0x1gWQ&afL)jsU+^E3?AtIf@a0a$M|WMz69aSkVfzC|pd)(9{eMWn{i7a=i* z{Z5CdRzq9Mbgc#=wDX+zCno^v&Gzx4XN%Yc|zL5gwK$bz?4Ht$)A!=A2X|#48}K-^Un3W-T9& zj(9RLLA%!@2?D;IozXr&zh>ii0*JLHtCESzx=QFsU^;U}2DS!;9P1#Q@GZtO&UXl;!0c~XPOZfQrT6R%<=99g+RQSwm?Y8{VKxj0Kj7TC z(G*mAh=PF9IgZPc(~9>mwC%lTb#Uzm=2zZ_(_xiQ~-g}O%rSP7EvZUGTsj;kh tr)sd3WdJP1v5e~YqbSt>H2j zvn6@EyDg4(ZGBck2H*4Viz*@r+RL}7ERv7!4 zhIS442HOp%>r5^*8$a;<M5-t$e>+0r?+an-Gl7EQRy{3l!Ja^gI#*DgPwDO?S7 i_`>yjam{}V#)M;Oma1P4n*u$`;K}al=d#Wzp$PzP<%1#s