Zemelua Posted April 20, 2021 Posted April 20, 2021 public class BumpkinBlock extends HorizontalBlock { private static final EnumProperty<BumpkinPart> PART = UMUBlockStateProperties.BUMPKIN_PART; private static final VoxelShape DOWN_NORTH_WEST_SHAPE = VoxelShapes.or( Block.makeCuboidShape(11, 0, 3, 16, 16, 6), Block.makeCuboidShape(3, 0, 11, 6, 16, 16), Block.makeCuboidShape(6, 0, 6, 16, 16, 16) ); private static final VoxelShape DOWN_NORTH_EAST_SHAPE = VoxelShapes.or( Block.makeCuboidShape(0, 0, 3, 5, 16, 6), Block.makeCuboidShape(10, 0, 11, 13, 16, 16), Block.makeCuboidShape(0, 0, 6, 10, 16, 16) ); private static final VoxelShape DOWN_SOUTH_WEST_SHAPE = VoxelShapes.or( Block.makeCuboidShape(11, 0, 10, 16, 16, 13), Block.makeCuboidShape(3, 0, 0, 6, 16, 5), Block.makeCuboidShape(6, 0, 0, 16, 16, 10) ); private static final VoxelShape DOWN_SOUTH_EAST_SHAPE = VoxelShapes.or( Block.makeCuboidShape(0, 0, 10, 5, 16, 13), Block.makeCuboidShape(10, 0, 0, 13, 16, 5), Block.makeCuboidShape(0, 0, 0, 10, 16, 10) ); private static final VoxelShape UP_NORTH_WEST_SHAPE = VoxelShapes.or( Block.makeCuboidShape(11, 0, 3, 16, 5, 6), Block.makeCuboidShape(3, 0, 11, 6, 5, 16), Block.makeCuboidShape(6, 0, 6, 16, 5, 16) ); private static final VoxelShape UP_NORTH_EAST_SHAPE = VoxelShapes.or( Block.makeCuboidShape(0, 0, 3, 5, 5, 6), Block.makeCuboidShape(10, 0, 11, 13, 5, 16), Block.makeCuboidShape(0, 0, 6, 10, 5, 16) ); private static final VoxelShape UP_SOUTH_WEST_SHAPE = VoxelShapes.or( Block.makeCuboidShape(11, 0, 10, 16, 5, 13), Block.makeCuboidShape(3, 0, 0, 6, 5, 5), Block.makeCuboidShape(6, 0, 0, 16, 5, 10) ); private static final VoxelShape UP_SOUTH_EAST_SHAPE = VoxelShapes.or( Block.makeCuboidShape(0, 0, 10, 5, 5, 13), Block.makeCuboidShape(10, 0, 0, 13, 5, 5), Block.makeCuboidShape(0, 0, 0, 10, 5, 10) ); public static final List<List<BlockPos>> BUMPKINS = new ArrayList<>(); public BumpkinBlock(Properties builder) { super(builder); this.setDefaultState(this.getStateContainer().getBaseState() .with(PART, BumpkinPart.LOWER_FRONT_LEFT).with(HORIZONTAL_FACING, Direction.NORTH) ); } @Override public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { switch (state.get(HORIZONTAL_FACING)) { case NORTH: switch (state.get(PART)) { case LOWER_FRONT_LEFT: return DOWN_NORTH_WEST_SHAPE; case LOWER_FRONT_RIGHT: return DOWN_NORTH_EAST_SHAPE; case LOWER_BACK_LEFT: return DOWN_SOUTH_WEST_SHAPE; case LOWER_BACK_RIGHT: return DOWN_SOUTH_EAST_SHAPE; case UPPER_FRONT_LEFT: return UP_NORTH_WEST_SHAPE; case UPPER_FRONT_RIGHT: return UP_NORTH_EAST_SHAPE; case UPPER_BACK_LEFT: return UP_SOUTH_WEST_SHAPE; case UPPER_BACK_RIGHT: return UP_SOUTH_EAST_SHAPE; } case SOUTH: switch (state.get(PART)) { case LOWER_FRONT_LEFT: return DOWN_SOUTH_EAST_SHAPE; case LOWER_FRONT_RIGHT: return DOWN_SOUTH_WEST_SHAPE; case LOWER_BACK_LEFT: return DOWN_NORTH_EAST_SHAPE; case LOWER_BACK_RIGHT: return DOWN_NORTH_WEST_SHAPE; case UPPER_FRONT_LEFT: return UP_SOUTH_EAST_SHAPE; case UPPER_FRONT_RIGHT: return UP_SOUTH_WEST_SHAPE; case UPPER_BACK_LEFT: return UP_NORTH_EAST_SHAPE; case UPPER_BACK_RIGHT: return UP_NORTH_WEST_SHAPE; } case WEST: switch (state.get(PART)) { case LOWER_FRONT_LEFT: return DOWN_SOUTH_WEST_SHAPE; case LOWER_FRONT_RIGHT: return DOWN_NORTH_WEST_SHAPE; case LOWER_BACK_LEFT: return DOWN_SOUTH_EAST_SHAPE; case LOWER_BACK_RIGHT: return DOWN_NORTH_EAST_SHAPE; case UPPER_FRONT_LEFT: return UP_SOUTH_WEST_SHAPE; case UPPER_FRONT_RIGHT: return UP_NORTH_WEST_SHAPE; case UPPER_BACK_LEFT: return UP_SOUTH_EAST_SHAPE; case UPPER_BACK_RIGHT: return UP_NORTH_EAST_SHAPE; } case EAST: switch (state.get(PART)) { case LOWER_FRONT_LEFT: return DOWN_NORTH_EAST_SHAPE; case LOWER_FRONT_RIGHT: return DOWN_SOUTH_EAST_SHAPE; case LOWER_BACK_LEFT: return DOWN_NORTH_WEST_SHAPE; case LOWER_BACK_RIGHT: return DOWN_SOUTH_WEST_SHAPE; case UPPER_FRONT_LEFT: return UP_NORTH_EAST_SHAPE; case UPPER_FRONT_RIGHT: return UP_SOUTH_EAST_SHAPE; case UPPER_BACK_LEFT: return UP_NORTH_WEST_SHAPE; case UPPER_BACK_RIGHT: return UP_SOUTH_WEST_SHAPE; } default: return VoxelShapes.fullCube(); } } @Override public BlockState getStateForPlacement(BlockItemUseContext context) { BlockPos pos = context.getPos(); Direction face = context.getPlacementHorizontalFacing(); World world = context.getWorld(); if (pos.getY() < 255 && world.getBlockState(pos.offset(face.rotateYCCW())).isReplaceable(context) && world.getBlockState(pos.offset(face)).isReplaceable(context) && world.getBlockState(pos.offset(face).offset(face.rotateYCCW())).isReplaceable(context) && world.getBlockState(pos.up()).isReplaceable(context) && world.getBlockState(pos.up().offset(face.rotateYCCW())).isReplaceable(context) && world.getBlockState(pos.up().offset(face)).isReplaceable(context) && world.getBlockState(pos.up().offset(face).offset(face.rotateYCCW())).isReplaceable(context) ) { return this.getDefaultState().with(HORIZONTAL_FACING, face.getOpposite()); } return null; } @Override public void onBlockPlacedBy(World worldIn, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) { Direction face = Optional.ofNullable(placer).map(Entity::getHorizontalFacing).orElse(Direction.NORTH); worldIn.setBlockState(pos.offset(face.rotateYCCW()), state.with(PART, BumpkinPart.LOWER_FRONT_RIGHT)); worldIn.setBlockState(pos.offset(face), state.with(PART, BumpkinPart.LOWER_BACK_LEFT)); worldIn.setBlockState(pos.offset(face).offset(face.rotateYCCW()), state.with(PART, BumpkinPart.LOWER_BACK_RIGHT)); worldIn.setBlockState(pos.up(), state.with(PART, BumpkinPart.UPPER_FRONT_LEFT)); worldIn.setBlockState(pos.up().offset(face.rotateYCCW()), state.with(PART, BumpkinPart.UPPER_FRONT_RIGHT)); worldIn.setBlockState(pos.up().offset(face), state.with(PART, BumpkinPart.UPPER_BACK_LEFT)); worldIn.setBlockState(pos.up().offset(face).offset(face.rotateYCCW()), state.with(PART, BumpkinPart.UPPER_BACK_RIGHT)); BUMPKINS.add(new ArrayList<>(Arrays.asList( pos, pos.offset(face.rotateYCCW()), pos.offset(face), pos.offset(face).offset(face.rotateYCCW()), pos.up(), pos.up().offset(face.rotateYCCW()), pos.up().offset(face), pos.up().offset(face).offset(face.rotateYCCW()) ))); } @Override public BlockState updatePostPlacement(BlockState stateIn, Direction facing, BlockState facingState, IWorld worldIn, BlockPos currentPos, BlockPos facingPos) { for (List<BlockPos> parts : BUMPKINS) { if (parts.contains(currentPos)) { if (parts.stream().map(i -> worldIn.getBlockState(i).matchesBlock(this)).collect(Collectors.toList()).contains(false)) { //parts.stream().forEach(i -> worldIn.setBlockState(i, Blocks.AIR.getDefaultState(), 3)); parts.remove(currentPos); if (parts.isEmpty()) BUMPKINS.remove(parts); return Blocks.AIR.getDefaultState(); } } } return stateIn; } @Override protected void fillStateContainer(StateContainer.Builder<Block, BlockState> builder) { builder.add(PART, HORIZONTAL_FACING); } } I'm now making a block that is 2x2x2 and can be put / destroyed like one big block. In the case of the above code, it is put / destroyed several times well, but if it is installed occasionally, it will cause a crash. I'm probably aware that the code itself is terrible, but how do you specifically fix it? Below is a copy of the crash report: [03:00:18] [Render thread/INFO] [STDOUT/]: [net.minecraft.util.registry.Bootstrap:printToSYSOUT:130]: ---- Minecraft Crash Report ---- // Hi. I'm Minecraft, and I'm a crashaholic. Time: 21/04/21 3:00 Description: Unexpected error java.util.ConcurrentModificationException: null at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:911) ~[?:1.8.0_282] {} at java.util.ArrayList$Itr.next(ArrayList.java:861) ~[?:1.8.0_282] {} at io.github.zemelua.umumod.block.BumpkinBlock.updatePostPlacement(BumpkinBlock.java:172) ~[main/:?] {re:classloading} at net.minecraft.block.AbstractBlock$AbstractBlockState.updatePostPlacement(AbstractBlock.java:749) ~[forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading} at net.minecraft.block.AbstractBlock$AbstractBlockState.updateNeighbours(AbstractBlock.java:684) ~[forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading} at net.minecraft.world.World.markAndNotifyBlock(World.java:274) ~[forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.world.World.setBlockState(World.java:241) ~[forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.world.World.setBlockState(World.java:205) ~[forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.world.World.setBlockState(World.java:315) ~[forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B} at io.github.zemelua.umumod.block.BumpkinBlock.onBlockPlacedBy(BumpkinBlock.java:158) ~[main/:?] {re:classloading} at net.minecraft.item.BlockItem.tryPlace(BlockItem.java:69) ~[forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading} at net.minecraft.item.BlockItem.onItemUse(BlockItem.java:42) ~[forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading} at net.minecraft.item.ItemStack.lambda$onItemUse$5(ItemStack.java:195) ~[forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,xf:fml:forge:filled_map.4,xf:fml:forge:itemstack} at net.minecraft.item.ItemStack.onItemUse(ItemStack.java:210) ~[forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,xf:fml:forge:filled_map.4,xf:fml:forge:itemstack} at net.minecraft.item.ItemStack.onItemUse(ItemStack.java:195) ~[forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,xf:fml:forge:filled_map.4,xf:fml:forge:itemstack} at net.minecraft.client.multiplayer.PlayerController.func_217292_a(PlayerController.java:319) ~[forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.rightClickMouse(Minecraft.java:1407) ~[forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.processKeyBinds(Minecraft.java:1692) ~[forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.runTick(Minecraft.java:1507) ~[forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:979) ~[forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.run(Minecraft.java:612) ~[forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.main.Main.main(Main.java:184) ~[forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_282] {} at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_282] {} at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_282] {} at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_282] {} at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:52) ~[forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.0.9.jar:?] {} at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:105) [forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Stacktrace: at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:911) ~[?:1.8.0_282] {} at java.util.ArrayList$Itr.next(ArrayList.java:861) ~[?:1.8.0_282] {} at io.github.zemelua.umumod.block.BumpkinBlock.updatePostPlacement(BumpkinBlock.java:172) ~[?:?] {re:classloading} at net.minecraft.block.AbstractBlock$AbstractBlockState.updatePostPlacement(AbstractBlock.java:749) ~[forge:?] {re:classloading} at net.minecraft.block.AbstractBlock$AbstractBlockState.updateNeighbours(AbstractBlock.java:684) ~[forge:?] {re:classloading} at net.minecraft.world.World.markAndNotifyBlock(World.java:274) ~[forge:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.world.World.setBlockState(World.java:241) ~[forge:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.world.World.setBlockState(World.java:205) ~[forge:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.world.World.setBlockState(World.java:315) ~[forge:?] {re:classloading,pl:accesstransformer:B} at io.github.zemelua.umumod.block.BumpkinBlock.onBlockPlacedBy(BumpkinBlock.java:158) ~[?:?] {re:classloading} at net.minecraft.item.BlockItem.tryPlace(BlockItem.java:69) ~[forge:?] {re:classloading} at net.minecraft.item.BlockItem.onItemUse(BlockItem.java:42) ~[forge:?] {re:classloading} at net.minecraft.item.ItemStack.lambda$onItemUse$5(ItemStack.java:195) ~[forge:?] {re:classloading,xf:fml:forge:filled_map.4,xf:fml:forge:itemstack} at net.minecraft.item.ItemStack.onItemUse(ItemStack.java:210) ~[forge:?] {re:classloading,xf:fml:forge:filled_map.4,xf:fml:forge:itemstack} at net.minecraft.item.ItemStack.onItemUse(ItemStack.java:195) ~[forge:?] {re:classloading,xf:fml:forge:filled_map.4,xf:fml:forge:itemstack} at net.minecraft.client.multiplayer.PlayerController.func_217292_a(PlayerController.java:319) ~[forge:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.rightClickMouse(Minecraft.java:1407) ~[forge:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.processKeyBinds(Minecraft.java:1692) ~[forge:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} -- Affected level -- Details: All players: 1 total; [ClientPlayerEntity['Dev'/191, l='ClientLevel', x=-18.58, y=65.07, z=40.20]] Chunk stats: Client Chunk Cache: 841, 573 Level dimension: minecraft:overworld Level spawn location: World: (-48,67,0), Chunk: (at 0,4,0 in -3,0; contains blocks -48,0,0 to -33,255,15), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511) Level time: 99811 game time, 12364 day time Server brand: forge Server type: Integrated singleplayer server Stacktrace: at net.minecraft.client.world.ClientWorld.fillCrashReport(ClientWorld.java:465) ~[forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2091) ~[forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.run(Minecraft.java:633) ~[forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.main.Main.main(Main.java:184) ~[forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_282] {} at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_282] {} at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_282] {} at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_282] {} at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:52) ~[forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.0.9.jar:?] {} at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:105) [forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {} -- System Details -- Details: Minecraft Version: 1.16.5 Minecraft Version ID: 1.16.5 Operating System: Windows 10 (amd64) version 10.0 Java Version: 1.8.0_282, Amazon.com Inc. Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Amazon.com Inc. Memory: 397839344 bytes (379 MB) / 1187512320 bytes (1132 MB) up to 1873805312 bytes (1787 MB) CPUs: 12 JVM Flags: 1 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump ModLauncher: 8.0.9+86+master.3cf110c ModLauncher launch target: fmluserdevclient ModLauncher naming: mcp ModLauncher services: /mixin-0.8.2.jar mixin PLUGINSERVICE /eventbus-4.0.0.jar eventbus PLUGINSERVICE /forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-launcher.jar object_holder_definalize PLUGINSERVICE /forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-launcher.jar runtime_enum_extender PLUGINSERVICE /accesstransformers-3.0.1.jar accesstransformer PLUGINSERVICE /forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-launcher.jar capability_inject_definalize PLUGINSERVICE /forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-launcher.jar runtimedistcleaner PLUGINSERVICE /mixin-0.8.2.jar mixin TRANSFORMATIONSERVICE /forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.5-launcher.jar fml TRANSFORMATIONSERVICE FML: 36.1 Forge: net.minecraftforge:36.1.4 FML Language Providers: [email protected] minecraft@1 Mod List: client-extra.jar |Minecraft |minecraft |1.16.5 |DONE |a1:d4:5e:04:4f:d3:d6:e0:7b:37:97:cf:77:b0:de:ad:4a:47:ce:8c:96:49:5f:0a:cf:8c:ae:b2:6d:4b:8a:3f forge-1.16.5-36.1.4_mapped_snapshot_20210309-1.16.|Forge |forge |36.1.4 |DONE |NOSIGNATURE main |UMUMod |umu |NONE |DONE |NOSIGNATURE Crash Report UUID: 4fe8a232-4f3d-47fc-aad2-ea52bb00aa0b Launched Version: MOD_DEV Backend library: LWJGL version 3.2.2 build 10 Backend API: Intel(R) UHD Graphics 630 GL version 4.6.0 - Build 27.20.100.9126, Intel GL Caps: Using framebuffer using OpenGL 3.0 Using VBOs: Yes Is Modded: Definitely; Client brand changed to 'forge' Type: Client (map_client.txt) Graphics mode: fancy Resource Packs: Current Language: English (US) CPU: 12x Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz [03:00:18] [Render thread/INFO] [STDOUT/]: [net.minecraft.util.registry.Bootstrap:printToSYSOUT:130]: #@!@# Game crashed! Crash report saved to: #@!@# D:\User\Zemelua\Projects\Minecraft Mod\UMU Mod\run\.\crash-reports\crash-2021-04-21_03.00.18-client.txt AL lib: (EE) alc_cleanup: 1 device not closed Quote
Draco18s Posted April 20, 2021 Posted April 20, 2021 42 minutes ago, Zemelua said: for (List<BlockPos> parts : BUMPKINS) { <-- for every part if (parts.contains(currentPos)) { if (parts.stream().map(i -> worldIn.getBlockState(i).matchesBlock(this)).collect(Collectors.toList()).contains(false)) { parts.remove(currentPos); <-- remove from list You can't remove an item from a list when you are in a for-each loop. That's why it's throwing a concurrent modification exception. Concurrent with iteration the list was modified. If you need this, either use an Iterator or use an indexed for loop. Quote Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
Zemelua Posted April 21, 2021 Author Posted April 21, 2021 (edited) Oh, I didn't know that Java spec. I used an indexed for loop and it worked perfectly. Thank you. Edited April 21, 2021 by Zemelua Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.