mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-25 22:56:45 +01:00
Improve PlotBlock name matching
This commit is contained in:
parent
e724aa8caf
commit
444222c7f9
@ -4,12 +4,20 @@ import com.github.intellectualsites.plotsquared.plot.object.LegacyPlotBlock;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.PlotBlock;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.StringPlotBlock;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.LegacyMappings;
|
||||
import lombok.*;
|
||||
import org.bukkit.Material;
|
||||
|
||||
import com.github.intellectualsites.plotsquared.plot.util.StringComparison;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.ToString;
|
||||
import org.bukkit.Material;
|
||||
|
||||
/**
|
||||
* Borrowed from https://github.com/Phoenix616/IDConverter/blob/master/mappings/src/main/java/de/themoep/idconverter/IdMappings.java
|
||||
@ -692,6 +700,16 @@ public class BukkitLegacyMappings extends LegacyMappings {
|
||||
}
|
||||
}
|
||||
|
||||
public Collection<PlotBlock> getPlotBlocks() {
|
||||
return Arrays.stream(BLOCKS).map(block -> PlotBlock.get(block.getNewName()))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public StringComparison<PlotBlock>.ComparisonResult getClosestsMatch(@NonNull final String string) {
|
||||
final StringComparison<PlotBlock> comparison = new StringComparison<>(string, getPlotBlocks());
|
||||
return comparison.getBestMatchAdvanced();
|
||||
}
|
||||
|
||||
/**
|
||||
* Try to find a legacy plot block by any means possible.
|
||||
* Strategy:
|
||||
@ -794,7 +812,10 @@ public class BukkitLegacyMappings extends LegacyMappings {
|
||||
return LegacyPlotBlock.get(numericalId, dataValue);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.newName;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -448,39 +448,11 @@ import org.bukkit.material.Wool;
|
||||
|
||||
@Override @Nullable
|
||||
public StringComparison<PlotBlock>.ComparisonResult getClosestBlock(String name) {
|
||||
try {
|
||||
final Material material = Material.valueOf(name.toUpperCase());
|
||||
return new StringComparison<PlotBlock>().new ComparisonResult(1,
|
||||
PlotBlock.get(name));
|
||||
} catch (IllegalArgumentException ignored) {
|
||||
final PlotBlock plotBlock = BukkitUtil.getBukkitLegacyMappings().fromAny(name);
|
||||
if (plotBlock != null) {
|
||||
return new StringComparison<PlotBlock>().new ComparisonResult(1, plotBlock);
|
||||
}
|
||||
try {
|
||||
byte data;
|
||||
String[] split = name.split(":");
|
||||
if (split.length == 2) {
|
||||
data = Byte.parseByte(split[1]);
|
||||
name = split[0];
|
||||
} else {
|
||||
data = 0;
|
||||
}
|
||||
double match;
|
||||
short id;
|
||||
if (MathMan.isInteger(split[0])) {
|
||||
id = Short.parseShort(split[0]);
|
||||
match = 0;
|
||||
} else {
|
||||
StringComparison<Material>.ComparisonResult comparison =
|
||||
new StringComparison<>(name, Material.values()).getBestMatchAdvanced();
|
||||
match = comparison.match;
|
||||
id = (short) comparison.best.getId();
|
||||
}
|
||||
PlotBlock block = PlotBlock.get(id, data);
|
||||
StringComparison<PlotBlock> outer = new StringComparison<>();
|
||||
return outer.new ComparisonResult(match, block);
|
||||
|
||||
} catch (NumberFormatException ignored) {
|
||||
}
|
||||
return null;
|
||||
return BukkitUtil.getBukkitLegacyMappings().getClosestsMatch(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Loading…
Reference in New Issue
Block a user