Merge remote-tracking branch 'upstream/feature/translatable-text' into i18n-merge

This commit is contained in:
Jesse Boyd
2019-11-21 13:50:05 +00:00
102 changed files with 1606 additions and 584 deletions

View File

@ -22,6 +22,7 @@ package com.sk89q.worldedit.function.factory;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.sk89q.worldedit.util.GuavaUtil.firstNonNull;
import com.google.common.collect.Lists;
import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.LocalSession;
import com.sk89q.worldedit.WorldEdit;
@ -36,7 +37,12 @@ import com.sk89q.worldedit.internal.expression.ExpressionException;
import com.sk89q.worldedit.math.Vector3;
import com.sk89q.worldedit.regions.NullRegion;
import com.sk89q.worldedit.regions.Region;
import com.sk89q.worldedit.util.formatting.text.Component;
import com.sk89q.worldedit.util.formatting.text.TextComponent;
import com.sk89q.worldedit.util.formatting.text.TranslatableComponent;
import com.sk89q.worldedit.util.formatting.text.format.TextColor;
import java.util.Collection;
import java.util.List;
public class Deform implements Contextual<Operation> {
@ -186,9 +192,11 @@ public class Deform implements Contextual<Operation> {
public void cancel() {
}
@Override
public void addStatusMessages(List<String> messages) {
messages.add("deformed using " + expression);
public Iterable<Component> getStatusMessages() {
return Lists.newArrayList(TranslatableComponent.of("worldedit.operation.deform.expression",
TextComponent.of(expression).color(TextColor.LIGHT_PURPLE)));
}
}

View File

@ -162,14 +162,12 @@ public class GardenPatchGenerator implements RegionFunction {
position = position.add(0, 1, 0);
}
if (editSession.getBlock(position.add(0, -1, 0)).getBlockType() != BlockTypes.GRASS_BLOCK) {
if (!editSession.getBlock(position.add(0, -1, 0)).getBlockType().equals(BlockTypes.GRASS_BLOCK)) {
return false;
}
if (editSession.getBlock(position).getBlockType().getMaterial().isAir()) {
editSession.setBlock(position, leafPattern);
}
setBlockIfAir(editSession, position, leafPattern);
placeVine(position, position.add(0, 0, 1));
placeVine(position, position.add(0, 0, -1));

View File

@ -93,10 +93,6 @@ public class ChangeSetExecutor implements Operation {
public void cancel() {
}
@Override
public void addStatusMessages(List<String> messages) {
}
public static ChangeSetExecutor create(ChangeSet changeSet, UndoContext context, Type type, BlockBag blockBag, int inventory) {
return new ChangeSetExecutor(changeSet, type, context, blockBag, inventory);
}

View File

@ -21,8 +21,11 @@ package com.sk89q.worldedit.function.operation;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.collect.Iterables;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.util.formatting.text.Component;
import java.util.Collection;
import java.util.List;
/**
@ -60,9 +63,8 @@ public class DelegateOperation implements Operation {
}
@Override
public void addStatusMessages(List<String> messages) {
original.addStatusMessages(messages);
delegate.addStatusMessages(messages);
public Iterable<Component> getStatusMessages() {
return Iterables.concat(original.getStatusMessages(), delegate.getStatusMessages());
}
}

View File

@ -58,7 +58,13 @@ import com.sk89q.worldedit.regions.FlatRegion;
import com.sk89q.worldedit.regions.Region;
import com.sk89q.worldedit.world.entity.EntityTypes;
import java.util.Collections;
import com.sk89q.worldedit.util.formatting.text.Component;
import java.util.List;
import com.sk89q.worldedit.util.formatting.text.TextComponent;
import com.sk89q.worldedit.util.formatting.text.TranslatableComponent;
import com.sk89q.worldedit.util.formatting.text.format.TextColor;
import java.util.ArrayList;
import java.util.stream.Collectors;
/**
@ -421,25 +427,16 @@ public class ForwardExtentCopy implements Operation {
}
@Override
public void addStatusMessages(List<String> messages) {
StringBuilder msg = new StringBuilder();
msg.append(affectedBlocks).append(" block(s)");
if (affectedBiomeCols > 0) {
if (affectedEntities > 0) {
msg.append(", ");
} else {
msg.append(" and ");
}
msg.append(affectedBiomeCols).append(" biome(s)");
}
if (affectedEntities > 0) {
if (affectedBiomeCols > 0) {
msg.append(",");
}
msg.append(" and ").append(affectedEntities).append(" entities(s)");
}
msg.append(" affected.");
messages.add(msg.toString());
public Iterable<Component> getStatusMessages() {
List<Component> messages = new ArrayList<>();
messages.add(TranslatableComponent.of("worldedit.operation.affected.block",
TextComponent.of(affectedBlocks)).color(TextColor.LIGHT_PURPLE));
messages.add(TranslatableComponent.of("worldedit.operation.affected.biome",
TextComponent.of(affectedBiomeCols)).color(TextColor.LIGHT_PURPLE));
messages.add(TranslatableComponent.of("worldedit.operation.affected.entity",
TextComponent.of(affectedEntities)).color(TextColor.LIGHT_PURPLE));
return messages;
}
}

View File

@ -20,8 +20,12 @@
package com.sk89q.worldedit.function.operation;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.util.formatting.text.Component;
import com.sk89q.worldedit.util.formatting.text.TextComponent;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* An task that may be split into multiple steps to be run sequentially
@ -56,7 +60,22 @@ public interface Operation {
* of the operation.
*
* @param messages The list to add messages to
* @deprecated Will be removed in WorldEdit 8.0 - use the Component variant
*/
void addStatusMessages(List<String> messages);
@Deprecated
default void addStatusMessages(List<String> messages) {
}
/**
* Gets an iterable of messages that describe the current status of the
* operation.
*
* @return The status messages
*/
default Iterable<Component> getStatusMessages() {
// TODO Remove legacy code WorldEdit 8.0.0
List<String> oldMessages = new ArrayList<>();
addStatusMessages(oldMessages);
return oldMessages.stream().map(TextComponent::of).collect(Collectors.toList());
}
}

View File

@ -21,13 +21,16 @@ package com.sk89q.worldedit.function.operation;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.util.formatting.text.Component;
import java.util.ArrayDeque;
import java.util.Collection;
import java.util.Deque;
import java.util.List;
import java.util.stream.Collectors;
/**
* Executes multiple queues in order.
@ -105,10 +108,8 @@ public class OperationQueue implements Operation {
}
@Override
public void addStatusMessages(List<String> messages) {
for (Operation operation : operations) {
operation.addStatusMessages(messages);
}
public Iterable<Component> getStatusMessages() {
return Iterables.concat(operations.stream().map(Operation::getStatusMessages).collect(Collectors.toList()));
}
}

View File

@ -49,8 +49,4 @@ public class SetLocatedBlocks implements Operation {
public void cancel() {
}
@Override
public void addStatusMessages(List<String> messages) {
}
}

View File

@ -21,6 +21,8 @@ package com.sk89q.worldedit.function.visitor;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.collect.Lists;
import com.boydti.fawe.config.BBC;
import com.boydti.fawe.object.collection.BlockVectorSet;
import com.google.common.collect.Sets;
@ -30,7 +32,11 @@ import com.sk89q.worldedit.function.operation.Operation;
import com.sk89q.worldedit.function.operation.RunContext;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.math.MutableBlockVector3;
import com.sk89q.worldedit.util.formatting.text.Component;
import com.sk89q.worldedit.util.Direction;
import com.sk89q.worldedit.util.formatting.text.TextComponent;
import com.sk89q.worldedit.util.formatting.text.TranslatableComponent;
import com.sk89q.worldedit.util.formatting.text.format.TextColor;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@ -168,11 +174,9 @@ public abstract class BreadthFirstSearch implements Operation {
* @param position the position
*/
public void visit(BlockVector3 position) {
BlockVector3 blockVector = position;
if (!visited.contains(blockVector)) {
isVisitable(position, position); // Ignore this, just to initialize mask on this point
queue.add(blockVector);
visited.add(blockVector);
if (!visited.contains(position)) {
queue.add(position);
visited.add(position);
}
}
@ -183,11 +187,10 @@ public abstract class BreadthFirstSearch implements Operation {
* @param to the block under question
*/
private void visit(BlockVector3 from, BlockVector3 to) {
BlockVector3 blockVector = to;
if (!visited.contains(blockVector)) {
visited.add(blockVector);
if (!visited.contains(to)) {
visited.add(to);
if (isVisitable(from, to)) {
queue.add(blockVector);
queue.add(to);
}
}
}
@ -276,8 +279,11 @@ public abstract class BreadthFirstSearch implements Operation {
}
@Override
public void addStatusMessages(List<String> messages) {
messages.add(BBC.VISITOR_BLOCK.format(getAffected()));
public Iterable<Component> getStatusMessages() {
return Lists.newArrayList(TranslatableComponent.of(
"worldedit.operation.affected.block",
TextComponent.of(getAffected())
).color(TextColor.LIGHT_PURPLE));
}
}

View File

@ -23,14 +23,19 @@ import com.boydti.fawe.config.BBC;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.collect.Lists;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.entity.Entity;
import com.sk89q.worldedit.function.EntityFunction;
import com.sk89q.worldedit.function.operation.Operation;
import com.sk89q.worldedit.function.operation.RunContext;
import com.sk89q.worldedit.util.formatting.text.Component;
import java.util.Iterator;
import java.util.List;
import com.sk89q.worldedit.util.formatting.text.TextComponent;
import com.sk89q.worldedit.util.formatting.text.TranslatableComponent;
import com.sk89q.worldedit.util.formatting.text.format.TextColor;
/**
* Visits entities as provided by an {@code Iterator}.
@ -79,8 +84,11 @@ public class EntityVisitor implements Operation {
}
@Override
public void addStatusMessages(List<String> messages) {
messages.add(BBC.VISITOR_ENTITY.format(getAffected()));
public Iterable<Component> getStatusMessages() {
return Lists.newArrayList(TranslatableComponent.of(
"worldedit.operation.affected.entity",
TextComponent.of(getAffected())
).color(TextColor.LIGHT_PURPLE));
}
}

View File

@ -20,6 +20,8 @@
package com.sk89q.worldedit.function.visitor;
import com.boydti.fawe.config.BBC;
import com.google.common.collect.Lists;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.function.FlatRegionFunction;
import com.sk89q.worldedit.function.operation.Operation;
@ -27,9 +29,11 @@ import com.sk89q.worldedit.function.operation.RunContext;
import com.sk89q.worldedit.math.BlockVector2;
import com.sk89q.worldedit.regions.FlatRegion;
import java.util.List;
import static com.google.common.base.Preconditions.checkNotNull;
import com.sk89q.worldedit.util.formatting.text.Component;
import com.sk89q.worldedit.util.formatting.text.TextComponent;
import com.sk89q.worldedit.util.formatting.text.TranslatableComponent;
import com.sk89q.worldedit.util.formatting.text.format.TextColor;
/**
* Applies region functions to columns in a {@link FlatRegion}.
@ -79,8 +83,11 @@ public class FlatRegionVisitor implements Operation {
}
@Override
public void addStatusMessages(List<String> messages) {
messages.add(BBC.VISITOR_FLAT.format(getAffected()));
public Iterable<Component> getStatusMessages() {
return Lists.newArrayList(TranslatableComponent.of(
"worldedit.operation.affected.column",
TextComponent.of(getAffected())
).color(TextColor.LIGHT_PURPLE));
}
}

View File

@ -128,8 +128,4 @@ public class LayerVisitor implements Operation {
public void cancel() {
}
@Override
public void addStatusMessages(List<String> messages) {
}
}

View File

@ -19,6 +19,8 @@
package com.sk89q.worldedit.function.visitor;
import com.google.common.collect.Lists;
import com.boydti.fawe.config.BBC;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.function.RegionFunction;
@ -26,7 +28,10 @@ import com.sk89q.worldedit.function.operation.Operation;
import com.sk89q.worldedit.function.operation.RunContext;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.regions.Region;
import java.util.List;
import com.sk89q.worldedit.util.formatting.text.Component;
import com.sk89q.worldedit.util.formatting.text.TextComponent;
import com.sk89q.worldedit.util.formatting.text.TranslatableComponent;
import com.sk89q.worldedit.util.formatting.text.format.TextColor;
/**
* Utility class to apply region functions to {@link com.sk89q.worldedit.regions.Region}.
@ -90,8 +95,11 @@ public class RegionVisitor implements Operation {
}
@Override
public void addStatusMessages(List<String> messages) {
messages.add(BBC.VISITOR_BLOCK.format(getAffected()));
public Iterable<Component> getStatusMessages() {
return Lists.newArrayList(TranslatableComponent.of(
"worldedit.operation.affected.block",
TextComponent.of(getAffected())
).color(TextColor.LIGHT_PURPLE));
}
}