Skip to content

Commit

Permalink
Address comments
Browse files Browse the repository at this point in the history
  • Loading branch information
me4502 committed May 23, 2021
1 parent c367fa9 commit 830f9c4
Show file tree
Hide file tree
Showing 8 changed files with 57 additions and 46 deletions.
Expand Up @@ -32,7 +32,6 @@
import com.sk89q.worldedit.extension.platform.Actor;
import com.sk89q.worldedit.extension.platform.Capability;
import com.sk89q.worldedit.extent.clipboard.Clipboard;
import com.sk89q.worldedit.extent.clipboard.ClipboardTransformBaker;
import com.sk89q.worldedit.extent.clipboard.io.BuiltInClipboardFormat;
import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormat;
import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormats;
Expand Down Expand Up @@ -379,14 +378,7 @@ private static class SchematicSaveTask implements Callable<Void> {
private void writeToOutputStream(OutputStream outputStream) throws Exception {
Clipboard clipboard = holder.getClipboard();
Transform transform = holder.getTransform();
Clipboard target;

// If we have a transform, bake it into the copy
if (transform.isIdentity()) {
target = clipboard;
} else {
target = ClipboardTransformBaker.bakeTransform(clipboard, transform);
}
Clipboard target = clipboard.transform(transform);

try (Closer closer = Closer.create()) {
OutputStream stream = closer.register(outputStream);
Expand Down Expand Up @@ -430,9 +422,10 @@ private static class SchematicShareTask implements Callable<URL> {

@Override
public URL call() throws Exception {
ClipboardShareMetadata metadata = new ClipboardShareMetadata();
metadata.author = this.actor.getName();
metadata.name = name == null ? actor.getName() + "-" + System.currentTimeMillis() : name;
ClipboardShareMetadata metadata = new ClipboardShareMetadata(
this.actor.getName(),
name == null ? actor.getName() + "-" + System.currentTimeMillis() : name
);

return destination.share(holder, format, metadata);
}
Expand Down
Expand Up @@ -34,8 +34,8 @@

import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import static org.enginehub.piston.converter.SuggestionHelper.limitByPrefix;

public class ClipboardFormatConverter implements ArgumentConverter<ClipboardFormat> {

Expand All @@ -56,20 +56,14 @@ public Component describeAcceptableArguments() {
return this.choices;
}

private Stream<ClipboardFormat> getFormats() {
return ClipboardFormats.getAll().stream();
}

@Override
public List<String> getSuggestions(String input, InjectedValueAccess context) {
ClipboardShareDestination destination = context.injectedValue(Key.of(ClipboardShareDestination.class)).orElse(null);

return getFormats()
return limitByPrefix(ClipboardFormats.getAll().stream()
.filter(format -> destination == null || destination.supportsFormat(format))
.map(ClipboardFormat::getAliases)
.flatMap(Set::stream)
.filter(format -> format.startsWith(input))
.collect(Collectors.toList());
.flatMap(Set::stream), input);
}

@Override
Expand Down
Expand Up @@ -33,8 +33,8 @@

import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import static org.enginehub.piston.converter.SuggestionHelper.limitByPrefix;

public class ClipboardShareDestinationConverter implements ArgumentConverter<ClipboardShareDestination> {

Expand All @@ -55,17 +55,11 @@ public Component describeAcceptableArguments() {
return this.choices;
}

private Stream<ClipboardShareDestination> getDestinations() {
return ClipboardShareDestinations.getAll().stream();
}

@Override
public List<String> getSuggestions(String input, InjectedValueAccess context) {
return getDestinations()
return limitByPrefix(ClipboardShareDestinations.getAll().stream()
.map(ClipboardShareDestination::getAliases)
.flatMap(Set::stream)
.filter(destination -> destination.startsWith(input))
.collect(Collectors.toList());
.flatMap(Set::stream), input);
}

@Override
Expand Down
Expand Up @@ -19,8 +19,11 @@

package com.sk89q.worldedit.extent.clipboard;

import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.internal.util.ClipboardTransformBaker;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.math.transform.Transform;
import com.sk89q.worldedit.regions.Region;

/**
Expand Down Expand Up @@ -68,4 +71,19 @@ public interface Clipboard extends Extent {
default boolean hasBiomes() {
return false;
}

/**
* Returns a new clipboard with a given transform baked in.
*
* <p>
* Note: There is no guarantee that a copy will be returned
* </p>
*
* @param transform The transform
* @return The new clipboard
* @throws WorldEditException If it failed to copy
*/
default Clipboard transform(Transform transform) throws WorldEditException {
return ClipboardTransformBaker.bakeTransform(this, transform);
}
}
Expand Up @@ -21,7 +21,6 @@

import com.google.common.collect.ImmutableSet;
import com.sk89q.worldedit.extent.clipboard.Clipboard;
import com.sk89q.worldedit.extent.clipboard.ClipboardTransformBaker;
import com.sk89q.worldedit.extent.clipboard.io.BuiltInClipboardFormat;
import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormat;
import com.sk89q.worldedit.extent.clipboard.io.ClipboardWriter;
Expand Down Expand Up @@ -57,14 +56,7 @@ public URL share(ClipboardHolder holder, ClipboardFormat format, ClipboardShareM
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
Clipboard clipboard = holder.getClipboard();
Transform transform = holder.getTransform();
Clipboard target;

// If we have a transform, bake it into the copy
if (transform.isIdentity()) {
target = clipboard;
} else {
target = ClipboardTransformBaker.bakeTransform(clipboard, transform);
}
Clipboard target = clipboard.transform(transform);

try (Closer closer = Closer.create()) {
OutputStream stream = closer.register(outputStream);
Expand All @@ -74,9 +66,9 @@ public URL share(ClipboardHolder holder, ClipboardFormat format, ClipboardShareM
}

PasteMetadata pasteMetadata = new PasteMetadata();
pasteMetadata.author = metadata.author;
pasteMetadata.author = metadata.author();
pasteMetadata.extension = "schem";
pasteMetadata.name = metadata.name;
pasteMetadata.name = metadata.name();
EngineHubPaste pasteService = new EngineHubPaste();
return pasteService.paste(new String(Base64.getEncoder().encode(outputStream.toByteArray()), StandardCharsets.UTF_8), pasteMetadata).call();
}
Expand Down
Expand Up @@ -30,6 +30,7 @@
import java.util.Map;
import javax.annotation.Nullable;

import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;

public class ClipboardShareDestinations {
Expand All @@ -39,6 +40,7 @@ public class ClipboardShareDestinations {

public static void registerClipboardShareDestination(ClipboardShareDestination destination) {
checkNotNull(destination);
checkArgument(destination.supportsFormat(destination.getDefaultFormat()), "Destination must accept its default format");

for (String key : destination.getAliases()) {
String lowKey = key.toLowerCase(Locale.ROOT);
Expand Down
Expand Up @@ -23,6 +23,19 @@
* Items of metadata about shared clipboards.
*/
public class ClipboardShareMetadata {
public String name;
public String author;
private final String name;
private final String author;

public ClipboardShareMetadata(String name, String author) {
this.name = name;
this.author = author;
}

public String name() {
return this.name;
}

public String author() {
return this.author;
}
}
Expand Up @@ -17,10 +17,12 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/

package com.sk89q.worldedit.extent.clipboard;
package com.sk89q.worldedit.internal.util;

import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.extent.clipboard.BlockArrayClipboard;
import com.sk89q.worldedit.extent.clipboard.Clipboard;
import com.sk89q.worldedit.extent.transform.BlockTransformExtent;
import com.sk89q.worldedit.function.operation.ForwardExtentCopy;
import com.sk89q.worldedit.function.operation.Operation;
Expand Down Expand Up @@ -130,6 +132,9 @@ private Operation copyTo(Extent target) {
* @throws WorldEditException if an error occurred during copy
*/
public static Clipboard bakeTransform(Clipboard original, Transform transform) throws WorldEditException {
if (transform.isIdentity()) {
return original;
}
ClipboardTransformBaker baker = new ClipboardTransformBaker(original, transform);
Clipboard target = new BlockArrayClipboard(baker.getTransformedRegion());
target.setOrigin(original.getOrigin());
Expand Down

0 comments on commit 830f9c4

Please sign in to comment.