Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions Essentials/src/main/java/com/earth2me/essentials/Mob.java
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,11 @@ public enum Mob {
AXOLOTL("Axolotl", Enemies.FRIENDLY, "AXOLOTL"),
GOAT("Goat", Enemies.NEUTRAL, "GOAT"),
GLOW_SQUID("GlowSquid", Enemies.FRIENDLY, "GLOW_SQUID"),
ALLAY("Allay", Enemies.FRIENDLY, "ALLAY"),
FROG("Frog", Enemies.FRIENDLY, "FROG"),
TADPOLE("Tadpole", Enemies.FRIENDLY, "TADPOLE"),
WARDEN("Warden", Enemies.ENEMY, "WARDEN"),
CHEST_BOAT("ChestBoat", Enemies.NEUTRAL, "CHEST_BOAT"),
;

public static final Logger logger = Logger.getLogger("Essentials");
Expand Down
11 changes: 11 additions & 0 deletions Essentials/src/main/java/com/earth2me/essentials/MobCompat.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Fox;
import org.bukkit.entity.Frog;
import org.bukkit.entity.Llama;
import org.bukkit.entity.MushroomCow;
import org.bukkit.entity.Ocelot;
Expand Down Expand Up @@ -37,6 +38,7 @@ public final class MobCompat {
public static final EntityType PHANTOM = getEntityType("PHANTOM");
public static final EntityType AXOLOTL = getEntityType("AXOLOTL");
public static final EntityType GOAT = getEntityType("GOAT");
public static final EntityType FROG = getEntityType("FROG");

// Constants for mobs that have changed since earlier versions
public static final EntityType CAT = getEntityType("CAT", "OCELOT");
Expand Down Expand Up @@ -164,6 +166,15 @@ public static void setAxolotlVariant(final Entity entity, final String variant)
}
}

public static void setFrogVariant(final Entity entity, final String variant) {
if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_19_R01)) {
return;
}
if (entity instanceof Frog) {
((Frog) entity).setVariant(Frog.Variant.valueOf(variant));
}
}

