a little safer

This commit is contained in:
Hexugory 2024-05-14 21:32:58 -05:00
parent a55627f272
commit 9df4bcf87d
2 changed files with 28 additions and 21 deletions

View File

@ -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) -> {

View File

@ -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) -> {