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
-1
@@ -6,7 +6,7 @@ minecraft_version=1.21
|
|||||||
yarn_mappings=1.21+build.9
|
yarn_mappings=1.21+build.9
|
||||||
loader_version=0.16.5
|
loader_version=0.16.5
|
||||||
# Mod Properties
|
# Mod Properties
|
||||||
mod_version=1.0+1.21
|
mod_version=1.1+1.21
|
||||||
maven_group=me.lukasabbe
|
maven_group=me.lukasabbe
|
||||||
archives_base_name=Bookshelfinspector
|
archives_base_name=Bookshelfinspector
|
||||||
|
|
||||||
|
|||||||
@@ -1,33 +1,35 @@
|
|||||||
package me.lukasabbe.bookshelfinspector;
|
package me.lukasabbe.bookshelfinspector;
|
||||||
|
|
||||||
import me.lukasabbe.bookshelfinspector.data.BookData;
|
import me.lukasabbe.bookshelfinspector.data.BookData;
|
||||||
|
import me.lukasabbe.bookshelfinspector.data.BookShelfData;
|
||||||
import me.lukasabbe.bookshelfinspector.network.BookShelfInventoryPayload;
|
import me.lukasabbe.bookshelfinspector.network.BookShelfInventoryPayload;
|
||||||
import me.lukasabbe.bookshelfinspector.network.ModCheckPayload;
|
import me.lukasabbe.bookshelfinspector.network.ModCheckPayload;
|
||||||
import net.fabricmc.api.ClientModInitializer;
|
import net.fabricmc.api.ClientModInitializer;
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.Environment;
|
import net.fabricmc.api.Environment;
|
||||||
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
|
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraft.item.Items;
|
import net.minecraft.item.Items;
|
||||||
import net.minecraft.util.hit.HitResult;
|
|
||||||
|
|
||||||
@Environment(EnvType.CLIENT)
|
@Environment(EnvType.CLIENT)
|
||||||
public class BookshelfinspectorClient implements ClientModInitializer {
|
public class BookshelfinspectorClient implements ClientModInitializer {
|
||||||
|
|
||||||
public static BookData currentBookData = new BookData(ItemStack.EMPTY, null, -1);
|
public static BookData currentBookData = BookData.empty();
|
||||||
public static boolean isCurrentBookDataToggled = false;
|
public static BookShelfData bookShelfData = new BookShelfData();
|
||||||
public static boolean modAvailable = false;
|
public static boolean modAvailable = false;
|
||||||
public static HitResult latestHit;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInitializeClient() {
|
public void onInitializeClient() {
|
||||||
ClientPlayNetworking.registerGlobalReceiver(BookShelfInventoryPayload.ID,
|
ClientPlayNetworking.registerGlobalReceiver(BookShelfInventoryPayload.ID,
|
||||||
((payload, context) ->
|
((payload, context) ->
|
||||||
context.client().execute(() ->{
|
context.client().execute(() ->{
|
||||||
if(payload.itemStack().isOf(Items.AIR))
|
bookShelfData.requestSent = false;
|
||||||
isCurrentBookDataToggled = false;
|
if(payload.itemStack().isOf(Items.AIR)){
|
||||||
|
bookShelfData.isCurrentBookDataToggled = false;
|
||||||
|
currentBookData = BookData.empty();
|
||||||
|
currentBookData.slotId = -2;
|
||||||
|
}
|
||||||
else{
|
else{
|
||||||
BookshelfinspectorClient.isCurrentBookDataToggled = true;
|
bookShelfData.isCurrentBookDataToggled = true;
|
||||||
currentBookData = new BookData(payload.itemStack(),payload.pos(),payload.slotNum());
|
currentBookData = new BookData(payload.itemStack(),payload.pos(),payload.slotNum());
|
||||||
}
|
}
|
||||||
})));
|
})));
|
||||||
|
|||||||
@@ -13,4 +13,8 @@ public class BookData {
|
|||||||
this.pos = pos;
|
this.pos = pos;
|
||||||
this.slotId = slotId;
|
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.block.entity.ChiseledBookshelfBlockEntity;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.network.ClientPlayerEntity;
|
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.BlockHitResult;
|
||||||
import net.minecraft.util.hit.HitResult;
|
import net.minecraft.util.hit.HitResult;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
@@ -49,7 +49,8 @@ public class BookshelfMixin{
|
|||||||
|
|
||||||
Optional<ChiseledBookshelfBlockEntity> optionalChiseledBookshelfBlockEntity = client.player.getWorld().getBlockEntity(pos, BlockEntityType.CHISELED_BOOKSHELF);
|
Optional<ChiseledBookshelfBlockEntity> optionalChiseledBookshelfBlockEntity = client.player.getWorld().getBlockEntity(pos, BlockEntityType.CHISELED_BOOKSHELF);
|
||||||
if(optionalChiseledBookshelfBlockEntity.isEmpty()){
|
if(optionalChiseledBookshelfBlockEntity.isEmpty()){
|
||||||
BookshelfinspectorClient.isCurrentBookDataToggled = false;
|
BookshelfinspectorClient.bookShelfData.isCurrentBookDataToggled = false;
|
||||||
|
BookshelfinspectorClient.currentBookData = BookData.empty();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,15 +60,25 @@ public class BookshelfMixin{
|
|||||||
|
|
||||||
OptionalInt optionalInt = ((BookshelfInvoker)bookshelfBlock).invokerGetSlotForHitPos(blockHitResult,blockState);
|
OptionalInt optionalInt = ((BookshelfInvoker)bookshelfBlock).invokerGetSlotForHitPos(blockHitResult,blockState);
|
||||||
if(optionalInt.isEmpty()) {
|
if(optionalInt.isEmpty()) {
|
||||||
BookshelfinspectorClient.isCurrentBookDataToggled = false;
|
BookshelfinspectorClient.bookShelfData.isCurrentBookDataToggled = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
BookshelfinspectorClient.latestHit = hit;
|
|
||||||
|
|
||||||
final BookData currentBookData = BookshelfinspectorClient.currentBookData;
|
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;
|
package me.lukasabbe.bookshelfinspector.mixin;
|
||||||
|
|
||||||
import me.lukasabbe.bookshelfinspector.Bookshelfinspector;
|
|
||||||
import me.lukasabbe.bookshelfinspector.BookshelfinspectorClient;
|
import me.lukasabbe.bookshelfinspector.BookshelfinspectorClient;
|
||||||
import me.lukasabbe.bookshelfinspector.data.BookData;
|
import me.lukasabbe.bookshelfinspector.data.BookData;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
@@ -30,7 +29,7 @@ public class InGameHudMixin {
|
|||||||
|
|
||||||
if(client.options.hudHidden) return;
|
if(client.options.hudHidden) return;
|
||||||
|
|
||||||
if(BookshelfinspectorClient.isCurrentBookDataToggled){
|
if(BookshelfinspectorClient.bookShelfData.isCurrentBookDataToggled){
|
||||||
final BookData currentBookData = BookshelfinspectorClient.currentBookData;
|
final BookData currentBookData = BookshelfinspectorClient.currentBookData;
|
||||||
int screenWidth = client.getWindow().getScaledWidth();
|
int screenWidth = client.getWindow().getScaledWidth();
|
||||||
int screenHeight = client.getWindow().getScaledHeight();
|
int screenHeight = client.getWindow().getScaledHeight();
|
||||||
|
|||||||
Reference in New Issue
Block a user