Use DefaultedList for equipment tracking
Because on 1.11+ a `null` item stack is not something that should exist. This then also allows us to compare item stacks by value rather than only by reference, potentially saving a few redundant entity equipment update packets (but more importantly, also allows us to store a copy instead of the original, which will be important for the next commit).
This commit is contained in:
@@ -15,6 +15,7 @@ import net.minecraft.client.render.Tessellator;
|
|||||||
import net.minecraft.client.render.entity.EntityRenderDispatcher;
|
import net.minecraft.client.render.entity.EntityRenderDispatcher;
|
||||||
import net.minecraft.client.sound.PositionedSoundInstance;
|
import net.minecraft.client.sound.PositionedSoundInstance;
|
||||||
import net.minecraft.entity.player.PlayerInventory;
|
import net.minecraft.entity.player.PlayerInventory;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.resource.Resource;
|
import net.minecraft.resource.Resource;
|
||||||
import net.minecraft.resource.ResourceManager;
|
import net.minecraft.resource.ResourceManager;
|
||||||
import net.minecraft.text.LiteralText;
|
import net.minecraft.text.LiteralText;
|
||||||
@@ -49,6 +50,10 @@ import net.minecraft.client.util.Window;
|
|||||||
//$$ import net.minecraft.client.gui.GuiButton;
|
//$$ import net.minecraft.client.gui.GuiButton;
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
|
//#if MC>=11100
|
||||||
|
import net.minecraft.util.collection.DefaultedList;
|
||||||
|
//#endif
|
||||||
|
|
||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
import net.minecraft.sound.SoundEvent;
|
import net.minecraft.sound.SoundEvent;
|
||||||
import net.minecraft.util.crash.CrashCallable;
|
import net.minecraft.util.crash.CrashCallable;
|
||||||
@@ -669,4 +674,13 @@ class Patterns {
|
|||||||
return manager.getResource(id);
|
return manager.getResource(id);
|
||||||
//#endif
|
//#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Pattern
|
||||||
|
private static List<ItemStack> DefaultedList_ofSize_ItemStack_Empty(int size) {
|
||||||
|
//#if MC>=11100
|
||||||
|
return DefaultedList.ofSize(size, ItemStack.EMPTY);
|
||||||
|
//#else
|
||||||
|
//$$ return java.util.Arrays.asList(new ItemStack[size]);
|
||||||
|
//#endif
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,6 +40,10 @@ import java.util.Collections;
|
|||||||
//$$ import net.minecraft.network.play.server.SPacketUseBed;
|
//$$ import net.minecraft.network.play.server.SPacketUseBed;
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
|
//#if MC>=11100
|
||||||
|
import net.minecraft.util.collection.DefaultedList;
|
||||||
|
//#endif
|
||||||
|
|
||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
import net.minecraft.network.packet.s2c.play.EntityTrackerUpdateS2CPacket;
|
import net.minecraft.network.packet.s2c.play.EntityTrackerUpdateS2CPacket;
|
||||||
import net.minecraft.network.packet.s2c.play.WorldEventS2CPacket;
|
import net.minecraft.network.packet.s2c.play.WorldEventS2CPacket;
|
||||||
@@ -53,6 +57,7 @@ import net.minecraft.util.math.BlockPos;
|
|||||||
//$$ import net.minecraft.util.MathHelper;
|
//$$ import net.minecraft.util.MathHelper;
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
import static com.replaymod.core.versions.MCVer.*;
|
import static com.replaymod.core.versions.MCVer.*;
|
||||||
@@ -63,7 +68,7 @@ public class RecordingEventHandler extends EventRegistrations {
|
|||||||
private final PacketListener packetListener;
|
private final PacketListener packetListener;
|
||||||
|
|
||||||
private Double lastX, lastY, lastZ;
|
private Double lastX, lastY, lastZ;
|
||||||
private ItemStack[] playerItems = new ItemStack[6];
|
private final List<ItemStack> playerItems = DefaultedList.ofSize(6, ItemStack.EMPTY);
|
||||||
private int ticksSinceLastCorrection;
|
private int ticksSinceLastCorrection;
|
||||||
private boolean wasSleeping;
|
private boolean wasSleeping;
|
||||||
private int lastRiding = -1;
|
private int lastRiding = -1;
|
||||||
@@ -260,8 +265,8 @@ public class RecordingEventHandler extends EventRegistrations {
|
|||||||
//$$ ItemStack stack = player.getEquipmentInSlot(slot);
|
//$$ ItemStack stack = player.getEquipmentInSlot(slot);
|
||||||
//$$ int index = slot;
|
//$$ int index = slot;
|
||||||
//#endif
|
//#endif
|
||||||
if (playerItems[index] != stack) {
|
if (!ItemStack.areEqual(playerItems.get(index), stack)) {
|
||||||
playerItems[index] = stack;
|
playerItems.set(index, stack);
|
||||||
//#if MC>=11600
|
//#if MC>=11600
|
||||||
packetListener.save(new EntityEquipmentUpdateS2CPacket(player.getEntityId(), Collections.singletonList(Pair.of(slot, stack))));
|
packetListener.save(new EntityEquipmentUpdateS2CPacket(player.getEntityId(), Collections.singletonList(Pair.of(slot, stack))));
|
||||||
//#else
|
//#else
|
||||||
|
|||||||
@@ -1 +1,2 @@
|
|||||||
net.minecraft.item.ItemStack EMPTY field_190927_a
|
net.minecraft.item.ItemStack EMPTY field_190927_a
|
||||||
|
net.minecraft.util.NonNullList withSize() func_191197_a()
|
||||||
|
|||||||
Reference in New Issue
Block a user