got paste -e working, still throws IllegalStateException but idc

This commit is contained in:
Aurora 2020-06-26 13:52:18 +02:00
parent aac02ceea1
commit 54008be1a2
No known key found for this signature in database
GPG Key ID: 89839F67B53656AD
2 changed files with 16 additions and 2 deletions

View File

@ -54,6 +54,9 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.function.Supplier;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import org.bukkit.Effect; import org.bukkit.Effect;
import org.bukkit.TreeType; import org.bukkit.TreeType;
@ -61,6 +64,7 @@ import org.bukkit.World;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.BlockState; import org.bukkit.block.BlockState;
import org.bukkit.block.Chest; import org.bukkit.block.Chest;
import org.bukkit.craftbukkit.v1_15_R1.CraftWorld;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.inventory.DoubleChestInventory; import org.bukkit.inventory.DoubleChestInventory;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
@ -115,7 +119,7 @@ public class BukkitWorld extends AbstractWorld {
@Override @Override
public com.sk89q.worldedit.entity.Entity createEntity(com.sk89q.worldedit.util.Location location, BaseEntity entity) { public com.sk89q.worldedit.entity.Entity createEntity(com.sk89q.worldedit.util.Location location, BaseEntity entity) {
BukkitImplAdapter adapter = WorldEditPlugin.getInstance().getBukkitImplAdapter(); BukkitImplAdapter adapter = WorldEditPlugin.getInstance().getBukkitImplAdapter();
if (adapter != null) { if (adapter != null && Fawe.isMainThread()) {
try { try {
Entity createdEntity = adapter.createEntity(BukkitAdapter.adapt(getWorld(), location), entity); Entity createdEntity = adapter.createEntity(BukkitAdapter.adapt(getWorld(), location), entity);
if (createdEntity != null) { if (createdEntity != null) {
@ -131,6 +135,16 @@ public class BukkitWorld extends AbstractWorld {
e.printStackTrace(); e.printStackTrace();
return null; return null;
} }
} else if (adapter != null && !Fawe.isMainThread()){
Future<com.sk89q.worldedit.entity.Entity> future = Fawe.get().getQueueHandler().sync((Supplier<com.sk89q.worldedit.entity.Entity>)() -> this.createEntity(location, entity));
while (!future.isDone()) {
((CraftWorld)worldRef.get()).getHandle().getChunkProvider().runTasks();
}
try {
return future.get();
} catch (InterruptedException | ExecutionException e) {
throw new RuntimeException(e);
}
} else { } else {
return null; return null;
} }

View File

@ -85,7 +85,7 @@ public interface IDelegateBukkitImplAdapter<T> extends BukkitImplAdapter<T> {
default Entity createEntity(Location location, BaseEntity state) { default Entity createEntity(Location location, BaseEntity state) {
return getParent().createEntity(location, state); return getParent().createEntity(location, state);
} }
@Override @Override
default Map<String, ? extends Property<?>> getProperties(BlockType blockType) { default Map<String, ? extends Property<?>> getProperties(BlockType blockType) {
return getParent().getProperties(blockType); return getParent().getProperties(blockType);