mirror of
https://github.com/plexusorg/Plex-FAWE.git
synced 2025-07-13 14:48:34 +00:00
Cherry pick upstream commits to fix SideEffectSet (#1737)
* Fix SideEffectSet.none() being the default set (#1620) * Fix SideEffectSet.none() being the default set * Remove the unnecessary private empty constructor for SideEffectSet * Back to ImmutableMap.of * Speed up Fast Reorder Mode and make it default (#1653) * Speed up Fast Reorder Mode and make it default * Make non-exposed side effects internal * Docs on isExposed Co-authored-by: Matthew Miller <mnmiller1@me.com>
This commit is contained in:
@ -22,21 +22,31 @@ package com.sk89q.worldedit.util;
|
||||
import java.util.Locale;
|
||||
|
||||
public enum SideEffect {
|
||||
LIGHTING(State.ON),
|
||||
NEIGHBORS(State.ON),
|
||||
UPDATE(State.ON),
|
||||
VALIDATION(State.OFF),
|
||||
ENTITY_AI(State.OFF),
|
||||
EVENTS(State.OFF);
|
||||
LIGHTING(State.ON, true),
|
||||
NEIGHBORS(State.ON, true),
|
||||
UPDATE(State.ON, true),
|
||||
VALIDATION(State.OFF, true),
|
||||
ENTITY_AI(State.OFF, true),
|
||||
EVENTS(State.OFF, true),
|
||||
/**
|
||||
* Internal use only.
|
||||
*/
|
||||
POI_UPDATE(State.ON, false),
|
||||
/**
|
||||
* Internal use only.
|
||||
*/
|
||||
NETWORK(State.ON, false);
|
||||
|
||||
private final String displayName;
|
||||
private final String description;
|
||||
private final State defaultValue;
|
||||
private final boolean exposed;
|
||||
|
||||
SideEffect(State defaultValue) {
|
||||
SideEffect(State defaultValue, boolean exposed) {
|
||||
this.displayName = "worldedit.sideeffect." + this.name().toLowerCase(Locale.US);
|
||||
this.description = "worldedit.sideeffect." + this.name().toLowerCase(Locale.US) + ".description";
|
||||
this.defaultValue = defaultValue;
|
||||
this.exposed = exposed;
|
||||
}
|
||||
|
||||
public String getDisplayName() {
|
||||
@ -51,6 +61,15 @@ public enum SideEffect {
|
||||
return this.defaultValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if this side effect is considered API.
|
||||
*
|
||||
* @return if the side effect is exposed via API
|
||||
*/
|
||||
public boolean isExposed() {
|
||||
return exposed;
|
||||
}
|
||||
|
||||
public enum State {
|
||||
OFF,
|
||||
ON,
|
||||
|
@ -31,10 +31,12 @@ import java.util.stream.Collectors;
|
||||
|
||||
public class SideEffectSet {
|
||||
|
||||
private static final SideEffectSet DEFAULT = new SideEffectSet(
|
||||
Arrays.stream(SideEffect.values()).collect(Collectors.toMap(Function.identity(), SideEffect::getDefaultValue))
|
||||
private static final SideEffectSet DEFAULT = new SideEffectSet();
|
||||
private static final SideEffectSet NONE = new SideEffectSet(
|
||||
Arrays.stream(SideEffect.values())
|
||||
.filter(SideEffect::isExposed)
|
||||
.collect(Collectors.toMap(Function.identity(), state -> SideEffect.State.OFF))
|
||||
);
|
||||
private static final SideEffectSet NONE = new SideEffectSet();
|
||||
|
||||
private final Map<SideEffect, SideEffect.State> sideEffects;
|
||||
private final Set<SideEffect> appliedSideEffects;
|
||||
|
@ -23,8 +23,11 @@ import com.fastasyncworldedit.core.configuration.Caption;
|
||||
import com.sk89q.worldedit.WorldEdit;
|
||||
import com.sk89q.worldedit.util.SideEffect;
|
||||
import com.sk89q.worldedit.util.SideEffectSet;
|
||||
import com.sk89q.worldedit.util.concurrency.LazyReference;
|
||||
import com.sk89q.worldedit.util.formatting.WorldEditText;
|
||||
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.event.ClickEvent;
|
||||
import com.sk89q.worldedit.util.formatting.text.event.HoverEvent;
|
||||
import com.sk89q.worldedit.util.formatting.text.format.TextColor;
|
||||
@ -36,21 +39,23 @@ import java.util.stream.Collectors;
|
||||
|
||||
public class SideEffectBox extends PaginationBox {
|
||||
|
||||
private static List<SideEffect> sideEffects;
|
||||
private static final LazyReference<List<SideEffect>> SIDE_EFFECTS = LazyReference.from(() ->
|
||||
WorldEdit.getInstance().getPlatformManager().getSupportedSideEffects()
|
||||
.stream()
|
||||
.filter(SideEffect::isExposed)
|
||||
.sorted(Comparator.comparing(effect ->
|
||||
WorldEditText.reduceToText(
|
||||
TranslatableComponent.of(effect.getDisplayName()),
|
||||
Locale.US
|
||||
)
|
||||
))
|
||||
.collect(Collectors.toList())
|
||||
);
|
||||
|
||||
private final SideEffectSet sideEffectSet;
|
||||
|
||||
private static List<SideEffect> getSideEffects() {
|
||||
//FAWE start
|
||||
if (sideEffects == null) {
|
||||
sideEffects = WorldEdit.getInstance().getPlatformManager().getSupportedSideEffects()
|
||||
.stream()
|
||||
.sorted(Comparator.comparing(Enum::name))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
//FAWE end
|
||||
|
||||
return sideEffects;
|
||||
return SIDE_EFFECTS.getValue();
|
||||
}
|
||||
|
||||
public SideEffectBox(SideEffectSet sideEffectSet) {
|
||||
|
Reference in New Issue
Block a user