Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ tasks
val disabledLint = listOf(
"processing", "path", "fallthrough", "serial", "overloads", "this-escape",
)
options.release.set(21)
options.release.set(25)
options.compilerArgs.addAll(listOf("-Xlint:all") + disabledLint.map { "-Xlint:-$it" })
options.isDeprecation = true
options.encoding = "UTF-8"
Expand Down
2 changes: 1 addition & 1 deletion build-logic/src/main/kotlin/buildlogic.common.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ configurations.all {

plugins.withId("java") {
the<JavaPluginExtension>().toolchain {
languageVersion.set(JavaLanguageVersion.of(21))
languageVersion.set(JavaLanguageVersion.of(25))
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import com.google.common.util.concurrent.Futures;
import com.mojang.datafixers.util.Either;
import com.mojang.serialization.Lifecycle;
import com.sk89q.jnbt.CompoundTag;
import com.sk89q.jnbt.NBTConstants;
import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.WorldEditException;
Expand Down Expand Up @@ -154,7 +155,6 @@
import org.spigotmc.SpigotConfig;
import org.spigotmc.WatchdogThread;

import javax.annotation.Nullable;
import java.lang.ref.WeakReference;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
Expand All @@ -177,6 +177,7 @@
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import javax.annotation.Nullable;

import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Preconditions.checkState;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@
import org.apache.logging.log4j.Logger;
import org.enginehub.linbus.tree.LinCompoundTag;

import javax.annotation.Nullable;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.EnumMap;
Expand All @@ -63,6 +62,7 @@
import java.util.UUID;
import java.util.concurrent.Executor;
import java.util.stream.Collectors;
import javax.annotation.Nullable;

/**
* Handles converting all Pre 1.13.2 data using the Legacy DataFix System (ported to 1.13.2)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@
import org.bukkit.event.block.BlockPhysicsEvent;
import org.enginehub.linbus.tree.LinCompoundTag;

import javax.annotation.Nullable;
import java.lang.ref.WeakReference;
import java.util.Objects;
import javax.annotation.Nullable;

public class PaperweightWorldNativeAccess implements WorldNativeAccess<LevelChunk, net.minecraft.world.level.block.state.BlockState, BlockPos> {
private static final int UPDATE = 1;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -405,21 +405,21 @@ public BlockState adapt(BlockData blockData) {
}

public BlockState adapt(net.minecraft.world.level.block.state.BlockState blockState) {
return BlockTypesCache.states[adaptToChar(blockState)];
return BlockTypesCache.states[adaptToOrdinal(blockState)];
}

public char adaptToChar(net.minecraft.world.level.block.state.BlockState blockState) {
public int adaptToOrdinal(net.minecraft.world.level.block.state.BlockState blockState) {
int id = Block.BLOCK_STATE_REGISTRY.getId(blockState);
if (initialised) {
return (char) ibdToOrdinal[id];
return ibdToOrdinal[id];
}
synchronized (this) {
if (initialised) {
return (char) ibdToOrdinal[id];
return ibdToOrdinal[id];
}
try {
init();
return (char) ibdToOrdinal[id];
return ibdToOrdinal[id];
} catch (ArrayIndexOutOfBoundsException e1) {
LOGGER.error("Attempted to convert {} with ID {} to char. ibdToOrdinal length: {}. Defaulting to air!",
blockState.getBlock(), Block.BLOCK_STATE_REGISTRY.getId(blockState), ibdToOrdinal.length, e1
Expand All @@ -429,16 +429,16 @@ public char adaptToChar(net.minecraft.world.level.block.state.BlockState blockSt
}
}

public char ibdIDToOrdinal(int id) {
public int ibdIDToOrdinal(int id) {
if (initialised) {
return (char) ibdToOrdinal[id];
return ibdToOrdinal[id];
}
synchronized (this) {
if (initialised) {
return (char) ibdToOrdinal[id];
return ibdToOrdinal[id];
}
init();
return (char) ibdToOrdinal[id];
return ibdToOrdinal[id];
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import com.fastasyncworldedit.core.math.IntPair;
import com.fastasyncworldedit.core.nbt.FaweCompoundTag;
import com.fastasyncworldedit.core.queue.IChunkSet;
import com.fastasyncworldedit.core.queue.implementation.blocks.DataArray;
import com.fastasyncworldedit.core.util.MathMan;
import com.fastasyncworldedit.core.util.NbtUtils;
import com.fastasyncworldedit.core.util.collection.AdaptedMap;
Expand Down Expand Up @@ -405,7 +406,7 @@ protected <T extends Future<T>> T internalCall(
);
LevelChunkSection newSection = PaperweightPlatformAdapter.newChunkSection(
layerNo,
new char[4096],
DataArray.createEmpty(),
adapter,
biomeRegistry,
biomeData
Expand All @@ -418,7 +419,7 @@ protected <T extends Future<T>> T internalCall(
newSection,
getSectionIndex
)) {
updateGet(nmsChunk, levelChunkSections, newSection, new char[4096], getSectionIndex);
updateGet(nmsChunk, levelChunkSections, newSection, DataArray.createEmpty(), getSectionIndex);
continue;
} else {
existingSection = levelChunkSections[getSectionIndex];
Expand Down Expand Up @@ -451,9 +452,7 @@ protected <T extends Future<T>> T internalCall(

// setArr is modified by PaperweightPlatformAdapter#newChunkSection. This is in order to write changes to
// this chunk GET when #updateGet is called. Future dords, please listen this time.
char[] tmp = set.load(layerNo);
char[] setArr = new char[tmp.length];
System.arraycopy(tmp, 0, setArr, 0, tmp.length);
DataArray setArr = DataArray.createCopy(set.load(layerNo));

// synchronise on internal section to avoid circular locking with a continuing edit if the chunk was
// submitted to keep loaded internal chunks to queue target size.
Expand All @@ -469,15 +468,12 @@ protected <T extends Future<T>> T internalCall(
}
}

if (createCopy) {
char[] tmpLoad = load(layerNo);
char[] copyArr = new char[4096];
System.arraycopy(tmpLoad, 0, copyArr, 0, 4096);
copy.storeSection(getSectionIndex, copyArr);
if (biomes != null && existingSection != null) {
copy.storeBiomes(getSectionIndex, existingSection.getBiomes());
if (createCopy) {
copy.storeSection(getSectionIndex, DataArray.createCopy(load(layerNo)));
if (biomes != null && existingSection != null) {
copy.storeBiomes(getSectionIndex, existingSection.getBiomes());
}
}
Comment thread
SirYwell marked this conversation as resolved.
}

if (existingSection == null) {
PalettedContainer<Holder<Biome>> biomeData = biomes == null ? new PalettedContainer<>(
Expand Down Expand Up @@ -535,10 +531,9 @@ protected <T extends Future<T>> T internalCall(
} else if (existingSection != getSections(false)[getSectionIndex]) {
this.sections[getSectionIndex] = existingSection;
this.reset();
} else if (!Arrays.equals(update(getSectionIndex, new char[4096], true), load(layerNo))) {
} else if (!update(getSectionIndex, DataArray.createEmpty(), true)
.equals(load(layerNo))) {
this.reset(layerNo);
/*} else if (lock.isModified()) {
this.reset(layerNo);*/
}
} finally {
sectionLock.writeLock().unlock();
Expand Down Expand Up @@ -768,7 +763,7 @@ private void updateGet(
LevelChunk nmsChunk,
LevelChunkSection[] chunkSections,
LevelChunkSection section,
char[] arr,
DataArray arr,
int layer
) {
try {
Expand Down Expand Up @@ -812,16 +807,14 @@ public void send() {
*/
@Override
@SuppressWarnings("unchecked")
public char[] update(int layer, char[] data, boolean aggressive) {
public DataArray update(int layer, DataArray data, boolean aggressive) {
LevelChunkSection section = getSections(aggressive)[layer];
// Section is null, return empty array
if (section == null) {
data = new char[4096];
Arrays.fill(data, (char) BlockTypesCache.ReservedIDs.AIR);
return data;
return DataArray.createFilled(BlockTypesCache.ReservedIDs.AIR);
}
if (data == null || data == FaweCache.INSTANCE.EMPTY_CHAR_4096 || data.length != 4096) {
data = new char[4096]; // new array, will be populated below
if (data == null || data == FaweCache.INSTANCE.EMPTY_DATA) {
data = DataArray.createFilled(BlockTypesCache.ReservedIDs.AIR);
}
Semaphore lock = PaperweightPlatformAdapter.applyLock(section);
synchronized (lock) {
Expand All @@ -834,7 +827,7 @@ public char[] update(int layer, char[] data, boolean aggressive) {
final BitStorage bits = (BitStorage) PaperweightPlatformAdapter.fieldStorage.get(dataObject);

if (bits instanceof ZeroBitStorage) {
Arrays.fill(data, adapter.adaptToChar(blocks.get(0, 0, 0))); // get(int) is only public on paper
data.setAll(adapter.adaptToOrdinal(blocks.get(0, 0, 0))); // get(int) is only public on paper
return data;
}

Expand All @@ -854,14 +847,14 @@ public char[] update(int layer, char[] data, boolean aggressive) {
return data;
}

char[] paletteToOrdinal = FaweCache.INSTANCE.PALETTE_TO_BLOCK_CHAR.get();
int[] paletteToOrdinal = FaweCache.INSTANCE.PALETTE_TO_BLOCK.get();
try {
if (num_palette == 1) {
char ordinal = ordinal(palette.valueFor(0), adapter);
Arrays.fill(data, ordinal);
int ordinal = ordinal(palette.valueFor(0), adapter);
data.setAll(ordinal);
} else {
for (int i = 0; i < num_palette; i++) {
char ordinal = ordinal(palette.valueFor(i), adapter);
int ordinal = ordinal(palette.valueFor(i), adapter);
paletteToOrdinal[i] = ordinal;
}
adapter.mapWithPalette(data, paletteToOrdinal);
Expand All @@ -879,11 +872,11 @@ public char[] update(int layer, char[] data, boolean aggressive) {
}
}

private char ordinal(BlockState ibd, PaperweightFaweAdapter adapter) {
private int ordinal(BlockState ibd, PaperweightFaweAdapter adapter) {
if (ibd == null) {
return BlockTypesCache.ReservedIDs.AIR;
} else {
return adapter.adaptToChar(ibd);
return adapter.adaptToOrdinal(ibd);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.fastasyncworldedit.core.queue.IChunkGet;
import com.fastasyncworldedit.core.queue.IChunkSet;
import com.fastasyncworldedit.core.queue.IQueueExtent;
import com.fastasyncworldedit.core.queue.implementation.blocks.DataArray;
import com.fastasyncworldedit.core.util.NbtUtils;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter;
Expand All @@ -30,7 +31,6 @@
import org.enginehub.linbus.tree.LinCompoundTag;

import javax.annotation.Nullable;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
Expand All @@ -45,7 +45,7 @@ public class PaperweightGetBlocks_Copy implements IChunkGet {

private final Map<BlockVector3, FaweCompoundTag> tiles = new HashMap<>();
private final Set<FaweCompoundTag> entities = new HashSet<>();
private final char[][] blocks;
private final DataArray[] blocks;
private final int minHeight;
private final int maxHeight;
private final int chunkX;
Expand All @@ -59,7 +59,7 @@ protected PaperweightGetBlocks_Copy(LevelChunk levelChunk) {
this.serverLevel = levelChunk.level;
this.minHeight = serverLevel.getMinBuildHeight();
this.maxHeight = serverLevel.getMaxBuildHeight() - 1; // Minecraft max limit is exclusive.
this.blocks = new char[getSectionCount()][];
this.blocks = new DataArray[getSectionCount()];
this.chunkX = levelChunk.getPos().x;
this.chunkZ = levelChunk.getPos().z;
}
Expand Down Expand Up @@ -182,7 +182,7 @@ public int getSectionCount() {
return serverLevel.getSectionsCount();
}

protected void storeSection(int layer, char[] data) {
protected void storeSection(int layer, DataArray data) {
blocks[layer] = data;
}

Expand Down Expand Up @@ -230,17 +230,16 @@ public boolean hasSection(int layer) {
}

@Override
public char[] load(int layer) {
public DataArray load(int layer) {
layer -= getMinSectionPosition();
if (blocks[layer] == null) {
blocks[layer] = new char[4096];
Arrays.fill(blocks[layer], (char) BlockTypesCache.ReservedIDs.AIR);
blocks[layer] = DataArray.createFilled(BlockTypesCache.ReservedIDs.AIR);
}
return blocks[layer];
}

@Override
public char[] loadIfPresent(int layer) {
public DataArray loadIfPresent(int layer) {
layer -= getMinSectionPosition();
return blocks[layer];
}
Expand Down Expand Up @@ -280,10 +279,10 @@ public <T extends Future<T>> T call(IQueueExtent<? extends IChunk> owner, IChunk
return null;
}

public char get(int x, int y, int z) {
public int get(int x, int y, int z) {
final int layer = (y >> 4) - getMinSectionPosition();
final int index = (y & 15) << 8 | z << 4 | x;
return blocks[layer][index];
return blocks[layer].getAt(index);
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public PaperweightPlacementStateProcessor(Extent extent, BlockTypeMask mask, Reg
private PaperweightPlacementStateProcessor(
Extent extent,
BlockTypeMask mask,
Map<SecondPass, Character> crossChunkSecondPasses,
Map<SecondPass, Integer> crossChunkSecondPasses,
ThreadLocal<PlacementStateProcessor> threadProcessors,
Region region,
AtomicBoolean finished
Expand All @@ -74,7 +74,7 @@ private PaperweightPlacementStateProcessor(
}

@Override
protected char getStateAtFor(
protected int getStateAtFor(
int x,
int y,
int z,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.fastasyncworldedit.core.FaweCache;
import com.fastasyncworldedit.core.math.BitArrayUnstretched;
import com.fastasyncworldedit.core.math.IntPair;
import com.fastasyncworldedit.core.queue.implementation.blocks.DataArray;
import com.fastasyncworldedit.core.util.MathMan;
import com.fastasyncworldedit.core.util.TaskManager;
import com.mojang.datafixers.util.Either;
Expand Down Expand Up @@ -405,7 +406,7 @@ private static List<ServerPlayer> nearbyPlayers(ServerLevel serverLevel, ChunkPo
*/
public static LevelChunkSection newChunkSection(
final int layer,
final char[] blocks,
final DataArray blocks,
CachedBukkitAdapter adapter,
Registry<Biome> biomeRegistry,
@Nullable PalettedContainer<Holder<Biome>> biomes
Expand All @@ -415,8 +416,8 @@ public static LevelChunkSection newChunkSection(

public static LevelChunkSection newChunkSection(
final int layer,
final IntFunction<char[]> get,
char[] set,
final IntFunction<DataArray> get,
DataArray set,
CachedBukkitAdapter adapter,
Registry<Biome> biomeRegistry,
@Nullable PalettedContainer<Holder<Biome>> biomes
Expand Down
Loading
Loading