mirror of
https://github.com/lukasabbe/bookshelf-inspector.git
synced 2026-04-30 10:40:53 +00:00
Init for multiloader
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
plugins {
|
||||
id 'multiloader-loader'
|
||||
id 'net.neoforged.moddev'
|
||||
}
|
||||
repositories {
|
||||
maven { url "https://maven.shedaniel.me/" }
|
||||
mavenCentral()
|
||||
}
|
||||
neoForge {
|
||||
version = neoforge_version
|
||||
// Automatically enable neoforge AccessTransformers if the file exists
|
||||
def at = project(':common').file('src/main/resources/META-INF/accesstransformer.cfg')
|
||||
if (at.exists()) {
|
||||
accessTransformers.from(at.absolutePath)
|
||||
}
|
||||
parchment {
|
||||
minecraftVersion = parchment_minecraft
|
||||
mappingsVersion = parchment_version
|
||||
}
|
||||
dependencies {
|
||||
api "me.shedaniel.cloth:cloth-config-neoforge:${cloth_config}"
|
||||
}
|
||||
|
||||
runs {
|
||||
configureEach {
|
||||
systemProperty('neoforge.enabledGameTestNamespaces', mod_id)
|
||||
ideName = "NeoForge ${it.name.capitalize()} (${project.path})" // Unify the run config names with fabric
|
||||
}
|
||||
client {
|
||||
client()
|
||||
}
|
||||
data {
|
||||
clientData()
|
||||
}
|
||||
server {
|
||||
server()
|
||||
}
|
||||
}
|
||||
mods {
|
||||
"${mod_id}" {
|
||||
sourceSet sourceSets.main
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sourceSets.main.resources { srcDir 'src/generated/resources' }
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
package com.lukasabbe.bookshelfinspector;
|
||||
|
||||
import net.neoforged.bus.api.IEventBus;
|
||||
import net.neoforged.fml.ModList;
|
||||
import net.neoforged.fml.ModLoadingContext;
|
||||
import net.neoforged.fml.common.Mod;
|
||||
import net.neoforged.neoforge.client.gui.IConfigScreenFactory;
|
||||
|
||||
@Mod(Constants.MOD_ID)
|
||||
public class BookshelfInspectorNeoForge {
|
||||
|
||||
public BookshelfInspectorNeoForge(IEventBus eventBus) {
|
||||
EventHandler.init();
|
||||
eventBus.addListener(NetworkHandler::registerPayloads);
|
||||
BookshelfInspector.init();
|
||||
ModLoadingContext.get().registerExtensionPoint(IConfigScreenFactory.class, () -> (client, parent) -> ClothConfigGenerator.createConfig(parent));
|
||||
}
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package com.lukasabbe.bookshelfinspector;
|
||||
|
||||
import net.neoforged.api.distmarker.Dist;
|
||||
import net.neoforged.bus.api.IEventBus;
|
||||
import net.neoforged.fml.common.Mod;
|
||||
|
||||
@Mod(value = Constants.MOD_ID, dist = Dist.CLIENT)
|
||||
public class BookshelfInspectorNeoForgeClient {
|
||||
public BookshelfInspectorNeoForgeClient(IEventBus bus) {
|
||||
BookshelfInspectorClient.clientInit();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.lukasabbe.bookshelfinspector;
|
||||
|
||||
import me.shedaniel.clothconfig2.api.ConfigBuilder;
|
||||
import me.shedaniel.clothconfig2.api.ConfigEntryBuilder;
|
||||
import net.minecraft.client.gui.screens.Screen;
|
||||
import net.minecraft.network.chat.Component;
|
||||
|
||||
public class ClothConfigGenerator {
|
||||
public static Screen createConfig(Screen 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,30 @@
|
||||
package com.lukasabbe.bookshelfinspector;
|
||||
|
||||
import com.lukasabbe.bookshelfinspector.platform.handlers.OnPlayerDisconnectEvent;
|
||||
import com.lukasabbe.bookshelfinspector.platform.handlers.OnPlayerJoinEvent;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.neoforged.neoforge.client.event.ClientPlayerNetworkEvent;
|
||||
import net.neoforged.neoforge.common.NeoForge;
|
||||
import net.neoforged.neoforge.event.entity.player.PlayerEvent;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class EventHandler {
|
||||
public static List<OnPlayerJoinEvent> playerJoinEvents = new ArrayList<>();
|
||||
public static List<OnPlayerDisconnectEvent> playerDisconnectEvents = new ArrayList<>();
|
||||
|
||||
public static void init(){
|
||||
NeoForge.EVENT_BUS.addListener(EventHandler::onJoin);
|
||||
NeoForge.EVENT_BUS.addListener(EventHandler::onDisconnect);
|
||||
}
|
||||
|
||||
private static void onJoin(PlayerEvent.PlayerLoggedInEvent event){
|
||||
playerJoinEvents.forEach(onPlayerJoinEvent -> onPlayerJoinEvent.onPlayerJoin((ServerPlayer) event.getEntity(),event.getEntity().getServer()));
|
||||
}
|
||||
|
||||
private static void onDisconnect(ClientPlayerNetworkEvent.LoggingOut event){
|
||||
playerDisconnectEvents.forEach(OnPlayerDisconnectEvent::onDisconnect);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
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 net.minecraft.client.player.LocalPlayer;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.neoforged.bus.api.SubscribeEvent;
|
||||
import net.neoforged.neoforge.network.event.RegisterPayloadHandlersEvent;
|
||||
import net.neoforged.neoforge.network.registration.PayloadRegistrar;
|
||||
|
||||
public class NetworkHandler {
|
||||
|
||||
@SubscribeEvent
|
||||
public static void registerPayloads(final RegisterPayloadHandlersEvent event){
|
||||
final PayloadRegistrar registrar = event.registrar("1");
|
||||
registrar.playToServer(
|
||||
BookShelfInventoryRequestPayload.ID,
|
||||
BookShelfInventoryRequestPayload.CODEC,
|
||||
((payload, context) -> BookshelfInspector.networkHandlers.bookShelfInventoryRequestServerPayloadHandler.receive(payload, (ServerPlayer) context.player()))
|
||||
);
|
||||
registrar.playToServer(
|
||||
LecternInventoryRequestPayload.ID,
|
||||
LecternInventoryRequestPayload.CODEC,
|
||||
((payload, context) -> BookshelfInspector.networkHandlers.lecternInventoryRequestServerPayloadHandler.receive(payload, (ServerPlayer) context.player()))
|
||||
);
|
||||
registrar.playToClient(
|
||||
BookShelfInventoryPayload.ID,
|
||||
BookShelfInventoryPayload.CODEC,
|
||||
((payload, context) -> BookshelfInspector.networkHandlers.bookShelfInventoryHandlerServer.receive(payload, (LocalPlayer) context.player()))
|
||||
);
|
||||
registrar.playToClient(
|
||||
ModCheckPayload.ID,
|
||||
ModCheckPayload.CODEC,
|
||||
((payload, context) -> BookshelfInspector.networkHandlers.modServerPayloadHandler.receive(payload, (LocalPlayer) context.player()))
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
package com.lukasabbe.bookshelfinspector.platform;
|
||||
|
||||
import com.lukasabbe.bookshelfinspector.EventHandler;
|
||||
import com.lukasabbe.bookshelfinspector.platform.handlers.OnPlayerDisconnectEvent;
|
||||
import com.lukasabbe.bookshelfinspector.platform.handlers.OnPlayerJoinEvent;
|
||||
import com.lukasabbe.bookshelfinspector.platform.services.IEventHelper;
|
||||
|
||||
public class NeoForgeEventHelper implements IEventHelper {
|
||||
@Override
|
||||
public void registerOnPlayerJoinEvent(OnPlayerJoinEvent event) {
|
||||
EventHandler.playerJoinEvents.add(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerOnPlayerDisconnect(OnPlayerDisconnectEvent event) {
|
||||
EventHandler.playerDisconnectEvents.add(event);
|
||||
}
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
package com.lukasabbe.bookshelfinspector.platform;
|
||||
|
||||
import com.lukasabbe.bookshelfinspector.platform.services.INetworkHelper;
|
||||
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.neoforged.neoforge.network.PacketDistributor;
|
||||
|
||||
public class NeoForgeNetworkHelper implements INetworkHelper {
|
||||
@Override
|
||||
public void sendPacketFromServer(ServerPlayer player, CustomPacketPayload payload) {
|
||||
PacketDistributor.sendToPlayer(player, payload);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendPacketFromClient(CustomPacketPayload payload) {
|
||||
PacketDistributor.sendToServer(payload);
|
||||
}
|
||||
}
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
package com.lukasabbe.bookshelfinspector.platform;
|
||||
|
||||
import com.lukasabbe.bookshelfinspector.platform.services.IPlatformHelper;
|
||||
import net.neoforged.fml.ModContainer;
|
||||
import net.neoforged.fml.ModList;
|
||||
import net.neoforged.fml.config.ModConfig;
|
||||
import net.neoforged.fml.loading.FMLLoader;
|
||||
import net.neoforged.fml.loading.FMLPaths;
|
||||
|
||||
import java.nio.file.Path;
|
||||
|
||||
public class NeoForgePlatformHelper implements IPlatformHelper {
|
||||
|
||||
@Override
|
||||
public String getPlatformName() {
|
||||
|
||||
return "NeoForge";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isModLoaded(String modId) {
|
||||
|
||||
return ModList.get().isLoaded(modId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDevelopmentEnvironment() {
|
||||
|
||||
return !FMLLoader.isProduction();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Path getConfigPath(String file) {
|
||||
return FMLPaths.CONFIGDIR.get().resolve(file);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Path getFileInModContainer(String mod, String fileName) {
|
||||
if(ModList.get().getModContainerById(mod).isEmpty()) return null;
|
||||
ModContainer container = ModList.get().getModContainerById(mod).get();
|
||||
return container.getModInfo().getOwningFile().getFile().findResource(fileName);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
modLoader = "javafml" #mandatory
|
||||
loaderVersion = "${neoforge_loader_version_range}" #mandatory
|
||||
license = "${license}" # Review your options at https://choosealicense.com/.
|
||||
#issueTrackerURL="https://change.me.to.your.issue.tracker.example.invalid/" #optional
|
||||
[[mods]] #mandatory
|
||||
modId = "${mod_id}" #mandatory
|
||||
version = "${version}" #mandatory
|
||||
displayName = "${mod_name}" #mandatory
|
||||
#updateJSONURL="https://change.me.example.invalid/updates.json" #optional (see https://docs.neoforged.net/docs/misc/updatechecker/)
|
||||
#displayURL="https://change.me.to.your.mods.homepage.example.invalid/" #optional (displayed in the mod UI)
|
||||
logoFile="${mod_id}.png" #optional
|
||||
credits="${credits}" #optional
|
||||
authors = "${mod_author}" #optional
|
||||
description = '''${description}''' #mandatory (Supports multiline text)
|
||||
[[mixins]]
|
||||
config = "${mod_id}.mixins.json"
|
||||
[[dependencies.${mod_id}]] #optional
|
||||
modId = "neoforge" #mandatory
|
||||
type="required" #mandatory (Can be one of "required", "optional", "incompatible" or "discouraged")
|
||||
versionRange = "[${neoforge_version},)" #mandatory
|
||||
ordering = "NONE" # The order that this dependency should load in relation to your mod, required to be either 'BEFORE' or 'AFTER' if the dependency is not mandatory
|
||||
side = "BOTH" # Side this dependency is applied on - 'BOTH', 'CLIENT' or 'SERVER'
|
||||
[[dependencies.${mod_id}]]
|
||||
modId = "minecraft"
|
||||
type="required" #mandatory (Can be one of "required", "optional", "incompatible" or "discouraged")
|
||||
versionRange = "${minecraft_version_range}"
|
||||
ordering = "NONE"
|
||||
side = "BOTH"
|
||||
|
||||
# Features are specific properties of the game environment, that you may want to declare you require. This example declares
|
||||
# that your mod requires GL version 3.2 or higher. Other features will be added. They are side aware so declaring this won't
|
||||
# stop your mod loading on the server for example.
|
||||
#[features.${mod_id}]
|
||||
#openGLVersion="[3.2,)"
|
||||
+1
@@ -0,0 +1 @@
|
||||
com.lukasabbe.bookshelfinspector.platform.NeoForgeEventHelper
|
||||
+1
@@ -0,0 +1 @@
|
||||
com.lukasabbe.bookshelfinspector.platform.NeoForgeNetworkHelper
|
||||
+1
@@ -0,0 +1 @@
|
||||
com.lukasabbe.bookshelfinspector.platform.NeoForgePlatformHelper
|
||||
Reference in New Issue
Block a user