Cherry05 Posted 7 hours ago Posted 7 hours ago I'm trying to do a thing where I can revert an explosion via hotkey: @Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.FORGE, value = Dist.CLIENT) public static class ClientForgeEvents{ @SubscribeEvent public static void onClientTick(TickEvent.ClientTickEvent event) { if (event.phase == TickEvent.Phase.END) { while (TEST_KEY.get().consumeClick()) { Minecraft mc = Minecraft.getInstance(); mc.player.displayClientMessage(Component.literal("hotkey-test"),false); for(Map.Entry<BlockPos,BlockState> entry : explodedBlocks.entrySet()){ ((LevelAccessor) Minecraft.getInstance().level).setBlock(entry.getKey(),entry.getValue(),1); } explodedBlocks.clear(); } } } @SubscribeEvent public static void onExplosion(ExplosionEvent.Detonate evt) { printToChat(evt.getExplosion().getDirectSourceEntity().toString()); for (BlockPos pos : evt.getAffectedBlocks()) { explodedBlocks.put(pos,Minecraft.getInstance().level.getBlockState(pos)); } } } explodedBlocks is just a Hashmap with BlockPos and BlockState. This almost does what I want, except all blocks are ghosts. I'm assuming I have to run this same thing server side somehow, but apart from the general concept of logical and physical clients and servers I feel like I understand nothing. I also can't find any tutorials for 1.21 and the docs page for SimpleImpl just straight up doesn't work (at least the "Getting Started" part, which makes attempting the rest kinda useless). 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.