mirror of
https://github.com/lukasabbe/bookshelf-inspector.git
synced 2026-04-30 10:40:53 +00:00
@@ -1,5 +1,5 @@
|
|||||||
name: build
|
name: build
|
||||||
on: [push, pull_request]
|
on: [push]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
|||||||
+2
-3
@@ -1,7 +1,6 @@
|
|||||||
plugins {
|
plugins {
|
||||||
// see https://fabricmc.net/develop/ for new versions
|
// see https://fabricmc.net/develop/ for new versions
|
||||||
id 'fabric-loom' version '1.10-SNAPSHOT' apply false
|
id 'fabric-loom' version '1.11-SNAPSHOT' apply false
|
||||||
// see https://projects.neoforged.net/neoforged/moddevgradle for new versions
|
// see https://projects.neoforged.net/neoforged/moddevgradle for new versions
|
||||||
id 'net.neoforged.moddev' version '2.0.97' apply false
|
id 'net.neoforged.moddev' version '2.0.112' apply false
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -19,7 +19,7 @@ public class Config {
|
|||||||
|
|
||||||
public void loadConfig(){
|
public void loadConfig(){
|
||||||
Path configPath = Services.PLATFORM.getConfigPath("bookshelfinspector-config.yml");
|
Path configPath = Services.PLATFORM.getConfigPath("bookshelfinspector-config.yml");
|
||||||
if(!Files.exists(configPath))createConfig(configPath);
|
if(!Files.exists(configPath)) createConfig(configPath);
|
||||||
Yaml yaml = new Yaml();
|
Yaml yaml = new Yaml();
|
||||||
try{
|
try{
|
||||||
Map<String, Object> configMap = yaml.load(new FileReader(configPath.toFile()));
|
Map<String, Object> configMap = yaml.load(new FileReader(configPath.toFile()));
|
||||||
@@ -39,7 +39,8 @@ public class Config {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void createConfig(Path configPath){
|
private void createConfig(Path configPath){
|
||||||
Path defaultConfigPath = Services.PLATFORM.getFileInModContainer("bookshelfinspector", "bookshelfinspector-config.yml");
|
Path defaultConfigPath = Services.PLATFORM.getFileOrCopyInModContainer("bookshelfinspector", "bookshelfinspector-config.yml");
|
||||||
|
if(defaultConfigPath == null) return;
|
||||||
try {
|
try {
|
||||||
Files.copy(defaultConfigPath, configPath);
|
Files.copy(defaultConfigPath, configPath);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
package com.lukasabbe.bookshelfinspector.mixin;
|
|
||||||
|
|
||||||
import net.minecraft.world.level.block.ChiseledBookShelfBlock;
|
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
|
||||||
import net.minecraft.world.phys.BlockHitResult;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.gen.Invoker;
|
|
||||||
|
|
||||||
import java.util.OptionalInt;
|
|
||||||
|
|
||||||
@Mixin(ChiseledBookShelfBlock.class)
|
|
||||||
public interface BookshelfInvoker {
|
|
||||||
@Invoker("getHitSlot")
|
|
||||||
OptionalInt invokerGetSlotForHitPos(BlockHitResult hit, BlockState state);
|
|
||||||
}
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.lukasabbe.bookshelfinspector.mixin;
|
package com.lukasabbe.bookshelfinspector.mixin;
|
||||||
|
|
||||||
import com.lukasabbe.bookshelfinspector.Constants;
|
|
||||||
import com.lukasabbe.bookshelfinspector.renderer.Inspector;
|
import com.lukasabbe.bookshelfinspector.renderer.Inspector;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.player.LocalPlayer;
|
import net.minecraft.client.player.LocalPlayer;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.lukasabbe.bookshelfinspector.mixin;
|
package com.lukasabbe.bookshelfinspector.mixin;
|
||||||
|
|
||||||
import com.lukasabbe.bookshelfinspector.Constants;
|
|
||||||
import com.lukasabbe.bookshelfinspector.renderer.HudRenderer;
|
import com.lukasabbe.bookshelfinspector.renderer.HudRenderer;
|
||||||
import net.minecraft.client.DeltaTracker;
|
import net.minecraft.client.DeltaTracker;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
|||||||
+1
-8
@@ -7,14 +7,7 @@ public interface IPlatformHelper {
|
|||||||
|
|
||||||
boolean isModLoaded(String modId);
|
boolean isModLoaded(String modId);
|
||||||
|
|
||||||
boolean isDevelopmentEnvironment();
|
|
||||||
|
|
||||||
Path getConfigPath(String file);
|
Path getConfigPath(String file);
|
||||||
|
|
||||||
Path getFileInModContainer(String mod, String fileName);
|
Path getFileOrCopyInModContainer(String mod, String fileName);
|
||||||
|
|
||||||
default String getEnvironmentName() {
|
|
||||||
|
|
||||||
return isDevelopmentEnvironment() ? "development" : "production";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,8 @@
|
|||||||
package com.lukasabbe.bookshelfinspector.renderer;
|
package com.lukasabbe.bookshelfinspector.renderer;
|
||||||
|
|
||||||
import com.lukasabbe.bookshelfinspector.BookshelfInspectorClient;
|
import com.lukasabbe.bookshelfinspector.BookshelfInspectorClient;
|
||||||
import com.lukasabbe.bookshelfinspector.Constants;
|
|
||||||
import com.lukasabbe.bookshelfinspector.data.BookData;
|
import com.lukasabbe.bookshelfinspector.data.BookData;
|
||||||
import com.lukasabbe.bookshelfinspector.util.RomanNumerals;
|
import com.lukasabbe.bookshelfinspector.util.RomanNumerals;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
|
||||||
import net.minecraft.ChatFormatting;
|
import net.minecraft.ChatFormatting;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.gui.Font;
|
import net.minecraft.client.gui.Font;
|
||||||
|
|||||||
@@ -3,13 +3,11 @@ package com.lukasabbe.bookshelfinspector.renderer;
|
|||||||
import com.lukasabbe.bookshelfinspector.BookshelfInspectorClient;
|
import com.lukasabbe.bookshelfinspector.BookshelfInspectorClient;
|
||||||
import com.lukasabbe.bookshelfinspector.data.BookData;
|
import com.lukasabbe.bookshelfinspector.data.BookData;
|
||||||
import com.lukasabbe.bookshelfinspector.data.Tags;
|
import com.lukasabbe.bookshelfinspector.data.Tags;
|
||||||
import com.lukasabbe.bookshelfinspector.mixin.BookshelfInvoker;
|
|
||||||
import com.lukasabbe.bookshelfinspector.network.packets.BookShelfInventoryRequestPayload;
|
import com.lukasabbe.bookshelfinspector.network.packets.BookShelfInventoryRequestPayload;
|
||||||
import com.lukasabbe.bookshelfinspector.network.packets.LecternInventoryRequestPayload;
|
import com.lukasabbe.bookshelfinspector.network.packets.LecternInventoryRequestPayload;
|
||||||
import com.lukasabbe.bookshelfinspector.platform.Services;
|
import com.lukasabbe.bookshelfinspector.platform.Services;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.world.level.block.Blocks;
|
|
||||||
import net.minecraft.world.level.block.ChiseledBookShelfBlock;
|
import net.minecraft.world.level.block.ChiseledBookShelfBlock;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.phys.BlockHitResult;
|
import net.minecraft.world.phys.BlockHitResult;
|
||||||
@@ -23,9 +21,9 @@ public class Inspector {
|
|||||||
public void inspect(Minecraft client){
|
public void inspect(Minecraft client){
|
||||||
if(!modAvailable) return;
|
if(!modAvailable) return;
|
||||||
|
|
||||||
if(client.cameraEntity == null || client.player == null) return;
|
if(client.getCameraEntity() == null || client.player == null) return;
|
||||||
|
|
||||||
HitResult hit = client.cameraEntity.pick(5f,0f,false);
|
HitResult hit = client.getCameraEntity().pick(5f,0f,false);
|
||||||
|
|
||||||
//find block hit, if not found block returns
|
//find block hit, if not found block returns
|
||||||
final HitResult.Type type = hit.getType();
|
final HitResult.Type type = hit.getType();
|
||||||
@@ -81,7 +79,7 @@ public class Inspector {
|
|||||||
|
|
||||||
//Gets index position for a book in the bookshelf
|
//Gets index position for a book in the bookshelf
|
||||||
ChiseledBookShelfBlock bookshelfBlock = (ChiseledBookShelfBlock) blockState.getBlock();
|
ChiseledBookShelfBlock bookshelfBlock = (ChiseledBookShelfBlock) blockState.getBlock();
|
||||||
OptionalInt optionalInt = ((BookshelfInvoker)bookshelfBlock).invokerGetSlotForHitPos(blockHitResult,blockState);
|
OptionalInt optionalInt = bookshelfBlock.getHitSlot(blockHitResult, blockState.getValue(ChiseledBookShelfBlock.FACING));
|
||||||
|
|
||||||
//if the position is empty, return
|
//if the position is empty, return
|
||||||
if(optionalInt.isEmpty()) {
|
if(optionalInt.isEmpty()) {
|
||||||
|
|||||||
@@ -8,8 +8,7 @@
|
|||||||
],
|
],
|
||||||
"client": [
|
"client": [
|
||||||
"BookshelfMixin",
|
"BookshelfMixin",
|
||||||
"InGameHudMixin",
|
"InGameHudMixin"
|
||||||
"BookshelfInvoker"
|
|
||||||
],
|
],
|
||||||
"server": [],
|
"server": [],
|
||||||
"injectors": {
|
"injectors": {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id 'multiloader-loader'
|
id 'multiloader-loader'
|
||||||
id 'fabric-loom'
|
id 'fabric-loom'
|
||||||
|
id "com.modrinth.minotaur" version "2.+"
|
||||||
}
|
}
|
||||||
repositories {
|
repositories {
|
||||||
maven { url "https://maven.shedaniel.me/" }
|
maven { url "https://maven.shedaniel.me/" }
|
||||||
@@ -44,4 +45,25 @@ loom {
|
|||||||
runDir('runs/server')
|
runDir('runs/server')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
modrinth {
|
||||||
|
token = System.getenv("MODRINTH_TOKEN")
|
||||||
|
projectId = "rOrXjyPb" // https://modrinth.com/mod/bookshelf-inspector
|
||||||
|
version = project.version
|
||||||
|
versionType = project.versionType
|
||||||
|
uploadFile = remapJar
|
||||||
|
gameVersions = [project.minecraft_version]
|
||||||
|
loaders = ["fabric"]
|
||||||
|
if(project.versionType == "beta" || project.versionType == "alpha"){
|
||||||
|
dependencies {
|
||||||
|
required.project "fabric-api"
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
dependencies {
|
||||||
|
required.project "fabric-api"
|
||||||
|
required.project "cloth-config"
|
||||||
|
required.project "modmenu"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+2
-1
@@ -1,5 +1,6 @@
|
|||||||
package com.lukasabbe.bookshelfinspector;
|
package com.lukasabbe.bookshelfinspector.config;
|
||||||
|
|
||||||
|
import com.lukasabbe.bookshelfinspector.BookshelfInspectorClient;
|
||||||
import com.terraformersmc.modmenu.api.ConfigScreenFactory;
|
import com.terraformersmc.modmenu.api.ConfigScreenFactory;
|
||||||
import com.terraformersmc.modmenu.api.ModMenuApi;
|
import com.terraformersmc.modmenu.api.ModMenuApi;
|
||||||
import me.shedaniel.clothconfig2.api.ConfigBuilder;
|
import me.shedaniel.clothconfig2.api.ConfigBuilder;
|
||||||
+1
-8
@@ -15,23 +15,16 @@ public class FabricPlatformHelper implements IPlatformHelper {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isModLoaded(String modId) {
|
public boolean isModLoaded(String modId) {
|
||||||
|
|
||||||
return FabricLoader.getInstance().isModLoaded(modId);
|
return FabricLoader.getInstance().isModLoaded(modId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isDevelopmentEnvironment() {
|
|
||||||
|
|
||||||
return FabricLoader.getInstance().isDevelopmentEnvironment();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Path getConfigPath(String file) {
|
public Path getConfigPath(String file) {
|
||||||
return FabricLoader.getInstance().getConfigDir().resolve(file);
|
return FabricLoader.getInstance().getConfigDir().resolve(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Path getFileInModContainer(String mod, String fileName) {
|
public Path getFileOrCopyInModContainer(String mod, String fileName) {
|
||||||
if(FabricLoader.getInstance().getModContainer(mod).isEmpty()) return null;
|
if(FabricLoader.getInstance().getModContainer(mod).isEmpty()) return null;
|
||||||
ModContainer modContainer = FabricLoader.getInstance().getModContainer(mod).get();
|
ModContainer modContainer = FabricLoader.getInstance().getModContainer(mod).get();
|
||||||
return modContainer.findPath(fileName).orElseThrow();
|
return modContainer.findPath(fileName).orElseThrow();
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
"com.lukasabbe.bookshelfinspector.BookshelfInspectorFabricClient"
|
"com.lukasabbe.bookshelfinspector.BookshelfInspectorFabricClient"
|
||||||
],
|
],
|
||||||
"modmenu": [
|
"modmenu": [
|
||||||
"com.lukasabbe.bookshelfinspector.ModMenu"
|
"com.lukasabbe.bookshelfinspector.config.ModMenu"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"mixins": [
|
"mixins": [
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
"depends": {
|
"depends": {
|
||||||
"fabricloader": ">=${fabric_loader_version}",
|
"fabricloader": ">=${fabric_loader_version}",
|
||||||
"fabric-api": "*",
|
"fabric-api": "*",
|
||||||
"minecraft": "~${minecraft_version}",
|
"minecraft": "~1.21.9-beta.1",
|
||||||
"java": ">=${java_version}"
|
"java": ">=${java_version}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+15
-11
@@ -1,28 +1,32 @@
|
|||||||
version=2.1+1.21.8
|
version=2.1+1.21.10
|
||||||
|
|
||||||
|
# release, beta & alpha
|
||||||
|
versionType=release
|
||||||
group=com.lukasabbe.bookshelfinspector
|
group=com.lukasabbe.bookshelfinspector
|
||||||
java_version=21
|
java_version=21
|
||||||
|
|
||||||
# Common
|
# Common
|
||||||
minecraft_version=1.21.8
|
minecraft_version=1.21.10
|
||||||
mod_name=BookshelfInspector
|
mod_name=BookshelfInspector
|
||||||
mod_author=Lukasabbe
|
mod_author=Lukasabbe
|
||||||
mod_id=bookshelfinspector
|
mod_id=bookshelfinspector
|
||||||
license=MIT
|
license=MIT
|
||||||
credits=
|
credits=
|
||||||
description=Inspect any book in a chiseled bookshelf.
|
description=Inspect any book in a chiseled bookshelf.
|
||||||
minecraft_version_range=[1.21.8, 1.22)
|
minecraft_version_range=[1.21.10, 1.22)
|
||||||
|
|
||||||
neo_form_version=1.21.8-20250717.133445
|
# https://projects.neoforged.net/neoforged/neoform
|
||||||
|
neo_form_version=1.21.10-20251007.142004
|
||||||
# The version of ParchmentMC that is used, see https://parchmentmc.org/docs/getting-started#choose-a-version for new versions
|
# The version of ParchmentMC that is used, see https://parchmentmc.org/docs/getting-started#choose-a-version for new versions
|
||||||
parchment_minecraft=1.21.8
|
parchment_minecraft=1.21.9
|
||||||
parchment_version=2025.07.20
|
parchment_version=2025.10.05
|
||||||
|
|
||||||
# Fabric
|
# Fabric
|
||||||
fabric_version=0.132.0+1.21.8
|
fabric_version=0.134.1+1.21.10
|
||||||
fabric_loader_version=0.17.2
|
fabric_loader_version=0.17.2
|
||||||
|
|
||||||
# NeoForge
|
# NeoForge
|
||||||
neoforge_version=21.8.39
|
neoforge_version=21.10.1-beta
|
||||||
neoforge_loader_version_range=[4,)
|
neoforge_loader_version_range=[4,)
|
||||||
|
|
||||||
# Gradle
|
# Gradle
|
||||||
@@ -30,6 +34,6 @@ org.gradle.jvmargs=-Xmx3G
|
|||||||
org.gradle.daemon=false
|
org.gradle.daemon=false
|
||||||
|
|
||||||
# Global dep
|
# Global dep
|
||||||
YAML_snake=2.4
|
YAML_snake=2.5
|
||||||
cloth_config=19.0.147
|
cloth_config=20.0.148
|
||||||
mod_menu=15.0.0-beta.3
|
mod_menu=16.0.0-rc.1
|
||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip
|
||||||
networkTimeout=10000
|
networkTimeout=10000
|
||||||
validateDistributionUrl=true
|
validateDistributionUrl=true
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
|||||||
+22
-2
@@ -1,6 +1,7 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id 'multiloader-loader'
|
id 'multiloader-loader'
|
||||||
id 'net.neoforged.moddev'
|
id 'net.neoforged.moddev'
|
||||||
|
id "com.modrinth.minotaur" version "2.+"
|
||||||
}
|
}
|
||||||
repositories {
|
repositories {
|
||||||
maven { url "https://maven.shedaniel.me/" }
|
maven { url "https://maven.shedaniel.me/" }
|
||||||
@@ -45,7 +46,26 @@ neoForge {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
jarJar(implementation("org.yaml:snakeyaml:2.4")){}
|
jarJar(implementation("org.yaml:snakeyaml:2.4")){}
|
||||||
additionalRuntimeClasspath "org.yaml:snakeyaml:2.4"
|
runtimeOnly "org.yaml:snakeyaml:2.4"
|
||||||
}
|
}
|
||||||
|
|
||||||
sourceSets.main.resources { srcDir 'src/generated/resources' }
|
sourceSets.main.resources { srcDir 'src/generated/resources' }
|
||||||
|
|
||||||
|
sourceSets.main.resources { srcDir 'src/generated/resources' }
|
||||||
|
|
||||||
|
modrinth {
|
||||||
|
token = System.getenv("MODRINTH_TOKEN")
|
||||||
|
projectId = "rOrXjyPb" // https://modrinth.com/mod/bookshelf-inspector
|
||||||
|
version = project.version
|
||||||
|
versionType = project.versionType
|
||||||
|
uploadFile = jar
|
||||||
|
gameVersions = [project.minecraft_version]
|
||||||
|
loaders = ["neoforge"]
|
||||||
|
if(project.versionType == "beta" || project.versionType == "alpha"){
|
||||||
|
dependencies {}
|
||||||
|
}else{
|
||||||
|
dependencies {
|
||||||
|
required.project "cloth-config"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
-1
@@ -1,11 +1,12 @@
|
|||||||
package com.lukasabbe.bookshelfinspector;
|
package com.lukasabbe.bookshelfinspector;
|
||||||
|
|
||||||
|
import com.lukasabbe.bookshelfinspector.util.EventHandler;
|
||||||
|
import com.lukasabbe.bookshelfinspector.util.NetworkHandler;
|
||||||
import net.neoforged.bus.api.IEventBus;
|
import net.neoforged.bus.api.IEventBus;
|
||||||
import net.neoforged.fml.common.Mod;
|
import net.neoforged.fml.common.Mod;
|
||||||
|
|
||||||
@Mod(value = Constants.MOD_ID)
|
@Mod(value = Constants.MOD_ID)
|
||||||
public class BookshelfInspectorNeoForge {
|
public class BookshelfInspectorNeoForge {
|
||||||
|
|
||||||
public BookshelfInspectorNeoForge(IEventBus eventBus) {
|
public BookshelfInspectorNeoForge(IEventBus eventBus) {
|
||||||
EventHandler.initServer();
|
EventHandler.initServer();
|
||||||
eventBus.addListener(NetworkHandler::registerPayloads);
|
eventBus.addListener(NetworkHandler::registerPayloads);
|
||||||
|
|||||||
+2
@@ -1,5 +1,7 @@
|
|||||||
package com.lukasabbe.bookshelfinspector;
|
package com.lukasabbe.bookshelfinspector;
|
||||||
|
|
||||||
|
import com.lukasabbe.bookshelfinspector.config.ClothConfigGenerator;
|
||||||
|
import com.lukasabbe.bookshelfinspector.util.EventHandler;
|
||||||
import net.neoforged.api.distmarker.Dist;
|
import net.neoforged.api.distmarker.Dist;
|
||||||
import net.neoforged.bus.api.IEventBus;
|
import net.neoforged.bus.api.IEventBus;
|
||||||
import net.neoforged.fml.ModLoadingContext;
|
import net.neoforged.fml.ModLoadingContext;
|
||||||
|
|||||||
+3
-2
@@ -1,5 +1,6 @@
|
|||||||
package com.lukasabbe.bookshelfinspector;
|
package com.lukasabbe.bookshelfinspector.config;
|
||||||
|
|
||||||
|
import com.lukasabbe.bookshelfinspector.BookshelfInspectorClient;
|
||||||
import me.shedaniel.clothconfig2.api.ConfigBuilder;
|
import me.shedaniel.clothconfig2.api.ConfigBuilder;
|
||||||
import me.shedaniel.clothconfig2.api.ConfigEntryBuilder;
|
import me.shedaniel.clothconfig2.api.ConfigEntryBuilder;
|
||||||
import net.minecraft.client.gui.screens.Screen;
|
import net.minecraft.client.gui.screens.Screen;
|
||||||
@@ -35,4 +36,4 @@ public class ClothConfigGenerator {
|
|||||||
builder.setSavingRunnable(BookshelfInspectorClient.config::saveConfig);
|
builder.setSavingRunnable(BookshelfInspectorClient.config::saveConfig);
|
||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+2
-4
@@ -1,6 +1,6 @@
|
|||||||
package com.lukasabbe.bookshelfinspector.platform;
|
package com.lukasabbe.bookshelfinspector.platform;
|
||||||
|
|
||||||
import com.lukasabbe.bookshelfinspector.EventHandler;
|
import com.lukasabbe.bookshelfinspector.util.EventHandler;
|
||||||
import com.lukasabbe.bookshelfinspector.platform.handlers.OnPlayerDisconnectEvent;
|
import com.lukasabbe.bookshelfinspector.platform.handlers.OnPlayerDisconnectEvent;
|
||||||
import com.lukasabbe.bookshelfinspector.platform.handlers.OnPlayerJoinEvent;
|
import com.lukasabbe.bookshelfinspector.platform.handlers.OnPlayerJoinEvent;
|
||||||
import com.lukasabbe.bookshelfinspector.platform.services.IEventHelper;
|
import com.lukasabbe.bookshelfinspector.platform.services.IEventHelper;
|
||||||
@@ -12,7 +12,5 @@ public class NeoForgeEventHelper implements IEventHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void registerOnPlayerDisconnect(OnPlayerDisconnectEvent event) {
|
public void registerOnPlayerDisconnect(OnPlayerDisconnectEvent event) { EventHandler.playerDisconnectEvents.add(event); }
|
||||||
EventHandler.playerDisconnectEvents.add(event);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+15
-9
@@ -7,7 +7,9 @@ import net.neoforged.fml.config.ModConfig;
|
|||||||
import net.neoforged.fml.loading.FMLLoader;
|
import net.neoforged.fml.loading.FMLLoader;
|
||||||
import net.neoforged.fml.loading.FMLPaths;
|
import net.neoforged.fml.loading.FMLPaths;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
|
||||||
public class NeoForgePlatformHelper implements IPlatformHelper {
|
public class NeoForgePlatformHelper implements IPlatformHelper {
|
||||||
|
|
||||||
@@ -19,25 +21,29 @@ public class NeoForgePlatformHelper implements IPlatformHelper {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isModLoaded(String modId) {
|
public boolean isModLoaded(String modId) {
|
||||||
|
|
||||||
return ModList.get().isLoaded(modId);
|
return ModList.get().isLoaded(modId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isDevelopmentEnvironment() {
|
|
||||||
|
|
||||||
return !FMLLoader.isProduction();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Path getConfigPath(String file) {
|
public Path getConfigPath(String file) {
|
||||||
return FMLPaths.CONFIGDIR.get().resolve(file);
|
return FMLPaths.CONFIGDIR.get().resolve(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Path getFileInModContainer(String mod, String fileName) {
|
public Path getFileOrCopyInModContainer(String mod, String fileName) {
|
||||||
if(ModList.get().getModContainerById(mod).isEmpty()) return null;
|
if(ModList.get().getModContainerById(mod).isEmpty()) return null;
|
||||||
ModContainer container = ModList.get().getModContainerById(mod).get();
|
ModContainer container = ModList.get().getModContainerById(mod).get();
|
||||||
return container.getModInfo().getOwningFile().getFile().findResource(fileName);
|
try {
|
||||||
|
InputStream inputStream = container.getModInfo().getOwningFile().getFile().getContents().get(fileName).open();
|
||||||
|
File targetFile = new File(getConfigPath("bookshelfinspector-config.yml").toUri());
|
||||||
|
try(OutputStream outputStream = new FileOutputStream(targetFile)){
|
||||||
|
byte[] buffer = new byte[8192];
|
||||||
|
int bytesRead;
|
||||||
|
while((bytesRead = inputStream.read(buffer)) != -1){
|
||||||
|
outputStream.write(buffer, 0, bytesRead);
|
||||||
|
}
|
||||||
|
}catch (IOException ignore){}
|
||||||
|
}catch (IOException ignore){}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+3
-5
@@ -1,4 +1,4 @@
|
|||||||
package com.lukasabbe.bookshelfinspector;
|
package com.lukasabbe.bookshelfinspector.util;
|
||||||
|
|
||||||
import com.lukasabbe.bookshelfinspector.platform.handlers.OnPlayerDisconnectEvent;
|
import com.lukasabbe.bookshelfinspector.platform.handlers.OnPlayerDisconnectEvent;
|
||||||
import com.lukasabbe.bookshelfinspector.platform.handlers.OnPlayerJoinEvent;
|
import com.lukasabbe.bookshelfinspector.platform.handlers.OnPlayerJoinEvent;
|
||||||
@@ -17,12 +17,10 @@ public class EventHandler {
|
|||||||
public static void initClient(){
|
public static void initClient(){
|
||||||
NeoForge.EVENT_BUS.addListener(EventHandler::onDisconnect);
|
NeoForge.EVENT_BUS.addListener(EventHandler::onDisconnect);
|
||||||
}
|
}
|
||||||
public static void initServer(){
|
public static void initServer(){ NeoForge.EVENT_BUS.addListener(EventHandler::onJoin); }
|
||||||
NeoForge.EVENT_BUS.addListener(EventHandler::onJoin);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void onJoin(PlayerEvent.PlayerLoggedInEvent event){
|
private static void onJoin(PlayerEvent.PlayerLoggedInEvent event){
|
||||||
playerJoinEvents.forEach(onPlayerJoinEvent -> onPlayerJoinEvent.onPlayerJoin((ServerPlayer) event.getEntity(),event.getEntity().getServer()));
|
playerJoinEvents.forEach(onPlayerJoinEvent -> onPlayerJoinEvent.onPlayerJoin((ServerPlayer) event.getEntity(), ((ServerPlayer)event.getEntity()).level().getServer()));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void onDisconnect(ClientPlayerNetworkEvent.LoggingOut event){
|
private static void onDisconnect(ClientPlayerNetworkEvent.LoggingOut event){
|
||||||
+4
-3
@@ -1,5 +1,7 @@
|
|||||||
package com.lukasabbe.bookshelfinspector;
|
package com.lukasabbe.bookshelfinspector.util;
|
||||||
|
|
||||||
|
import com.lukasabbe.bookshelfinspector.BookshelfInspector;
|
||||||
|
import com.lukasabbe.bookshelfinspector.Constants;
|
||||||
import com.lukasabbe.bookshelfinspector.network.packets.BookShelfInventoryPayload;
|
import com.lukasabbe.bookshelfinspector.network.packets.BookShelfInventoryPayload;
|
||||||
import com.lukasabbe.bookshelfinspector.network.packets.BookShelfInventoryRequestPayload;
|
import com.lukasabbe.bookshelfinspector.network.packets.BookShelfInventoryRequestPayload;
|
||||||
import com.lukasabbe.bookshelfinspector.network.packets.LecternInventoryRequestPayload;
|
import com.lukasabbe.bookshelfinspector.network.packets.LecternInventoryRequestPayload;
|
||||||
@@ -7,7 +9,6 @@ import com.lukasabbe.bookshelfinspector.network.packets.ModCheckPayload;
|
|||||||
import net.minecraft.client.player.LocalPlayer;
|
import net.minecraft.client.player.LocalPlayer;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
import net.neoforged.bus.api.SubscribeEvent;
|
import net.neoforged.bus.api.SubscribeEvent;
|
||||||
import net.neoforged.neoforge.network.event.RegisterConfigurationTasksEvent;
|
|
||||||
import net.neoforged.neoforge.network.event.RegisterPayloadHandlersEvent;
|
import net.neoforged.neoforge.network.event.RegisterPayloadHandlersEvent;
|
||||||
import net.neoforged.neoforge.network.registration.PayloadRegistrar;
|
import net.neoforged.neoforge.network.registration.PayloadRegistrar;
|
||||||
|
|
||||||
@@ -15,7 +16,7 @@ public class NetworkHandler {
|
|||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void registerPayloads(final RegisterPayloadHandlersEvent event){
|
public static void registerPayloads(final RegisterPayloadHandlersEvent event){
|
||||||
final PayloadRegistrar registrar = event.registrar("bookshelfinspector").optional();
|
final PayloadRegistrar registrar = event.registrar(Constants.MOD_ID).optional();
|
||||||
registrar.playToClient(
|
registrar.playToClient(
|
||||||
BookShelfInventoryPayload.ID,
|
BookShelfInventoryPayload.ID,
|
||||||
BookShelfInventoryPayload.CODEC,
|
BookShelfInventoryPayload.CODEC,
|
||||||
@@ -10,4 +10,16 @@ credits="${credits}" #optional
|
|||||||
authors = "${mod_author}" #optional
|
authors = "${mod_author}" #optional
|
||||||
description = '''${description}''' #mandatory (Supports multiline text)
|
description = '''${description}''' #mandatory (Supports multiline text)
|
||||||
[[mixins]]
|
[[mixins]]
|
||||||
config = "${mod_id}.mixins.json"
|
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"
|
||||||
+5
-14
@@ -3,18 +3,11 @@ pluginManagement {
|
|||||||
gradlePluginPortal()
|
gradlePluginPortal()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
|
||||||
exclusiveContent {
|
maven {
|
||||||
forRepository {
|
name = 'Fabric'
|
||||||
maven {
|
url = uri('https://maven.fabricmc.net')
|
||||||
name = 'Fabric'
|
|
||||||
url = uri('https://maven.fabricmc.net')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
filter {
|
|
||||||
includeGroup('net.fabricmc')
|
|
||||||
includeGroup('fabric-loom')
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
exclusiveContent {
|
exclusiveContent {
|
||||||
forRepository {
|
forRepository {
|
||||||
maven {
|
maven {
|
||||||
@@ -48,6 +41,4 @@ plugins {
|
|||||||
rootProject.name = 'BookshelfInspectorMultiloader'
|
rootProject.name = 'BookshelfInspectorMultiloader'
|
||||||
include('common')
|
include('common')
|
||||||
include('fabric')
|
include('fabric')
|
||||||
include('neoforge')
|
include('neoforge')
|
||||||
|
|
||||||
include 'spigot'
|
|
||||||
Reference in New Issue
Block a user