SiegeWar icon indicating copy to clipboard operation
SiegeWar copied to clipboard

Pluder Event error due to AccountObserver error.

Open GoodrichDev opened this issue 1 year ago • 4 comments

Describe the bug When a player attempts to plunder a town, the will not be able to plunder due a console error. There is no messaging but a console log is provided.

[02:21:45 ERROR]: Could not pass event TownyBuildEvent to SiegeWar v2.12.1
java.lang.NullPointerException: Cannot invoke "com.palmergames.bukkit.towny.object.economy.AccountObserver.withdrew(com.palmergames.bukkit.towny.object.economy.Account, double, String)" because "observer" is null
        at Towny-0.100.3.7.jar/com.palmergames.bukkit.towny.object.economy.Account.notifyObserversWithdraw(Account.java:269) ~[Towny-0.100.3.7.jar:?]
        at Towny-0.100.3.7.jar/com.palmergames.bukkit.towny.object.economy.Account.withdraw(Account.java:96) ~[Towny-0.100.3.7.jar:?]
        at Towny-0.100.3.7.jar/com.palmergames.bukkit.towny.object.economy.Account.payTo(Account.java:149) ~[Towny-0.100.3.7.jar:?]
        at SiegeWar-2.12.1.jar/com.gmail.goosius.siegewar.playeractions.PlunderTown.createPlunderForNation(PlunderTown.java:207) ~[SiegeWar-2.12.1.jar:?]
        at SiegeWar-2.12.1.jar/com.gmail.goosius.siegewar.playeractions.PlunderTown.plunderTown(PlunderTown.java:106) ~[SiegeWar-2.12.1.jar:?]
        at SiegeWar-2.12.1.jar/com.gmail.goosius.siegewar.playeractions.PlunderTown.processPlunderTownRequest(PlunderTown.java:45) ~[SiegeWar-2.12.1.jar:?]
        at SiegeWar-2.12.1.jar/com.gmail.goosius.siegewar.playeractions.PlaceBlock.evaluatePlaceChest(PlaceBlock.java:355) ~[SiegeWar-2.12.1.jar:?]
        at SiegeWar-2.12.1.jar/com.gmail.goosius.siegewar.playeractions.PlaceBlock.evaluateSiegeWarPlaceBlockRequest(PlaceBlock.java:79) ~[SiegeWar-2.12.1.jar:?]
        at SiegeWar-2.12.1.jar/com.gmail.goosius.siegewar.listeners.SiegeWarActionListener.onBlockBuild(SiegeWarActionListener.java:40) ~[SiegeWar-2.12.1.jar:?]
        at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor298.execute(Unknown Source) ~[?:?]
        at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[folia-api-1.20.6-R0.1-SNAPSHOT.jar:?]
        at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:77) ~[folia-api-1.20.6-R0.1-SNAPSHOT.jar:1.20.6-5-d797082]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[folia-api-1.20.6-R0.1-SNAPSHOT.jar:?]
        at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[folia-1.20.6.jar:1.20.6-5-d797082]
        at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:131) ~[folia-1.20.6.jar:1.20.6-5-d797082]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) ~[folia-api-1.20.6-R0.1-SNAPSHOT.jar:?]
        at Towny-0.100.3.7.jar/com.palmergames.bukkit.util.BukkitTools.fireEvent(BukkitTools.java:373) ~[Towny-0.100.3.7.jar:?]
        at Towny-0.100.3.7.jar/com.palmergames.bukkit.towny.event.executors.TownyActionEventExecutor.isAllowedAction(TownyActionEventExecutor.java:80) ~[Towny-0.100.3.7.jar:?]
        at Towny-0.100.3.7.jar/com.palmergames.bukkit.towny.event.executors.TownyActionEventExecutor.canBuild(TownyActionEventExecutor.java:204) ~[Towny-0.100.3.7.jar:?]
        at Towny-0.100.3.7.jar/com.palmergames.bukkit.towny.listeners.TownyBlockListener.onBlockPlace(TownyBlockListener.java:89) ~[Towny-0.100.3.7.jar:?]
        at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor96.execute(Unknown Source) ~[?:?]
        at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[folia-api-1.20.6-R0.1-SNAPSHOT.jar:?]
        at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:77) ~[folia-api-1.20.6-R0.1-SNAPSHOT.jar:1.20.6-5-d797082]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[folia-api-1.20.6-R0.1-SNAPSHOT.jar:?]
        at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[folia-1.20.6.jar:1.20.6-5-d797082]
        at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:131) ~[folia-1.20.6.jar:1.20.6-5-d797082]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) ~[folia-api-1.20.6-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.craftbukkit.event.CraftEventFactory.callBlockPlaceEvent(CraftEventFactory.java:448) ~[folia-1.20.6.jar:1.20.6-5-d797082]
        at net.minecraft.world.item.ItemStack.useOn(ItemStack.java:467) ~[folia-1.20.6.jar:1.20.6-5-d797082]
        at net.minecraft.server.level.ServerPlayerGameMode.useItemOn(ServerPlayerGameMode.java:602) ~[folia-1.20.6.jar:1.20.6-5-d797082]
        at net.minecraft.server.network.ServerGamePacketListenerImpl.handleUseItemOn(ServerGamePacketListenerImpl.java:1979) ~[folia-1.20.6.jar:1.20.6-5-d797082]
        at net.minecraft.network.protocol.game.ServerboundUseItemOnPacket.handle(ServerboundUseItemOnPacket.java:44) ~[folia-1.20.6.jar:1.20.6-5-d797082]
        at net.minecraft.network.protocol.game.ServerboundUseItemOnPacket.handle(ServerboundUseItemOnPacket.java:11) ~[folia-1.20.6.jar:1.20.6-5-d797082]
        at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$1(PacketUtils.java:57) ~[folia-1.20.6.jar:1.20.6-5-d797082]
        at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$2(PacketUtils.java:85) ~[folia-1.20.6.jar:1.20.6-5-d797082]
        at io.papermc.paper.threadedregions.EntityScheduler.executeTick(EntityScheduler.java:173) ~[folia-1.20.6.jar:1.20.6-5-d797082]
        at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1688) ~[folia-1.20.6.jar:1.20.6-5-d797082]
        at io.papermc.paper.threadedregions.TickRegions$ConcreteRegionTickHandle.tickRegion(TickRegions.java:407) ~[folia-1.20.6.jar:1.20.6-5-d797082]
        at io.papermc.paper.threadedregions.TickRegionScheduler$RegionScheduleHandle.runTick(TickRegionScheduler.java:404) ~[folia-1.20.6.jar:1.20.6-5-d797082]
        at ca.spottedleaf.concurrentutil.scheduler.SchedulerThreadPool$TickThreadRunner.run(SchedulerThreadPool.java:525) ~[folia-1.20.6.jar:1.20.6-5-d797082]
        at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]

