1.21.4 version, reworks to network handling. No code changes just made it more clear

This commit is contained in:
lukasabbe
2024-10-30 23:35:54 +01:00
parent d137bc925a
commit 377a0f592b
14 changed files with 129 additions and 64 deletions
@@ -1,17 +1,15 @@
package me.lukasabbe.bookshelfinspector;
import me.lukasabbe.bookshelfinspector.network.BookShelfInventoryPayload;
import me.lukasabbe.bookshelfinspector.network.BookShelfInventoryRequestPayload;
import me.lukasabbe.bookshelfinspector.network.LecternInventoryRequestPayload;
import me.lukasabbe.bookshelfinspector.network.ModCheckPayload;
import me.lukasabbe.bookshelfinspector.util.BookshelfTools;
import me.lukasabbe.bookshelfinspector.util.LecternTools;
import me.lukasabbe.bookshelfinspector.network.packets.BookShelfInventoryPayload;
import me.lukasabbe.bookshelfinspector.network.packets.BookShelfInventoryRequestPayload;
import me.lukasabbe.bookshelfinspector.network.packets.LecternInventoryRequestPayload;
import me.lukasabbe.bookshelfinspector.network.packets.ModCheckPayload;
import me.lukasabbe.bookshelfinspector.network.server.BookShelfInventoryRequestPayloadHandler;
import me.lukasabbe.bookshelfinspector.network.server.LecternInventoryRequestPayloadHandler;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.server.MinecraftServer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -29,28 +27,9 @@ public class Bookshelfinspector implements ModInitializer {
PayloadTypeRegistry.playS2C().register(BookShelfInventoryPayload.ID,BookShelfInventoryPayload.CODEC);
PayloadTypeRegistry.playS2C().register(ModCheckPayload.ID, ModCheckPayload.CODEC);
ServerPlayNetworking.registerGlobalReceiver(BookShelfInventoryRequestPayload.ID,((payload, context) -> context.server().execute(() -> {
if(Bookshelfinspector.serverInstance == null) return;
ServerPlayNetworking.registerGlobalReceiver(BookShelfInventoryRequestPayload.ID, new BookShelfInventoryRequestPayloadHandler());
ItemStack stack = BookshelfTools.getItemById(payload.pos(),payload.slotNum(),context.player());
if(stack == null){
ServerPlayNetworking.send(context.player(), new BookShelfInventoryPayload(Items.AIR.getDefaultStack(), payload.pos(), payload.slotNum()));
return;
}
ServerPlayNetworking.send(context.player(), new BookShelfInventoryPayload(stack, payload.pos(), payload.slotNum()));
})));
ServerPlayNetworking.registerGlobalReceiver(LecternInventoryRequestPayload.ID, ((payload, context) -> context.server().execute(() ->{
if(Bookshelfinspector.serverInstance == null) return;
ItemStack stack = LecternTools.getItemStack(payload.pos(), context.player());
if(stack == null){
ServerPlayNetworking.send(context.player(), new BookShelfInventoryPayload(Items.AIR.getDefaultStack(), payload.pos(), 0));
return;
}
ServerPlayNetworking.send(context.player(), new BookShelfInventoryPayload(stack, payload.pos(), 0));
})));
ServerPlayNetworking.registerGlobalReceiver(LecternInventoryRequestPayload.ID, new LecternInventoryRequestPayloadHandler());
ServerPlayConnectionEvents.JOIN.register(((handler, sender, server) -> {
serverInstance = server;
@@ -3,14 +3,15 @@ package me.lukasabbe.bookshelfinspector;
import me.lukasabbe.bookshelfinspector.config.Config;
import me.lukasabbe.bookshelfinspector.data.BookData;
import me.lukasabbe.bookshelfinspector.data.BookShelfData;
import me.lukasabbe.bookshelfinspector.network.BookShelfInventoryPayload;
import me.lukasabbe.bookshelfinspector.network.ModCheckPayload;
import me.lukasabbe.bookshelfinspector.network.client.BookShelfInventoryHandler;
import me.lukasabbe.bookshelfinspector.network.client.ModPayloadHandler;
import me.lukasabbe.bookshelfinspector.network.packets.BookShelfInventoryPayload;
import me.lukasabbe.bookshelfinspector.network.packets.ModCheckPayload;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.minecraft.item.Items;
@Environment(EnvType.CLIENT)
public class BookshelfinspectorClient implements ClientModInitializer {
@@ -23,26 +24,9 @@ public class BookshelfinspectorClient implements ClientModInitializer {
@Override
public void onInitializeClient() {
config.loadConfig();
ClientPlayNetworking.registerGlobalReceiver(BookShelfInventoryPayload.ID,
((payload, context) ->
context.client().execute(() ->{
bookShelfData.requestSent = false;
if(payload.itemStack().isOf(Items.AIR)){
bookShelfData.isCurrentBookDataToggled = false;
currentBookData = BookData.empty();
currentBookData.slotId = -2;
}
else{
bookShelfData.isCurrentBookDataToggled = true;
currentBookData = new BookData(payload.itemStack(),payload.pos(),payload.slotNum());
}
})));
ClientPlayNetworking.registerGlobalReceiver(BookShelfInventoryPayload.ID, new BookShelfInventoryHandler());
ClientPlayNetworking.registerGlobalReceiver(ModCheckPayload.ID,new ModPayloadHandler());
ClientPlayNetworking.registerGlobalReceiver(ModCheckPayload.ID,
(payload, context) -> context.client().execute(() ->{
Bookshelfinspector.LOGGER.info("[bookshelfinspector] Connected to server");
modAvailable = true;
}));
ClientPlayConnectionEvents.DISCONNECT.register((handler, client) -> {
modAvailable = false;
bookShelfData = new BookShelfData();
@@ -0,0 +1,28 @@
package me.lukasabbe.bookshelfinspector.network.client;
import me.lukasabbe.bookshelfinspector.BookshelfinspectorClient;
import me.lukasabbe.bookshelfinspector.data.BookData;
import me.lukasabbe.bookshelfinspector.network.packets.BookShelfInventoryPayload;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.minecraft.item.Items;
@Environment(EnvType.CLIENT)
public class BookShelfInventoryHandler implements ClientPlayNetworking.PlayPayloadHandler<BookShelfInventoryPayload> {
@Override
public void receive(BookShelfInventoryPayload bookShelfInventoryPayload, ClientPlayNetworking.Context context) {
context.client().execute(() ->{
BookshelfinspectorClient.bookShelfData.requestSent = false;
if(bookShelfInventoryPayload.itemStack().isOf(Items.AIR)){
BookshelfinspectorClient.bookShelfData.isCurrentBookDataToggled = false;
BookshelfinspectorClient.currentBookData = BookData.empty();
BookshelfinspectorClient.currentBookData.slotId = -2;
}
else{
BookshelfinspectorClient.bookShelfData.isCurrentBookDataToggled = true;
BookshelfinspectorClient.currentBookData = new BookData(bookShelfInventoryPayload.itemStack(),bookShelfInventoryPayload.pos(),bookShelfInventoryPayload.slotNum());
}
});
}
}
@@ -0,0 +1,19 @@
package me.lukasabbe.bookshelfinspector.network.client;
import me.lukasabbe.bookshelfinspector.Bookshelfinspector;
import me.lukasabbe.bookshelfinspector.BookshelfinspectorClient;
import me.lukasabbe.bookshelfinspector.network.packets.ModCheckPayload;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
@Environment(EnvType.CLIENT)
public class ModPayloadHandler implements ClientPlayNetworking.PlayPayloadHandler<ModCheckPayload> {
@Override
public void receive(ModCheckPayload modCheckPayload, ClientPlayNetworking.Context context) {
context.client().execute(() ->{
Bookshelfinspector.LOGGER.info("[bookshelfinspector] Connected to server");
BookshelfinspectorClient.modAvailable = true;
});
}
}
@@ -1,5 +1,6 @@
package me.lukasabbe.bookshelfinspector.network;
package me.lukasabbe.bookshelfinspector.network.packets;
import me.lukasabbe.bookshelfinspector.network.BookShelfInspectorNetworkConstants;
import net.minecraft.item.ItemStack;
import net.minecraft.network.RegistryByteBuf;
import net.minecraft.network.codec.PacketCodec;
@@ -1,5 +1,6 @@
package me.lukasabbe.bookshelfinspector.network;
package me.lukasabbe.bookshelfinspector.network.packets;
import me.lukasabbe.bookshelfinspector.network.BookShelfInspectorNetworkConstants;
import net.minecraft.network.RegistryByteBuf;
import net.minecraft.network.codec.PacketCodec;
import net.minecraft.network.codec.PacketCodecs;
@@ -1,5 +1,6 @@
package me.lukasabbe.bookshelfinspector.network;
package me.lukasabbe.bookshelfinspector.network.packets;
import me.lukasabbe.bookshelfinspector.network.BookShelfInspectorNetworkConstants;
import net.minecraft.network.RegistryByteBuf;
import net.minecraft.network.codec.PacketCodec;
import net.minecraft.network.packet.CustomPayload;
@@ -1,5 +1,6 @@
package me.lukasabbe.bookshelfinspector.network;
package me.lukasabbe.bookshelfinspector.network.packets;
import me.lukasabbe.bookshelfinspector.network.BookShelfInspectorNetworkConstants;
import net.minecraft.network.RegistryByteBuf;
import net.minecraft.network.codec.PacketCodec;
import net.minecraft.network.codec.PacketCodecs;
@@ -0,0 +1,25 @@
package me.lukasabbe.bookshelfinspector.network.server;
import me.lukasabbe.bookshelfinspector.Bookshelfinspector;
import me.lukasabbe.bookshelfinspector.network.packets.BookShelfInventoryPayload;
import me.lukasabbe.bookshelfinspector.network.packets.BookShelfInventoryRequestPayload;
import me.lukasabbe.bookshelfinspector.util.BookshelfTools;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
public class BookShelfInventoryRequestPayloadHandler implements ServerPlayNetworking.PlayPayloadHandler<BookShelfInventoryRequestPayload> {
@Override
public void receive(BookShelfInventoryRequestPayload bookShelfInventoryRequestPayload, ServerPlayNetworking.Context context) {
context.server().execute(() -> {
if(Bookshelfinspector.serverInstance == null) return;
ItemStack stack = BookshelfTools.getItemById(bookShelfInventoryRequestPayload.pos(),bookShelfInventoryRequestPayload.slotNum(),context.player());
if(stack == null){
ServerPlayNetworking.send(context.player(), new BookShelfInventoryPayload(Items.AIR.getDefaultStack(), bookShelfInventoryRequestPayload.pos(), bookShelfInventoryRequestPayload.slotNum()));
return;
}
ServerPlayNetworking.send(context.player(), new BookShelfInventoryPayload(stack, bookShelfInventoryRequestPayload.pos(), bookShelfInventoryRequestPayload.slotNum()));
});
}
}
@@ -0,0 +1,26 @@
package me.lukasabbe.bookshelfinspector.network.server;
import me.lukasabbe.bookshelfinspector.Bookshelfinspector;
import me.lukasabbe.bookshelfinspector.network.packets.BookShelfInventoryPayload;
import me.lukasabbe.bookshelfinspector.network.packets.LecternInventoryRequestPayload;
import me.lukasabbe.bookshelfinspector.util.LecternTools;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
public class LecternInventoryRequestPayloadHandler implements ServerPlayNetworking.PlayPayloadHandler<LecternInventoryRequestPayload>{
@Override
public void receive(LecternInventoryRequestPayload lecternInventoryRequestPayload, ServerPlayNetworking.Context context) {
context.server().execute(() ->{
if(Bookshelfinspector.serverInstance == null) return;
ItemStack stack = LecternTools.getItemStack(lecternInventoryRequestPayload.pos(), context.player());
if(stack == null){
ServerPlayNetworking.send(context.player(), new BookShelfInventoryPayload(Items.AIR.getDefaultStack(), lecternInventoryRequestPayload.pos(), 0));
return;
}
ServerPlayNetworking.send(context.player(), new BookShelfInventoryPayload(stack, lecternInventoryRequestPayload.pos(), 0));
});
}
}
@@ -3,8 +3,8 @@ package me.lukasabbe.bookshelfinspector.util;
import me.lukasabbe.bookshelfinspector.BookshelfinspectorClient;
import me.lukasabbe.bookshelfinspector.data.BookData;
import me.lukasabbe.bookshelfinspector.mixin.BookshelfInvoker;
import me.lukasabbe.bookshelfinspector.network.BookShelfInventoryRequestPayload;
import me.lukasabbe.bookshelfinspector.network.LecternInventoryRequestPayload;
import me.lukasabbe.bookshelfinspector.network.packets.BookShelfInventoryRequestPayload;
import me.lukasabbe.bookshelfinspector.network.packets.LecternInventoryRequestPayload;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
@@ -2,5 +2,5 @@
"bookshelfinspector.config.title": "Bookshelf Inspector Config",
"bookshelfinspector.config.category": "Inställningar",
"bookshelfinspector.config.lectern.toggle": "Stäng AV eller PÅ läspulpet stöd",
"bookshelfinspector.config.lectern.toggle.tooltip": "Denna inställning kommer stänga av eller på synligeten av läspulpet inspection"
"bookshelfinspector.config.lectern.toggle.tooltip": "Denna inställning kommer stänga av eller på synligeten av läspulpet inspektion"
}
+1 -1
View File
@@ -25,7 +25,7 @@
],
"depends": {
"fabricloader": ">=${loader_version}",
"minecraft": ">=1.21.2",
"minecraft": ">=1.21.4-alpha.24.44.a",
"fabric-api-base": "*",
"fabric-networking-api-v1": "*",
"fabric-lifecycle-events-v1": "*"