Fix FakePlayer-related crashes

This commit is contained in:
Alexei Robyn
2021-05-20 14:04:19 +10:00
parent b41f102f0c
commit f77a937c6c

View File

@@ -8,6 +8,7 @@ import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.common.util.FakePlayer;
import net.minecraftforge.event.AttachCapabilitiesEvent;
import net.minecraftforge.event.entity.player.PlayerEvent;
import net.minecraftforge.event.world.BlockEvent;
@@ -35,6 +36,7 @@ public class EventHandler {
@SubscribeEvent
public static void attachCapabilities(AttachCapabilitiesEvent<Entity> event) {
if (event.getObject() instanceof FakePlayer) return;
if (event.getObject() instanceof PlayerEntity) {
event.addCapability(new ResourceLocation(EffortlessBuilding.MODID, "build_modifier"), new ModifierCapabilityManager.Provider());
event.addCapability(new ResourceLocation(EffortlessBuilding.MODID, "build_mode"), new ModeCapabilityManager.Provider());
@@ -63,6 +65,8 @@ public class EventHandler {
if (!(event.getEntity() instanceof PlayerEntity)) return;
if (event.getEntity() instanceof FakePlayer) return;
//Cancel event if necessary
ServerPlayerEntity player = ((ServerPlayerEntity) event.getEntity());
BuildModes.BuildModeEnum buildMode = ModeSettingsManager.getModeSettings(player).getBuildMode();
@@ -94,6 +98,8 @@ public class EventHandler {
public static void onBlockBroken(BlockEvent.BreakEvent event) {
if (event.getWorld().isRemote()) return;
if (event.getPlayer() instanceof FakePlayer) return;
//Cancel event if necessary
//If cant break far then dont cancel event ever
BuildModes.BuildModeEnum buildMode = ModeSettingsManager.getModeSettings(event.getPlayer()).getBuildMode();
@@ -115,6 +121,8 @@ public class EventHandler {
//Disable if config says so
if (!BuildConfig.survivalBalancers.increasedMiningTime.get()) return;
if (event.getPlayer() instanceof FakePlayer) return;
PlayerEntity player = event.getPlayer();
World world = player.world;
BlockPos pos = event.getPos();
@@ -149,6 +157,7 @@ public class EventHandler {
@SubscribeEvent
public static void onPlayerLoggedIn(PlayerEvent.PlayerLoggedInEvent event) {
if (event.getPlayer() instanceof FakePlayer) return;
PlayerEntity player = event.getPlayer();
ModifierSettingsManager.handleNewPlayer(player);
ModeSettingsManager.handleNewPlayer(player);
@@ -156,6 +165,7 @@ public class EventHandler {
@SubscribeEvent
public static void onPlayerLoggedOut(PlayerEvent.PlayerLoggedOutEvent event) {
if (event.getPlayer() instanceof FakePlayer) return;
PlayerEntity player = event.getPlayer();
if (player.getEntityWorld().isRemote) return;
@@ -165,6 +175,7 @@ public class EventHandler {
@SubscribeEvent
public static void onPlayerRespawn(PlayerEvent.PlayerRespawnEvent event) {
if (event.getPlayer() instanceof FakePlayer) return;
PlayerEntity player = event.getPlayer();
ModifierSettingsManager.handleNewPlayer(player);
ModeSettingsManager.handleNewPlayer(player);
@@ -172,6 +183,7 @@ public class EventHandler {
@SubscribeEvent
public static void onPlayerChangedDimension(PlayerEvent.PlayerChangedDimensionEvent event) {
if (event.getPlayer() instanceof FakePlayer) return;
PlayerEntity player = event.getPlayer();
if (player.getEntityWorld().isRemote) return;
@@ -196,6 +208,7 @@ public class EventHandler {
@SubscribeEvent
public static void onPlayerClone(PlayerEvent.Clone event) {
if (event.getPlayer() instanceof FakePlayer) return;
//Attach capabilities on death, otherwise crash
PlayerEntity oldPlayer = event.getOriginal();
oldPlayer.revive();