To Reproduce Steps to reproduce the behavior:

  1. Enable Towny towny-server account in the towny configuration.
  2. Verify you have an actual account and balance in towny-server
  3. Set plunder_paid_over_time: 'true' in the siege war configuration.
  4. Attempt to plunder a town.
plunder:
        amount_per_plot: '4.0'
        plunder_paid_over_time: 'true'
        number_of_payments: '6'

Expected behavior The Plunder is paid over time instead of disabled.

Screenshots If applicable, add screenshots to help explain your problem.

Versions (please complete the following information):

  • Towny: 0.100.3.7
  • SiegeWar: 2.12.1
  • Spigot/Paper: Folia 1.20.6 Build #5

GoodrichDev avatar Jul 20 '24 02:07 GoodrichDev

So the error itself is saying you dont have an account observer, which is used to monitor transactions for the money.csv log and the /t bankhistory book. Are you sure that the town losing money had an actual account already?

LlmDl avatar Jul 20 '24 12:07 LlmDl

This was discussed in the Discord and it was determined there might be an issue with balances and other options being reworked in Towny. Therefore SiegeWar might need to be rebuilt with a newer version of Towny.

GoodrichDev avatar Aug 26 '24 06:08 GoodrichDev

So can this get closed? You're SW is no longer up to date.

LlmDl avatar Aug 26 '24 13:08 LlmDl

Hi @LlmDl,

I have tested this on 2.13.0 and plunder over time still has an error. I have also used Towny 0.100.3.13