public enum CatType {
// These are (loosely) Mojang names for the cats
SIAMESE("SIAMESE", "SIAMESE_CAT"),
Expand Down
7 changes: 7 additions & 0 deletions Essentials/src/main/java/com/earth2me/essentials/MobData.java
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,9 @@ public enum MobData {
CYAN_AXOLOTL("cyan", MobCompat.AXOLOTL, "axolotl:CYAN", true),
BLUE_AXOLOTL("blue", MobCompat.AXOLOTL, "axolotl:BLUE", true),
SCREAMING_GOAT("screaming", MobCompat.GOAT, Data.GOAT_SCREAMING, true),
TEMPERATE_FROG("temperate", MobCompat.FROG, "frog:TEMPERATE", true),
WARM_FROG("warm", MobCompat.FROG, "frog:WARM", true),
COLD_FROG("cold", MobCompat.FROG, "frog:COLD", true),
;

public static final Logger logger = Logger.getLogger("Essentials");
Expand Down Expand Up @@ -407,6 +410,10 @@ public void setData(final Entity spawned, final Player target, final String rawD
MobCompat.setAxolotlVariant(spawned, split[1]);
break;
}
case "frog": {
MobCompat.setFrogVariant(spawned, split[1]);
break;
}
}
} else {
logger.warning("Unknown mob data type: " + this.toString());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
import com.earth2me.essentials.ManagedFile;
import com.earth2me.essentials.utils.EnumUtil;
import com.earth2me.essentials.utils.NumberUtil;
import com.earth2me.essentials.utils.StringUtil;
import com.earth2me.essentials.utils.VersionUtil;
import net.ess3.api.IEssentials;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
import org.bukkit.inventory.ItemStack;
Expand Down Expand Up @@ -68,10 +68,10 @@ public void reloadConfig() {
final Matcher matcher = csvSplitPattern.matcher(line);
while (matcher.find()) {
String match = matcher.group(1);
if (StringUtils.stripToNull(match) == null) {
if (StringUtil.stripToNull(match) == null) {
continue;
}
match = StringUtils.strip(match.trim(), "\"");
match = StringUtil.strip(match.trim(), "\"");
switch (col) {
case 0:
itemName = match.toLowerCase(Locale.ENGLISH);
Expand All @@ -83,7 +83,7 @@ public void reloadConfig() {
data = Short.parseShort(match);
break;
case 3:
nbt = StringUtils.stripToNull(match);
nbt = StringUtil.stripToNull(match);
break;
default:
continue;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,13 +82,15 @@ public final class MaterialUtil {
"ACACIA_SIGN", "BIRCH_SIGN",
"DARK_OAK_SIGN", "JUNGLE_SIGN",
"OAK_SIGN", "SPRUCE_SIGN",
"CRIMSON_SIGN", "WARPED_SIGN");
"CRIMSON_SIGN", "WARPED_SIGN",
"MANGROVE_SIGN");

WALL_SIGNS = EnumUtil.getAllMatching(Material.class, "WALL_SIGN",
"ACACIA_WALL_SIGN", "BIRCH_WALL_SIGN",
"DARK_OAK_WALL_SIGN", "JUNGLE_WALL_SIGN",
"OAK_WALL_SIGN", "SPRUCE_WALL_SIGN",
"CRIMSON_WALL_SIGN", "WARPED_WALL_SIGN");
"CRIMSON_WALL_SIGN", "WARPED_WALL_SIGN",
"MANGROVE_WALL_SIGN");
}

private MaterialUtil() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
package com.earth2me.essentials.utils;

import com.google.common.primitives.Chars;

import java.util.Collection;
import java.util.List;
import java.util.Locale;
import java.util.UUID;
import java.util.function.Function;
import java.util.regex.Pattern;

public final class StringUtil {
Expand Down Expand Up @@ -85,4 +89,49 @@ public static UUID toUUID(final String input) {

return null;
}

public static String abbreviate(final String input, final int length) {
if (input == null) return null;
if (length < 4) throw new IllegalArgumentException("Invalid length " + length);

if (input.length() <= length) return input;
return input.substring(0, length - 3) + "...";
}

// Replacement for org.apache.commons.lang3.StringUtils.stripToNull(String)
public static String stripToNull(final String input) {
if (input == null) return null;

final String result = strip(input);
return result.isEmpty() ? null : result;
}

// Replacement for org.apache.commons.lang3.StringUtils.strip(String)
public static String strip(final String input) {
return strip(input, Character::isWhitespace);
}

// Replacement for org.apache.commons.lang3.StringUtils.strip(String, String)
public static String strip(final String input, final String stripChars) {
if (stripChars == null) return strip(input);
final List<Character> toStrip = Chars.asList(stripChars.toCharArray());
return strip(input, toStrip::contains);
}

public static String strip(final String input, Function<Character, Boolean> shouldStrip) {
if (input == null) return null;

int startIndex = 0;
int endIndex = input.length();

for (; startIndex < endIndex; startIndex++) {
if (!shouldStrip.apply(input.charAt(startIndex))) break;
}

for (; endIndex > startIndex; endIndex--) {
if (!shouldStrip.apply(input.charAt(endIndex - 1))) break;
}

return input.substring(startIndex, endIndex);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,9 @@ public final class VersionUtil {
public static final BukkitVersion v1_17_R01 = BukkitVersion.fromString("1.17-R0.1-SNAPSHOT");
public static final BukkitVersion v1_17_1_R01 = BukkitVersion.fromString("1.17.1-R0.1-SNAPSHOT");
public static final BukkitVersion v1_18_2_R01 = BukkitVersion.fromString("1.18.2-R0.1-SNAPSHOT");
public static final BukkitVersion v1_19_R01 = BukkitVersion.fromString("1.19-R0.1-SNAPSHOT");

private static final Set<BukkitVersion> supportedVersions = ImmutableSet.of(v1_8_8_R01, v1_9_4_R01, v1_10_2_R01, v1_11_2_R01, v1_12_2_R01, v1_13_2_R01, v1_14_4_R01, v1_15_2_R01, v1_16_5_R01, v1_17_1_R01, v1_18_2_R01);
private static final Set<BukkitVersion> supportedVersions = ImmutableSet.of(v1_8_8_R01, v1_9_4_R01, v1_10_2_R01, v1_11_2_R01, v1_12_2_R01, v1_13_2_R01, v1_14_4_R01, v1_15_2_R01, v1_16_5_R01, v1_17_1_R01, v1_18_2_R01, v1_19_R01);

public static final boolean PRE_FLATTENING = VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01);

Expand Down
Loading