mirror of
https://github.com/Xiao-MoMi/Custom-Crops.git
synced 2025-12-19 15:09:25 +00:00
3.6.13
This commit is contained in:
@@ -61,7 +61,6 @@ import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public class PotBlock extends AbstractCustomCropsBlock {
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
import java.util.Optional;
|
||||
import java.util.PriorityQueue;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.PriorityBlockingQueue;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
@@ -227,7 +228,7 @@ public interface CustomCropsChunk {
|
||||
*
|
||||
* @return A {@link PriorityQueue} of {@link DelayedTickTask}.
|
||||
*/
|
||||
PriorityQueue<DelayedTickTask> tickTaskQueue();
|
||||
PriorityBlockingQueue<DelayedTickTask> tickTaskQueue();
|
||||
|
||||
/**
|
||||
* Gets the set of blocks that have been ticked in one tick cycle within this chunk.
|
||||
|
||||
@@ -22,6 +22,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.PriorityBlockingQueue;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@@ -30,7 +31,7 @@ public class CustomCropsChunkImpl implements CustomCropsChunk {
|
||||
private final CustomCropsWorld<?> world;
|
||||
private final ChunkPos chunkPos;
|
||||
private final ConcurrentHashMap<Integer, CustomCropsSection> loadedSections;
|
||||
private final PriorityQueue<DelayedTickTask> queue;
|
||||
private final PriorityBlockingQueue<DelayedTickTask> queue;
|
||||
private final Set<BlockPos> tickedBlocks;
|
||||
private long lastUnloadTime;
|
||||
private int loadedSeconds;
|
||||
@@ -44,7 +45,7 @@ public class CustomCropsChunkImpl implements CustomCropsChunk {
|
||||
this.world = world;
|
||||
this.chunkPos = chunkPos;
|
||||
this.loadedSections = new ConcurrentHashMap<>(16);
|
||||
this.queue = new PriorityQueue<>();
|
||||
this.queue = new PriorityBlockingQueue<>();
|
||||
this.lazySeconds = 0;
|
||||
this.tickedBlocks = Collections.synchronizedSet(new HashSet<>());
|
||||
this.notified = true;
|
||||
@@ -58,7 +59,7 @@ public class CustomCropsChunkImpl implements CustomCropsChunk {
|
||||
int loadedSeconds,
|
||||
long lastUnloadTime,
|
||||
ConcurrentHashMap<Integer, CustomCropsSection> loadedSections,
|
||||
PriorityQueue<DelayedTickTask> queue,
|
||||
PriorityBlockingQueue<DelayedTickTask> queue,
|
||||
HashSet<BlockPos> tickedBlocks
|
||||
) {
|
||||
this.world = world;
|
||||
@@ -313,7 +314,7 @@ public class CustomCropsChunkImpl implements CustomCropsChunk {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PriorityQueue<DelayedTickTask> tickTaskQueue() {
|
||||
public PriorityBlockingQueue<DelayedTickTask> tickTaskQueue() {
|
||||
return queue;
|
||||
}
|
||||
|
||||
|
||||
@@ -24,8 +24,8 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Optional;
|
||||
import java.util.PriorityQueue;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.PriorityBlockingQueue;
|
||||
|
||||
/**
|
||||
* Interface representing a custom world in the CustomCrops plugin
|
||||
@@ -72,7 +72,7 @@ public interface CustomCropsWorld<W> {
|
||||
int loadedSeconds,
|
||||
long lastLoadedTime,
|
||||
ConcurrentHashMap<Integer, CustomCropsSection> loadedSections,
|
||||
PriorityQueue<DelayedTickTask> queue,
|
||||
PriorityBlockingQueue<DelayedTickTask> queue,
|
||||
HashSet<BlockPos> tickedBlocks
|
||||
) {
|
||||
return new CustomCropsChunkImpl(this, pos, loadedSeconds, lastLoadedTime, loadedSections, queue, tickedBlocks);
|
||||
|
||||
@@ -29,6 +29,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.PriorityBlockingQueue;
|
||||
|
||||
public abstract class AbstractWorldAdaptor<W> implements WorldAdaptor<W> {
|
||||
|
||||
@@ -127,7 +128,7 @@ public abstract class AbstractWorldAdaptor<W> implements WorldAdaptor<W> {
|
||||
return ticked;
|
||||
}
|
||||
|
||||
private int[] queueToIntArray(PriorityQueue<DelayedTickTask> queue) {
|
||||
private int[] queueToIntArray(PriorityBlockingQueue<DelayedTickTask> queue) {
|
||||
queue.removeIf(Objects::isNull);
|
||||
int size = queue.size() * 2;
|
||||
int[] tasks = new int[size];
|
||||
|
||||
@@ -36,8 +36,8 @@ import java.lang.reflect.Method;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.PriorityQueue;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.PriorityBlockingQueue;
|
||||
import java.util.function.Function;
|
||||
|
||||
public class SlimeWorldAdaptorR1 extends AbstractWorldAdaptor<SlimeWorld> {
|
||||
@@ -204,7 +204,7 @@ public class SlimeWorldAdaptorR1 extends AbstractWorldAdaptor<SlimeWorld> {
|
||||
int[] queued = (int[]) map.get("queued").getValue();
|
||||
int[] ticked = (int[]) map.get("ticked").getValue();
|
||||
|
||||
PriorityQueue<DelayedTickTask> queue = new PriorityQueue<>(Math.max(11, queued.length / 2));
|
||||
PriorityBlockingQueue<DelayedTickTask> queue = new PriorityBlockingQueue<>(Math.max(11, queued.length / 2));
|
||||
for (int i = 0, size = queued.length / 2; i < size; i++) {
|
||||
BlockPos pos = new BlockPos(queued[2*i+1]);
|
||||
queue.add(new DelayedTickTask(queued[2*i], pos));
|
||||
|
||||
@@ -43,6 +43,7 @@ import java.nio.ByteOrder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.PriorityBlockingQueue;
|
||||
import java.util.function.BiFunction;
|
||||
import java.util.function.Function;
|
||||
|
||||
@@ -392,7 +393,7 @@ public class BukkitWorldAdaptor extends AbstractWorldAdaptor<World> {
|
||||
long lastLoadedTime = chunkData.readLong();
|
||||
// read task queue
|
||||
int tasksSize = chunkData.readInt();
|
||||
PriorityQueue<DelayedTickTask> queue = new PriorityQueue<>(Math.max(11, tasksSize));
|
||||
PriorityBlockingQueue<DelayedTickTask> queue = new PriorityBlockingQueue<>(Math.max(11, tasksSize));
|
||||
for (int i = 0; i < tasksSize; i++) {
|
||||
int time = chunkData.readInt();
|
||||
BlockPos pos = new BlockPos(chunkData.readInt());
|
||||
|
||||
Reference in New Issue
Block a user