Reflect Banner API Changes

This commit is contained in:
Josh Roy 2024-05-13 16:55:04 -04:00
parent 78c592ae68
commit a900484542
No known key found for this signature in database
GPG Key ID: 86A69D08540BC29A
8 changed files with 223 additions and 2 deletions

View File

@ -59,6 +59,7 @@ import net.ess3.nms.refl.providers.ReflServerStateProvider;
import net.ess3.nms.refl.providers.ReflSpawnEggProvider;
import net.ess3.nms.refl.providers.ReflSpawnerBlockProvider;
import net.ess3.nms.refl.providers.ReflSyncCommandsProvider;
import net.ess3.provider.BannerDataProvider;
import net.ess3.provider.BiomeKeyProvider;
import net.ess3.provider.ContainerProvider;
import net.ess3.provider.DamageEventProvider;
@ -78,6 +79,7 @@ import net.ess3.provider.SpawnerBlockProvider;
import net.ess3.provider.SpawnerItemProvider;
import net.ess3.provider.SyncCommandsProvider;
import net.ess3.provider.WorldInfoProvider;
import net.ess3.provider.providers.BaseBannerDataProvider;
import net.ess3.provider.providers.BaseLoggerProvider;
import net.ess3.provider.providers.BasePotionDataProvider;
import net.ess3.provider.providers.BlockMetaSpawnerItemProvider;
@ -85,6 +87,7 @@ import net.ess3.provider.providers.BukkitMaterialTagProvider;
import net.ess3.provider.providers.BukkitSpawnerBlockProvider;
import net.ess3.provider.providers.FixedHeightWorldInfoProvider;
import net.ess3.provider.providers.FlatSpawnEggProvider;
import net.ess3.provider.providers.LegacyBannerDataProvider;
import net.ess3.provider.providers.LegacyDamageEventProvider;
import net.ess3.provider.providers.LegacyItemUnbreakableProvider;
import net.ess3.provider.providers.LegacyPlayerLocaleProvider;
@ -185,6 +188,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
private transient SpawnerBlockProvider spawnerBlockProvider;
private transient SpawnEggProvider spawnEggProvider;
private transient PotionMetaProvider potionMetaProvider;
private transient BannerDataProvider bannerDataProvider;
private transient ServerStateProvider serverStateProvider;
private transient ContainerProvider containerProvider;
private transient SerializationProvider serializationProvider;
@ -411,6 +415,13 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
potionMetaProvider = new BasePotionDataProvider();
}
//Banner Meta Provider
if (VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_20_6_R01)) {
bannerDataProvider = new BaseBannerDataProvider();
} else {
bannerDataProvider = new LegacyBannerDataProvider();
}
//Server State Provider
//Container Provider
if (PaperLib.isPaper() && VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_15_2_R01)) {
@ -1366,6 +1377,11 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
return potionMetaProvider;
}
@Override
public BannerDataProvider getBannerDataProvider() {
return bannerDataProvider;
}
@Override
public CustomItemResolver getCustomItemResolver() {
return customItemResolver;

View File

@ -9,6 +9,7 @@ import com.earth2me.essentials.perm.PermissionsHandler;
import com.earth2me.essentials.updatecheck.UpdateChecker;
import com.earth2me.essentials.userstorage.IUserMap;
import net.ess3.nms.refl.providers.ReflOnlineModeProvider;
import net.ess3.provider.BannerDataProvider;
import net.ess3.provider.BiomeKeyProvider;
import net.ess3.provider.ContainerProvider;
import net.ess3.provider.DamageEventProvider;
@ -189,5 +190,7 @@ public interface IEssentials extends Plugin {
BiomeKeyProvider getBiomeKeyProvider();
BannerDataProvider getBannerDataProvider();
PluginCommand getPluginCommand(String cmd);
}

View File

@ -640,7 +640,7 @@ public class MetaItemStack {
final BannerMeta meta = (BannerMeta) stack.getItemMeta();
if (split[0].equalsIgnoreCase("basecolor")) {
final Color color = Color.fromRGB(Integer.parseInt(split[1]));
meta.setBaseColor(DyeColor.getByColor(color));
ess.getBannerDataProvider().setBaseColor(stack, DyeColor.getByColor(color));
} else if (patternType != null) {
final PatternType type = PatternType.getByIdentifier(split[0]);
final DyeColor color = DyeColor.getByColor(Color.fromRGB(Integer.parseInt(split[1])));

View File

@ -317,6 +317,7 @@ public abstract class AbstractItemDb implements IConf, net.ess3.api.IItemDb {
sb.append("basecolor:").append(basecolor).append(" ");
}
for (final org.bukkit.block.banner.Pattern p : shieldBannerMeta.getPatterns()) {
//noinspection removal
final String type = p.getPattern().getIdentifier();
final int color = p.getColor().getColor().asRGB();
sb.append(type).append(",").append(color).append(" ");
@ -324,7 +325,7 @@ public abstract class AbstractItemDb implements IConf, net.ess3.api.IItemDb {
} else {
final BannerMeta bannerMeta = (BannerMeta) is.getItemMeta();
if (bannerMeta != null) {
DyeColor baseDyeColor = bannerMeta.getBaseColor();
DyeColor baseDyeColor = ess.getBannerDataProvider().getBaseColor(is);
if (baseDyeColor == null) {
baseDyeColor = MaterialUtil.getColorOf(material);
}
@ -335,6 +336,7 @@ public abstract class AbstractItemDb implements IConf, net.ess3.api.IItemDb {
sb.append("basecolor:").append(basecolor).append(" ");
}
for (final org.bukkit.block.banner.Pattern p : bannerMeta.getPatterns()) {
//noinspection removal
final String type = p.getPattern().getIdentifier();
final int color = p.getColor().getColor().asRGB();
sb.append(type).append(",").append(color).append(" ");

View File

@ -3,6 +3,9 @@ plugins {
}
dependencies {
implementation(project(':providers:BaseProviders')) {
exclude group: "org.spigotmc", module: "spigot-api"
}
api project(':providers:NMSReflectionProvider')
}

View File

@ -0,0 +1,26 @@
package net.ess3.provider.providers;
import net.ess3.provider.BannerDataProvider;
import org.bukkit.DyeColor;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.BannerMeta;
public class LegacyBannerDataProvider implements BannerDataProvider {
@Override
public DyeColor getBaseColor(ItemStack stack) {
final BannerMeta bannerMeta = (BannerMeta) stack.getItemMeta();
return bannerMeta.getBaseColor();
}
@Override
public void setBaseColor(ItemStack stack, DyeColor color) {
final BannerMeta bannerMeta = (BannerMeta) stack.getItemMeta();
bannerMeta.setBaseColor(color);
stack.setItemMeta(bannerMeta);
}
@Override
public String getDescription() {
return "Legacy Banner Meta Provider";
}
}

View File

@ -0,0 +1,10 @@
package net.ess3.provider;
import org.bukkit.DyeColor;
import org.bukkit.inventory.ItemStack;
public interface BannerDataProvider extends Provider {
DyeColor getBaseColor(ItemStack stack);
void setBaseColor(ItemStack stack, DyeColor color);
}

View File

@ -0,0 +1,161 @@
package net.ess3.provider.providers;
import net.ess3.provider.BannerDataProvider;
import org.bukkit.DyeColor;
import org.bukkit.inventory.ItemStack;
public class BaseBannerDataProvider implements BannerDataProvider {
@Override
public DyeColor getBaseColor(ItemStack stack) {
final DyeColor base;
switch (stack.getType()) {
case WHITE_BANNER: {
base = DyeColor.WHITE;
break;
}
case LIGHT_GRAY_BANNER: {
base = DyeColor.LIGHT_GRAY;
break;
}
case GRAY_BANNER: {
base = DyeColor.GRAY;
break;
}
case BLACK_BANNER: {
base = DyeColor.BLACK;
break;
}
case RED_BANNER: {
base = DyeColor.RED;
break;
}
case ORANGE_BANNER: {
base = DyeColor.ORANGE;
break;
}
case YELLOW_BANNER: {
base = DyeColor.YELLOW;
break;
}
case LIME_BANNER: {
base = DyeColor.LIME;
break;
}
case GREEN_BANNER: {
base = DyeColor.GREEN;
break;
}
case CYAN_BANNER: {
base = DyeColor.CYAN;
break;
}
case LIGHT_BLUE_BANNER: {
base = DyeColor.LIGHT_BLUE;
break;
}
case BLUE_BANNER: {
base = DyeColor.BLUE;
break;
}
case PURPLE_BANNER: {
base = DyeColor.PURPLE;
break;
}
case MAGENTA_BANNER: {
base = DyeColor.MAGENTA;
break;
}
case PINK_BANNER: {
base = DyeColor.PINK;
break;
}
case BROWN_BANNER: {
base = DyeColor.BROWN;
break;
}
default: {
base = null;
break;
}
}
return base;
}
@Override
public void setBaseColor(ItemStack stack, DyeColor color) {
switch (color) {
case WHITE: {
stack.setType(org.bukkit.Material.WHITE_BANNER);
break;
}
case LIGHT_GRAY: {
stack.setType(org.bukkit.Material.LIGHT_GRAY_BANNER);
break;
}
case GRAY: {
stack.setType(org.bukkit.Material.GRAY_BANNER);
break;
}
case BLACK: {
stack.setType(org.bukkit.Material.BLACK_BANNER);
break;
}
case RED: {
stack.setType(org.bukkit.Material.RED_BANNER);
break;
}
case ORANGE: {
stack.setType(org.bukkit.Material.ORANGE_BANNER);
break;
}
case YELLOW: {
stack.setType(org.bukkit.Material.YELLOW_BANNER);
break;
}
case LIME: {
stack.setType(org.bukkit.Material.LIME_BANNER);
break;
}
case GREEN: {
stack.setType(org.bukkit.Material.GREEN_BANNER);
break;
}
case CYAN: {
stack.setType(org.bukkit.Material.CYAN_BANNER);
break;
}
case LIGHT_BLUE: {
stack.setType(org.bukkit.Material.LIGHT_BLUE_BANNER);
break;
}
case BLUE: {
stack.setType(org.bukkit.Material.BLUE_BANNER);
break;
}
case PINK: {
stack.setType(org.bukkit.Material.PINK_BANNER);
break;
}
case BROWN: {
stack.setType(org.bukkit.Material.BROWN_BANNER);
break;
}
case PURPLE: {
stack.setType(org.bukkit.Material.PURPLE_BANNER);
break;
}
case MAGENTA: {
stack.setType(org.bukkit.Material.MAGENTA_BANNER);
break;
}
default: {
break;
}
}
}
@Override
public String getDescription() {
return "1.20.5+ Banner Data Provider.";
}
}