From 9df4bcf87df17bbe50376b3845c907cdefb51fe3 Mon Sep 17 00:00:00 2001 From: Hexugory Date: Tue, 14 May 2024 21:32:58 -0500 Subject: [PATCH] a little safer --- .../net/touhoudiscord/HardcoreRedeploy.java | 41 ++++++++++--------- .../touhoudiscord/HardcoreRedeployClient.java | 8 +++- 2 files changed, 28 insertions(+), 21 deletions(-) diff --git a/src/main/java/net/touhoudiscord/HardcoreRedeploy.java b/src/main/java/net/touhoudiscord/HardcoreRedeploy.java index 0886497..8be98c5 100644 --- a/src/main/java/net/touhoudiscord/HardcoreRedeploy.java +++ b/src/main/java/net/touhoudiscord/HardcoreRedeploy.java @@ -75,32 +75,35 @@ public class HardcoreRedeploy implements ModInitializer { GeckoLib.initialize(); ServerPlayNetworking.registerGlobalReceiver(REQUEST_REVIVE, (server, player, handler, buf, responseSender) -> { - ServerPlayerEntity spectator = server.getPlayerManager().getPlayer(buf.readUuid()); - if (spectator == null) return; - + UUID uuid = buf.readUuid(); BlockPos blockPos = buf.readBlockPos(); - BlockState invokingBlock = player.getWorld().getBlockState(blockPos); - if (invokingBlock.getBlock() instanceof BuyStation && player.getPos().isInRange(blockPos.toCenterPos(), 5)) { + server.execute(() -> { + ServerPlayerEntity spectator = server.getPlayerManager().getPlayer(uuid); + if (spectator == null) return; - int cost = config.baseCost+config.additiveCost*RedeployStateSaver.getPlayerState(spectator).timesRevived; - boolean isCreative = player.interactionManager.getGameMode() == GameMode.CREATIVE; - if (!isCreative && player.experienceLevel < cost) return; + BlockState invokingBlock = player.getWorld().getBlockState(blockPos); - Vec3d fireworkPos = blockPos.toCenterPos(); - BlockState blockState = player.getWorld().getBlockState(blockPos); - Direction offset = blockState.get(HorizontalFacingBlock.FACING).rotateYClockwise(); - if (blockState.get(BUY_STATION_PART) == BuyStation.BuyStationPart.AUX) offset = offset.getOpposite(); - FireworkRocketEntity fireworkRocketEntity = new FireworkRocketEntity(player.getWorld(), fireworkPos.x+offset.getOffsetX()/2., fireworkPos.y, fireworkPos.z+offset.getOffsetZ()/2., firework); - player.getWorld().spawnEntity(fireworkRocketEntity); + if (invokingBlock.getBlock() instanceof BuyStation && player.getPos().isInRange(blockPos.toCenterPos(), 5)) { - if (!isCreative) player.setExperienceLevel(player.experienceLevel-cost); - ((TimerAccess) server).hardcoreredeploy_redeployInTicks(spectator, player, 60L); - server.execute(() -> { + int cost = config.baseCost + config.additiveCost * RedeployStateSaver.getPlayerState(spectator).timesRevived; + boolean isCreative = player.interactionManager.getGameMode() == GameMode.CREATIVE; + if (!isCreative && player.experienceLevel < cost) return; + + Vec3d fireworkPos = blockPos.toCenterPos(); + BlockState blockState = player.getWorld().getBlockState(blockPos); + Direction offset = blockState.get(HorizontalFacingBlock.FACING).rotateYClockwise(); + if (blockState.get(BUY_STATION_PART) == BuyStation.BuyStationPart.AUX) + offset = offset.getOpposite(); + FireworkRocketEntity fireworkRocketEntity = new FireworkRocketEntity(player.getWorld(), fireworkPos.x + offset.getOffsetX() / 2., fireworkPos.y, fireworkPos.z + offset.getOffsetZ() / 2., firework); + player.getWorld().spawnEntity(fireworkRocketEntity); + + if (!isCreative) player.setExperienceLevel(player.experienceLevel - cost); + ((TimerAccess) server).hardcoreredeploy_redeployInTicks(spectator, player, 60L); PacketByteBuf buf1 = PacketByteBufs.create(); ServerPlayNetworking.send(spectator, SEND_REVIVE, buf1); - }); - } + } + }); }); ServerPlayConnectionEvents.JOIN.register((handler, sender, server) -> { diff --git a/src/main/java/net/touhoudiscord/HardcoreRedeployClient.java b/src/main/java/net/touhoudiscord/HardcoreRedeployClient.java index 3b54ebb..3e3a193 100644 --- a/src/main/java/net/touhoudiscord/HardcoreRedeployClient.java +++ b/src/main/java/net/touhoudiscord/HardcoreRedeployClient.java @@ -23,9 +23,13 @@ public class HardcoreRedeployClient implements ClientModInitializer { BlockEntityRendererFactories.register(HardcoreRedeploy.BUY_STATION_ENTITY, BuyStationRenderer::new); ClientPlayNetworking.registerGlobalReceiver(HardcoreRedeploy.SEND_REVIVES_UPDATE, (client, handler, buf, responseSender) -> { - reviveMap.put(buf.readUuid(), buf.readInt()); + UUID uuid = buf.readUuid(); + int revives = buf.readInt(); + client.execute(() -> { + reviveMap.put(uuid, revives); - HardcoreRedeploy.LOGGER.info("Synced player revives"); + HardcoreRedeploy.LOGGER.info("Synced player revives"); + }); }); ClientPlayNetworking.registerGlobalReceiver(HardcoreRedeploy.SEND_REVIVE, (client, handler, buf, responseSender) -> {