mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-24 01:19:24 +00:00
fix 1.21.5
This commit is contained in:
@@ -217,6 +217,20 @@ public class FriendlyByteBuf extends ByteBuf {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public FriendlyByteBuf writeFixedSizeLongArray(long[] array) {
|
||||||
|
for (long value : array) {
|
||||||
|
this.writeLong(value);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long[] readFixedSizeLongArray(long[] output) {
|
||||||
|
for(int i = 0; i < output.length; ++i) {
|
||||||
|
output[i] = this.readLong();
|
||||||
|
}
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
public long[] readLongArray() {
|
public long[] readLongArray() {
|
||||||
return this.readLongArray(null);
|
return this.readLongArray(null);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import net.momirealms.craftengine.core.plugin.CraftEngine;
|
|||||||
import net.momirealms.craftengine.core.util.FriendlyByteBuf;
|
import net.momirealms.craftengine.core.util.FriendlyByteBuf;
|
||||||
import net.momirealms.craftengine.core.util.IndexedIterable;
|
import net.momirealms.craftengine.core.util.IndexedIterable;
|
||||||
import net.momirealms.craftengine.core.util.MCUtils;
|
import net.momirealms.craftengine.core.util.MCUtils;
|
||||||
|
import net.momirealms.craftengine.core.util.VersionHelper;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@@ -15,12 +16,14 @@ import java.util.List;
|
|||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.concurrent.locks.Lock;
|
import java.util.concurrent.locks.Lock;
|
||||||
import java.util.concurrent.locks.ReentrantLock;
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.*;
|
||||||
import java.util.function.IntUnaryOperator;
|
|
||||||
import java.util.function.Predicate;
|
|
||||||
import java.util.stream.LongStream;
|
import java.util.stream.LongStream;
|
||||||
|
|
||||||
public class PalettedContainer<T> implements PaletteResizeListener<T>, ReadableContainer<T> {
|
public class PalettedContainer<T> implements PaletteResizeListener<T>, ReadableContainer<T> {
|
||||||
|
private static final BiConsumer<FriendlyByteBuf, long[]> RAW_DATA_WRITER = VersionHelper.isVersionNewerThan1_21_5() ?
|
||||||
|
(FriendlyByteBuf::writeFixedSizeLongArray) : (FriendlyByteBuf::writeLongArray);
|
||||||
|
private static final BiConsumer<FriendlyByteBuf, long[]> RAW_DATA_READER = VersionHelper.isVersionNewerThan1_21_5() ?
|
||||||
|
(FriendlyByteBuf::readFixedSizeLongArray) : (FriendlyByteBuf::readLongArray);
|
||||||
private final PaletteResizeListener<T> dummyListener = (newSize, added) -> 0;
|
private final PaletteResizeListener<T> dummyListener = (newSize, added) -> 0;
|
||||||
private final IndexedIterable<T> idList;
|
private final IndexedIterable<T> idList;
|
||||||
private Data<T> data;
|
private Data<T> data;
|
||||||
@@ -78,7 +81,7 @@ public class PalettedContainer<T> implements PaletteResizeListener<T>, ReadableC
|
|||||||
int i = buf.readByte();
|
int i = buf.readByte();
|
||||||
Data<T> data = this.getCompatibleData(this.data, i);
|
Data<T> data = this.getCompatibleData(this.data, i);
|
||||||
data.palette.readPacket(buf);
|
data.palette.readPacket(buf);
|
||||||
buf.readLongArray(data.storage.getData());
|
RAW_DATA_READER.accept(buf, data.storage.getData());
|
||||||
this.data = data;
|
this.data = data;
|
||||||
} finally {
|
} finally {
|
||||||
this.unlock();
|
this.unlock();
|
||||||
@@ -303,7 +306,7 @@ public class PalettedContainer<T> implements PaletteResizeListener<T>, ReadableC
|
|||||||
public void writePacket(FriendlyByteBuf buf) {
|
public void writePacket(FriendlyByteBuf buf) {
|
||||||
buf.writeByte(this.storage.getElementBits());
|
buf.writeByte(this.storage.getElementBits());
|
||||||
this.palette.writePacket(buf);
|
this.palette.writePacket(buf);
|
||||||
buf.writeLongArray(this.storage.getData());
|
RAW_DATA_WRITER.accept(buf, this.storage.getData());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user