Init for multiloader

This commit is contained in:
lukasabbe
2025-06-12 20:34:08 +02:00
commit 8f402847a0
78 changed files with 2313 additions and 0 deletions
@@ -0,0 +1,33 @@
package com.lukasabbe.bookshelfinspector;
import com.lukasabbe.bookshelfinspector.network.packets.BookShelfInventoryPayload;
import com.lukasabbe.bookshelfinspector.network.packets.BookShelfInventoryRequestPayload;
import com.lukasabbe.bookshelfinspector.network.packets.LecternInventoryRequestPayload;
import com.lukasabbe.bookshelfinspector.network.packets.ModCheckPayload;
import com.lukasabbe.bookshelfinspector.network.server.BookShelfInventoryRequestServerPayloadHandler;
import com.lukasabbe.bookshelfinspector.network.server.LecternInventoryRequestServerPayloadHandler;
import com.lukasabbe.bookshelfinspector.platform.Services;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
public class BookshelfInspectorFabric implements ModInitializer {
@Override
public void onInitialize() {
PayloadTypeRegistry.playC2S().register(BookShelfInventoryRequestPayload.ID, BookShelfInventoryRequestPayload.CODEC);
PayloadTypeRegistry.playC2S().register(LecternInventoryRequestPayload.ID, LecternInventoryRequestPayload.CODEC);
PayloadTypeRegistry.playS2C().register(BookShelfInventoryPayload.ID, BookShelfInventoryPayload.CODEC);
PayloadTypeRegistry.playS2C().register(ModCheckPayload.ID, ModCheckPayload.CODEC);
ServerPlayNetworking.registerGlobalReceiver(
BookShelfInventoryRequestPayload.ID,
(payload, context) -> BookshelfInspector.networkHandlers.bookShelfInventoryRequestServerPayloadHandler.receive(payload, context.player()));
ServerPlayNetworking.registerGlobalReceiver(
LecternInventoryRequestPayload.ID,
((payload, context) -> BookshelfInspector.networkHandlers.lecternInventoryRequestServerPayloadHandler.receive(payload, context.player())));
BookshelfInspector.init();
}
}
@@ -0,0 +1,19 @@
package com.lukasabbe.bookshelfinspector;
import com.lukasabbe.bookshelfinspector.network.packets.BookShelfInventoryPayload;
import com.lukasabbe.bookshelfinspector.network.packets.ModCheckPayload;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
public class BookshelfInspectorFabricClient implements ClientModInitializer {
@Override
public void onInitializeClient() {
ClientPlayNetworking.registerGlobalReceiver(
BookShelfInventoryPayload.ID,
((payload, context) -> BookshelfInspector.networkHandlers.bookShelfInventoryHandlerServer.receive(payload, context.player())));
ClientPlayNetworking.registerGlobalReceiver(
ModCheckPayload.ID,
((payload, context) -> BookshelfInspector.networkHandlers.modServerPayloadHandler.receive(payload, context.player())));
BookshelfInspectorClient.clientInit();
}
}
@@ -0,0 +1,42 @@
package com.lukasabbe.bookshelfinspector;
import com.terraformersmc.modmenu.api.ConfigScreenFactory;
import com.terraformersmc.modmenu.api.ModMenuApi;
import me.shedaniel.clothconfig2.api.ConfigBuilder;
import me.shedaniel.clothconfig2.api.ConfigEntryBuilder;
import net.minecraft.network.chat.Component;
public class ModMenu implements ModMenuApi {
@Override
public ConfigScreenFactory<?> getModConfigScreenFactory() {
return parent -> {
ConfigBuilder builder = ConfigBuilder
.create()
.setParentScreen(parent)
.setTitle(Component.translatable("bookshelfinspector.config.title"));
ConfigEntryBuilder entryBuilder = builder.entryBuilder();
builder
.getOrCreateCategory(Component.translatable("bookshelfinspector.config.category"))
.addEntry(entryBuilder
.startBooleanToggle(Component.translatable("bookshelfinspector.config.lectern.toggle"), BookshelfInspectorClient.config.lecternToggle)
.setTooltip(Component.translatable("bookshelfinspector.config.lectern.toggle.tooltip"))
.setDefaultValue(true)
.setSaveConsumer(val -> BookshelfInspectorClient.config.lecternToggle = val).build())
.addEntry(entryBuilder
.startIntSlider(Component.translatable("bookshelfinspector.config.scale"),BookshelfInspectorClient.config.scale,0,20)
.setTooltip(Component.translatable("bookshelfinspector.config.scale.tooltip"))
.setDefaultValue(10).setSaveConsumer(val -> BookshelfInspectorClient.config.scale = val)
.build())
.addEntry(entryBuilder
.startBooleanToggle(Component.translatable("bookshelfinspector.config.roman_scale"), BookshelfInspectorClient.config.useRoman)
.setTooltip(Component.translatable("bookshelfinspector.config.roman_scale.tooltip"))
.setDefaultValue(false)
.setSaveConsumer(val -> BookshelfInspectorClient.config.useRoman = val)
.build());
builder.setSavingRunnable(BookshelfInspectorClient.config::saveConfig);
return builder.build();
};
}
}
@@ -0,0 +1,19 @@
package com.lukasabbe.bookshelfinspector.platform;
import com.lukasabbe.bookshelfinspector.platform.handlers.OnPlayerDisconnectEvent;
import com.lukasabbe.bookshelfinspector.platform.handlers.OnPlayerJoinEvent;
import com.lukasabbe.bookshelfinspector.platform.services.IEventHelper;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
public class FabricEventHelper implements IEventHelper {
@Override
public void registerOnPlayerJoinEvent(OnPlayerJoinEvent event) {
ServerPlayConnectionEvents.JOIN.register((handler, sender, server) -> event.onPlayerJoin(handler.getPlayer(), server));
}
@Override
public void registerOnPlayerDisconnect(OnPlayerDisconnectEvent event) {
ClientPlayConnectionEvents.DISCONNECT.register((handler, client) -> event.onDisconnect());
}
}
@@ -0,0 +1,20 @@
package com.lukasabbe.bookshelfinspector.platform;
import com.lukasabbe.bookshelfinspector.platform.services.INetworkHelper;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
import net.minecraft.server.level.ServerPlayer;
public class FabricNetworkHelper implements INetworkHelper {
@Override
public void sendPacketFromServer(ServerPlayer player, CustomPacketPayload payload) {
ServerPlayNetworking.send(player, payload);
}
@Override
public void sendPacketFromClient(CustomPacketPayload payload) {
ClientPlayNetworking.send(payload);
}
}
@@ -0,0 +1,39 @@
package com.lukasabbe.bookshelfinspector.platform;
import com.lukasabbe.bookshelfinspector.platform.services.IPlatformHelper;
import net.fabricmc.loader.api.FabricLoader;
import net.fabricmc.loader.api.ModContainer;
import java.nio.file.Path;
public class FabricPlatformHelper implements IPlatformHelper {
@Override
public String getPlatformName() {
return "Fabric";
}
@Override
public boolean isModLoaded(String modId) {
return FabricLoader.getInstance().isModLoaded(modId);
}
@Override
public boolean isDevelopmentEnvironment() {
return FabricLoader.getInstance().isDevelopmentEnvironment();
}
@Override
public Path getConfigPath(String file) {
return FabricLoader.getInstance().getConfigDir().resolve(file);
}
@Override
public Path getFileInModContainer(String mod, String fileName) {
if(FabricLoader.getInstance().getModContainer(mod).isEmpty()) return null;
ModContainer modContainer = FabricLoader.getInstance().getModContainer(mod).get();
return modContainer.findPath(fileName).orElseThrow();
}
}
@@ -0,0 +1 @@
com.lukasabbe.bookshelfinspector.platform.FabricEventHelper
@@ -0,0 +1 @@
com.lukasabbe.bookshelfinspector.platform.FabricNetworkHelper
@@ -0,0 +1 @@
com.lukasabbe.bookshelfinspector.platform.FabricPlatformHelper
+38
View File
@@ -0,0 +1,38 @@
{
"schemaVersion": 1,
"id": "${mod_id}",
"version": "${version}",
"name": "${mod_name}",
"description": "${description}",
"authors": [
"${mod_author}"
],
"contact": {
"homepage": "https://modrinth.com/mod/bookshelf-inspector",
"sources": "https://github.com/lukasabbe/bookshelf-inspector"
},
"license": "${license}",
"environment": "*",
"icon": "assets/bookshelfinspector/icon.png",
"entrypoints": {
"main": [
"com.lukasabbe.bookshelfinspector.BookshelfInspectorFabric"
],
"client": [
"com.lukasabbe.bookshelfinspector.BookshelfInspectorFabricClient"
],
"modmenu": [
"com.lukasabbe.bookshelfinspector.ModMenu"
]
},
"mixins": [
"bookshelfinspector.mixins.json"
],
"depends": {
"fabricloader": ">=${fabric_loader_version}",
"fabric-api": "*",
"minecraft": "~${minecraft_version}",
"java": ">=${java_version}"
}
}