From 89ea923c43f737e9b1915ae2a466894a727742bd Mon Sep 17 00:00:00 2001 From: Sebastian Hartte Date: Wed, 2 Sep 2020 19:41:44 +0200 Subject: [PATCH] Merge fixes --- .../java/appeng/client/gui/Size1Slot.java | 4 +-- .../java/appeng/client/me/SlotFluidME.java | 5 ++- src/main/java/appeng/client/me/SlotME.java | 5 ++- .../render/cablebus/CableBusBakedModel.java | 34 +++++++++---------- .../sync/packets/MEInterfaceUpdatePacket.java | 5 --- .../java/appeng/util/item/AEItemStack.java | 2 +- 6 files changed, 23 insertions(+), 32 deletions(-) diff --git a/src/main/java/appeng/client/gui/Size1Slot.java b/src/main/java/appeng/client/gui/Size1Slot.java index dc665d8e1..8225934fd 100644 --- a/src/main/java/appeng/client/gui/Size1Slot.java +++ b/src/main/java/appeng/client/gui/Size1Slot.java @@ -12,8 +12,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.screen.slot.Slot; import net.minecraft.util.Identifier; -import appeng.client.me.SlotME; - /** * A proxy for a slot that will always return an itemstack with size 1, if there * is an item in the slot. Used to prevent the default item count from @@ -24,7 +22,7 @@ class Size1Slot extends Slot { private final Slot delegate; public Size1Slot(Slot delegate) { - super(delegate.inventory, -1, delegate.xPos, delegate.yPos); + super(delegate.inventory, -1, delegate.x, delegate.y); this.delegate = delegate; } diff --git a/src/main/java/appeng/client/me/SlotFluidME.java b/src/main/java/appeng/client/me/SlotFluidME.java index ee4acc67f..2128223a2 100644 --- a/src/main/java/appeng/client/me/SlotFluidME.java +++ b/src/main/java/appeng/client/me/SlotFluidME.java @@ -21,9 +21,8 @@ package appeng.client.me; import javax.annotation.Nonnull; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Inventory; -import net.minecraft.inventory.container.Slot; +import net.minecraft.inventory.SimpleInventory; import net.minecraft.item.ItemStack; import net.minecraft.screen.slot.Slot; @@ -32,7 +31,7 @@ import appeng.fluids.container.slots.IMEFluidSlot; public class SlotFluidME extends Slot implements IMEFluidSlot { - private static final IInventory EMPTY_INVENTORY = new Inventory(0); + private static final Inventory EMPTY_INVENTORY = new SimpleInventory(0); private final InternalFluidSlotME slot; diff --git a/src/main/java/appeng/client/me/SlotME.java b/src/main/java/appeng/client/me/SlotME.java index 7d5a94b78..b73ffda83 100644 --- a/src/main/java/appeng/client/me/SlotME.java +++ b/src/main/java/appeng/client/me/SlotME.java @@ -19,9 +19,8 @@ package appeng.client.me; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Inventory; -import net.minecraft.inventory.container.Slot; +import net.minecraft.inventory.SimpleInventory; import net.minecraft.item.ItemStack; import net.minecraft.screen.slot.Slot; @@ -29,7 +28,7 @@ import appeng.api.storage.data.IAEItemStack; public class SlotME extends Slot { - private static final Inventory EMPTY_INVENTORY = new Inventory(0); + private static final Inventory EMPTY_INVENTORY = new SimpleInventory(0); private final InternalSlotME slot; diff --git a/src/main/java/appeng/client/render/cablebus/CableBusBakedModel.java b/src/main/java/appeng/client/render/cablebus/CableBusBakedModel.java index 8dc8e7fb9..56cda6556 100644 --- a/src/main/java/appeng/client/render/cablebus/CableBusBakedModel.java +++ b/src/main/java/appeng/client/render/cablebus/CableBusBakedModel.java @@ -29,6 +29,10 @@ import java.util.function.Supplier; import javax.annotation.Nullable; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; + import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.renderer.v1.Renderer; @@ -39,11 +43,6 @@ import net.fabricmc.fabric.api.renderer.v1.mesh.QuadEmitter; import net.fabricmc.fabric.api.renderer.v1.model.FabricBakedModel; import net.fabricmc.fabric.api.renderer.v1.render.RenderContext; import net.fabricmc.fabric.api.rendering.data.v1.RenderAttachedBlockView; -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; -import com.google.common.cache.Weigher; - import net.minecraft.block.BlockState; import net.minecraft.client.render.model.BakedModel; import net.minecraft.client.render.model.BakedQuad; @@ -65,12 +64,15 @@ import appeng.api.util.AEColor; @Environment(EnvType.CLIENT) public class CableBusBakedModel implements BakedModel, FabricBakedModel { + private static final Mesh EMPTY_MESH = consumer -> { + }; + private static final Renderer RENDERER = RendererAccess.INSTANCE.getRenderer(); - // The number of quads overall that will be cached - private static final int CACHE_QUAD_COUNT = 5000; + // The number of meshes overall that will be cached + private static final int CACHE_MESH_COUNT = 100; - private static final LoadingCache cableModelCache = new HashMap<>(); + private final LoadingCache cableModelCache; private final CableBuilder cableBuilder; @@ -87,14 +89,12 @@ public class CableBusBakedModel implements BakedModel, FabricBakedModel { this.partModels = partModels; this.particleTexture = particleTexture; this.cableModelCache = CacheBuilder.newBuilder()// - .maximumWeight(CACHE_QUAD_COUNT)// - .weigher((Weigher>) (key, value) -> value.size())// - .build(new CacheLoader>() { + .maximumSize(CACHE_MESH_COUNT)// + .build(new CacheLoader() { @Override - public List load(CableBusRenderState renderState) { - final List model = new ArrayList<>(); - addCableQuads(renderState, model); - return model; + public Mesh load(CableBusRenderState renderState) { + Mesh mesh = buildCableModel(renderState); + return mesh != null ? mesh : EMPTY_MESH; } }); } @@ -126,8 +126,8 @@ public class CableBusBakedModel implements BakedModel, FabricBakedModel { } // First, handle the cable at the center of the cable bus - final Mesh cableModel = CABLE_MODEL_CACHE.computeIfAbsent(renderState, this::buildCableModel); - if (cableModel != null) { + final Mesh cableModel = cableModelCache.getUnchecked(renderState); + if (cableModel != EMPTY_MESH) { context.meshConsumer().accept(cableModel); } diff --git a/src/main/java/appeng/core/sync/packets/MEInterfaceUpdatePacket.java b/src/main/java/appeng/core/sync/packets/MEInterfaceUpdatePacket.java index 1098e382d..f89ff51bd 100644 --- a/src/main/java/appeng/core/sync/packets/MEInterfaceUpdatePacket.java +++ b/src/main/java/appeng/core/sync/packets/MEInterfaceUpdatePacket.java @@ -27,12 +27,7 @@ import net.fabricmc.api.Environment; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.Screen; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.network.PacketBuffer; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.NbtIo; import net.minecraft.network.PacketByteBuf; import appeng.client.gui.implementations.InterfaceTerminalScreen; diff --git a/src/main/java/appeng/util/item/AEItemStack.java b/src/main/java/appeng/util/item/AEItemStack.java index 0342b355f..acae924d5 100644 --- a/src/main/java/appeng/util/item/AEItemStack.java +++ b/src/main/java/appeng/util/item/AEItemStack.java @@ -125,7 +125,7 @@ public final class AEItemStack extends AEStack implements IAEItemS buffer.writeBoolean(this.isCraftable()); buffer.writeVarLong(this.getStackSize()); buffer.writeVarLong(this.getCountRequestable()); - buffer.writeItemStack(getDefinition(), false); + buffer.writeItemStack(getDefinition()); } @Override