[02:20:05 ERROR]: Could not pass event TownyBuildEvent to SiegeWar v2.13.0
java.lang.NullPointerException: Cannot invoke "com.palmergames.bukkit.towny.object.economy.AccountObserver.withdrew(com.palmergames.bukkit.towny.object.economy.Account, double, String)" because "observer" is null
        at towny-0.100.3.13.jar/com.palmergames.bukkit.towny.object.economy.Account.notifyObserversWithdraw(Account.java:269) ~[towny-0.100.3.13.jar:?]
        at towny-0.100.3.13.jar/com.palmergames.bukkit.towny.object.economy.Account.withdraw(Account.java:96) ~[towny-0.100.3.13.jar:?]
        at towny-0.100.3.13.jar/com.palmergames.bukkit.towny.object.economy.Account.payTo(Account.java:149) ~[towny-0.100.3.13.jar:?]
        at SiegeWar-2.13.0.jar/com.gmail.goosius.siegewar.playeractions.PlunderTown.createPlunderForNation(PlunderTown.java:207) ~[SiegeWar-2.13.0.jar:?]
        at SiegeWar-2.13.0.jar/com.gmail.goosius.siegewar.playeractions.PlunderTown.plunderTown(PlunderTown.java:106) ~[SiegeWar-2.13.0.jar:?]
        at SiegeWar-2.13.0.jar/com.gmail.goosius.siegewar.playeractions.PlunderTown.processPlunderTownRequest(PlunderTown.java:45) ~[SiegeWar-2.13.0.jar:?]
        at SiegeWar-2.13.0.jar/com.gmail.goosius.siegewar.playeractions.PlaceBlock.evaluatePlaceChest(PlaceBlock.java:361) ~[SiegeWar-2.13.0.jar:?]
        at SiegeWar-2.13.0.jar/com.gmail.goosius.siegewar.playeractions.PlaceBlock.evaluateSiegeWarPlaceBlockRequest(PlaceBlock.java:81) ~[SiegeWar-2.13.0.jar:?]
        at SiegeWar-2.13.0.jar/com.gmail.goosius.siegewar.listeners.SiegeWarActionListener.onBlockBuild(SiegeWarActionListener.java:40) ~[SiegeWar-2.13.0.jar:?]
        at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor324.execute(Unknown Source) ~[?:?]
        at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[paper-mojangapi-1.21.1-R0.1-SNAPSHOT.jar:?]
        at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[paper-mojangapi-1.21.1-R0.1-SNAPSHOT.jar:1.21.1-DEV-bfa3106]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[paper-mojangapi-1.21.1-R0.1-SNAPSHOT.jar:?]
        at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[folia-1.21.1.jar:1.21.1-DEV-bfa3106]
        at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:131) ~[folia-1.21.1.jar:1.21.1-DEV-bfa3106]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) ~[paper-mojangapi-1.21.1-R0.1-SNAPSHOT.jar:?]
        at towny-0.100.3.13.jar/com.palmergames.bukkit.util.BukkitTools.fireEvent(BukkitTools.java:373) ~[towny-0.100.3.13.jar:?]
        at towny-0.100.3.13.jar/com.palmergames.bukkit.towny.event.executors.TownyActionEventExecutor.isAllowedAction(TownyActionEventExecutor.java:80) ~[towny-0.100.3.13.jar:?]
        at towny-0.100.3.13.jar/com.palmergames.bukkit.towny.event.executors.TownyActionEventExecutor.canBuild(TownyActionEventExecutor.java:204) ~[towny-0.100.3.13.jar:?]
        at towny-0.100.3.13.jar/com.palmergames.bukkit.towny.listeners.TownyBlockListener.onBlockPlace(TownyBlockListener.java:89) ~[towny-0.100.3.13.jar:?]
        at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor86.execute(Unknown Source) ~[?:?]
        at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[paper-mojangapi-1.21.1-R0.1-SNAPSHOT.jar:?]
        at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[paper-mojangapi-1.21.1-R0.1-SNAPSHOT.jar:1.21.1-DEV-bfa3106]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[paper-mojangapi-1.21.1-R0.1-SNAPSHOT.jar:?]
        at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[folia-1.21.1.jar:1.21.1-DEV-bfa3106]
        at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:131) ~[folia-1.21.1.jar:1.21.1-DEV-bfa3106]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) ~[paper-mojangapi-1.21.1-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.craftbukkit.event.CraftEventFactory.callBlockPlaceEvent(CraftEventFactory.java:459) ~[?:?]
        at net.minecraft.world.item.ItemStack.useOn(ItemStack.java:488) ~[folia-1.21.1.jar:1.21.1-DEV-bfa3106]
        at net.minecraft.server.level.ServerPlayerGameMode.useItemOn(ServerPlayerGameMode.java:604) ~[?:?]
        at net.minecraft.server.network.ServerGamePacketListenerImpl.handleUseItemOn(ServerGamePacketListenerImpl.java:1990) ~[?:?]
        at net.minecraft.network.protocol.game.ServerboundUseItemOnPacket.handle(ServerboundUseItemOnPacket.java:44) ~[?:?]
        at net.minecraft.network.protocol.game.ServerboundUseItemOnPacket.handle(ServerboundUseItemOnPacket.java:11) ~[?:?]
        at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$1(PacketUtils.java:58) ~[?:?]
        at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$2(PacketUtils.java:86) ~[?:?]
        at io.papermc.paper.threadedregions.EntityScheduler.executeTick(EntityScheduler.java:173) ~[folia-1.21.1.jar:1.21.1-DEV-bfa3106]
        at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1711) ~[folia-1.21.1.jar:1.21.1-DEV-bfa3106]
        at io.papermc.paper.threadedregions.TickRegions$ConcreteRegionTickHandle.tickRegion(TickRegions.java:407) ~[folia-1.21.1.jar:1.21.1-DEV-bfa3106]
        at io.papermc.paper.threadedregions.TickRegionScheduler$RegionScheduleHandle.runTick(TickRegionScheduler.java:406) ~[folia-1.21.1.jar:1.21.1-DEV-bfa3106]
        at ca.spottedleaf.concurrentutil.scheduler.SchedulerThreadPool$TickThreadRunner.run(SchedulerThreadPool.java:540) ~[folia-1.21.1.jar:1.21.1-DEV-bfa3106]
        at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]

GoodrichDev avatar Aug 29 '24 02:08 GoodrichDev

Fixed on Towny's end of things

LlmDl avatar Oct 08 '24 22:10 LlmDl