From c90bf6cf461c12ff1e8802ba561e24b3e980ed6a Mon Sep 17 00:00:00 2001 From: KeyLime17 Date: Thu, 1 May 2025 18:40:02 -0400 Subject: [PATCH] Carriage system refined, coin trade fixed added field repair kit texture - cleric_red --- gradle.properties | 2 +- .../com/zivilon/cinder_loe/CinderLoE.java | 4 +- .../carriage/gui/CarriageCoinUtil.java | 47 ++++++++++++++++++ .../carriage/gui/GuiCarriageFade.java | 3 +- .../carriage/gui/GuiCarriageMenu.java | 18 +++++-- .../command/CommandOpenCarriageMenu.java | 2 +- .../coremod/LOTRDimensionAdder.java | 2 +- .../cinder_loe/mixins/MixinLOTREntityNPC.java | 1 + .../cinder_loe/network/PacketCarriageFTB.java | 11 ++-- .../network/PacketCarriageSelect.java | 6 ++- .../network/PacketRegistration.java | 3 ++ .../world/CinderWorldProviderIsland.java | 43 ---------------- .../assets/cinder_loe/lang/en_US.lang | 2 +- .../lotr/textures/items/field_repair_kit.png | Bin 5973 -> 578 bytes 14 files changed, 81 insertions(+), 63 deletions(-) create mode 100644 src/main/java/com/zivilon/cinder_loe/carriage/gui/CarriageCoinUtil.java delete mode 100644 src/main/java/com/zivilon/cinder_loe/world/CinderWorldProviderIsland.java 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 1ee5390f0800b170a7d11a41c3f788c48cc8fb42..4b6cc24ac4b9c0e36e4c855f1d252e5a19d95507 100644 GIT binary patch delta 554 zcmV+_0@eN1F2V$mBYyx1a7bBm000ie000ie0hKEb8vpLlRaotQ51l` z8%q#rf;=J!D&aZUJ}G7sN|&ck5-1IV(hMCWOWVbvE*)G2>C_enmx6SaECq`;!z-a6 zmH1Pht$iZsL)yep@eU>$Dav&S?;2^-BA)GX&-dNKIp+$c6o3B{U56zsP4=ocl_u}1 z-&v_80PuZZg!hrd;B%L=T)UBDrIx_9Z2&CG(q(rPgz&akW^iH=+qRKXYKa!~_xJB< zLJJ>{UHZmg@R*Mjz~8nx=+hu^0gNW^Xc_ z>Q(?EoI)m(QGd5mAL((jR9=@kb>Sj|6N>$>zswf43v5=J z%)L6MD~S|~MG?YMO0FM&ijJg<%*>k0t+t3tmGnk!4vb(t5cGKz?eCqtPP_m#M?2t#WlBLD@jA%1Q? z!Y~Z-Q)|3`v8t0g!C{E@&orFsR$b?_NGV&RO}sr2-XjPl?dOBweFgs-zX4MU_#)9- sMNR+!03!}%SV?A0O#mtY000O800000007cclK=n!07*qoM6N<$f^m`TV*mgE literal 5973 zcmeHKc{r478-F89LQ#am7%9rEh8bhu$`U!qQdwqshlyF584MzlP9jT=B8rMS;wWWJ z=a4L+WG`D&RF;UZqP@O%rsdT2oqxKn@BG(X*E8??-p}v;J@@^4?&o=*H__E)vz&~Y z3;+Of4)(Tg&~>@6NlQZin$JIy06=0e(!-nQMhb_qIV>7I1cdP-*dPq#(`f*}AN<36 z$I)qB`FDXzmlvSro`^f>OJ3pphI%?cOzw~Iu z!PFqBe$VB%iLsSe@3~7|!{mNYZL4p*mDW{#scdPXsztEkQw1+<2|8^{mU?Qj;l?>N z4>7T{=10}*qvKzz<*eVNnUbd;+)iz?G;6r~2R?eZKgV<}qt<7kCB5z?s$9dQ247p# zGq=k2L3XykLIN5-&$)VWFiP&vDr4^fs#*W^%hMfhw58(D5BBf5HMa6yu10B#>Tbys zyg1(ZZVA=QuEfUs)ft73iNuNsln2nopq@zvcfUb>cGCi=*dj{KA39v4pR<-~A%-`-G#t20YtlQt`hH3u+vVr2Ha3NR99 zb{)uK=KH5wl`M*99xx7wa~OXFH;F6 zIk>z9h*3<_o+M;!u_p3 zseAG5C9L(y_Ig~S0ot+XqiZ-fi!9BXl)d((D>~{IaSYGH(~B>-*&H@B+?D2b`Ie!e zAVGP@RN8j@NZ6g|V;Ygulb0%e-nR{!aQEI;WAyVC!IemkPrT2=>il0^hVRQJm+7F9 z@r$I7O9c|sDonH5Z>S|iOZhxd(H()E>kg2W9o#fc^nI%FIHon{(t}j~Soq`K{HKBd z7rCi>S#LXrP~OE91Ko_W?1WvC+g2B7N|vV)3d#qv0|mlTX{kcNVW0sMN|2IWkQcSh7l>e%dQUC!(vj`;rswT3|@-gKY;{XZU`w zsvR$KYG2I|x34WIIP2MX{BU2M)m?$t!}GU-tDDykS`Va+77kQ2_Fr68v1Q|?8lwBN z>w7bvp#6qsF~uy{$Tj5vD0^mtWDjPe|Qn)#AvTU5L&RCZeg{uJ+wO?}wpBW4^6DuW zuP9qmLfph--JD|6sQGrU-c!@cFC!Dv<2^~if_@uA^A!(!6#e2H=S@2G96bEm9W}w$nU<5&7X;He0$i1lv>&{Ay1fIRJ-k6#fYc5Uv6Fdx{BvWE#%okUyHMw zww7`T8gH2J9c6O9P1)W_y2SK5`K6%|zV)b!mE?PN3TMsxY@;*#rV^`@sunl37q{na z*z(H*t;l1m-Zd$1A22>&Hc3``9;b2{tX1&m-R9v@zrCs}=!7@NkHuWAeOVnPB|VRIzm>AYvQJ-IDK&9m z_>c@l(6-gO>Sv4gAEu#?+n1d}GFT^1Sb7YiVa3*OpgEYBD-Hl$9x)$v;FW`CaYNQlDc= z9XoRSIGKjCt^O)EgWKt)J!`DiB-z83C}7XuwNzDxm+vabvhRwydEH|ARmQ_3trd$l zr9^n-TXWvs-#b^kz(f0(U_-BE z05G-Svq_X-kOw1!fpn%Be73d@4x>}e;9iE#XlJ$!7(};^%ryOg+U~r1Nuh~t_O5_LAilkRw#!8+J%8kp7ysCRLWO>b|@!Aln#}G0z*Is1m!}b zV!j)4vxBqiR}Y~Cfpi923kaq_MPLZ!>`b&} zQ9^~`IoO)Ph2s;cEDD`U6y4%LDuzPF7$S_ZARd7;#2X_B6eAjfKm&1jBPci{H9}L+SOS7frjZahDh>~MqYV%Q0}38Zf*NRS^bN&U4jrmW zQpmSa38|MYTrk|$8p3a335yG1PT=nkY?oUsj7C{JI)CGfy3YSQtd>VvH3Iji> z0Qr6Dq6CqcfgrTPKbO=OJN+M~%aDvAlMIZo2s9ovMBqq9AT(2C3<86};&D_AXoSbm zL}`3w=dx(La1sZ!3WPF+vVlrSlnqSxvzU6{@%r$^%KWkV%zi=gqTWF@&dP zKy;J?sjzT5F9;?)%6Y}fuL1xuxPz^g2cf;yRffEkf_$ zGe`EWi|`SB#3E7=kUT_d%s`jQ|b{h_r}1@@!4zBE2SA* z*6C$BI_-R+&a$2XMB3R=V`sYqvFI7TU$Na_z>-6{6U(&C#G}Z8mvy6>P zy5n8yQS&lHLQf|(uddLw6dUF;K32O~TFbuB?QZ2v+kJ1{l~-0IHK}N5G@q|hkd>t4 z)PNiQekZT;uXj!|Z|*#x8G2!<u0UU!YD6M(bq0N~UI`Owb9Cv)s=%dSh=0sSRc a7FO$wDNV!2O7}x01vuEb*p^xc?E5cP*l-E}