Move Client Side only code to the correct classes to prevent server crashes

This commit is contained in:
2022-09-25 13:36:23 +02:00
parent 0b22730703
commit f6e42cf502
17 changed files with 180 additions and 138 deletions

View File

@@ -2,23 +2,28 @@ package me.hypherionmc.craterlib.client;
import me.hypherionmc.craterlib.api.rendering.CustomRenderType;
import me.hypherionmc.craterlib.common.item.BlockItemDyable;
import me.hypherionmc.craterlib.network.CraterPacket;
import me.hypherionmc.craterlib.platform.services.LibClientHelper;
import me.hypherionmc.craterlib.systems.reg.RegistryObject;
import me.hypherionmc.craterlib.util.ColorPropertyFunction;
import net.fabricmc.api.EnvType;
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
import net.fabricmc.fabric.api.client.itemgroup.FabricItemGroupBuilder;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.fabricmc.fabric.api.networking.v1.PacketSender;
import net.fabricmc.fabric.api.object.builder.v1.client.model.FabricModelPredicateProviderRegistry;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.ClientPacketListener;
import net.minecraft.network.Connection;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.CreativeModeTab;
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.minecraft.world.level.block.Block;
import net.minecraft.world.level.material.Fluid;
import java.util.Collection;
import java.util.function.Supplier;
import java.util.function.Function;
/**
* @author HypherionSA
@@ -26,22 +31,6 @@ import java.util.function.Supplier;
*/
public class FabricClientHelper implements LibClientHelper {
@Override
public CreativeModeTab tabBuilder(String modid, String tabid, Supplier<ItemStack> icon, String backgroundSuf) {
FabricItemGroupBuilder tab = FabricItemGroupBuilder.create(new ResourceLocation(modid, tabid));
if (icon != null) {
tab.icon(icon);
}
CreativeModeTab tab1 = tab.build();
if (backgroundSuf != null && !backgroundSuf.isEmpty()) {
tab1.setBackgroundSuffix(backgroundSuf);
}
return tab1;
}
@Override
public void registerItemProperty(BlockItemDyable item, String property) {
if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) {
@@ -67,4 +56,32 @@ public class FabricClientHelper implements LibClientHelper {
}
});
}
@Override
public Minecraft getClientInstance() {
return Minecraft.getInstance();
}
@Override
public Player getClientPlayer() {
return Minecraft.getInstance().player;
}
@Override
public Level getClientLevel() {
return Minecraft.getInstance().level;
}
@Override
public Connection getClientConnection() {
return Minecraft.getInstance().getConnection().getConnection();
}
@Override
public void registerClientReceiver(ResourceLocation channelName, Function<FriendlyByteBuf, CraterPacket<?>> factory) {
ClientPlayNetworking.registerGlobalReceiver(channelName, (Minecraft client, ClientPacketListener handler, FriendlyByteBuf buf, PacketSender responseSender) -> {
CraterPacket<?> packet = factory.apply(buf);
client.execute(() -> packet.handle(client.player, client));
});
}
}

View File

@@ -4,14 +4,11 @@ import me.hypherionmc.craterlib.network.CraterNetworkHandler;
import me.hypherionmc.craterlib.network.CraterPacket;
import me.hypherionmc.craterlib.network.FabricNetworkHandler;
import me.hypherionmc.craterlib.platform.services.LibCommonHelper;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.fabricmc.fabric.api.client.itemgroup.FabricItemGroupBuilder;
import net.fabricmc.fabric.api.networking.v1.PacketSender;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
import net.fabricmc.fabric.api.screenhandler.v1.ExtendedScreenHandlerFactory;
import net.fabricmc.fabric.api.screenhandler.v1.ExtendedScreenHandlerType;
import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.ClientPacketListener;
import net.minecraft.network.Connection;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
@@ -23,12 +20,14 @@ import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraft.world.inventory.MenuType;
import net.minecraft.world.level.Level;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.ItemStack;
import org.apache.commons.lang3.function.TriFunction;
import org.jetbrains.annotations.Nullable;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
/**
* @author HypherionSA
@@ -43,39 +42,11 @@ public class FabricCommonHelper implements LibCommonHelper {
return FabricNetworkHandler.of(modid);
}
@Override
public Minecraft getClientInstance() {
return Minecraft.getInstance();
}
@Override
public Player getClientPlayer() {
return Minecraft.getInstance().player;
}
@Override
public Level getClientLevel() {
return Minecraft.getInstance().level;
}
@Override
public Connection getClientConnection() {
return Minecraft.getInstance().getConnection().getConnection();
}
@Override
public MinecraftServer getMCServer() {
return server;
}
@Override
public void registerClientReceiver(ResourceLocation channelName, Function<FriendlyByteBuf, CraterPacket<?>> factory) {
ClientPlayNetworking.registerGlobalReceiver(channelName, (Minecraft client, ClientPacketListener handler, FriendlyByteBuf buf, PacketSender responseSender) -> {
CraterPacket<?> packet = factory.apply(buf);
client.execute(() -> packet.handle(client.player, client));
});
}
@Override
public void registerServerReceiver(ResourceLocation channelName, Function<FriendlyByteBuf, CraterPacket<?>> factory) {
ServerPlayNetworking.registerGlobalReceiver(channelName, (MinecraftServer server, ServerPlayer player, ServerGamePacketListenerImpl handler, FriendlyByteBuf buf, PacketSender responseSender) -> {
@@ -111,4 +82,20 @@ public class FabricCommonHelper implements LibCommonHelper {
public <T extends AbstractContainerMenu> MenuType<T> createMenuType(TriFunction<Integer, Inventory, FriendlyByteBuf, T> constructor) {
return new ExtendedScreenHandlerType<>(constructor::apply);
}
@Override
public CreativeModeTab tabBuilder(String modid, String tabid, Supplier<ItemStack> icon, String backgroundSuf) {
FabricItemGroupBuilder tab = FabricItemGroupBuilder.create(new ResourceLocation(modid, tabid));
if (icon != null) {
tab.icon(icon);
}
CreativeModeTab tab1 = tab.build();
if (backgroundSuf != null && !backgroundSuf.isEmpty()) {
tab1.setBackgroundSuffix(backgroundSuf);
}
return tab1;
}
}

View File

@@ -7,8 +7,6 @@ import net.minecraft.SharedConstants;
import net.minecraft.client.Minecraft;
import java.io.File;
import java.nio.file.Path;
import java.nio.file.Paths;
/**
* @author HypherionSA

View File

@@ -1,6 +1,7 @@
package me.hypherionmc.craterlib.network;
import com.google.common.collect.Maps;
import me.hypherionmc.craterlib.platform.ClientPlatform;
import me.hypherionmc.craterlib.platform.Platform;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.fabricmc.fabric.api.networking.v1.PacketByteBufs;
@@ -40,7 +41,7 @@ public class FabricNetworkHandler implements CraterNetworkHandler {
final Function<FriendlyByteBuf, CraterPacket<?>> decoder = buf -> Util.make(supplier.get(), message -> message.read(buf));
switch (packetDirection) {
case TO_CLIENT -> Platform.COMMON_HELPER.registerClientReceiver(channelName, decoder);
case TO_CLIENT -> ClientPlatform.CLIENT_HELPER.registerClientReceiver(channelName, decoder);
case TO_SERVER -> Platform.COMMON_HELPER.registerServerReceiver(channelName, decoder);
}
}