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
official def
intermediary net/minecraft/class_2841
named net/minecraft/world/chunk/PalettedContainer
  • Field Details

    • field_34557

      private static final int field_34557
      See Also:
      Mappings:
      Namespace Name Mixin selector
      official a Ldef;a:I
      intermediary field_34557 Lnet/minecraft/class_2841;field_34557:I
      named field_34557 Lnet/minecraft/world/chunk/PalettedContainer;field_34557:I
    • dummyListener

      private final PaletteResizeListener<T> dummyListener
      Mappings:
      Namespace Name Mixin selector
      official b Ldef;b:Ldee;
      intermediary field_34558 Lnet/minecraft/class_2841;field_34558:Lnet/minecraft/class_2835;
      named dummyListener Lnet/minecraft/world/chunk/PalettedContainer;dummyListener:Lnet/minecraft/world/chunk/PaletteResizeListener;
    • idList

      private final IndexedIterable<T> idList
      Mappings:
      Namespace Name Mixin selector
      official c Ldef;c:Lhi;
      intermediary field_34559 Lnet/minecraft/class_2841;field_34559:Lnet/minecraft/class_2359;
      named idList Lnet/minecraft/world/chunk/PalettedContainer;idList:Lnet/minecraft/util/collection/IndexedIterable;
    • data

      private volatile PalettedContainer.Data<T> data
      Mappings:
      Namespace Name Mixin selector
      official d Ldef;d:Ldef$c;
      intermediary field_34560 Lnet/minecraft/class_2841;field_34560:Lnet/minecraft/class_2841$class_6561;
      named data Lnet/minecraft/world/chunk/PalettedContainer;data:Lnet/minecraft/world/chunk/PalettedContainer$Data;
    • paletteProvider

      private final PalettedContainer.PaletteProvider paletteProvider
      Mappings:
      Namespace Name Mixin selector
      official e Ldef;e:Ldef$d;
      intermediary field_34561 Lnet/minecraft/class_2841;field_34561:Lnet/minecraft/class_2841$class_6563;
      named paletteProvider Lnet/minecraft/world/chunk/PalettedContainer;paletteProvider:Lnet/minecraft/world/chunk/PalettedContainer$PaletteProvider;
    • lockHelper

      private final LockHelper lockHelper
      Mappings:
      Namespace Name Mixin selector
      official f Ldef;f:Laqd;
      intermediary field_36300 Lnet/minecraft/class_2841;field_36300:Lnet/minecraft/class_5798;
      named lockHelper Lnet/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
      official <init> Ldef;<init>(Lhi;Ldef$d;Ldef$a;Laoc;Ljava/util/List;)V
      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;)V
      named <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
      official <init> Ldef;<init>(Lhi;Ldef$d;Ldef$c;)V
      intermediary <init> Lnet/minecraft/class_2841;<init>(Lnet/minecraft/class_2359;Lnet/minecraft/class_2841$class_6563;Lnet/minecraft/class_2841$class_6561;)V
      named <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
      official <init> Ldef;<init>(Lhi;Ljava/lang/Object;Ldef$d;)V
      intermediary <init> Lnet/minecraft/class_2841;<init>(Lnet/minecraft/class_2359;Ljava/lang/Object;Lnet/minecraft/class_2841$class_6563;)V
      named <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
      official a Ldef;a()V
      intermediary method_12334 Lnet/minecraft/class_2841;method_12334()V
      named lock Lnet/minecraft/world/chunk/PalettedContainer;lock()V
    • unlock

      public void unlock()
      Releases the semaphore on this container.
      Mappings:
      Namespace Name Mixin selector
      official b Ldef;b()V
      intermediary method_12335 Lnet/minecraft/class_2841;method_12335()V
      named unlock Lnet/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
      official a Ldef;a(Lhi;Lcom/mojang/serialization/Codec;Ldef$d;Ljava/lang/Object;)Lcom/mojang/serialization/Codec;
      intermediary method_44343 Lnet/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;
      named createPalettedContainerCodec Lnet/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
      official b Ldef;b(Lhi;Lcom/mojang/serialization/Codec;Ldef$d;Ljava/lang/Object;)Lcom/mojang/serialization/Codec;
      intermediary method_44347 Lnet/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;
      named createReadableContainerCodec Lnet/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 palette
      provider - 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
      official a Ldef;a(Lhi;Lcom/mojang/serialization/Codec;Ldef$d;Ljava/lang/Object;Ldeg$b;)Lcom/mojang/serialization/Codec;
      intermediary method_38298 Lnet/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;
      named createCodec Lnet/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 entry bits size. This may return a new data object or return previousData if it can be reused.
      Parameters:
      previousData - the previous data, may be reused if suitable
      bits - the number of bits each entry uses
      Returns:
      a compatible data object for the given entry bits size
      Mappings:
      Namespace Name Mixin selector
      official a Ldef;a(Ldef$c;I)Ldef$c;
      intermediary method_38297 Lnet/minecraft/class_2841;method_38297(Lnet/minecraft/class_2841$class_6561;I)Lnet/minecraft/class_2841$class_6561;
      named getCompatibleData Lnet/minecraft/world/chunk/PalettedContainer;getCompatibleData(Lnet/minecraft/world/chunk/PalettedContainer$Data;I)Lnet/minecraft/world/chunk/PalettedContainer$Data;
    • onResize

      public int onResize(int newBits, T object)
      Callback for a palette's request to resize to at least newBits for 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 the object in the updated palette.
      Specified by:
      onResize in interface PaletteResizeListener<T>
      Returns:
      the ID for the object in the (possibly new) palette
      Mappings:
      Namespace Name Mixin selector
      official onResize Ldee;onResize(ILjava/lang/Object;)I
      intermediary onResize Lnet/minecraft/class_2835;onResize(ILjava/lang/Object;)I
      named onResize Lnet/minecraft/world/chunk/PaletteResizeListener;onResize(ILjava/lang/Object;)I
    • swap

      public T swap(int x, int y, int z, T value)
      Mappings:
      Namespace Name Mixin selector
      official a Ldef;a(IIILjava/lang/Object;)Ljava/lang/Object;
      intermediary method_12328 Lnet/minecraft/class_2841;method_12328(IIILjava/lang/Object;)Ljava/lang/Object;
      named swap Lnet/minecraft/world/chunk/PalettedContainer;swap(IIILjava/lang/Object;)Ljava/lang/Object;
    • swapUnsafe

      public T swapUnsafe(int x, int y, int z, T value)
      Mappings:
      Namespace Name Mixin selector
      official b Ldef;b(IIILjava/lang/Object;)Ljava/lang/Object;
      intermediary method_16678 Lnet/minecraft/class_2841;method_16678(IIILjava/lang/Object;)Ljava/lang/Object;
      named swapUnsafe Lnet/minecraft/world/chunk/PalettedContainer;swapUnsafe(IIILjava/lang/Object;)Ljava/lang/Object;
    • swap

      private T swap(int index, T value)
      Mappings:
      Namespace Name Mixin selector
      official a Ldef;a(ILjava/lang/Object;)Ljava/lang/Object;
      intermediary method_12336 Lnet/minecraft/class_2841;method_12336(ILjava/lang/Object;)Ljava/lang/Object;
      named swap Lnet/minecraft/world/chunk/PalettedContainer;swap(ILjava/lang/Object;)Ljava/lang/Object;
    • set

      public void set(int x, int y, int z, T value)
      Mappings:
      Namespace Name Mixin selector
      official c Ldef;c(IIILjava/lang/Object;)V
      intermediary method_35321 Lnet/minecraft/class_2841;method_35321(IIILjava/lang/Object;)V
      named set Lnet/minecraft/world/chunk/PalettedContainer;set(IIILjava/lang/Object;)V
    • set

      private void set(int index, T value)
      Mappings:
      Namespace Name Mixin selector
      official b Ldef;b(ILjava/lang/Object;)V
      intermediary method_12322 Lnet/minecraft/class_2841;method_12322(ILjava/lang/Object;)V
      named set Lnet/minecraft/world/chunk/PalettedContainer;set(ILjava/lang/Object;)V
    • get

      public T get(int x, int y, int z)
      Specified by:
      get in interface ReadableContainer<T>
      Mappings:
      Namespace Name Mixin selector
      official a Ldeg;a(III)Ljava/lang/Object;
      intermediary method_12321 Lnet/minecraft/class_7522;method_12321(III)Ljava/lang/Object;
      named get Lnet/minecraft/world/chunk/ReadableContainer;get(III)Ljava/lang/Object;
    • get

      protected T get(int index)
      Mappings:
      Namespace Name Mixin selector
      official a Ldef;a(I)Ljava/lang/Object;
      intermediary method_12331 Lnet/minecraft/class_2841;method_12331(I)Ljava/lang/Object;
      named get Lnet/minecraft/world/chunk/PalettedContainer;get(I)Ljava/lang/Object;
    • forEachValue

      public void forEachValue(Consumer<T> action)
      Specified by:
      forEachValue in interface ReadableContainer<T>
      Mappings:
      Namespace Name Mixin selector
      official a Ldeg;a(Ljava/util/function/Consumer;)V
      intermediary method_39793 Lnet/minecraft/class_7522;method_39793(Ljava/util/function/Consumer;)V
      named forEachValue Lnet/minecraft/world/chunk/ReadableContainer;forEachValue(Ljava/util/function/Consumer;)V
    • readPacket

      public void readPacket(PacketByteBuf buf)
      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
      official a Ldef;a(Lss;)V
      intermediary method_12326 Lnet/minecraft/class_2841;method_12326(Lnet/minecraft/class_2540;)V
      named readPacket Lnet/minecraft/world/chunk/PalettedContainer;readPacket(Lnet/minecraft/network/PacketByteBuf;)V
    • writePacket

      public void writePacket(PacketByteBuf buf)
      Writes this container to the packet byte buffer.
      Specified by:
      writePacket in interface ReadableContainer<T>
      Parameters:
      buf - the packet byte buffer
      Mappings:
      Namespace Name Mixin selector
      official b Ldeg;b(Lss;)V
      intermediary method_12325 Lnet/minecraft/class_7522;method_12325(Lnet/minecraft/class_2540;)V
      named writePacket Lnet/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
      official a Ldef;a(Lhi;Ldef$d;Ldeg$a;)Lcom/mojang/serialization/DataResult;
      intermediary method_44346 Lnet/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;
      named read Lnet/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:
      serialize in interface ReadableContainer<T>
      Mappings:
      Namespace Name Mixin selector
      official a Ldeg;a(Lhi;Ldef$d;)Ldeg$a;
      intermediary method_44345 Lnet/minecraft/class_7522;method_44345(Lnet/minecraft/class_2359;Lnet/minecraft/class_2841$class_6563;)Lnet/minecraft/class_7522$class_6562;
      named serialize Lnet/minecraft/world/chunk/ReadableContainer;serialize(Lnet/minecraft/util/collection/IndexedIterable;Lnet/minecraft/world/chunk/PalettedContainer$PaletteProvider;)Lnet/minecraft/world/chunk/ReadableContainer$Serialized;
    • applyEach

      private static <T> void applyEach(int[] is, IntUnaryOperator applier)
      Applies applier to each value of is, modifying the array.
      Implementation Note:
      This caches the last value to be applied and its result, so applier might 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
      official a Ldef;a([ILjava/util/function/IntUnaryOperator;)V
      intermediary method_39894 Lnet/minecraft/class_2841;method_39894([ILjava/util/function/IntUnaryOperator;)V
      named applyEach Lnet/minecraft/world/chunk/PalettedContainer;applyEach([ILjava/util/function/IntUnaryOperator;)V
    • getPacketSize

      public int getPacketSize()
      Specified by:
      getPacketSize in interface ReadableContainer<T>
      Mappings:
      Namespace Name Mixin selector
      official c Ldeg;c()I
      intermediary method_12327 Lnet/minecraft/class_7522;method_12327()I
      named getPacketSize Lnet/minecraft/world/chunk/ReadableContainer;getPacketSize()I
    • hasAny

      public boolean hasAny(Predicate<T> predicate)
      Returns true if any object in this container's palette matches this predicate.
      Specified by:
      hasAny in interface ReadableContainer<T>
      Returns:
      true if any object in this container's palette matches this predicate
      Mappings:
      Namespace Name Mixin selector
      official a Ldeg;a(Ljava/util/function/Predicate;)Z
      intermediary method_19526 Lnet/minecraft/class_7522;method_19526(Ljava/util/function/Predicate;)Z
      named hasAny Lnet/minecraft/world/chunk/ReadableContainer;hasAny(Ljava/util/function/Predicate;)Z
    • copy

      public PalettedContainer<T> copy()
      Mappings:
      Namespace Name Mixin selector
      official d Ldef;d()Ldef;
      intermediary method_39957 Lnet/minecraft/class_2841;method_39957()Lnet/minecraft/class_2841;
      named copy Lnet/minecraft/world/chunk/PalettedContainer;copy()Lnet/minecraft/world/chunk/PalettedContainer;
    • slice

      public PalettedContainer<T> slice()
      Specified by:
      slice in interface ReadableContainer<T>
      Mappings:
      Namespace Name Mixin selector
      official e Ldeg;e()Ldef;
      intermediary method_44350 Lnet/minecraft/class_7522;method_44350()Lnet/minecraft/class_2841;
      named slice Lnet/minecraft/world/chunk/ReadableContainer;slice()Lnet/minecraft/world/chunk/PalettedContainer;
    • count

      public void count(PalettedContainer.Counter<T> counter)
      Specified by:
      count in interface ReadableContainer<T>
      Mappings:
      Namespace Name Mixin selector
      official a Ldeg;a(Ldef$b;)V
      intermediary method_21732 Lnet/minecraft/class_7522;method_21732(Lnet/minecraft/class_2841$class_4464;)V
      named count Lnet/minecraft/world/chunk/ReadableContainer;count(Lnet/minecraft/world/chunk/PalettedContainer$Counter;)V