修复服务器端加载模组会崩溃的问题
This commit is contained in:
parent
ac0db34a0b
commit
a6fe95557f
|
|
@ -33,7 +33,7 @@ mod_name=3944Realms 's Lib Mod
|
|||
# The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default.
|
||||
mod_license=MIT
|
||||
# The mod version. See https://semver.org/
|
||||
mod_version=0.1.7
|
||||
mod_version=0.1.8
|
||||
# The group ID for the mod. It is only important when publishing as an artifact to a Maven repository.
|
||||
# This should match the base package used for the mod sources.
|
||||
# See https://maven.apache.org/guides/mini/guide-naming-conventions.html
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
package top.r3944realms.lib39.core.event;
|
||||
|
||||
import net.minecraft.client.multiplayer.ClientLevel;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.event.level.LevelEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import top.r3944realms.lib39.Lib39;
|
||||
import top.r3944realms.lib39.util.ILevelHelper;
|
||||
|
||||
|
|
@ -19,7 +21,7 @@ public class ServerEventHandler {
|
|||
/**
|
||||
* The type Game.
|
||||
*/
|
||||
@net.minecraftforge.fml.common.Mod.EventBusSubscriber(value = Dist.DEDICATED_SERVER, bus = net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus.MOD, modid = Lib39.MOD_ID)
|
||||
@net.minecraftforge.fml.common.Mod.EventBusSubscriber(value = Dist.DEDICATED_SERVER, bus = net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus.FORGE, modid = Lib39.MOD_ID)
|
||||
public static class Game extends ServerEventHandler {
|
||||
/**
|
||||
* Register layer definitions.
|
||||
|
|
@ -28,8 +30,8 @@ public class ServerEventHandler {
|
|||
*/
|
||||
@SubscribeEvent
|
||||
public static void registerLayerDefinitions(LevelEvent.Load event) {
|
||||
if (event.getLevel() != null && event.getLevel() instanceof ClientLevel level) {
|
||||
ILevelHelper.LevelHelper.CLIENT.setLevel(level);
|
||||
if (event.getLevel() != null && event.getLevel() instanceof ServerLevel level) {
|
||||
ILevelHelper.LevelHelper.SERVER.setLevel(level);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -40,8 +42,8 @@ public class ServerEventHandler {
|
|||
*/
|
||||
@SubscribeEvent
|
||||
public static void registerLayerDefinitions(LevelEvent.Unload event) {
|
||||
if (event.getLevel() != null && event.getLevel() instanceof ClientLevel level) {
|
||||
ILevelHelper.LevelHelper.CLIENT.setLevel(null);
|
||||
if (event.getLevel() != null && event.getLevel() instanceof ServerLevel) {
|
||||
ILevelHelper.LevelHelper.SERVER.setLevel(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@ import net.minecraft.world.entity.player.Player;
|
|||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import top.r3944realms.lib39.example.client.screen.ForgeScreen;
|
||||
|
||||
|
|
@ -26,8 +28,13 @@ public class ForgeItem extends Item {
|
|||
@Override
|
||||
public @NotNull InteractionResultHolder<ItemStack> use(@NotNull Level level, @NotNull Player player, @NotNull InteractionHand usedHand) {
|
||||
if (level.isClientSide() && usedHand == InteractionHand.MAIN_HAND) {
|
||||
Minecraft.getInstance().setScreen(new ForgeScreen(usedHand, 0));
|
||||
clientUse(usedHand);
|
||||
}
|
||||
return super.use(level, player, usedHand);
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
private static void clientUse(@NotNull InteractionHand usedHand) {
|
||||
Minecraft.getInstance().setScreen(new ForgeScreen(usedHand, 0));
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +1,8 @@
|
|||
package top.r3944realms.lib39.util;
|
||||
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.LevelAccessor;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
|
|
@ -65,6 +66,7 @@ public interface ILevelHelper {
|
|||
* @return the client level
|
||||
*/
|
||||
@Nullable
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
static Level getClientLevel() {
|
||||
return LevelHelper.CLIENT.getLevel();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user