Some code cleanup and API changes
This commit is contained in:
@@ -10,6 +10,10 @@ import net.minecraft.world.item.ItemStack;
|
|||||||
|
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author HypherionSA
|
||||||
|
* Helper class to create custom creative tabs from modules
|
||||||
|
*/
|
||||||
public class CraterCreativeModeTab implements Supplier<CreativeModeTab> {
|
public class CraterCreativeModeTab implements Supplier<CreativeModeTab> {
|
||||||
|
|
||||||
private final ResourceLocation resourceLocation;
|
private final ResourceLocation resourceLocation;
|
||||||
@@ -69,7 +73,6 @@ public class CraterCreativeModeTab implements Supplier<CreativeModeTab> {
|
|||||||
public CraterCreativeModeTab build() {
|
public CraterCreativeModeTab build() {
|
||||||
return new CraterCreativeModeTab(this);
|
return new CraterCreativeModeTab(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -3,6 +3,10 @@ package com.hypherionmc.craterlib.api.event.client;
|
|||||||
import com.hypherionmc.craterlib.core.event.CraterEvent;
|
import com.hypherionmc.craterlib.core.event.CraterEvent;
|
||||||
import net.minecraft.client.multiplayer.ClientLevel;
|
import net.minecraft.client.multiplayer.ClientLevel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author HypherionSA
|
||||||
|
* Cross Modloader Client Tick Event.
|
||||||
|
*/
|
||||||
public class CraterClientTickEvent extends CraterEvent {
|
public class CraterClientTickEvent extends CraterEvent {
|
||||||
|
|
||||||
private final ClientLevel level;
|
private final ClientLevel level;
|
||||||
|
@@ -4,12 +4,12 @@ import com.hypherionmc.craterlib.core.event.CraterEvent;
|
|||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.Options;
|
import net.minecraft.client.Options;
|
||||||
|
|
||||||
public class EarlyInitEvent extends CraterEvent {
|
public class LateInitEvent extends CraterEvent {
|
||||||
|
|
||||||
private final Minecraft minecraft;
|
private final Minecraft minecraft;
|
||||||
private final Options options;
|
private final Options options;
|
||||||
|
|
||||||
public EarlyInitEvent(Minecraft minecraft, Options options) {
|
public LateInitEvent(Minecraft minecraft, Options options) {
|
||||||
this.minecraft = minecraft;
|
this.minecraft = minecraft;
|
||||||
this.options = options;
|
this.options = options;
|
||||||
}
|
}
|
@@ -54,7 +54,7 @@ public class ClientRegistry {
|
|||||||
* @param blockEntityRendererFactory The renderer factory
|
* @param blockEntityRendererFactory The renderer factory
|
||||||
*/
|
*/
|
||||||
public static void registerBlockEntityRenderer(@NotNull BlockEntityType<? extends BlockEntity> blockEntityType, @NotNull BlockEntityRendererProvider blockEntityRendererFactory) {
|
public static void registerBlockEntityRenderer(@NotNull BlockEntityType<? extends BlockEntity> blockEntityType, @NotNull BlockEntityRendererProvider blockEntityRendererFactory) {
|
||||||
ClientPlatform.CLIENT_HELPER.registerBlockEntityRenderer(blockEntityType, blockEntityRendererFactory);
|
ClientPlatform.INSTANCE.registerBlockEntityRenderer(blockEntityType, blockEntityRendererFactory);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -1,7 +1,6 @@
|
|||||||
package com.hypherionmc.craterlib.common.blockentity;
|
package com.hypherionmc.craterlib.common.blockentity;
|
||||||
|
|
||||||
import com.hypherionmc.craterlib.api.blockentity.caps.CraterCapabilityHandler;
|
import com.hypherionmc.craterlib.api.blockentity.caps.CraterCapabilityHandler;
|
||||||
import com.hypherionmc.craterlib.core.platform.Platform;
|
|
||||||
import com.hypherionmc.craterlib.core.systems.fluid.CraterFluidTank;
|
import com.hypherionmc.craterlib.core.systems.fluid.CraterFluidTank;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
|
@@ -3,8 +3,8 @@ package com.hypherionmc.craterlib.common.item;
|
|||||||
import com.hypherionmc.craterlib.api.rendering.DyableBlock;
|
import com.hypherionmc.craterlib.api.rendering.DyableBlock;
|
||||||
import com.hypherionmc.craterlib.api.rendering.ItemDyable;
|
import com.hypherionmc.craterlib.api.rendering.ItemDyable;
|
||||||
import com.hypherionmc.craterlib.core.platform.ClientPlatform;
|
import com.hypherionmc.craterlib.core.platform.ClientPlatform;
|
||||||
import com.hypherionmc.craterlib.core.platform.Platform;
|
import com.hypherionmc.craterlib.core.platform.Environment;
|
||||||
import com.hypherionmc.craterlib.core.platform.services.Environment;
|
import com.hypherionmc.craterlib.core.platform.ModloaderEnvironment;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.world.item.BlockItem;
|
import net.minecraft.world.item.BlockItem;
|
||||||
@@ -27,8 +27,8 @@ public class BlockItemDyable extends BlockItem implements ItemDyable {
|
|||||||
public BlockItemDyable(Block block, Properties properties) {
|
public BlockItemDyable(Block block, Properties properties) {
|
||||||
super(block, properties);
|
super(block, properties);
|
||||||
|
|
||||||
if (Platform.LOADER.getEnvironment() == Environment.CLIENT) {
|
if (ModloaderEnvironment.INSTANCE.getEnvironment() == Environment.CLIENT) {
|
||||||
ClientPlatform.CLIENT_HELPER.registerItemProperty(this, "color");
|
ClientPlatform.INSTANCE.registerItemProperty(this, "color");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -62,11 +62,11 @@ public final class CraterEventBus {
|
|||||||
for (Method m : c.getMethods()) {
|
for (Method m : c.getMethods()) {
|
||||||
if (isClass && Modifier.isStatic(m.getModifiers())) {
|
if (isClass && Modifier.isStatic(m.getModifiers())) {
|
||||||
EventMethod em = EventMethod.tryCreateFrom(new AnalyzedMethod(m, c));
|
EventMethod em = EventMethod.tryCreateFrom(new AnalyzedMethod(m, c));
|
||||||
if (em != null) l.add(em);
|
if ((em != null) && this.hasEventAnnotation(em)) l.add(em);
|
||||||
}
|
}
|
||||||
if (!isClass && !Modifier.isStatic(m.getModifiers())) {
|
if (!isClass && !Modifier.isStatic(m.getModifiers())) {
|
||||||
EventMethod em = EventMethod.tryCreateFrom(new AnalyzedMethod(m, objectOrClass));
|
EventMethod em = EventMethod.tryCreateFrom(new AnalyzedMethod(m, objectOrClass));
|
||||||
if (em != null) l.add(em);
|
if ((em != null) && this.hasEventAnnotation(em)) l.add(em);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -76,6 +76,13 @@ public final class CraterEventBus {
|
|||||||
return l;
|
return l;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean hasEventAnnotation(EventMethod m) {
|
||||||
|
for (Annotation a : m.annotations) {
|
||||||
|
if (a instanceof CraterEventListener) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public void registerListener(Consumer<CraterEvent> listener, Class<? extends CraterEvent> eventType) {
|
public void registerListener(Consumer<CraterEvent> listener, Class<? extends CraterEvent> eventType) {
|
||||||
this.registerListener(listener, eventType, 0);
|
this.registerListener(listener, eventType, 0);
|
||||||
}
|
}
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
package com.hypherionmc.craterlib.core.network;
|
package com.hypherionmc.craterlib.core.network;
|
||||||
|
|
||||||
import com.hypherionmc.craterlib.core.platform.ClientPlatform;
|
import com.hypherionmc.craterlib.core.platform.ClientPlatform;
|
||||||
import com.hypherionmc.craterlib.core.platform.Platform;
|
import com.hypherionmc.craterlib.core.platform.CommonPlatform;
|
||||||
import net.minecraft.network.protocol.Packet;
|
import net.minecraft.network.protocol.Packet;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ public interface CraterNetworkHandler {
|
|||||||
Packet<?> toClientBound(CraterPacket<?> packet);
|
Packet<?> toClientBound(CraterPacket<?> packet);
|
||||||
|
|
||||||
default void sendToServer(CraterPacket<?> packet) {
|
default void sendToServer(CraterPacket<?> packet) {
|
||||||
ClientPlatform.CLIENT_HELPER.getClientConnection().send(this.toServerBound(packet));
|
ClientPlatform.INSTANCE.getClientConnection().send(this.toServerBound(packet));
|
||||||
}
|
}
|
||||||
|
|
||||||
default void sendTo(CraterPacket<?> packet, ServerPlayer player) {
|
default void sendTo(CraterPacket<?> packet, ServerPlayer player) {
|
||||||
@@ -27,7 +27,7 @@ public interface CraterNetworkHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
default void sendToAll(CraterPacket<?> packet) {
|
default void sendToAll(CraterPacket<?> packet) {
|
||||||
Platform.COMMON_HELPER.getMCServer().getPlayerList().broadcastAll(this.toClientBound(packet));
|
CommonPlatform.INSTANCE.getMCServer().getPlayerList().broadcastAll(this.toClientBound(packet));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -1,23 +1,39 @@
|
|||||||
package com.hypherionmc.craterlib.core.platform;
|
package com.hypherionmc.craterlib.core.platform;
|
||||||
|
|
||||||
import com.hypherionmc.craterlib.CraterConstants;
|
import com.hypherionmc.craterlib.common.item.BlockItemDyable;
|
||||||
import com.hypherionmc.craterlib.core.platform.services.LibClientHelper;
|
import com.hypherionmc.craterlib.core.systems.reg.RegistryObject;
|
||||||
|
import com.hypherionmc.craterlib.util.ServiceUtil;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
|
||||||
|
import net.minecraft.network.Connection;
|
||||||
|
import net.minecraft.world.entity.player.Player;
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import net.minecraft.world.level.block.Block;
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.ServiceLoader;
|
import java.util.Collection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author HypherionSA
|
* @author HypherionSA
|
||||||
*/
|
*/
|
||||||
public class ClientPlatform {
|
public interface ClientPlatform {
|
||||||
|
|
||||||
public static final LibClientHelper CLIENT_HELPER = load(LibClientHelper.class);
|
public final ClientPlatform INSTANCE = ServiceUtil.load(ClientPlatform.class);
|
||||||
|
|
||||||
public static <T> T load(Class<T> clazz) {
|
void registerItemProperty(@NotNull BlockItemDyable item, @NotNull String property);
|
||||||
|
|
||||||
|
void registerCustomRenderTypes(@NotNull Collection<RegistryObject<Block>> blocks);
|
||||||
|
|
||||||
|
Minecraft getClientInstance();
|
||||||
|
|
||||||
|
Player getClientPlayer();
|
||||||
|
|
||||||
|
Level getClientLevel();
|
||||||
|
|
||||||
|
Connection getClientConnection();
|
||||||
|
|
||||||
|
void registerBlockEntityRenderer(@NotNull BlockEntityType<? extends BlockEntity> blockEntityType, @NotNull BlockEntityRendererProvider blockEntityRendererFactory);
|
||||||
|
|
||||||
final T loadedService = ServiceLoader.load(clazz)
|
|
||||||
.findFirst()
|
|
||||||
.orElseThrow(() -> new NullPointerException("Failed to load service for " + clazz.getName()));
|
|
||||||
CraterConstants.LOG.debug("Loaded {} for service {}", loadedService, clazz);
|
|
||||||
return loadedService;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -1,7 +1,8 @@
|
|||||||
package com.hypherionmc.craterlib.core.platform.services;
|
package com.hypherionmc.craterlib.core.platform;
|
||||||
|
|
||||||
import com.hypherionmc.craterlib.api.blockentity.caps.CraterCapabilityHandler;
|
import com.hypherionmc.craterlib.api.blockentity.caps.CraterCapabilityHandler;
|
||||||
import com.hypherionmc.craterlib.core.network.CraterNetworkHandler;
|
import com.hypherionmc.craterlib.core.network.CraterNetworkHandler;
|
||||||
|
import com.hypherionmc.craterlib.util.ServiceUtil;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.network.FriendlyByteBuf;
|
import net.minecraft.network.FriendlyByteBuf;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
@@ -20,12 +21,22 @@ import java.util.function.Consumer;
|
|||||||
/**
|
/**
|
||||||
* @author HypherionSA
|
* @author HypherionSA
|
||||||
*/
|
*/
|
||||||
public interface LibCommonHelper {
|
public interface CommonPlatform {
|
||||||
|
|
||||||
CraterNetworkHandler createPacketHandler(String modid);
|
public CommonPlatform INSTANCE = ServiceUtil.load(CommonPlatform.class);
|
||||||
|
|
||||||
|
default CraterNetworkHandler createPacketHandler(String modid) {
|
||||||
|
return this.createPacketHandler(modid, true, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
CraterNetworkHandler createPacketHandler(String modid, boolean requiredClient, boolean requiredServer);
|
||||||
|
|
||||||
MinecraftServer getMCServer();
|
MinecraftServer getMCServer();
|
||||||
|
|
||||||
|
default void openMenu(ServerPlayer player, MenuProvider menuProvider) {
|
||||||
|
this.openMenu(player, menuProvider, null);
|
||||||
|
}
|
||||||
|
|
||||||
void openMenu(ServerPlayer player, MenuProvider menu, @Nullable Consumer<FriendlyByteBuf> initialData);
|
void openMenu(ServerPlayer player, MenuProvider menu, @Nullable Consumer<FriendlyByteBuf> initialData);
|
||||||
|
|
||||||
<T extends AbstractContainerMenu> MenuType<T> createMenuType(TriFunction<Integer, Inventory, FriendlyByteBuf, T> constructor);
|
<T extends AbstractContainerMenu> MenuType<T> createMenuType(TriFunction<Integer, Inventory, FriendlyByteBuf, T> constructor);
|
@@ -1,8 +1,9 @@
|
|||||||
package com.hypherionmc.craterlib.core.platform.services;
|
package com.hypherionmc.craterlib.core.platform;
|
||||||
|
|
||||||
import com.hypherionmc.craterlib.core.systems.fluid.CraterFluidTank;
|
import com.hypherionmc.craterlib.core.systems.fluid.CraterFluidTank;
|
||||||
import com.hypherionmc.craterlib.core.systems.fluid.FluidHolder;
|
import com.hypherionmc.craterlib.core.systems.fluid.FluidHolder;
|
||||||
import com.hypherionmc.craterlib.core.systems.fluid.ICraterFluidHandler;
|
import com.hypherionmc.craterlib.core.systems.fluid.ICraterFluidHandler;
|
||||||
|
import com.hypherionmc.craterlib.util.ServiceUtil;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
@@ -16,7 +17,9 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
/**
|
/**
|
||||||
* @author HypherionSA
|
* @author HypherionSA
|
||||||
*/
|
*/
|
||||||
public interface LibFluidHelper {
|
public interface CraterFluidHelper {
|
||||||
|
|
||||||
|
public CraterFluidHelper INSTANCE = ServiceUtil.load(CraterFluidHelper.class);
|
||||||
|
|
||||||
CraterFluidTank createFluidTank(int capacity);
|
CraterFluidTank createFluidTank(int capacity);
|
||||||
|
|
@@ -0,0 +1,18 @@
|
|||||||
|
package com.hypherionmc.craterlib.core.platform;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author HypherionSA
|
||||||
|
*/
|
||||||
|
public enum Environment {
|
||||||
|
CLIENT,
|
||||||
|
SERVER,
|
||||||
|
UNKNOWN;
|
||||||
|
|
||||||
|
public boolean isClient() {
|
||||||
|
return this == CLIENT;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isServer() {
|
||||||
|
return this == SERVER;
|
||||||
|
}
|
||||||
|
}
|
@@ -1,4 +1,6 @@
|
|||||||
package com.hypherionmc.craterlib.core.platform.services;
|
package com.hypherionmc.craterlib.core.platform;
|
||||||
|
|
||||||
|
import com.hypherionmc.craterlib.util.ServiceUtil;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
@@ -6,7 +8,9 @@ import java.io.File;
|
|||||||
* @author HypherionSA
|
* @author HypherionSA
|
||||||
* Helper class to provide information about the ModLoader
|
* Helper class to provide information about the ModLoader
|
||||||
*/
|
*/
|
||||||
public interface ILoaderHelper {
|
public interface ModloaderEnvironment {
|
||||||
|
|
||||||
|
public final ModloaderEnvironment INSTANCE = ServiceUtil.load(ModloaderEnvironment.class);
|
||||||
|
|
||||||
boolean isFabric();
|
boolean isFabric();
|
||||||
String getGameVersion();
|
String getGameVersion();
|
@@ -1,29 +0,0 @@
|
|||||||
package com.hypherionmc.craterlib.core.platform;
|
|
||||||
|
|
||||||
import com.hypherionmc.craterlib.CraterConstants;
|
|
||||||
import com.hypherionmc.craterlib.core.platform.services.ILoaderHelper;
|
|
||||||
import com.hypherionmc.craterlib.core.platform.services.LibCommonHelper;
|
|
||||||
import com.hypherionmc.craterlib.core.platform.services.LibFluidHelper;
|
|
||||||
|
|
||||||
import java.util.ServiceLoader;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author HypherionSA
|
|
||||||
*/
|
|
||||||
public class Platform {
|
|
||||||
|
|
||||||
public static final ILoaderHelper LOADER = load(ILoaderHelper.class);
|
|
||||||
|
|
||||||
public static final LibCommonHelper COMMON_HELPER = load(LibCommonHelper.class);
|
|
||||||
|
|
||||||
public static final LibFluidHelper FLUID_HELPER = load(LibFluidHelper.class);
|
|
||||||
|
|
||||||
public static <T> T load(Class<T> clazz) {
|
|
||||||
|
|
||||||
final T loadedService = ServiceLoader.load(clazz)
|
|
||||||
.findFirst()
|
|
||||||
.orElseThrow(() -> new NullPointerException("Failed to load service for " + clazz.getName()));
|
|
||||||
CraterConstants.LOG.debug("Loaded {} for service {}", loadedService, clazz);
|
|
||||||
return loadedService;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,10 +0,0 @@
|
|||||||
package com.hypherionmc.craterlib.core.platform.services;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author HypherionSA
|
|
||||||
*/
|
|
||||||
public enum Environment {
|
|
||||||
CLIENT,
|
|
||||||
SERVER,
|
|
||||||
UNKNOWN
|
|
||||||
}
|
|
@@ -1,40 +0,0 @@
|
|||||||
package com.hypherionmc.craterlib.core.platform.services;
|
|
||||||
|
|
||||||
import com.hypherionmc.craterlib.common.item.BlockItemDyable;
|
|
||||||
import com.hypherionmc.craterlib.core.systems.reg.RegistryObject;
|
|
||||||
import net.minecraft.client.Minecraft;
|
|
||||||
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
|
|
||||||
import net.minecraft.network.Connection;
|
|
||||||
import net.minecraft.world.entity.player.Player;
|
|
||||||
import net.minecraft.world.item.Item;
|
|
||||||
import net.minecraft.world.level.Level;
|
|
||||||
import net.minecraft.world.level.block.Block;
|
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
|
||||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author HypherionSA
|
|
||||||
*/
|
|
||||||
public interface LibClientHelper {
|
|
||||||
|
|
||||||
void registerItemProperty(@NotNull BlockItemDyable item, @NotNull String property);
|
|
||||||
|
|
||||||
void registerCustomRenderTypes(
|
|
||||||
@NotNull Collection<RegistryObject<Block>> blocks,
|
|
||||||
@NotNull Collection<RegistryObject<Item>> items
|
|
||||||
);
|
|
||||||
|
|
||||||
Minecraft getClientInstance();
|
|
||||||
|
|
||||||
Player getClientPlayer();
|
|
||||||
|
|
||||||
Level getClientLevel();
|
|
||||||
|
|
||||||
Connection getClientConnection();
|
|
||||||
|
|
||||||
void registerBlockEntityRenderer(@NotNull BlockEntityType<? extends BlockEntity> blockEntityType, @NotNull BlockEntityRendererProvider blockEntityRendererFactory);
|
|
||||||
|
|
||||||
}
|
|
@@ -1,6 +1,6 @@
|
|||||||
package com.hypherionmc.craterlib.mixin.events.client;
|
package com.hypherionmc.craterlib.mixin.events.client;
|
||||||
|
|
||||||
import com.hypherionmc.craterlib.api.event.client.EarlyInitEvent;
|
import com.hypherionmc.craterlib.api.event.client.LateInitEvent;
|
||||||
import com.hypherionmc.craterlib.core.event.CraterEventBus;
|
import com.hypherionmc.craterlib.core.event.CraterEventBus;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.Options;
|
import net.minecraft.client.Options;
|
||||||
@@ -15,7 +15,7 @@ public class TutorialMixin {
|
|||||||
|
|
||||||
@Inject(method = "<init>", at = @At("RETURN"))
|
@Inject(method = "<init>", at = @At("RETURN"))
|
||||||
private void injectEarlyInitEvent(Minecraft minecraft, Options options, CallbackInfo ci) {
|
private void injectEarlyInitEvent(Minecraft minecraft, Options options, CallbackInfo ci) {
|
||||||
EarlyInitEvent event = new EarlyInitEvent(minecraft, options);
|
LateInitEvent event = new LateInitEvent(minecraft, options);
|
||||||
CraterEventBus.INSTANCE.postEvent(event);
|
CraterEventBus.INSTANCE.postEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -25,7 +25,7 @@ public class RenderUtils {
|
|||||||
public static Component getFluidAmount(long amount, long capacity) {
|
public static Component getFluidAmount(long amount, long capacity) {
|
||||||
amount = amount / 81;
|
amount = amount / 81;
|
||||||
capacity = capacity / 81;
|
capacity = capacity / 81;
|
||||||
String text = "" + (int) (((float) amount / capacity) * 100);
|
String text = String.valueOf((int) (((float) amount / capacity) * 100));
|
||||||
return amount > 0 ? Component.literal(ChatFormatting.AQUA + text + "%") : Component.literal(text + "%");
|
return amount > 0 ? Component.literal(ChatFormatting.AQUA + text + "%") : Component.literal(text + "%");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -0,0 +1,27 @@
|
|||||||
|
package com.hypherionmc.craterlib.util;
|
||||||
|
|
||||||
|
import com.hypherionmc.craterlib.CraterConstants;
|
||||||
|
|
||||||
|
import java.util.ServiceLoader;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author HypherionSA
|
||||||
|
* Utility class to handle SPI loading
|
||||||
|
*/
|
||||||
|
public class ServiceUtil {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Try to load a service
|
||||||
|
* @param clazz The service class type to load
|
||||||
|
* @return The loaded class
|
||||||
|
*/
|
||||||
|
public static <T> T load(Class<T> clazz) {
|
||||||
|
|
||||||
|
final T loadedService = ServiceLoader.load(clazz)
|
||||||
|
.findFirst()
|
||||||
|
.orElseThrow(() -> new NullPointerException("Failed to load service for " + clazz.getName()));
|
||||||
|
CraterConstants.LOG.debug("Loaded {} for service {}", loadedService, clazz);
|
||||||
|
return loadedService;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -1,6 +1,6 @@
|
|||||||
package com.hypherionmc.craterlib;
|
package com.hypherionmc.craterlib;
|
||||||
|
|
||||||
import com.hypherionmc.craterlib.common.FabricCommonHelper;
|
import com.hypherionmc.craterlib.common.FabricCommonPlatform;
|
||||||
import net.fabricmc.api.ModInitializer;
|
import net.fabricmc.api.ModInitializer;
|
||||||
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
|
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
|
||||||
|
|
||||||
@@ -8,6 +8,6 @@ public class CraterLibInitializer implements ModInitializer {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInitialize() {
|
public void onInitialize() {
|
||||||
ServerLifecycleEvents.SERVER_STARTING.register(server -> FabricCommonHelper.server = server);
|
ServerLifecycleEvents.SERVER_STARTING.register(server -> FabricCommonPlatform.server = server);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,20 +1,46 @@
|
|||||||
package com.hypherionmc.craterlib.client;
|
package com.hypherionmc.craterlib.client;
|
||||||
|
|
||||||
import com.hypherionmc.craterlib.api.event.client.CraterClientTickEvent;
|
import com.hypherionmc.craterlib.api.event.client.CraterClientTickEvent;
|
||||||
|
import com.hypherionmc.craterlib.api.event.client.LateInitEvent;
|
||||||
import com.hypherionmc.craterlib.core.event.CraterEventBus;
|
import com.hypherionmc.craterlib.core.event.CraterEventBus;
|
||||||
|
import com.hypherionmc.craterlib.core.event.annot.CraterEventListener;
|
||||||
|
import com.hypherionmc.craterlib.core.systems.internal.CreativeTabRegistry;
|
||||||
import net.fabricmc.api.ClientModInitializer;
|
import net.fabricmc.api.ClientModInitializer;
|
||||||
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
|
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
|
||||||
|
import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup;
|
||||||
import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents;
|
import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.world.item.CreativeModeTab;
|
||||||
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
|
|
||||||
public class CraterLibClientInitializer implements ClientModInitializer {
|
public class CraterLibClientInitializer implements ClientModInitializer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInitializeClient() {
|
public void onInitializeClient() {
|
||||||
ItemGroupEvents.MODIFY_ENTRIES_ALL.register(FabricClientHelper::registerCreativeItems);
|
|
||||||
|
|
||||||
ClientTickEvents.START_CLIENT_TICK.register((listener) -> {
|
ClientTickEvents.START_CLIENT_TICK.register((listener) -> {
|
||||||
CraterClientTickEvent event = new CraterClientTickEvent(listener.level);
|
CraterClientTickEvent event = new CraterClientTickEvent(listener.level);
|
||||||
CraterEventBus.INSTANCE.postEvent(event);
|
CraterEventBus.INSTANCE.postEvent(event);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
CraterEventBus.INSTANCE.registerEventListener(CraterLibClientInitializer.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@CraterEventListener
|
||||||
|
public static void lateInitEvent(LateInitEvent event) {
|
||||||
|
CreativeTabRegistry.getTabs().forEach(tab -> {
|
||||||
|
CreativeModeTab finalTab = FabricItemGroup.builder()
|
||||||
|
.title(Component.translatable("itemGroup." +
|
||||||
|
tab.getResourceLocation().toString().replace(":", ".")
|
||||||
|
))
|
||||||
|
.icon(tab.getIcon())
|
||||||
|
.build();
|
||||||
|
|
||||||
|
tab.setTab(finalTab);
|
||||||
|
|
||||||
|
ItemGroupEvents.modifyEntriesEvent(tab.getResourceKey()).register(entries -> CreativeTabRegistry
|
||||||
|
.getTabItems()
|
||||||
|
.stream().filter(t -> t.getLeft().get() == finalTab && t.getRight() != null)
|
||||||
|
.map(Pair::getRight).forEach(itm -> entries.accept(itm.get())));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -2,58 +2,47 @@ package com.hypherionmc.craterlib.client;
|
|||||||
|
|
||||||
import com.hypherionmc.craterlib.api.rendering.CustomRenderType;
|
import com.hypherionmc.craterlib.api.rendering.CustomRenderType;
|
||||||
import com.hypherionmc.craterlib.common.item.BlockItemDyable;
|
import com.hypherionmc.craterlib.common.item.BlockItemDyable;
|
||||||
import com.hypherionmc.craterlib.core.platform.services.LibClientHelper;
|
import com.hypherionmc.craterlib.core.platform.ClientPlatform;
|
||||||
import com.hypherionmc.craterlib.core.systems.reg.RegistryObject;
|
import com.hypherionmc.craterlib.core.systems.reg.RegistryObject;
|
||||||
import com.hypherionmc.craterlib.util.ColorPropertyFunction;
|
import com.hypherionmc.craterlib.util.ColorPropertyFunction;
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
|
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
|
||||||
import net.fabricmc.fabric.api.client.rendering.v1.BlockEntityRendererRegistry;
|
|
||||||
import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroupEntries;
|
|
||||||
import net.fabricmc.fabric.api.object.builder.v1.client.model.FabricModelPredicateProviderRegistry;
|
|
||||||
import net.fabricmc.loader.api.FabricLoader;
|
import net.fabricmc.loader.api.FabricLoader;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
|
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
|
||||||
|
import net.minecraft.client.renderer.blockentity.BlockEntityRenderers;
|
||||||
|
import net.minecraft.client.renderer.item.ItemProperties;
|
||||||
import net.minecraft.network.Connection;
|
import net.minecraft.network.Connection;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.item.CreativeModeTab;
|
|
||||||
import net.minecraft.world.item.Item;
|
import net.minecraft.world.item.Item;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author HypherionSA
|
* @author HypherionSA
|
||||||
*/
|
*/
|
||||||
public class FabricClientHelper implements LibClientHelper {
|
public class FabricClientPlatform implements ClientPlatform {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void registerItemProperty(BlockItemDyable item, String property) {
|
public void registerItemProperty(@NotNull BlockItemDyable item, @NotNull String property) {
|
||||||
if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) {
|
if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) {
|
||||||
FabricModelPredicateProviderRegistry.register(item, new ResourceLocation(property), new ColorPropertyFunction(item));
|
ItemProperties.register(item, new ResourceLocation(property), new ColorPropertyFunction(item));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void registerCustomRenderTypes(Collection<RegistryObject<Block>> blocks, Collection<RegistryObject<Item>> items) {
|
public void registerCustomRenderTypes(Collection<RegistryObject<Block>> blocks) {
|
||||||
blocks.forEach(blk -> {
|
blocks.forEach(blk -> {
|
||||||
if (blk.get() instanceof CustomRenderType type) {
|
if (blk.get() instanceof CustomRenderType type) {
|
||||||
BlockRenderLayerMap.INSTANCE.putBlock(blk.get(), type.getCustomRenderType());
|
BlockRenderLayerMap.INSTANCE.putBlock(blk.get(), type.getCustomRenderType());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
items.forEach(itm -> {
|
|
||||||
if (itm.get() instanceof BlockItemDyable dyable && dyable.getBlock() instanceof CustomRenderType customRenderType) {
|
|
||||||
BlockRenderLayerMap.INSTANCE.putItem(itm.get(), customRenderType.getCustomRenderType());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (itm.get() instanceof CustomRenderType customRenderType) {
|
|
||||||
BlockRenderLayerMap.INSTANCE.putItem(itm.get(), customRenderType.getCustomRenderType());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -76,12 +65,8 @@ public class FabricClientHelper implements LibClientHelper {
|
|||||||
return Minecraft.getInstance().getConnection().getConnection();
|
return Minecraft.getInstance().getConnection().getConnection();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void registerCreativeItems(CreativeModeTab tab, FabricItemGroupEntries entries) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void registerBlockEntityRenderer(BlockEntityType<? extends BlockEntity> blockEntityType, BlockEntityRendererProvider blockEntityRendererFactory) {
|
public void registerBlockEntityRenderer(@NotNull BlockEntityType<? extends BlockEntity> blockEntityType, @NotNull BlockEntityRendererProvider blockEntityRendererFactory) {
|
||||||
BlockEntityRendererRegistry.register(blockEntityType, blockEntityRendererFactory);
|
BlockEntityRenderers.register(blockEntityType, blockEntityRendererFactory);
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,2 +0,0 @@
|
|||||||
package com.hypherionmc.craterlib.client;public class FabricNetworkHelper {
|
|
||||||
}
|
|
@@ -3,7 +3,7 @@ package com.hypherionmc.craterlib.common;
|
|||||||
import com.hypherionmc.craterlib.api.blockentity.caps.CraterCapabilityHandler;
|
import com.hypherionmc.craterlib.api.blockentity.caps.CraterCapabilityHandler;
|
||||||
import com.hypherionmc.craterlib.api.blockentity.caps.ICraterCapProvider;
|
import com.hypherionmc.craterlib.api.blockentity.caps.ICraterCapProvider;
|
||||||
import com.hypherionmc.craterlib.core.network.CraterNetworkHandler;
|
import com.hypherionmc.craterlib.core.network.CraterNetworkHandler;
|
||||||
import com.hypherionmc.craterlib.core.platform.services.LibCommonHelper;
|
import com.hypherionmc.craterlib.core.platform.CommonPlatform;
|
||||||
import com.hypherionmc.craterlib.network.FabricNetworkHandler;
|
import com.hypherionmc.craterlib.network.FabricNetworkHandler;
|
||||||
import net.fabricmc.fabric.api.screenhandler.v1.ExtendedScreenHandlerFactory;
|
import net.fabricmc.fabric.api.screenhandler.v1.ExtendedScreenHandlerFactory;
|
||||||
import net.fabricmc.fabric.api.screenhandler.v1.ExtendedScreenHandlerType;
|
import net.fabricmc.fabric.api.screenhandler.v1.ExtendedScreenHandlerType;
|
||||||
@@ -19,6 +19,7 @@ import net.minecraft.world.inventory.AbstractContainerMenu;
|
|||||||
import net.minecraft.world.inventory.MenuType;
|
import net.minecraft.world.inventory.MenuType;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
import org.apache.commons.lang3.function.TriFunction;
|
import org.apache.commons.lang3.function.TriFunction;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
@@ -27,12 +28,12 @@ import java.util.function.Consumer;
|
|||||||
/**
|
/**
|
||||||
* @author HypherionSA
|
* @author HypherionSA
|
||||||
*/
|
*/
|
||||||
public class FabricCommonHelper implements LibCommonHelper {
|
public class FabricCommonPlatform implements CommonPlatform {
|
||||||
|
|
||||||
public static MinecraftServer server;
|
public static MinecraftServer server;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CraterNetworkHandler createPacketHandler(String modid) {
|
public CraterNetworkHandler createPacketHandler(String modid, boolean requireClient, boolean requireServer) {
|
||||||
return FabricNetworkHandler.of(modid);
|
return FabricNetworkHandler.of(modid);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -50,13 +51,13 @@ public class FabricCommonHelper implements LibCommonHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Component getDisplayName() {
|
public @NotNull Component getDisplayName() {
|
||||||
return menu.getDisplayName();
|
return menu.getDisplayName();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public AbstractContainerMenu createMenu(int i, Inventory inventory, Player player) {
|
public AbstractContainerMenu createMenu(int i, @NotNull Inventory inventory, @NotNull Player player) {
|
||||||
return menu.createMenu(i, inventory, player);
|
return menu.createMenu(i, inventory, player);
|
||||||
}
|
}
|
||||||
};
|
};
|
@@ -1,6 +1,6 @@
|
|||||||
package com.hypherionmc.craterlib.common;
|
package com.hypherionmc.craterlib.common;
|
||||||
|
|
||||||
import com.hypherionmc.craterlib.core.platform.services.LibFluidHelper;
|
import com.hypherionmc.craterlib.core.platform.CraterFluidHelper;
|
||||||
import com.hypherionmc.craterlib.core.systems.fluid.CraterFluidTank;
|
import com.hypherionmc.craterlib.core.systems.fluid.CraterFluidTank;
|
||||||
import com.hypherionmc.craterlib.core.systems.fluid.FluidHolder;
|
import com.hypherionmc.craterlib.core.systems.fluid.FluidHolder;
|
||||||
import com.hypherionmc.craterlib.core.systems.fluid.ICraterFluidHandler;
|
import com.hypherionmc.craterlib.core.systems.fluid.ICraterFluidHandler;
|
||||||
@@ -26,7 +26,7 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
public class FabricFluidHelper implements LibFluidHelper {
|
public class FabricFluidHelper implements CraterFluidHelper {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CraterFluidTank createFluidTank(int capacity) {
|
public CraterFluidTank createFluidTank(int capacity) {
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
package com.hypherionmc.craterlib.common;
|
package com.hypherionmc.craterlib.common;
|
||||||
|
|
||||||
import com.hypherionmc.craterlib.core.platform.services.Environment;
|
import com.hypherionmc.craterlib.core.platform.Environment;
|
||||||
import com.hypherionmc.craterlib.core.platform.services.ILoaderHelper;
|
import com.hypherionmc.craterlib.core.platform.ModloaderEnvironment;
|
||||||
import net.fabricmc.loader.api.FabricLoader;
|
import net.fabricmc.loader.api.FabricLoader;
|
||||||
import net.minecraft.SharedConstants;
|
import net.minecraft.SharedConstants;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
@@ -12,7 +12,7 @@ import java.io.File;
|
|||||||
* @author HypherionSA
|
* @author HypherionSA
|
||||||
* @date 07/08/2022
|
* @date 07/08/2022
|
||||||
*/
|
*/
|
||||||
public class FabricLoaderHelper implements ILoaderHelper {
|
public class FabricLoaderHelper implements ModloaderEnvironment {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isFabric() {
|
public boolean isFabric() {
|
||||||
|
@@ -1,38 +0,0 @@
|
|||||||
package com.hypherionmc.craterlib.mixin;
|
|
||||||
|
|
||||||
import com.hypherionmc.craterlib.core.systems.internal.CreativeTabRegistry;
|
|
||||||
import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup;
|
|
||||||
import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents;
|
|
||||||
import net.minecraft.client.Minecraft;
|
|
||||||
import net.minecraft.client.main.GameConfig;
|
|
||||||
import net.minecraft.network.chat.Component;
|
|
||||||
import net.minecraft.world.item.CreativeModeTab;
|
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
|
|
||||||
@Mixin(Minecraft.class)
|
|
||||||
public class FabricMinecraftMixin {
|
|
||||||
|
|
||||||
@Inject(method = "<init>", at = @At("RETURN"))
|
|
||||||
private void injectCraterLateInit(GameConfig gameConfig, CallbackInfo ci) {
|
|
||||||
CreativeTabRegistry.getTabs().forEach(tab -> {
|
|
||||||
CreativeModeTab finalTab = FabricItemGroup.builder()
|
|
||||||
.title(Component.translatable("itemGroup." +
|
|
||||||
tab.getResourceLocation().toString().replace(":", ".")
|
|
||||||
))
|
|
||||||
.icon(tab.getIcon())
|
|
||||||
.build();
|
|
||||||
|
|
||||||
tab.setTab(finalTab);
|
|
||||||
|
|
||||||
ItemGroupEvents.modifyEntriesEvent(tab.getResourceKey()).register(entries -> CreativeTabRegistry
|
|
||||||
.getTabItems()
|
|
||||||
.stream().filter(t -> t.getLeft().get() == finalTab && t.getRight() != null)
|
|
||||||
.map(Pair::getRight).forEach(itm -> entries.accept(itm.get())));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -8,13 +8,14 @@ import net.minecraft.client.Minecraft;
|
|||||||
import net.minecraft.client.multiplayer.ClientPacketListener;
|
import net.minecraft.client.multiplayer.ClientPacketListener;
|
||||||
import net.minecraft.network.FriendlyByteBuf;
|
import net.minecraft.network.FriendlyByteBuf;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
public class FabricClientNetworkHelper implements FabricNetworkHelper {
|
public class FabricClientNetworkHelper implements FabricNetworkHelper {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void registerClientReceiver(ResourceLocation channelName, Function<FriendlyByteBuf, CraterPacket<?>> factory) {
|
public void registerClientReceiver(@NotNull ResourceLocation channelName, @NotNull Function<FriendlyByteBuf, CraterPacket<?>> factory) {
|
||||||
ClientPlayNetworking.registerGlobalReceiver(channelName, (Minecraft client, ClientPacketListener handler, FriendlyByteBuf buf, PacketSender responseSender) -> {
|
ClientPlayNetworking.registerGlobalReceiver(channelName, (Minecraft client, ClientPacketListener handler, FriendlyByteBuf buf, PacketSender responseSender) -> {
|
||||||
CraterPacket<?> packet = factory.apply(buf);
|
CraterPacket<?> packet = factory.apply(buf);
|
||||||
client.execute(() -> packet.handle(client.player, client));
|
client.execute(() -> packet.handle(client.player, client));
|
||||||
|
@@ -0,0 +1 @@
|
|||||||
|
com.hypherionmc.craterlib.client.FabricClientPlatform
|
@@ -0,0 +1 @@
|
|||||||
|
com.hypherionmc.craterlib.common.FabricCommonPlatform
|
@@ -1 +0,0 @@
|
|||||||
com.hypherionmc.craterlib.client.FabricClientHelper
|
|
@@ -1 +0,0 @@
|
|||||||
com.hypherionmc.craterlib.common.FabricCommonHelper
|
|
@@ -6,7 +6,6 @@
|
|||||||
"mixins": [
|
"mixins": [
|
||||||
],
|
],
|
||||||
"client": [
|
"client": [
|
||||||
"FabricMinecraftMixin"
|
|
||||||
],
|
],
|
||||||
"server": [
|
"server": [
|
||||||
],
|
],
|
||||||
|
Reference in New Issue
Block a user