Merge fixes

This commit is contained in:
Sebastian Hartte
2020-09-02 19:41:44 +02:00
parent 5d818eb03e
commit 89ea923c43
6 changed files with 23 additions and 32 deletions
@@ -12,8 +12,6 @@ import net.minecraft.item.ItemStack;
import net.minecraft.screen.slot.Slot; import net.minecraft.screen.slot.Slot;
import net.minecraft.util.Identifier; 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 * 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 * 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; private final Slot delegate;
public Size1Slot(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; this.delegate = delegate;
} }
@@ -21,9 +21,8 @@ package appeng.client.me;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Inventory; import net.minecraft.inventory.Inventory;
import net.minecraft.inventory.container.Slot; import net.minecraft.inventory.SimpleInventory;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.screen.slot.Slot; import net.minecraft.screen.slot.Slot;
@@ -32,7 +31,7 @@ import appeng.fluids.container.slots.IMEFluidSlot;
public class SlotFluidME extends Slot implements 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; private final InternalFluidSlotME slot;
+2 -3
View File
@@ -19,9 +19,8 @@
package appeng.client.me; package appeng.client.me;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Inventory; import net.minecraft.inventory.Inventory;
import net.minecraft.inventory.container.Slot; import net.minecraft.inventory.SimpleInventory;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.screen.slot.Slot; import net.minecraft.screen.slot.Slot;
@@ -29,7 +28,7 @@ import appeng.api.storage.data.IAEItemStack;
public class SlotME extends Slot { 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; private final InternalSlotME slot;
@@ -29,6 +29,10 @@ import java.util.function.Supplier;
import javax.annotation.Nullable; 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.EnvType;
import net.fabricmc.api.Environment; import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.renderer.v1.Renderer; 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.model.FabricBakedModel;
import net.fabricmc.fabric.api.renderer.v1.render.RenderContext; import net.fabricmc.fabric.api.renderer.v1.render.RenderContext;
import net.fabricmc.fabric.api.rendering.data.v1.RenderAttachedBlockView; 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.block.BlockState;
import net.minecraft.client.render.model.BakedModel; import net.minecraft.client.render.model.BakedModel;
import net.minecraft.client.render.model.BakedQuad; import net.minecraft.client.render.model.BakedQuad;
@@ -65,12 +64,15 @@ import appeng.api.util.AEColor;
@Environment(EnvType.CLIENT) @Environment(EnvType.CLIENT)
public class CableBusBakedModel implements BakedModel, FabricBakedModel { public class CableBusBakedModel implements BakedModel, FabricBakedModel {
private static final Mesh EMPTY_MESH = consumer -> {
};
private static final Renderer RENDERER = RendererAccess.INSTANCE.getRenderer(); private static final Renderer RENDERER = RendererAccess.INSTANCE.getRenderer();
// The number of quads overall that will be cached // The number of meshes overall that will be cached
private static final int CACHE_QUAD_COUNT = 5000; private static final int CACHE_MESH_COUNT = 100;
private static final LoadingCache<CableBusRenderState, Mesh> cableModelCache = new HashMap<>(); private final LoadingCache<CableBusRenderState, Mesh> cableModelCache;
private final CableBuilder cableBuilder; private final CableBuilder cableBuilder;
@@ -87,14 +89,12 @@ public class CableBusBakedModel implements BakedModel, FabricBakedModel {
this.partModels = partModels; this.partModels = partModels;
this.particleTexture = particleTexture; this.particleTexture = particleTexture;
this.cableModelCache = CacheBuilder.newBuilder()// this.cableModelCache = CacheBuilder.newBuilder()//
.maximumWeight(CACHE_QUAD_COUNT)// .maximumSize(CACHE_MESH_COUNT)//
.weigher((Weigher<CableBusRenderState, List<BakedQuad>>) (key, value) -> value.size())// .build(new CacheLoader<CableBusRenderState, Mesh>() {
.build(new CacheLoader<CableBusRenderState, List<BakedQuad>>() {
@Override @Override
public List<BakedQuad> load(CableBusRenderState renderState) { public Mesh load(CableBusRenderState renderState) {
final List<BakedQuad> model = new ArrayList<>(); Mesh mesh = buildCableModel(renderState);
addCableQuads(renderState, model); return mesh != null ? mesh : EMPTY_MESH;
return model;
} }
}); });
} }
@@ -126,8 +126,8 @@ public class CableBusBakedModel implements BakedModel, FabricBakedModel {
} }
// First, handle the cable at the center of the cable bus // First, handle the cable at the center of the cable bus
final Mesh cableModel = CABLE_MODEL_CACHE.computeIfAbsent(renderState, this::buildCableModel); final Mesh cableModel = cableModelCache.getUnchecked(renderState);
if (cableModel != null) { if (cableModel != EMPTY_MESH) {
context.meshConsumer().accept(cableModel); context.meshConsumer().accept(cableModel);
} }
@@ -27,12 +27,7 @@ import net.fabricmc.api.Environment;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.Screen;
import net.minecraft.entity.player.PlayerEntity; 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.CompoundTag;
import net.minecraft.nbt.NbtIo;
import net.minecraft.network.PacketByteBuf; import net.minecraft.network.PacketByteBuf;
import appeng.client.gui.implementations.InterfaceTerminalScreen; import appeng.client.gui.implementations.InterfaceTerminalScreen;
@@ -125,7 +125,7 @@ public final class AEItemStack extends AEStack<IAEItemStack> implements IAEItemS
buffer.writeBoolean(this.isCraftable()); buffer.writeBoolean(this.isCraftable());
buffer.writeVarLong(this.getStackSize()); buffer.writeVarLong(this.getStackSize());
buffer.writeVarLong(this.getCountRequestable()); buffer.writeVarLong(this.getCountRequestable());
buffer.writeItemStack(getDefinition(), false); buffer.writeItemStack(getDefinition());
} }
@Override @Override