Package net.minecraft.world.chunk
Class PalettedContainer<T>
java.lang.Object
net.minecraft.world.chunk.PalettedContainer<T>
- All Implemented Interfaces:
PaletteResizeListener<T>,ReadableContainer<T>
public class PalettedContainer<T>
extends Object
implements PaletteResizeListener<T>, ReadableContainer<T>
A paletted container stores objects in 3D voxels as small integer indices,
governed by "palettes" that map between these objects and indices.
- See Also:
- Mappings:
Namespace Name intermediary net/minecraft/class_2841official dennamed net/minecraft/world/chunk/PalettedContainer
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceA counter that receives a palette entry and its number of occurrences in the container.private static final recordRuntime representation of data in a paletted container.private static final recordA palette data provider constructs an empty data for a paletted container given a palette provider and a desired entry size in bits.static classA palette provider determines what type of palette to choose given the bits used to represent each element.Nested classes/interfaces inherited from interface net.minecraft.world.chunk.ReadableContainer
ReadableContainer.Reader<T,C extends ReadableContainer<T>>, ReadableContainer.Serialized<T> -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate PalettedContainer.Data<T>private final PaletteResizeListener<T>private static final intprivate final IndexedIterable<T>private final LockHelperprivate final PalettedContainer.PaletteProvider -
Constructor Summary
ConstructorsModifierConstructorDescriptionprivatePalettedContainer(IndexedIterable<T> idList, PalettedContainer.PaletteProvider paletteProvider, PalettedContainer.Data<T> data) PalettedContainer(IndexedIterable<T> idList, PalettedContainer.PaletteProvider paletteProvider, PalettedContainer.DataProvider<T> dataProvider, PaletteStorage storage, List<T> paletteEntries) PalettedContainer(IndexedIterable<T> idList, T object, PalettedContainer.PaletteProvider paletteProvider) -
Method Summary
Modifier and TypeMethodDescriptionprivate static <T> voidapplyEach(int[] is, IntUnaryOperator applier) Appliesapplierto each value ofis, modifying the array.copy()voidcount(PalettedContainer.Counter<T> counter) private static <T,C extends ReadableContainer<T>>
com.mojang.serialization.Codec<C>createCodec(IndexedIterable<T> idList, com.mojang.serialization.Codec<T> entryCodec, PalettedContainer.PaletteProvider provider, T defaultValue, ReadableContainer.Reader<T, C> reader) Creates a codec for a paletted container with a specific palette provider.static <T> com.mojang.serialization.Codec<PalettedContainer<T>>createPalettedContainerCodec(IndexedIterable<T> idList, com.mojang.serialization.Codec<T> entryCodec, PalettedContainer.PaletteProvider paletteProvider, T defaultValue) static <T> com.mojang.serialization.Codec<ReadableContainer<T>>createReadableContainerCodec(IndexedIterable<T> idList, com.mojang.serialization.Codec<T> entryCodec, PalettedContainer.PaletteProvider paletteProvider, T defaultValue) voidforEachValue(Consumer<T> action) protected Tget(int index) get(int x, int y, int z) private PalettedContainer.Data<T>getCompatibleData(@Nullable PalettedContainer.Data<T> previousData, int bits) Returns a compatible data object for the given entrybitssize.intbooleanReturnstrueif any object in this container's palette matches this predicate.voidlock()Acquires the semaphore on this container, and crashes if it cannot be acquired.intCallback for a palette's request to resize to at leastnewBitsfor each entry and to update the storage correspondingly in order to accommodate the new object.private static <T> com.mojang.serialization.DataResult<PalettedContainer<T>>read(IndexedIterable<T> idList, PalettedContainer.PaletteProvider paletteProvider, ReadableContainer.Serialized<T> serialized) voidreadPacket(PacketByteBuf buf) Reads data from the packet byte buffer into this container.serialize(IndexedIterable<T> idList, PalettedContainer.PaletteProvider paletteProvider) voidprivate voidslice()private TswapUnsafe(int x, int y, int z, T value) voidunlock()Releases the semaphore on this container.voidwritePacket(PacketByteBuf buf) Writes this container to the packet byte buffer.
-
Field Details
-
field_34557
private static final int field_34557- See Also:
- Mappings:
Namespace Name Mixin selector intermediary field_34557Lnet/minecraft/class_2841;field_34557:Iofficial aLden;a:Inamed field_34557Lnet/minecraft/world/chunk/PalettedContainer;field_34557:I
-
dummyListener
- Mappings:
Namespace Name Mixin selector intermediary field_34558Lnet/minecraft/class_2841;field_34558:Lnet/minecraft/class_2835;official bLden;b:Ldem;named dummyListenerLnet/minecraft/world/chunk/PalettedContainer;dummyListener:Lnet/minecraft/world/chunk/PaletteResizeListener;
-
idList
- Mappings:
Namespace Name Mixin selector intermediary field_34559Lnet/minecraft/class_2841;field_34559:Lnet/minecraft/class_2359;official cLden;c:Lhj;named idListLnet/minecraft/world/chunk/PalettedContainer;idList:Lnet/minecraft/util/collection/IndexedIterable;
-
data
- Mappings:
Namespace Name Mixin selector intermediary field_34560Lnet/minecraft/class_2841;field_34560:Lnet/minecraft/class_2841$class_6561;official dLden;d:Lden$c;named dataLnet/minecraft/world/chunk/PalettedContainer;data:Lnet/minecraft/world/chunk/PalettedContainer$Data;
-
paletteProvider
- Mappings:
Namespace Name Mixin selector intermediary field_34561Lnet/minecraft/class_2841;field_34561:Lnet/minecraft/class_2841$class_6563;official eLden;e:Lden$d;named paletteProviderLnet/minecraft/world/chunk/PalettedContainer;paletteProvider:Lnet/minecraft/world/chunk/PalettedContainer$PaletteProvider;
-
lockHelper
- Mappings:
Namespace Name Mixin selector intermediary field_36300Lnet/minecraft/class_2841;field_36300:Lnet/minecraft/class_5798;official fLden;f:Lapu;named lockHelperLnet/minecraft/world/chunk/PalettedContainer;lockHelper:Lnet/minecraft/util/thread/LockHelper;
-
-
Constructor Details
-
PalettedContainer
public PalettedContainer(IndexedIterable<T> idList, PalettedContainer.PaletteProvider paletteProvider, PalettedContainer.DataProvider<T> dataProvider, PaletteStorage storage, List<T> paletteEntries) - Mappings:
Namespace Name Mixin selector intermediary <init>Lnet/minecraft/class_2841;<init>(Lnet/minecraft/class_2359;Lnet/minecraft/class_2841$class_6563;Lnet/minecraft/class_2841$class_6560;Lnet/minecraft/class_6490;Ljava/util/List;)Vofficial <init>Lden;<init>(Lhj;Lden$d;Lden$a;Lans;Ljava/util/List;)Vnamed <init>Lnet/minecraft/world/chunk/PalettedContainer;<init>(Lnet/minecraft/util/collection/IndexedIterable;Lnet/minecraft/world/chunk/PalettedContainer$PaletteProvider;Lnet/minecraft/world/chunk/PalettedContainer$DataProvider;Lnet/minecraft/util/collection/PaletteStorage;Ljava/util/List;)V
-
PalettedContainer
private PalettedContainer(IndexedIterable<T> idList, PalettedContainer.PaletteProvider paletteProvider, PalettedContainer.Data<T> data) - Mappings:
Namespace Name Mixin selector intermediary <init>Lnet/minecraft/class_2841;<init>(Lnet/minecraft/class_2359;Lnet/minecraft/class_2841$class_6563;Lnet/minecraft/class_2841$class_6561;)Vofficial <init>Lden;<init>(Lhj;Lden$d;Lden$c;)Vnamed <init>Lnet/minecraft/world/chunk/PalettedContainer;<init>(Lnet/minecraft/util/collection/IndexedIterable;Lnet/minecraft/world/chunk/PalettedContainer$PaletteProvider;Lnet/minecraft/world/chunk/PalettedContainer$Data;)V
-
PalettedContainer
public PalettedContainer(IndexedIterable<T> idList, T object, PalettedContainer.PaletteProvider paletteProvider) - Mappings:
Namespace Name Mixin selector intermediary <init>Lnet/minecraft/class_2841;<init>(Lnet/minecraft/class_2359;Ljava/lang/Object;Lnet/minecraft/class_2841$class_6563;)Vofficial <init>Lden;<init>(Lhj;Ljava/lang/Object;Lden$d;)Vnamed <init>Lnet/minecraft/world/chunk/PalettedContainer;<init>(Lnet/minecraft/util/collection/IndexedIterable;Ljava/lang/Object;Lnet/minecraft/world/chunk/PalettedContainer$PaletteProvider;)V
-
-
Method Details
-
lock
public void lock()Acquires the semaphore on this container, and crashes if it cannot be acquired.- Mappings:
Namespace Name Mixin selector intermediary method_12334Lnet/minecraft/class_2841;method_12334()Vofficial aLden;a()Vnamed lockLnet/minecraft/world/chunk/PalettedContainer;lock()V
-
unlock
public void unlock()Releases the semaphore on this container.- Mappings:
Namespace Name Mixin selector intermediary method_12335Lnet/minecraft/class_2841;method_12335()Vofficial bLden;b()Vnamed unlockLnet/minecraft/world/chunk/PalettedContainer;unlock()V
-
createPalettedContainerCodec
public static <T> com.mojang.serialization.Codec<PalettedContainer<T>> createPalettedContainerCodec(IndexedIterable<T> idList, com.mojang.serialization.Codec<T> entryCodec, PalettedContainer.PaletteProvider paletteProvider, T defaultValue) - Mappings:
Namespace Name Mixin selector intermediary method_44343Lnet/minecraft/class_2841;method_44343(Lnet/minecraft/class_2359;Lcom/mojang/serialization/Codec;Lnet/minecraft/class_2841$class_6563;Ljava/lang/Object;)Lcom/mojang/serialization/Codec;official aLden;a(Lhj;Lcom/mojang/serialization/Codec;Lden$d;Ljava/lang/Object;)Lcom/mojang/serialization/Codec;named createPalettedContainerCodecLnet/minecraft/world/chunk/PalettedContainer;createPalettedContainerCodec(Lnet/minecraft/util/collection/IndexedIterable;Lcom/mojang/serialization/Codec;Lnet/minecraft/world/chunk/PalettedContainer$PaletteProvider;Ljava/lang/Object;)Lcom/mojang/serialization/Codec;
-
createReadableContainerCodec
public static <T> com.mojang.serialization.Codec<ReadableContainer<T>> createReadableContainerCodec(IndexedIterable<T> idList, com.mojang.serialization.Codec<T> entryCodec, PalettedContainer.PaletteProvider paletteProvider, T defaultValue) - Mappings:
Namespace Name Mixin selector intermediary method_44347Lnet/minecraft/class_2841;method_44347(Lnet/minecraft/class_2359;Lcom/mojang/serialization/Codec;Lnet/minecraft/class_2841$class_6563;Ljava/lang/Object;)Lcom/mojang/serialization/Codec;official bLden;b(Lhj;Lcom/mojang/serialization/Codec;Lden$d;Ljava/lang/Object;)Lcom/mojang/serialization/Codec;named createReadableContainerCodecLnet/minecraft/world/chunk/PalettedContainer;createReadableContainerCodec(Lnet/minecraft/util/collection/IndexedIterable;Lcom/mojang/serialization/Codec;Lnet/minecraft/world/chunk/PalettedContainer$PaletteProvider;Ljava/lang/Object;)Lcom/mojang/serialization/Codec;
-
createCodec
private static <T,C extends ReadableContainer<T>> com.mojang.serialization.Codec<C> createCodec(IndexedIterable<T> idList, com.mojang.serialization.Codec<T> entryCodec, PalettedContainer.PaletteProvider provider, T defaultValue, ReadableContainer.Reader<T, C> reader) Creates a codec for a paletted container with a specific palette provider.- Parameters:
entryCodec- the codec for each entry in the paletteprovider- the palette provider that controls how the data are serialized and what types of palette are used for what entry bit sizes- Returns:
- the created codec
- Mappings:
Namespace Name Mixin selector intermediary method_38298Lnet/minecraft/class_2841;method_38298(Lnet/minecraft/class_2359;Lcom/mojang/serialization/Codec;Lnet/minecraft/class_2841$class_6563;Ljava/lang/Object;Lnet/minecraft/class_7522$class_7523;)Lcom/mojang/serialization/Codec;official aLden;a(Lhj;Lcom/mojang/serialization/Codec;Lden$d;Ljava/lang/Object;Ldeo$b;)Lcom/mojang/serialization/Codec;named createCodecLnet/minecraft/world/chunk/PalettedContainer;createCodec(Lnet/minecraft/util/collection/IndexedIterable;Lcom/mojang/serialization/Codec;Lnet/minecraft/world/chunk/PalettedContainer$PaletteProvider;Ljava/lang/Object;Lnet/minecraft/world/chunk/ReadableContainer$Reader;)Lcom/mojang/serialization/Codec;
-
getCompatibleData
private PalettedContainer.Data<T> getCompatibleData(@Nullable @Nullable PalettedContainer.Data<T> previousData, int bits) Returns a compatible data object for the given entrybitssize. This may return a new data object or returnpreviousDataif it can be reused.- Parameters:
previousData- the previous data, may be reused if suitablebits- the number of bits each entry uses- Returns:
- a compatible data object for the given entry
bitssize - Mappings:
Namespace Name Mixin selector intermediary method_38297Lnet/minecraft/class_2841;method_38297(Lnet/minecraft/class_2841$class_6561;I)Lnet/minecraft/class_2841$class_6561;official aLden;a(Lden$c;I)Lden$c;named getCompatibleDataLnet/minecraft/world/chunk/PalettedContainer;getCompatibleData(Lnet/minecraft/world/chunk/PalettedContainer$Data;I)Lnet/minecraft/world/chunk/PalettedContainer$Data;
-
onResize
Callback for a palette's request to resize to at leastnewBitsfor each entry and to update the storage correspondingly in order to accommodate the new object. After the resize is completed in this method, returns the ID assigned to theobjectin the updated palette.- Specified by:
onResizein interfacePaletteResizeListener<T>- Returns:
- the ID for the
objectin the (possibly new) palette - Mappings:
Namespace Name Mixin selector intermediary onResizeLnet/minecraft/class_2835;onResize(ILjava/lang/Object;)Iofficial onResizeLdem;onResize(ILjava/lang/Object;)Inamed onResizeLnet/minecraft/world/chunk/PaletteResizeListener;onResize(ILjava/lang/Object;)I
-
swap
- Mappings:
Namespace Name Mixin selector intermediary method_12328Lnet/minecraft/class_2841;method_12328(IIILjava/lang/Object;)Ljava/lang/Object;official aLden;a(IIILjava/lang/Object;)Ljava/lang/Object;named swapLnet/minecraft/world/chunk/PalettedContainer;swap(IIILjava/lang/Object;)Ljava/lang/Object;
-
swapUnsafe
- Mappings:
Namespace Name Mixin selector intermediary method_16678Lnet/minecraft/class_2841;method_16678(IIILjava/lang/Object;)Ljava/lang/Object;official bLden;b(IIILjava/lang/Object;)Ljava/lang/Object;named swapUnsafeLnet/minecraft/world/chunk/PalettedContainer;swapUnsafe(IIILjava/lang/Object;)Ljava/lang/Object;
-
swap
- Mappings:
Namespace Name Mixin selector intermediary method_12336Lnet/minecraft/class_2841;method_12336(ILjava/lang/Object;)Ljava/lang/Object;official aLden;a(ILjava/lang/Object;)Ljava/lang/Object;named swapLnet/minecraft/world/chunk/PalettedContainer;swap(ILjava/lang/Object;)Ljava/lang/Object;
-
set
- Mappings:
Namespace Name Mixin selector intermediary method_35321Lnet/minecraft/class_2841;method_35321(IIILjava/lang/Object;)Vofficial cLden;c(IIILjava/lang/Object;)Vnamed setLnet/minecraft/world/chunk/PalettedContainer;set(IIILjava/lang/Object;)V
-
set
- Mappings:
Namespace Name Mixin selector intermediary method_12322Lnet/minecraft/class_2841;method_12322(ILjava/lang/Object;)Vofficial bLden;b(ILjava/lang/Object;)Vnamed setLnet/minecraft/world/chunk/PalettedContainer;set(ILjava/lang/Object;)V
-
get
- Specified by:
getin interfaceReadableContainer<T>- Mappings:
Namespace Name Mixin selector intermediary method_12321Lnet/minecraft/class_7522;method_12321(III)Ljava/lang/Object;official aLdeo;a(III)Ljava/lang/Object;named getLnet/minecraft/world/chunk/ReadableContainer;get(III)Ljava/lang/Object;
-
get
- Mappings:
Namespace Name Mixin selector intermediary method_12331Lnet/minecraft/class_2841;method_12331(I)Ljava/lang/Object;official aLden;a(I)Ljava/lang/Object;named getLnet/minecraft/world/chunk/PalettedContainer;get(I)Ljava/lang/Object;
-
forEachValue
- Specified by:
forEachValuein interfaceReadableContainer<T>- Mappings:
Namespace Name Mixin selector intermediary method_39793Lnet/minecraft/class_7522;method_39793(Ljava/util/function/Consumer;)Vofficial aLdeo;a(Ljava/util/function/Consumer;)Vnamed forEachValueLnet/minecraft/world/chunk/ReadableContainer;forEachValue(Ljava/util/function/Consumer;)V
-
readPacket
Reads data from the packet byte buffer into this container. Previous data in this container is discarded.- Parameters:
buf- the packet byte buffer- Mappings:
Namespace Name Mixin selector intermediary method_12326Lnet/minecraft/class_2841;method_12326(Lnet/minecraft/class_2540;)Vofficial aLden;a(Lsf;)Vnamed readPacketLnet/minecraft/world/chunk/PalettedContainer;readPacket(Lnet/minecraft/network/PacketByteBuf;)V
-
writePacket
Writes this container to the packet byte buffer.- Specified by:
writePacketin interfaceReadableContainer<T>- Parameters:
buf- the packet byte buffer- Mappings:
Namespace Name Mixin selector intermediary method_12325Lnet/minecraft/class_7522;method_12325(Lnet/minecraft/class_2540;)Vofficial bLdeo;b(Lsf;)Vnamed writePacketLnet/minecraft/world/chunk/ReadableContainer;writePacket(Lnet/minecraft/network/PacketByteBuf;)V
-
read
private static <T> com.mojang.serialization.DataResult<PalettedContainer<T>> read(IndexedIterable<T> idList, PalettedContainer.PaletteProvider paletteProvider, ReadableContainer.Serialized<T> serialized) - Mappings:
Namespace Name Mixin selector intermediary method_44346Lnet/minecraft/class_2841;method_44346(Lnet/minecraft/class_2359;Lnet/minecraft/class_2841$class_6563;Lnet/minecraft/class_7522$class_6562;)Lcom/mojang/serialization/DataResult;official aLden;a(Lhj;Lden$d;Ldeo$a;)Lcom/mojang/serialization/DataResult;named readLnet/minecraft/world/chunk/PalettedContainer;read(Lnet/minecraft/util/collection/IndexedIterable;Lnet/minecraft/world/chunk/PalettedContainer$PaletteProvider;Lnet/minecraft/world/chunk/ReadableContainer$Serialized;)Lcom/mojang/serialization/DataResult;
-
serialize
public ReadableContainer.Serialized<T> serialize(IndexedIterable<T> idList, PalettedContainer.PaletteProvider paletteProvider) - Specified by:
serializein interfaceReadableContainer<T>- Mappings:
Namespace Name Mixin selector intermediary method_44345Lnet/minecraft/class_7522;method_44345(Lnet/minecraft/class_2359;Lnet/minecraft/class_2841$class_6563;)Lnet/minecraft/class_7522$class_6562;official aLdeo;a(Lhj;Lden$d;)Ldeo$a;named serializeLnet/minecraft/world/chunk/ReadableContainer;serialize(Lnet/minecraft/util/collection/IndexedIterable;Lnet/minecraft/world/chunk/PalettedContainer$PaletteProvider;)Lnet/minecraft/world/chunk/ReadableContainer$Serialized;
-
applyEach
Appliesapplierto each value ofis, modifying the array.- Implementation Note:
- This caches the last value to be applied and its result, so
appliermight not be called for all values. Note that this also causes the applier to not be applied for initial-1s. - Mappings:
Namespace Name Mixin selector intermediary method_39894Lnet/minecraft/class_2841;method_39894([ILjava/util/function/IntUnaryOperator;)Vofficial aLden;a([ILjava/util/function/IntUnaryOperator;)Vnamed applyEachLnet/minecraft/world/chunk/PalettedContainer;applyEach([ILjava/util/function/IntUnaryOperator;)V
-
getPacketSize
public int getPacketSize()- Specified by:
getPacketSizein interfaceReadableContainer<T>- Mappings:
Namespace Name Mixin selector intermediary method_12327Lnet/minecraft/class_7522;method_12327()Iofficial cLdeo;c()Inamed getPacketSizeLnet/minecraft/world/chunk/ReadableContainer;getPacketSize()I
-
hasAny
Returnstrueif any object in this container's palette matches this predicate.- Specified by:
hasAnyin interfaceReadableContainer<T>- Returns:
trueif any object in this container's palette matches this predicate- Mappings:
Namespace Name Mixin selector intermediary method_19526Lnet/minecraft/class_7522;method_19526(Ljava/util/function/Predicate;)Zofficial aLdeo;a(Ljava/util/function/Predicate;)Znamed hasAnyLnet/minecraft/world/chunk/ReadableContainer;hasAny(Ljava/util/function/Predicate;)Z
-
copy
- Mappings:
Namespace Name Mixin selector intermediary method_39957Lnet/minecraft/class_2841;method_39957()Lnet/minecraft/class_2841;official dLden;d()Lden;named copyLnet/minecraft/world/chunk/PalettedContainer;copy()Lnet/minecraft/world/chunk/PalettedContainer;
-
slice
- Specified by:
slicein interfaceReadableContainer<T>- Mappings:
Namespace Name Mixin selector intermediary method_44350Lnet/minecraft/class_7522;method_44350()Lnet/minecraft/class_2841;official eLdeo;e()Lden;named sliceLnet/minecraft/world/chunk/ReadableContainer;slice()Lnet/minecraft/world/chunk/PalettedContainer;
-
count
- Specified by:
countin interfaceReadableContainer<T>- Mappings:
Namespace Name Mixin selector intermediary method_21732Lnet/minecraft/class_7522;method_21732(Lnet/minecraft/class_2841$class_4464;)Vofficial aLdeo;a(Lden$b;)Vnamed countLnet/minecraft/world/chunk/ReadableContainer;count(Lnet/minecraft/world/chunk/PalettedContainer$Counter;)V
-