Skip to content

Commit

Permalink
like 3 sanity checks for on-client
Browse files Browse the repository at this point in the history
  • Loading branch information
Bawnorton committed May 14, 2024
1 parent 90302e4 commit 8c52306
Show file tree
Hide file tree
Showing 7 changed files with 36 additions and 25 deletions.
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
# 2.0.0-beta.3

- Fix crash on dedicated servers

# 2.0.0-beta.2

- Fix Command Permissions

# 2.0.0
### Changes
- Added NeoForge support
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ org.gradle.jvmargs=-Xmx4G
org.gradle.parallel=true

# Mod Properties
mod_version=2.0.0-beta.2
mod_version=2.0.0-beta.3
mod_group=com.bawnorton
mod_id=neruina
mod_name=Neruina
Expand Down
43 changes: 23 additions & 20 deletions src/main/java/com/bawnorton/neruina/handler/TickHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,6 @@
import net.minecraft.block.BlockState;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.block.entity.BlockEntityTicker;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.TitleScreen;
import net.minecraft.client.toast.SystemToast;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
Expand Down Expand Up @@ -270,35 +267,41 @@ private void handleTickingEntity(Entity entity, Throwable e) {
private void handleTickingPlayer(PlayerEntity player, Throwable e) {
Neruina.LOGGER.warn("Neruina caught an exception, see below for cause", e);
MinecraftServer server = player.getServer();
if (server == null || !server.isDedicated() && player.getWorld().isClient()) {
if(player instanceof ServerPlayerEntity serverPlayer) {
String name = player.getDisplayName() == null ? player.getName().getString() : player.getDisplayName().getString();
MessageHandler messageHandler = Neruina.getInstance().getMessageHandler();
Text message = messageHandler.formatText("neruina.ticking.player", name);
TickingEntry tickingEntry = new TickingEntry(player, false, player.getBlockPos(), e);
trackError(tickingEntry);
messageHandler.broadcastToPlayers(server, message, messageHandler.generateResourceActions(tickingEntry));
serverPlayer.networkHandler.disconnect(VersionedText.concat(VersionedText.translatable("neruina.kick.message"),
VersionedText.translatable("neruina.kick.reason")
));
} else if ((server == null || !server.isDedicated()) && player.getWorld().isClient()) {
handleTickingClient(player, e);
return;
}

ServerPlayerEntity serverPlayer = (ServerPlayerEntity) player;
String name = player.getDisplayName() == null ? player.getName().getString() : player.getDisplayName().getString();
MessageHandler messageHandler = Neruina.getInstance().getMessageHandler();
Text message = messageHandler.formatText("neruina.ticking.player", name);
TickingEntry tickingEntry = new TickingEntry(player, false, player.getBlockPos(), e);
trackError(tickingEntry);
messageHandler.broadcastToPlayers(server, message, messageHandler.generateResourceActions(tickingEntry));
serverPlayer.networkHandler.disconnect(VersionedText.concat(VersionedText.translatable("neruina.kick.message"),
VersionedText.translatable("neruina.kick.reason")
));
}

private void handleTickingClient(PlayerEntity clientPlayer, Throwable e) {
Neruina.LOGGER.warn("Neruina caught an exception, see below for cause", e);
clientPlayer.getWorld().disconnect();
MinecraftClient client = MinecraftClient.getInstance();
try {
Class<?> clazz = net.minecraft.client.MinecraftClient.class;
Neruina.LOGGER.debug("Validated On Client: %s".formatted(clazz));
} catch (NoClassDefFoundError ex) {
// Somehow got here when client is not running
Neruina.LOGGER.error("Client is not running, but caught a ticking exception on client?");
return;
}
net.minecraft.client.MinecraftClient client = net.minecraft.client.MinecraftClient.getInstance();
/*? if >=1.19 {*/
client.disconnect(new net.minecraft.client.gui.screen.MessageScreen(VersionedText.translatable("menu.savingLevel")));
/*? } else {*//*
client.disconnect(new net.minecraft.client.gui.screen.SaveLevelScreen(VersionedText.translatable("menu.savingLevel")));
*//*? }*/
client.setScreen(new TitleScreen());
client.getToastManager().add(SystemToast.create(client,
SystemToast.Type.WORLD_ACCESS_FAILURE,
client.setScreen(new net.minecraft.client.gui.screen.TitleScreen());
client.getToastManager().add(net.minecraft.client.toast.SystemToast.create(client,
net.minecraft.client.toast.SystemToast.Type.WORLD_ACCESS_FAILURE,
VersionedText.translatable("neruina.toast.title"),
VersionedText.translatable("neruina.toast.desc")
));
Expand Down
2 changes: 1 addition & 1 deletion versions/1.20.1-fabric/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ loom.platform=fabric
deps_minecraft=1.20.1
deps_yarn_build=10
deps_fabric_api=0.92.0+1.20.1
mod_minecraft_dependency=>=1.20.1 <1.20.2
mod_minecraft_dependency=>=1.20.1 <1.20.4
2 changes: 1 addition & 1 deletion versions/1.20.1-forge/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ deps_fml=47.2.20
deps_it_shall_not_tick=3950475
deps_no_see_no_tick=4596138
deps_does_potato_tick=4810276
mod_minecraft_dependency=[1.20,1.20.2)
mod_minecraft_dependency=[1.20,1.20.4)
2 changes: 1 addition & 1 deletion versions/1.20.6-fabric/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ deps_java=21
deps_minecraft=1.20.6
deps_yarn_build=1
deps_fabric_api=0.98.0+1.20.6
mod_minecraft_dependency=>=1.20.2 <1.21
mod_minecraft_dependency=>=1.20.4 <1.21
2 changes: 1 addition & 1 deletion versions/1.20.6-forge/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@ deps_fml=50.0.19
deps_it_shall_not_tick=3950475
deps_no_see_no_tick=4596138
deps_does_potato_tick=4810276
mod_minecraft_dependency=[1.20.2,1.21)
mod_minecraft_dependency=[1.20.4,1.21)

0 comments on commit 8c52306

Please sign in to comment.