OpenBlocks

OpenBlocks

56M Downloads

Crash including Vacuum Hoppers

Eufranio opened this issue ยท 10 comments

commented

Whenever a specific player in my server log in, the server crashes.

Description: Exception while ticking a block

java.lang.AbstractMethodError: openmods.utils.SidedInventoryAdapter.getOwner()Lorg/bukkit/inventory/InventoryHolder;
	at openblocks.common.tileentity.TileEntityVacuumHopper.getOwner(TileEntityVacuumHopper.java)
	at net.minecraft.block.BlockDropper.func_149941_e(BlockDropper.java:79)
	at net.minecraft.block.BlockDispenser.func_149674_a(BlockDispenser.java:183)
	at net.minecraft.world.WorldServer.func_72955_a(WorldServer.java:776)
	at net.minecraft.world.WorldServer.func_72835_b(WorldServer.java:283)
	at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:963)
	at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:432)
	at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:841)
	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:693)
	at java.lang.Thread.run(Thread.java:745)

Full crash-report: https://hastebin.com/vamujikoni.pl
Forge 1614, OpenBlocks 1.7.10-1.5.1, OpenModsLib-1.7.10-0.9.1

commented

I'm using Thermos build 58, another Cauldron fork, and looks like it has the patch (because it was forked from KCauldron) as well: https://github.com/CyberdyneCC/Thermos/blob/master/patches/net/minecraft/tileentity/TileEntityHopper.java.patch

So, there's something wrong in my end? Or in Thermos itself?

commented

Oooh, now I get it: posted patch is for hopper, but in dropper/dispatcher this code remains unchecked.

Anyway, I don't think we can fix that on our side without dropping functionality, so it's up to Bukkit/Cauldron/Thermos. Though, as I said here on first glance it should work as is...
EDIT: maybe only IInventory & TileEntity classes are patched?

commented

Temporary solution would be to enable removeErroringTileEntities in forge.cfg.

commented

It's enabled, by some reason it didn't remove the dropper...

commented

Ah, yes, this crash is in block code, not TE. My bad.

commented

Oh, wow, haven't seen this in quite some time (duplicates of #332, #326, #323, #377, all reported in early 2014).

This bug is specific to Bukkit/Bukkit-like servers, so officially it's not supported by us. Though quick google shows stuff like this which suggests that most of the implementations are aware of this bug and patch it.

EDIT: though I'm not really sure what's the issue. I'm using this to copy methods from interface to actual implementation. Class IInventory should be already patched at this point and return all methods. Maybe there is duplicate classloader? No idea...

commented

Can you fix this in your side?

commented

Not really.

There are at least two solutions, but all on thermos/whatever side:

  1. Copy patch from hopper to dropper/dispatcher
  2. Find out why IInventory patcher (do they even have one or those are manual patches?) does not fix openmods.inventory.GenericInventory and others. Maybe they only patch TileEntities?
commented

What about allowing forge to remove your TileEntity?
Thermos isn't even compilable at the moment, and probably never will be, since they stopped development.

commented

That would require deeper modification in Forge itself.

From Forge perspective, it's dropper block that crashes, so they would need to implement "remove block that throws on update" option.