Mirror von
https://github.com/IntellectualSites/FastAsyncWorldEdit.git
synchronisiert 2024-11-05 02:50:05 +01:00
start reimplementing entities
Dieser Commit ist enthalten in:
Ursprung
3d40336045
Commit
aac02ceea1
@ -89,7 +89,7 @@ public class BukkitEntity implements Entity {
|
||||
|
||||
@Override
|
||||
public com.sk89q.worldedit.world.entity.EntityType getType() {
|
||||
return EntityTypes.get(type.getName().toUpperCase(Locale.ROOT));
|
||||
return EntityTypes.get(type.getName().toLowerCase(Locale.ROOT));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -92,7 +92,6 @@ public class BukkitWorld extends AbstractWorld {
|
||||
@Override
|
||||
public List<com.sk89q.worldedit.entity.Entity> getEntities(Region region) {
|
||||
World world = getWorld();
|
||||
|
||||
List<Entity> ents = world.getEntities();
|
||||
List<com.sk89q.worldedit.entity.Entity> entities = new ArrayList<>();
|
||||
for (Entity ent : ents) {
|
||||
|
@ -63,4 +63,9 @@ public class WorldCopyClipboard extends ReadOnlyClipboard {
|
||||
return hasBiomes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Entity> getEntities(Region region) {
|
||||
return getExtent().getEntities(region);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -46,6 +46,8 @@ import com.boydti.fawe.util.ExtentTraverser;
|
||||
import com.boydti.fawe.util.MaskTraverser;
|
||||
import com.boydti.fawe.util.MathMan;
|
||||
import com.boydti.fawe.util.TaskManager;
|
||||
import com.sk89q.worldedit.entity.BaseEntity;
|
||||
import com.sk89q.worldedit.entity.Entity;
|
||||
import com.sk89q.worldedit.entity.Player;
|
||||
import com.sk89q.worldedit.event.extent.EditSessionEvent;
|
||||
import com.sk89q.worldedit.extent.AbstractDelegateExtent;
|
||||
@ -117,6 +119,7 @@ import com.sk89q.worldedit.regions.shape.RegionShape;
|
||||
import com.sk89q.worldedit.regions.shape.WorldEditExpressionEnvironment;
|
||||
import com.sk89q.worldedit.util.Countable;
|
||||
import com.sk89q.worldedit.util.Direction;
|
||||
import com.sk89q.worldedit.util.Location;
|
||||
import com.sk89q.worldedit.util.TreeGenerator;
|
||||
import com.sk89q.worldedit.util.eventbus.EventBus;
|
||||
import com.sk89q.worldedit.util.formatting.text.TranslatableComponent;
|
||||
@ -3039,4 +3042,20 @@ public class EditSession extends PassthroughExtent implements AutoCloseable {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Entity> getEntities(Region region) {
|
||||
return world.getEntities(region);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Entity> getEntities() {
|
||||
System.out.println("editsession");
|
||||
return world.getEntities();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Entity createEntity(Location location, BaseEntity entity) {
|
||||
return world.createEntity(location, entity);
|
||||
}
|
||||
}
|
||||
|
@ -132,6 +132,7 @@ public interface Extent extends InputExtent, OutputExtent {
|
||||
* @return a list of entities
|
||||
*/
|
||||
default List<? extends Entity> getEntities() {
|
||||
System.out.println("el");
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
|
@ -195,11 +195,19 @@ public class BlockArrayClipboard implements Clipboard {
|
||||
|
||||
@Override
|
||||
public List<? extends Entity> getEntities(Region region) {
|
||||
System.out.println("blockarrayclipboard");
|
||||
region = region.clone();
|
||||
region.shift(BlockVector3.ZERO.subtract(origin));
|
||||
return getParent().getEntities(region);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Entity> getEntities() {
|
||||
System.out.println("blockarrayall");
|
||||
return getParent().getEntities();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public Entity createEntity(Location location, BaseEntity entity) {
|
||||
|
@ -397,7 +397,7 @@ public class ForwardExtentCopy implements Operation {
|
||||
Operations.completeBlindly(blockCopy);
|
||||
|
||||
if (!entities.isEmpty()) {
|
||||
ExtentEntityCopy entityCopy = new ExtentEntityCopy(from.toVector3(), destination, to.toVector3(), currentTransform);
|
||||
ExtentEntityCopy entityCopy = new ExtentEntityCopy(from.toVector3(), finalDest, to.toVector3(), currentTransform);
|
||||
entityCopy.setRemoving(removingEntities);
|
||||
List<? extends Entity> entities2 = Lists.newArrayList(source.getEntities(region));
|
||||
entities2.removeIf(entity -> {
|
||||
@ -406,6 +406,7 @@ public class ForwardExtentCopy implements Operation {
|
||||
});
|
||||
EntityVisitor entityVisitor = new EntityVisitor(entities.iterator(), entityCopy);
|
||||
Operations.completeBlindly(entityVisitor);
|
||||
affectedEntities += entityVisitor.getAffected();
|
||||
}
|
||||
|
||||
if (transExt != null) {
|
||||
@ -427,8 +428,8 @@ public class ForwardExtentCopy implements Operation {
|
||||
return ImmutableList.of(
|
||||
TranslatableComponent.of("worldedit.operation.affected.block",
|
||||
TextComponent.of(affectedBlocks)).color(TextColor.LIGHT_PURPLE),
|
||||
TranslatableComponent.of("worldedit.operation.affected.biome",
|
||||
TextComponent.of(affectedBiomeCols)).color(TextColor.LIGHT_PURPLE),
|
||||
//TranslatableComponent.of("worldedit.operation.affected.biome",
|
||||
// TextComponent.of(affectedBiomeCols)).color(TextColor.LIGHT_PURPLE),
|
||||
TranslatableComponent.of("worldedit.operation.affected.entity",
|
||||
TextComponent.of(affectedEntities)).color(TextColor.LIGHT_PURPLE)
|
||||
);
|
||||
|
@ -18,16 +18,16 @@
|
||||
*/
|
||||
|
||||
package com.sk89q.worldedit.util.io.file;
|
||||
|
||||
import java.io.Closeable;
|
||||
import java.nio.file.Path;
|
||||
|
||||
/**
|
||||
* Represents an archive opened as a directory. This must be closed after work on the Path is
|
||||
* done.
|
||||
*/
|
||||
public interface ArchiveDir extends Closeable {
|
||||
|
||||
Path getPath();
|
||||
|
||||
}
|
||||
|
||||
import java.io.Closeable;
|
||||
import java.nio.file.Path;
|
||||
|
||||
/**
|
||||
* Represents an archive opened as a directory. This must be closed after work on the Path is
|
||||
* done.
|
||||
*/
|
||||
public interface ArchiveDir extends Closeable {
|
||||
|
||||
Path getPath();
|
||||
|
||||
}
|
||||
|
@ -18,52 +18,52 @@
|
||||
*/
|
||||
|
||||
package com.sk89q.worldedit.util.io.file;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
public class SafeFiles {
|
||||
|
||||
/**
|
||||
* A version of {@link Files#list(Path)} that won't leak resources.
|
||||
*
|
||||
* <p>
|
||||
* Instead, it immediately consumes the entire listing into a {@link List} and
|
||||
* calls {@link List#stream()}.
|
||||
* </p>
|
||||
*
|
||||
* @param dir the directory to list
|
||||
* @return an I/O-resource-free stream of the files in the directory
|
||||
* @throws IOException if an I/O error occurs
|
||||
*/
|
||||
public static Stream<Path> noLeakFileList(Path dir) throws IOException {
|
||||
try (Stream<Path> stream = Files.list(dir)) {
|
||||
return stream.collect(Collectors.toList()).stream();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link Path#getFileName()} includes a slash sometimes for some reason.
|
||||
* This will get rid of it.
|
||||
*
|
||||
* @param path the path to get the file name for
|
||||
* @return the file name of the given path
|
||||
*/
|
||||
public static String canonicalFileName(Path path) {
|
||||
return dropSlash(path.getFileName().toString());
|
||||
}
|
||||
|
||||
private static String dropSlash(String name) {
|
||||
if (name.isEmpty() || name.codePointBefore(name.length()) != '/') {
|
||||
return name;
|
||||
}
|
||||
return name.substring(0, name.length() - 1);
|
||||
}
|
||||
|
||||
private SafeFiles() {
|
||||
}
|
||||
}
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
public class SafeFiles {
|
||||
|
||||
/**
|
||||
* A version of {@link Files#list(Path)} that won't leak resources.
|
||||
*
|
||||
* <p>
|
||||
* Instead, it immediately consumes the entire listing into a {@link List} and
|
||||
* calls {@link List#stream()}.
|
||||
* </p>
|
||||
*
|
||||
* @param dir the directory to list
|
||||
* @return an I/O-resource-free stream of the files in the directory
|
||||
* @throws IOException if an I/O error occurs
|
||||
*/
|
||||
public static Stream<Path> noLeakFileList(Path dir) throws IOException {
|
||||
try (Stream<Path> stream = Files.list(dir)) {
|
||||
return stream.collect(Collectors.toList()).stream();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link Path#getFileName()} includes a slash sometimes for some reason.
|
||||
* This will get rid of it.
|
||||
*
|
||||
* @param path the path to get the file name for
|
||||
* @return the file name of the given path
|
||||
*/
|
||||
public static String canonicalFileName(Path path) {
|
||||
return dropSlash(path.getFileName().toString());
|
||||
}
|
||||
|
||||
private static String dropSlash(String name) {
|
||||
if (name.isEmpty() || name.codePointBefore(name.length()) != '/') {
|
||||
return name;
|
||||
}
|
||||
return name.substring(0, name.length() - 1);
|
||||
}
|
||||
|
||||
private SafeFiles() {
|
||||
}
|
||||
}
|
||||
|
@ -187,6 +187,7 @@ public class NullWorld extends AbstractWorld {
|
||||
|
||||
@Override
|
||||
public List<Entity> getEntities(Region region) {
|
||||
System.out.println("nullworld");
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren