mirror of
https://github.com/lukasabbe/bookshelf-inspector.git
synced 2026-04-30 10:40:53 +00:00
Big optimizing, sends alot fewers packets.
This commit is contained in:
@@ -1,33 +1,35 @@
|
||||
package me.lukasabbe.bookshelfinspector;
|
||||
|
||||
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 net.fabricmc.api.ClientModInitializer;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.Items;
|
||||
import net.minecraft.util.hit.HitResult;
|
||||
|
||||
@Environment(EnvType.CLIENT)
|
||||
public class BookshelfinspectorClient implements ClientModInitializer {
|
||||
|
||||
public static BookData currentBookData = new BookData(ItemStack.EMPTY, null, -1);
|
||||
public static boolean isCurrentBookDataToggled = false;
|
||||
public static BookData currentBookData = BookData.empty();
|
||||
public static BookShelfData bookShelfData = new BookShelfData();
|
||||
public static boolean modAvailable = false;
|
||||
public static HitResult latestHit;
|
||||
|
||||
@Override
|
||||
public void onInitializeClient() {
|
||||
ClientPlayNetworking.registerGlobalReceiver(BookShelfInventoryPayload.ID,
|
||||
((payload, context) ->
|
||||
context.client().execute(() ->{
|
||||
if(payload.itemStack().isOf(Items.AIR))
|
||||
isCurrentBookDataToggled = false;
|
||||
bookShelfData.requestSent = false;
|
||||
if(payload.itemStack().isOf(Items.AIR)){
|
||||
bookShelfData.isCurrentBookDataToggled = false;
|
||||
currentBookData = BookData.empty();
|
||||
currentBookData.slotId = -2;
|
||||
}
|
||||
else{
|
||||
BookshelfinspectorClient.isCurrentBookDataToggled = true;
|
||||
bookShelfData.isCurrentBookDataToggled = true;
|
||||
currentBookData = new BookData(payload.itemStack(),payload.pos(),payload.slotNum());
|
||||
}
|
||||
})));
|
||||
|
||||
@@ -13,4 +13,8 @@ public class BookData {
|
||||
this.pos = pos;
|
||||
this.slotId = slotId;
|
||||
}
|
||||
|
||||
public static BookData empty(){
|
||||
return new BookData(ItemStack.EMPTY, null, -1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package me.lukasabbe.bookshelfinspector.data;
|
||||
|
||||
public class BookShelfData {
|
||||
public boolean isCurrentBookDataToggled = false;
|
||||
public boolean requestSent = false;
|
||||
public int currentSlotInt = -1;
|
||||
}
|
||||
@@ -10,7 +10,7 @@ import net.minecraft.block.entity.BlockEntityType;
|
||||
import net.minecraft.block.entity.ChiseledBookshelfBlockEntity;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.network.ClientPlayerEntity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.Items;
|
||||
import net.minecraft.util.hit.BlockHitResult;
|
||||
import net.minecraft.util.hit.HitResult;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
@@ -49,7 +49,8 @@ public class BookshelfMixin{
|
||||
|
||||
Optional<ChiseledBookshelfBlockEntity> optionalChiseledBookshelfBlockEntity = client.player.getWorld().getBlockEntity(pos, BlockEntityType.CHISELED_BOOKSHELF);
|
||||
if(optionalChiseledBookshelfBlockEntity.isEmpty()){
|
||||
BookshelfinspectorClient.isCurrentBookDataToggled = false;
|
||||
BookshelfinspectorClient.bookShelfData.isCurrentBookDataToggled = false;
|
||||
BookshelfinspectorClient.currentBookData = BookData.empty();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -59,15 +60,25 @@ public class BookshelfMixin{
|
||||
|
||||
OptionalInt optionalInt = ((BookshelfInvoker)bookshelfBlock).invokerGetSlotForHitPos(blockHitResult,blockState);
|
||||
if(optionalInt.isEmpty()) {
|
||||
BookshelfinspectorClient.isCurrentBookDataToggled = false;
|
||||
BookshelfinspectorClient.bookShelfData.isCurrentBookDataToggled = false;
|
||||
return;
|
||||
}
|
||||
|
||||
BookshelfinspectorClient.latestHit = hit;
|
||||
|
||||
final BookData currentBookData = BookshelfinspectorClient.currentBookData;
|
||||
if(currentBookData.itemStack == ItemStack.EMPTY || currentBookData.slotId!=optionalInt.getAsInt() || currentBookData.pos != pos){
|
||||
ClientPlayNetworking.send(new BookShelfInventoryRequestPayload(pos, optionalInt.getAsInt()));
|
||||
|
||||
int temp = BookshelfinspectorClient.bookShelfData.currentSlotInt;
|
||||
final int slotNum = optionalInt.getAsInt();
|
||||
BookshelfinspectorClient.bookShelfData.currentSlotInt = slotNum;
|
||||
|
||||
if(currentBookData.slotId!= slotNum && currentBookData.slotId!=-2 && !BookshelfinspectorClient.bookShelfData.requestSent){
|
||||
BookshelfinspectorClient.bookShelfData.requestSent = true;
|
||||
ClientPlayNetworking.send(new BookShelfInventoryRequestPayload(pos, slotNum));
|
||||
}
|
||||
else {
|
||||
if(temp == slotNum)
|
||||
BookshelfinspectorClient.bookShelfData.isCurrentBookDataToggled = currentBookData.slotId != -2;
|
||||
else
|
||||
BookshelfinspectorClient.currentBookData = BookData.empty();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package me.lukasabbe.bookshelfinspector.mixin;
|
||||
|
||||
import me.lukasabbe.bookshelfinspector.Bookshelfinspector;
|
||||
import me.lukasabbe.bookshelfinspector.BookshelfinspectorClient;
|
||||
import me.lukasabbe.bookshelfinspector.data.BookData;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
@@ -30,7 +29,7 @@ public class InGameHudMixin {
|
||||
|
||||
if(client.options.hudHidden) return;
|
||||
|
||||
if(BookshelfinspectorClient.isCurrentBookDataToggled){
|
||||
if(BookshelfinspectorClient.bookShelfData.isCurrentBookDataToggled){
|
||||
final BookData currentBookData = BookshelfinspectorClient.currentBookData;
|
||||
int screenWidth = client.getWindow().getScaledWidth();
|
||||
int screenHeight = client.getWindow().getScaledHeight();
|
||||
|
||||
Reference in New Issue
Block a user