diff --git a/gradle.properties b/gradle.properties index 2e6e07c..a61743f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ modName = CinderLoE -modVersion = 1.4.1 +modVersion = 1.5.0 modId = cinder_loe modGroup = com.zivilon.cinder_loe diff --git a/src/main/java/com/zivilon/cinder_loe/CinderLoE.java b/src/main/java/com/zivilon/cinder_loe/CinderLoE.java index 16d9bd8..2c7b82d 100644 --- a/src/main/java/com/zivilon/cinder_loe/CinderLoE.java +++ b/src/main/java/com/zivilon/cinder_loe/CinderLoE.java @@ -94,11 +94,11 @@ import static lotr.common.LOTRMod.horseArmorIron; @Mod( modid = "cinder_loe", - version = "1.4.0", + version = "1.5.0", name = "CinderLoE", dependencies = "required-after:spongemixins@[1.1.0,);required-after:lotr", acceptedMinecraftVersions = "[1.7.10]", - acceptableRemoteVersions = "[1.4.0]") + acceptableRemoteVersions = "[1.5.0]") public class CinderLoE { @Instance("cinder_loe") diff --git a/src/main/java/com/zivilon/cinder_loe/carriage/gui/CarriageCoinUtil.java b/src/main/java/com/zivilon/cinder_loe/carriage/gui/CarriageCoinUtil.java new file mode 100644 index 0000000..9385022 --- /dev/null +++ b/src/main/java/com/zivilon/cinder_loe/carriage/gui/CarriageCoinUtil.java @@ -0,0 +1,47 @@ +package com.zivilon.cinder_loe.carriage.gui; + +import lotr.common.LOTRMod; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + +public class CarriageCoinUtil { + public static boolean removeCoinsAndGiveChange(EntityPlayer player, int cost) { + int total = 0; + for (ItemStack stack : player.inventory.mainInventory) { + if (stack != null && stack.getItem() == LOTRMod.silverCoin) { + total += getCoinValue(stack) * stack.stackSize; + } + } + if (total < cost) { + return false; + } + // clear all silver coins + for (int i = 0; i < player.inventory.mainInventory.length; i++) { + ItemStack stack = player.inventory.mainInventory[i]; + if (stack != null && stack.getItem() == LOTRMod.silverCoin) { + player.inventory.setInventorySlotContents(i, null); + } + } + int change = total - cost; + // give change: 100$,10$,1$ in correct metadata order + int[] metas = {2, 1, 0}; + for (int meta : metas) { + int value = meta == 2 ? 100 : meta == 1 ? 10 : 1; + int count = change / value; + change %= value; + while (count > 0) { + int size = Math.min(count, LOTRMod.silverCoin.getItemStackLimit()); + ItemStack out = new ItemStack(LOTRMod.silverCoin, size, meta); + player.inventory.addItemStackToInventory(out); + count -= size; + } + } + player.inventory.markDirty(); + return true; + } + + private static int getCoinValue(ItemStack stack) { + int meta = stack.getItemDamage(); + return meta == 2 ? 100 : meta == 1 ? 10 : 1; + } +} diff --git a/src/main/java/com/zivilon/cinder_loe/carriage/gui/GuiCarriageFade.java b/src/main/java/com/zivilon/cinder_loe/carriage/gui/GuiCarriageFade.java index 10947d5..7b61c39 100644 --- a/src/main/java/com/zivilon/cinder_loe/carriage/gui/GuiCarriageFade.java +++ b/src/main/java/com/zivilon/cinder_loe/carriage/gui/GuiCarriageFade.java @@ -1,8 +1,9 @@ package com.zivilon.cinder_loe.carriage.gui; +import lotr.client.gui.LOTRGuiScreenBase; import net.minecraft.client.gui.GuiScreen; -public class GuiCarriageFade extends GuiScreen { +public class GuiCarriageFade extends LOTRGuiScreenBase { private int ticksPassed = 0; private final int totalTicks = 60; diff --git a/src/main/java/com/zivilon/cinder_loe/carriage/gui/GuiCarriageMenu.java b/src/main/java/com/zivilon/cinder_loe/carriage/gui/GuiCarriageMenu.java index a49d25f..0bfe21d 100644 --- a/src/main/java/com/zivilon/cinder_loe/carriage/gui/GuiCarriageMenu.java +++ b/src/main/java/com/zivilon/cinder_loe/carriage/gui/GuiCarriageMenu.java @@ -62,19 +62,29 @@ public class GuiCarriageMenu extends LOTRGuiScreenBase { @Override public void drawScreen(int mouseX, int mouseY, float partialTicks) { drawDefaultBackground(); - drawCenteredString("Choose your destination", width / 2, height / 2 - (destinations.size() * 12) - 20, 0xFFFFFF); + drawCenteredString( + "Choose your destination", + width / 2, + height / 2 - (destinations.size() * 12) - 20, + 0xFFFFFF + ); super.drawScreen(mouseX, mouseY, partialTicks); - // Draw coin icons next to cost text for (int i = 0; i < buttonList.size(); i++) { GuiButton button = (GuiButton) buttonList.get(i); int iconX = button.xPosition + button.width - 18; int iconY = button.yPosition + 2; RenderHelper.enableGUIStandardItemLighting(); - itemRenderer.renderItemIntoGUI(fontRendererObj, mc.getTextureManager(), new ItemStack(LOTRMod.silverCoin), iconX, iconY); - + itemRenderer.renderItemIntoGUI( + fontRendererObj, + mc.getTextureManager(), + new ItemStack(LOTRMod.silverCoin), + iconX, + iconY + ); RenderHelper.disableStandardItemLighting(); } } + } diff --git a/src/main/java/com/zivilon/cinder_loe/command/CommandOpenCarriageMenu.java b/src/main/java/com/zivilon/cinder_loe/command/CommandOpenCarriageMenu.java index e7d0cb4..81bf2a8 100644 --- a/src/main/java/com/zivilon/cinder_loe/command/CommandOpenCarriageMenu.java +++ b/src/main/java/com/zivilon/cinder_loe/command/CommandOpenCarriageMenu.java @@ -42,7 +42,7 @@ public class CommandOpenCarriageMenu extends CommandBase { for (CarriageDestination dest : nearest) { double dist = Math.sqrt(Math.pow(dest.x - player.posX, 2) + Math.pow(dest.z - player.posZ, 2)); - int cost = Math.max(1, (int)(dist / 10)); + int cost = Math.max(1, (int)(dist / 50)); names.add(dest.name); costs.add(cost); } diff --git a/src/main/java/com/zivilon/cinder_loe/coremod/LOTRDimensionAdder.java b/src/main/java/com/zivilon/cinder_loe/coremod/LOTRDimensionAdder.java index 9795aa5..4f68562 100644 --- a/src/main/java/com/zivilon/cinder_loe/coremod/LOTRDimensionAdder.java +++ b/src/main/java/com/zivilon/cinder_loe/coremod/LOTRDimensionAdder.java @@ -1,6 +1,6 @@ package com.zivilon.cinder_loe.coremod; -import com.zivilon.cinder_loe.world.CinderWorldProviderIsland; + import net.minecraft.launchwrapper.IClassTransformer; import org.objectweb.asm.ClassReader; diff --git a/src/main/java/com/zivilon/cinder_loe/mixins/MixinLOTREntityNPC.java b/src/main/java/com/zivilon/cinder_loe/mixins/MixinLOTREntityNPC.java index 4736405..39a4592 100644 --- a/src/main/java/com/zivilon/cinder_loe/mixins/MixinLOTREntityNPC.java +++ b/src/main/java/com/zivilon/cinder_loe/mixins/MixinLOTREntityNPC.java @@ -68,6 +68,7 @@ public abstract class MixinLOTREntityNPC extends EntityCreature implements ILoot } else { last_pickpocket = (int)(System.currentTimeMillis() / 1000L); ((LOTREntityNPC)(Object)this).setRevengeTarget(entityplayer); + entityplayer.playSound("lotr:block.treasure.step", 1.0F, 1.0F); if ((LOTREntityNPC)(Object)this instanceof LOTREntityOlogHai) { LOTRLevelData.getData(entityplayer).addAchievement(CinderAchievement.pickOlog); } diff --git a/src/main/java/com/zivilon/cinder_loe/network/PacketCarriageFTB.java b/src/main/java/com/zivilon/cinder_loe/network/PacketCarriageFTB.java index d637ffe..65ee010 100644 --- a/src/main/java/com/zivilon/cinder_loe/network/PacketCarriageFTB.java +++ b/src/main/java/com/zivilon/cinder_loe/network/PacketCarriageFTB.java @@ -5,25 +5,22 @@ 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 cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; public class PacketCarriageFTB implements IMessage { - private String destinationName; - public PacketCarriageFTB() {} - public PacketCarriageFTB(String destinationName) { - this.destinationName = destinationName; - } @Override public void toBytes(ByteBuf buf) { - ByteBufUtils.writeUTF8String(buf, destinationName); + // No data to write } @Override public void fromBytes(ByteBuf buf) { - destinationName = ByteBufUtils.readUTF8String(buf); + // No data to read } public static class Handler implements IMessageHandler { diff --git a/src/main/java/com/zivilon/cinder_loe/network/PacketCarriageSelect.java b/src/main/java/com/zivilon/cinder_loe/network/PacketCarriageSelect.java index 784f210..baa9ead 100644 --- a/src/main/java/com/zivilon/cinder_loe/network/PacketCarriageSelect.java +++ b/src/main/java/com/zivilon/cinder_loe/network/PacketCarriageSelect.java @@ -3,6 +3,7 @@ package com.zivilon.cinder_loe.network; import com.zivilon.cinder_loe.carriage.CarriageDestination; import com.zivilon.cinder_loe.carriage.CarriageDestinationsData; import com.zivilon.cinder_loe.carriage.CarriageUtils; +import com.zivilon.cinder_loe.carriage.gui.CarriageCoinUtil; import cpw.mods.fml.common.network.ByteBufUtils; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; @@ -45,7 +46,7 @@ public class PacketCarriageSelect implements IMessage { if (dest != null) { int cost = CarriageUtils.calculateCost(player.posX, player.posZ, dest); - if (CarriageUtils.removeCoins(player, cost)) { + if (CarriageCoinUtil.removeCoinsAndGiveChange(player, cost)) { if (player.dimension != dest.dimension) { MinecraftServer.getServer().getConfigurationManager().transferPlayerToDimension(player, dest.dimension); } @@ -53,7 +54,8 @@ public class PacketCarriageSelect implements IMessage { world.playSoundEffect(dest.x, dest.y, dest.z, "lotr:event.trade", 1.0F, 1.0F); // Send fade packet to client - //LOTRPacketHandler.networkWrapper.sendTo(new PacketCarriageFTB(), player); + //LOTRPacketHandler.networkWrapper.sendTo(new PacketCarriageFTB(), (EntityPlayerMP) player); + String displayName = dest.name.replace("\"", ""); player.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "You have arrived at " + displayName + "...")); } else { diff --git a/src/main/java/com/zivilon/cinder_loe/network/PacketRegistration.java b/src/main/java/com/zivilon/cinder_loe/network/PacketRegistration.java index d1dd8f4..05ba882 100644 --- a/src/main/java/com/zivilon/cinder_loe/network/PacketRegistration.java +++ b/src/main/java/com/zivilon/cinder_loe/network/PacketRegistration.java @@ -15,5 +15,8 @@ public class PacketRegistration { // PacketCarriageFTB.Handler.class, PacketCarriageFTB.class, id++, Side.CLIENT // ); //} + if (FMLCommonHandler.instance().getSide().isClient()) { + LOTRPacketHandler.networkWrapper.registerMessage(PacketCarriageFTB.Handler.class, PacketCarriageFTB.class, id++, Side.CLIENT); + } } } diff --git a/src/main/java/com/zivilon/cinder_loe/world/CinderWorldProviderIsland.java b/src/main/java/com/zivilon/cinder_loe/world/CinderWorldProviderIsland.java deleted file mode 100644 index acc24e8..0000000 --- a/src/main/java/com/zivilon/cinder_loe/world/CinderWorldProviderIsland.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.zivilon.cinder_loe.world; - -import lotr.common.LOTRDimension; -import lotr.common.LOTRLevelData; -import lotr.common.world.LOTRChunkProvider; -import lotr.common.world.LOTRWorldProvider; -import net.minecraft.util.ChunkCoordinates; -import net.minecraft.world.chunk.IChunkProvider; - -public class CinderWorldProviderIsland extends LOTRWorldProvider { - public static LOTRDimension cached_enum; - - static { - for (LOTRDimension dimension : LOTRDimension.values()) { - if (dimension.name().equals("ISLAND")) cached_enum = dimension; - } - } - - public IChunkProvider createChunkGenerator() { - return new LOTRChunkProvider(this.worldObj, this.worldObj.getSeed()); - } - - @Override - public String getDimensionName() { - return ""; - } - - public ChunkCoordinates getSpawnPoint() { - return new ChunkCoordinates(LOTRLevelData.middleEarthPortalX, LOTRLevelData.middleEarthPortalY, LOTRLevelData.middleEarthPortalZ); - } - - public void setSpawnPoint(int i, int j, int k) { - } - - public void setRingPortalLocation(int i, int j, int k) { - LOTRLevelData.markMiddleEarthPortalLocation(i, j, k); - } - - @Override - public LOTRDimension getLOTRDimension() { - return cached_enum; - } -} diff --git a/src/main/resources/assets/cinder_loe/lang/en_US.lang b/src/main/resources/assets/cinder_loe/lang/en_US.lang index 30894e0..074267e 100644 --- a/src/main/resources/assets/cinder_loe/lang/en_US.lang +++ b/src/main/resources/assets/cinder_loe/lang/en_US.lang @@ -394,7 +394,7 @@ item.lotr:spice_dwarven.name=Stonegrit item.lotr:mugElfBrew.name=Saturated Miruvor item.lotr:mugOrcBrew.name=Concentrated Orc Draught item.lotr:mugHumanBrew.name=Athelas Tea -item.lotr:mugDwarfBrew.name=Dwarven Stout\ +item.lotr:mugDwarfBrew.name=Dwarven Stout item.fine_bone_dust.name=Fine Bone Dust item.dried_morgul_caps.name=Dried Morgul Caps item.blighted_root.name=Blighted Root diff --git a/src/main/resources/assets/lotr/textures/items/field_repair_kit.png b/src/main/resources/assets/lotr/textures/items/field_repair_kit.png index 1ee5390..4b6cc24 100644 Binary files a/src/main/resources/assets/lotr/textures/items/field_repair_kit.png and b/src/main/resources/assets/lotr/textures/items/field_repair_kit.png differ