Skip to content

Commit 810151c

Browse files
committed
Add for 1.21.9/10, set events=false for later paper versions
1 parent c97469b commit 810151c

7 files changed

Lines changed: 52 additions & 23 deletions

File tree

worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightGetBlocks.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -688,7 +688,7 @@ protected <T extends Future<T>> T internalCall(
688688
entity.spawnReason = CreatureSpawnEvent.SpawnReason.CUSTOM;
689689
entity.generation = false;
690690
if (PaperLib.isPaper()) {
691-
if (!nmsWorld.moonrise$getEntityLookup().addNewEntity(entity)) {
691+
if (!nmsWorld.moonrise$getEntityLookup().addNewEntity(entity, false)) {
692692
onError.run();
693693
}
694694
continue;

worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightGetBlocks.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -688,7 +688,7 @@ protected <T extends Future<T>> T internalCall(
688688
entity.spawnReason = CreatureSpawnEvent.SpawnReason.CUSTOM;
689689
entity.generation = false;
690690
if (PaperLib.isPaper()) {
691-
if (!nmsWorld.moonrise$getEntityLookup().addNewEntity(entity)) {
691+
if (!nmsWorld.moonrise$getEntityLookup().addNewEntity(entity, false)) {
692692
onError.run();
693693
}
694694
continue;

worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightGetBlocks.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -694,7 +694,7 @@ protected <T extends Future<T>> T internalCall(
694694
entity.spawnReason = CreatureSpawnEvent.SpawnReason.CUSTOM;
695695
entity.generation = false;
696696
if (PaperLib.isPaper()) {
697-
if (!nmsWorld.moonrise$getEntityLookup().addNewEntity(entity)) {
697+
if (!nmsWorld.moonrise$getEntityLookup().addNewEntity(entity, false)) {
698698
onError.run();
699699
}
700700
continue;

worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/ext/fawe/v1_21_9/PaperweightAdapter.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -859,12 +859,13 @@ private ResourceKey<LevelStem> getWorldDimKey(Environment env) {
859859
}
860860

861861
private static final Set<SideEffect> SUPPORTED_SIDE_EFFECTS = Sets.immutableEnumSet(
862-
SideEffect.NEIGHBORS,
862+
//FAWE start - FAWE-supported side effects
863+
SideEffect.HISTORY,
864+
SideEffect.HEIGHTMAPS,
863865
SideEffect.LIGHTING,
864-
SideEffect.VALIDATION,
865-
SideEffect.ENTITY_AI,
866-
SideEffect.EVENTS,
867-
SideEffect.UPDATE
866+
SideEffect.NEIGHBORS,
867+
SideEffect.ENTITY_EVENTS
868+
//FAWE end
868869
);
869870

870871
@Override

worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightFaweAdapter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,8 @@ public BaseBlock getFullBlock(final Location location) {
313313
SideEffect.HISTORY,
314314
SideEffect.HEIGHTMAPS,
315315
SideEffect.LIGHTING,
316-
SideEffect.NEIGHBORS
316+
SideEffect.NEIGHBORS,
317+
SideEffect.ENTITY_EVENTS
317318
);
318319

319320
@Override

worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightGetBlocks.java

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -332,11 +332,11 @@ public CompletableFuture<LevelChunk> ensureLoaded(ServerLevel nmsWorld) {
332332

333333
@Override
334334
protected <T extends Future<T>> T internalCall(
335-
IChunkSet set,
336-
Runnable finalizer,
337-
int copyKey,
338-
LevelChunk nmsChunk,
339-
ServerLevel nmsWorld
335+
final IChunkSet set,
336+
final Runnable finalizer,
337+
final int copyKey,
338+
final LevelChunk nmsChunk,
339+
final ServerLevel nmsWorld
340340
) throws Exception {
341341
PaperweightGetBlocks_Copy copy = createCopy ? new PaperweightGetBlocks_Copy(nmsChunk) : null;
342342
if (createCopy) {
@@ -680,15 +680,34 @@ protected <T extends Future<T>> T internalCall(
680680
entity.load(input);
681681
entity.absSnapTo(x, y, z, yaw, pitch);
682682
entity.setUUID(NbtUtils.uuid(nativeTag));
683+
Runnable onError = () -> LOGGER.warn(
684+
"Error creating entity of type `{}` in world `{}` at location `{},{},{}`",
685+
id,
686+
nmsWorld.getWorld().getName(),
687+
x,
688+
y,
689+
z
690+
);
691+
if (!set.getSideEffectSet().shouldApply(SideEffect.ENTITY_EVENTS)) {
692+
entity.spawnReason = CreatureSpawnEvent.SpawnReason.CUSTOM;
693+
entity.generation = false;
694+
if (PaperLib.isPaper()) {
695+
if (!nmsWorld.moonrise$getEntityLookup().addNewEntity(entity, false)) {
696+
onError.run();
697+
}
698+
continue;
699+
}
700+
// Not paper
701+
try {
702+
PaperweightPlatformAdapter.getEntitySectionManager(nmsWorld).addNewEntity(entity);
703+
continue;
704+
} catch (IllegalAccessException e) {
705+
// Fallback
706+
LOGGER.warn("Error bypassing entity events on spawn on Spigot", e);
707+
}
708+
}
683709
if (!nmsWorld.addFreshEntity(entity, CreatureSpawnEvent.SpawnReason.CUSTOM)) {
684-
LOGGER.warn(
685-
"Error creating entity of type `{}` in world `{}` at location `{},{},{}`",
686-
id,
687-
nmsWorld.getWorld().getName(),
688-
x,
689-
y,
690-
z
691-
);
710+
onError.run();
692711
// Unsuccessful create should not be saved to history
693712
iterator.remove();
694713
}

worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightPlatformAdapter.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -637,10 +637,18 @@ static List<Entity> getEntities(LevelChunk chunk) {
637637
}
638638
try {
639639
//noinspection unchecked
640-
return ((PersistentEntitySectionManager<Entity>) (SERVER_LEVEL_ENTITY_MANAGER.get(chunk.level))).getEntities(chunk.getPos());
640+
return getEntitySectionManager(chunk.level).getEntities(chunk.getPos());
641641
} catch (IllegalAccessException e) {
642642
throw new RuntimeException("Failed to lookup entities [PAPER=false]", e);
643643
}
644644
}
645645

646+
/**
647+
* Spigot only
648+
*/
649+
static PersistentEntitySectionManager<Entity> getEntitySectionManager(ServerLevel level) throws IllegalAccessException {
650+
//noinspection unchecked
651+
return (PersistentEntitySectionManager<Entity>) (SERVER_LEVEL_ENTITY_MANAGER.get(level));
652+
}
653+
646654
}

0 commit comments

Comments
 (0)