package net.minecraft.server; import java.util.Objects; import javax.annotation.Nullable; public class MapIconBanner { private final BlockPosition a; private final EnumColor b; @Nullable private final IChatBaseComponent c; public MapIconBanner(BlockPosition blockposition, EnumColor enumcolor, @Nullable IChatBaseComponent ichatbasecomponent) { this.a = blockposition; this.b = enumcolor; this.c = ichatbasecomponent; } public static MapIconBanner a(NBTTagCompound nbttagcompound) { BlockPosition blockposition = GameProfileSerializer.c(nbttagcompound.getCompound("Pos")); EnumColor enumcolor = EnumColor.a(nbttagcompound.getString("Color"), EnumColor.WHITE); IChatBaseComponent ichatbasecomponent = nbttagcompound.hasKey("Name") ? IChatBaseComponent.ChatSerializer.a(nbttagcompound.getString("Name")) : null; return new MapIconBanner(blockposition, enumcolor, ichatbasecomponent); } @Nullable public static MapIconBanner a(IBlockAccess iblockaccess, BlockPosition blockposition) { TileEntity tileentity = iblockaccess.getTileEntity(blockposition); if (tileentity instanceof TileEntityBanner) { TileEntityBanner tileentitybanner = (TileEntityBanner) tileentity; EnumColor enumcolor = tileentitybanner.a(() -> { return iblockaccess.getType(blockposition); }); IChatBaseComponent ichatbasecomponent = tileentitybanner.hasCustomName() ? tileentitybanner.getCustomName() : null; return new MapIconBanner(blockposition, enumcolor, ichatbasecomponent); } else { return null; } } public BlockPosition a() { return this.a; } public MapIcon.Type c() { switch (this.b) { case WHITE: return MapIcon.Type.BANNER_WHITE; case ORANGE: return MapIcon.Type.BANNER_ORANGE; case MAGENTA: return MapIcon.Type.BANNER_MAGENTA; case LIGHT_BLUE: return MapIcon.Type.BANNER_LIGHT_BLUE; case YELLOW: return MapIcon.Type.BANNER_YELLOW; case LIME: return MapIcon.Type.BANNER_LIME; case PINK: return MapIcon.Type.BANNER_PINK; case GRAY: return MapIcon.Type.BANNER_GRAY; case LIGHT_GRAY: return MapIcon.Type.BANNER_LIGHT_GRAY; case CYAN: return MapIcon.Type.BANNER_CYAN; case PURPLE: return MapIcon.Type.BANNER_PURPLE; case BLUE: return MapIcon.Type.BANNER_BLUE; case BROWN: return MapIcon.Type.BANNER_BROWN; case GREEN: return MapIcon.Type.BANNER_GREEN; case RED: return MapIcon.Type.BANNER_RED; case BLACK: default: return MapIcon.Type.BANNER_BLACK; } } @Nullable public IChatBaseComponent d() { return this.c; } public boolean equals(Object object) { if (this == object) { return true; } else if (object != null && this.getClass() == object.getClass()) { MapIconBanner mapiconbanner = (MapIconBanner) object; return Objects.equals(this.a, mapiconbanner.a) && this.b == mapiconbanner.b && Objects.equals(this.c, mapiconbanner.c); } else { return false; } } public int hashCode() { return Objects.hash(new Object[]{this.a, this.b, this.c}); } public NBTTagCompound e() { NBTTagCompound nbttagcompound = new NBTTagCompound(); nbttagcompound.set("Pos", GameProfileSerializer.a(this.a)); nbttagcompound.setString("Color", this.b.b()); if (this.c != null) { nbttagcompound.setString("Name", IChatBaseComponent.ChatSerializer.a(this.c)); } return nbttagcompound; } public String f() { return "banner-" + this.a.getX() + "," + this.a.getY() + "," + this.a.getZ(); } }