Mirror von
https://github.com/IntellectualSites/FastAsyncWorldEdit.git
synchronisiert 2024-11-08 04:20:06 +01:00
Merge branch '1.15' of https://github.com/IntellectualSites/FastAsyncWorldEdit-1.13 into 1.15
Dieser Commit ist enthalten in:
Commit
f3d19cf87d
@ -305,6 +305,7 @@ public class FaweBukkit implements IFawe, Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setupPlotSquared() {
|
private void setupPlotSquared() {
|
||||||
|
if(this.plugin.getServer().getPluginManager().getPlugin("PlotSquared") == null) return;
|
||||||
WEManager.IMP.managers.add(new com.boydti.fawe.bukkit.regions.plotsquared.PlotSquaredFeature());
|
WEManager.IMP.managers.add(new com.boydti.fawe.bukkit.regions.plotsquared.PlotSquaredFeature());
|
||||||
log.debug("Plugin 'PlotSquared' found. Using it now.");
|
log.debug("Plugin 'PlotSquared' found. Using it now.");
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,9 @@ import com.boydti.fawe.util.TaskManager;
|
|||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.world.block.BlockTypesCache;
|
import com.sk89q.worldedit.world.block.BlockTypesCache;
|
||||||
import io.papermc.lib.PaperLib;
|
import io.papermc.lib.PaperLib;
|
||||||
|
import java.lang.invoke.MethodHandle;
|
||||||
|
import java.lang.invoke.MethodHandles;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
import java.util.concurrent.locks.ReentrantLock;
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
import net.jpountz.util.UnsafeUtils;
|
import net.jpountz.util.UnsafeUtils;
|
||||||
import net.minecraft.server.v1_14_R1.Block;
|
import net.minecraft.server.v1_14_R1.Block;
|
||||||
@ -52,6 +55,8 @@ public final class BukkitAdapter_1_14 extends NMSAdapter {
|
|||||||
private final static Field fieldDirtyCount;
|
private final static Field fieldDirtyCount;
|
||||||
private final static Field fieldDirtyBits;
|
private final static Field fieldDirtyBits;
|
||||||
|
|
||||||
|
private final static MethodHandle methodGetVisibleChunk;
|
||||||
|
|
||||||
private static final int CHUNKSECTION_BASE;
|
private static final int CHUNKSECTION_BASE;
|
||||||
private static final int CHUNKSECTION_SHIFT;
|
private static final int CHUNKSECTION_SHIFT;
|
||||||
|
|
||||||
@ -78,6 +83,10 @@ public final class BukkitAdapter_1_14 extends NMSAdapter {
|
|||||||
fieldDirtyBits = PlayerChunk.class.getDeclaredField("r");
|
fieldDirtyBits = PlayerChunk.class.getDeclaredField("r");
|
||||||
fieldDirtyBits.setAccessible(true);
|
fieldDirtyBits.setAccessible(true);
|
||||||
|
|
||||||
|
Method declaredGetVisibleChunk = PlayerChunkMap.class.getDeclaredMethod("getVisibleChunk", long.class);
|
||||||
|
declaredGetVisibleChunk.setAccessible(true);
|
||||||
|
methodGetVisibleChunk = MethodHandles.lookup().unreflect(declaredGetVisibleChunk);
|
||||||
|
|
||||||
{
|
{
|
||||||
Field tmp;
|
Field tmp;
|
||||||
try {
|
try {
|
||||||
@ -154,11 +163,11 @@ public final class BukkitAdapter_1_14 extends NMSAdapter {
|
|||||||
|
|
||||||
public static PlayerChunk getPlayerChunk(net.minecraft.server.v1_14_R1.WorldServer nmsWorld, final int cx, final int cz) {
|
public static PlayerChunk getPlayerChunk(net.minecraft.server.v1_14_R1.WorldServer nmsWorld, final int cx, final int cz) {
|
||||||
PlayerChunkMap chunkMap = nmsWorld.getChunkProvider().playerChunkMap;
|
PlayerChunkMap chunkMap = nmsWorld.getChunkProvider().playerChunkMap;
|
||||||
PlayerChunk playerChunk = chunkMap.visibleChunks.get(ChunkCoordIntPair.pair(cx, cz));
|
try {
|
||||||
if (playerChunk == null) {
|
return (PlayerChunk)methodGetVisibleChunk.invoke(chunkMap, ChunkCoordIntPair.pair(cx, cz));
|
||||||
return null;
|
} catch (Throwable thr) {
|
||||||
|
throw new RuntimeException(thr);
|
||||||
}
|
}
|
||||||
return playerChunk;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void sendChunk(net.minecraft.server.v1_14_R1.WorldServer nmsWorld, int X, int Z, int mask) {
|
public static void sendChunk(net.minecraft.server.v1_14_R1.WorldServer nmsWorld, int X, int Z, int mask) {
|
||||||
|
@ -12,6 +12,9 @@ import com.boydti.fawe.util.TaskManager;
|
|||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.world.block.BlockTypesCache;
|
import com.sk89q.worldedit.world.block.BlockTypesCache;
|
||||||
import io.papermc.lib.PaperLib;
|
import io.papermc.lib.PaperLib;
|
||||||
|
import java.lang.invoke.MethodHandle;
|
||||||
|
import java.lang.invoke.MethodHandles;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
import java.util.concurrent.locks.ReentrantLock;
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
import net.jpountz.util.UnsafeUtils;
|
import net.jpountz.util.UnsafeUtils;
|
||||||
import net.minecraft.server.v1_15_R1.*;
|
import net.minecraft.server.v1_15_R1.*;
|
||||||
@ -40,6 +43,8 @@ public final class BukkitAdapter_1_15 extends NMSAdapter {
|
|||||||
private final static Field fieldDirtyCount;
|
private final static Field fieldDirtyCount;
|
||||||
private final static Field fieldDirtyBits;
|
private final static Field fieldDirtyBits;
|
||||||
|
|
||||||
|
private final static MethodHandle methodGetVisibleChunk;
|
||||||
|
|
||||||
private static final int CHUNKSECTION_BASE;
|
private static final int CHUNKSECTION_BASE;
|
||||||
private static final int CHUNKSECTION_SHIFT;
|
private static final int CHUNKSECTION_SHIFT;
|
||||||
|
|
||||||
@ -66,6 +71,10 @@ public final class BukkitAdapter_1_15 extends NMSAdapter {
|
|||||||
fieldDirtyBits = PlayerChunk.class.getDeclaredField("r");
|
fieldDirtyBits = PlayerChunk.class.getDeclaredField("r");
|
||||||
fieldDirtyBits.setAccessible(true);
|
fieldDirtyBits.setAccessible(true);
|
||||||
|
|
||||||
|
Method declaredGetVisibleChunk = PlayerChunkMap.class.getDeclaredMethod("getVisibleChunk", long.class);
|
||||||
|
declaredGetVisibleChunk.setAccessible(true);
|
||||||
|
methodGetVisibleChunk = MethodHandles.lookup().unreflect(declaredGetVisibleChunk);
|
||||||
|
|
||||||
Field tmp = DataPaletteBlock.class.getDeclaredField("j");
|
Field tmp = DataPaletteBlock.class.getDeclaredField("j");
|
||||||
ReflectionUtils.setAccessibleNonFinal(tmp);
|
ReflectionUtils.setAccessibleNonFinal(tmp);
|
||||||
fieldLock = tmp;
|
fieldLock = tmp;
|
||||||
@ -135,8 +144,11 @@ public final class BukkitAdapter_1_15 extends NMSAdapter {
|
|||||||
|
|
||||||
public static PlayerChunk getPlayerChunk(net.minecraft.server.v1_15_R1.WorldServer nmsWorld, final int cx, final int cz) {
|
public static PlayerChunk getPlayerChunk(net.minecraft.server.v1_15_R1.WorldServer nmsWorld, final int cx, final int cz) {
|
||||||
PlayerChunkMap chunkMap = nmsWorld.getChunkProvider().playerChunkMap;
|
PlayerChunkMap chunkMap = nmsWorld.getChunkProvider().playerChunkMap;
|
||||||
PlayerChunk playerChunk = chunkMap.visibleChunks.get(ChunkCoordIntPair.pair(cx, cz));
|
try {
|
||||||
return playerChunk;
|
return (PlayerChunk)methodGetVisibleChunk.invoke(chunkMap, ChunkCoordIntPair.pair(cx, cz));
|
||||||
|
} catch (Throwable thr) {
|
||||||
|
throw new RuntimeException(thr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void sendChunk(net.minecraft.server.v1_15_R1.WorldServer nmsWorld, int X, int Z, int mask) {
|
public static void sendChunk(net.minecraft.server.v1_15_R1.WorldServer nmsWorld, int X, int Z, int mask) {
|
||||||
|
@ -12,6 +12,10 @@ import com.boydti.fawe.util.TaskManager;
|
|||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.world.block.BlockTypesCache;
|
import com.sk89q.worldedit.world.block.BlockTypesCache;
|
||||||
import io.papermc.lib.PaperLib;
|
import io.papermc.lib.PaperLib;
|
||||||
|
import java.lang.invoke.MethodHandle;
|
||||||
|
import java.lang.invoke.MethodHandles;
|
||||||
|
import java.lang.invoke.MethodType;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
import java.util.concurrent.locks.ReentrantLock;
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
import net.jpountz.util.UnsafeUtils;
|
import net.jpountz.util.UnsafeUtils;
|
||||||
import net.minecraft.server.v1_15_R1.*;
|
import net.minecraft.server.v1_15_R1.*;
|
||||||
@ -40,6 +44,8 @@ public final class BukkitAdapter_1_15_2 extends NMSAdapter {
|
|||||||
private final static Field fieldDirtyCount;
|
private final static Field fieldDirtyCount;
|
||||||
private final static Field fieldDirtyBits;
|
private final static Field fieldDirtyBits;
|
||||||
|
|
||||||
|
private final static MethodHandle methodGetVisibleChunk;
|
||||||
|
|
||||||
private static final int CHUNKSECTION_BASE;
|
private static final int CHUNKSECTION_BASE;
|
||||||
private static final int CHUNKSECTION_SHIFT;
|
private static final int CHUNKSECTION_SHIFT;
|
||||||
|
|
||||||
@ -66,6 +72,10 @@ public final class BukkitAdapter_1_15_2 extends NMSAdapter {
|
|||||||
fieldDirtyBits = PlayerChunk.class.getDeclaredField("r");
|
fieldDirtyBits = PlayerChunk.class.getDeclaredField("r");
|
||||||
fieldDirtyBits.setAccessible(true);
|
fieldDirtyBits.setAccessible(true);
|
||||||
|
|
||||||
|
Method declaredGetVisibleChunk = PlayerChunkMap.class.getDeclaredMethod("getVisibleChunk", long.class);
|
||||||
|
declaredGetVisibleChunk.setAccessible(true);
|
||||||
|
methodGetVisibleChunk = MethodHandles.lookup().unreflect(declaredGetVisibleChunk);
|
||||||
|
|
||||||
Field tmp = DataPaletteBlock.class.getDeclaredField("j");
|
Field tmp = DataPaletteBlock.class.getDeclaredField("j");
|
||||||
ReflectionUtils.setAccessibleNonFinal(tmp);
|
ReflectionUtils.setAccessibleNonFinal(tmp);
|
||||||
fieldLock = tmp;
|
fieldLock = tmp;
|
||||||
@ -136,8 +146,11 @@ public final class BukkitAdapter_1_15_2 extends NMSAdapter {
|
|||||||
|
|
||||||
public static PlayerChunk getPlayerChunk(WorldServer nmsWorld, final int cx, final int cz) {
|
public static PlayerChunk getPlayerChunk(WorldServer nmsWorld, final int cx, final int cz) {
|
||||||
PlayerChunkMap chunkMap = nmsWorld.getChunkProvider().playerChunkMap;
|
PlayerChunkMap chunkMap = nmsWorld.getChunkProvider().playerChunkMap;
|
||||||
PlayerChunk playerChunk = chunkMap.visibleChunks.get(ChunkCoordIntPair.pair(cx, cz));
|
try {
|
||||||
return playerChunk;
|
return (PlayerChunk)methodGetVisibleChunk.invoke(chunkMap, ChunkCoordIntPair.pair(cx, cz));
|
||||||
|
} catch (Throwable thr) {
|
||||||
|
throw new RuntimeException(thr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void sendChunk(WorldServer nmsWorld, int X, int Z, int mask) {
|
public static void sendChunk(WorldServer nmsWorld, int X, int Z, int mask) {
|
||||||
|
@ -360,7 +360,7 @@ public class Fawe {
|
|||||||
}
|
}
|
||||||
String arch = System.getenv("PROCESSOR_ARCHITECTURE");
|
String arch = System.getenv("PROCESSOR_ARCHITECTURE");
|
||||||
String wow64Arch = System.getenv("PROCESSOR_ARCHITEW6432");
|
String wow64Arch = System.getenv("PROCESSOR_ARCHITEW6432");
|
||||||
boolean x86OS = !(arch.endsWith("64") || wow64Arch != null && wow64Arch.endsWith("64"));
|
boolean x86OS = arch == null ? true : !(arch.endsWith("64") || wow64Arch != null && wow64Arch.endsWith("64"));
|
||||||
boolean x86JVM = System.getProperty("sun.arch.data.model").equals("32");
|
boolean x86JVM = System.getProperty("sun.arch.data.model").equals("32");
|
||||||
if (x86OS != x86JVM) {
|
if (x86OS != x86JVM) {
|
||||||
debug("====== UPGRADE TO 64-BIT JAVA ======");
|
debug("====== UPGRADE TO 64-BIT JAVA ======");
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren