Carpet Extra

Carpet Extra

1M Downloads

autoCraftingDropper causes server crash when crafting v1.2.5

HeWhoThreadsLightly opened this issue · 4 comments

commented

autoCraftingDropper causes server crash when crafting v1.2.5

Title is quite self explanatory, the crash happens when a(the only so far) iron block crater activates. The items are used up for the recipe and the result is picked up by the hopper under the crafting table when i restart the server again.

autoCraftingDroppers work fine in my singe player test world and on LAN worlds when i had a friend join. I have upgraded to the latest carpet version for 1.14.4 with the issue remaining.

My client sometimes displays "java.lang.StackOverflowError" from the server instead of "server closed" when the server crashes.

Server mod list:
[email protected],
[email protected],
[email protected]+build.174,
[email protected]

Client mod list:
carpet-extra-1.14.4-1.2.5
fabric-carpet-1.14.4-1.2.5+v191203
fabricmod_VoxelMap-1.9.13_for_1.14.4
litematica-fabric-1.14.4-0.0.0-dev.20190720.191654
malilib-fabric-1.14.4-0.10.0-dev.20
mamiyaotaru (folder)
mousewheelie-1.3.5+1.14.4

crash-2019-12-05_17.33.03-server.txt

carpet.conf.txt

commented

I also have these issues, I have none of these mods except for fabric-carpet and carpet-extra. Her
e are all the logs, ips & usernames have been replaced with -.
latest.log

commented

I think the error is somewhere in DropperBlock_craftingMixin.java specifically:

    // copied from CraftingResultSlot.onTakeItem()
    DefaultedList<ItemStack> defaultedList_1 = world_1.getRecipeManager().getRemainingStacks(RecipeType.CRAFTING, craftingInventory, world_1);
    for(int int_1 = 0; int_1 < defaultedList_1.size(); ++int_1) {
        ItemStack itemStack_2 = dispenserBlockEntity_1.getInvStack(int_1);
        ItemStack itemStack_3 = defaultedList_1.get(int_1);
        if (!itemStack_2.isEmpty()) {
            dispenserBlockEntity_1.takeInvStack(int_1, 1);
            itemStack_2 = dispenserBlockEntity_1.getInvStack(int_1);
        }
        
        if (!itemStack_3.isEmpty()) {
            if (itemStack_2.isEmpty()) {
                dispenserBlockEntity_1.setInvStack(int_1, itemStack_3);
            } else if (ItemStack.areItemsEqualIgnoreDamage(itemStack_2, itemStack_3) && ItemStack.areTagsEqual(itemStack_2, itemStack_3)) {
                itemStack_3.increment(itemStack_2.getCount());
                dispenserBlockEntity_1.setInvStack(int_1, itemStack_3);
            } else {
                spawn(world_1, target.x, target.y, target.z, itemStack_3);
            }
        }
    }
    Vec3d vec = new Vec3d(blockPos_1).add(0.5, 0.5, 0.5);
    ServerWorld world = (ServerWorld) world_1;
    for (ServerPlayerEntity player : world.getPlayers( (p) -> p.squaredDistanceTo(vec) < 256))
    {
        player.networkHandler.sendPacket(new PlaySoundIdS2CPacket(SoundEvents.ENTITY_VILLAGER_WORK_MASON.getId(), SoundCategory.BLOCKS, vec, 0.2f, 2.0f));
    }
    ci.cancel();

I think we should try a version before sound was added given that that's the only part that mentions servers. Maybe also disabling carpet mod on our clients to. I have no java experience or environment to test in so ¯\(ツ)

commented

Downgrading to 1.2.3 works, i saw an new commit to DropperBlock_craftingMixin.java moments ago so a fix may come any moment. I would compile it myself if i had the tools set up for it.

commented

fixed