fixed mapping of Art <-> EnumArt in Paintings

This commit is contained in:
Tahg 2011-10-12 14:12:53 -04:00
parent 7d153a9f58
commit 8c02599256
2 changed files with 77 additions and 3 deletions

View File

@ -0,0 +1,74 @@
package org.bukkit.craftbukkit;
import net.minecraft.server.EnumArt;
import org.bukkit.Art;
// Safety class, will break if either side changes
public class CraftArt {
public static Art NotchToBukkit(EnumArt art) {
switch (art) {
case KEBAB: return Art.KEBAB;
case AZTEC: return Art.AZTEC;
case ALBAN: return Art.ALBAN;
case AZTEC2: return Art.AZTEC2;
case BOMB: return Art.BOMB;
case PLANT: return Art.PLANT;
case WASTELAND: return Art.WASTELAND;
case POOL: return Art.POOL;
case COURBET: return Art.COURBET;
case SEA: return Art.SEA;
case SUNSET: return Art.SUNSET;
case CREEBET: return Art.CREEBET;
case WANDERER: return Art.WANDERER;
case GRAHAM: return Art.GRAHAM;
case MATCH: return Art.MATCH;
case BUST: return Art.BUST;
case STAGE: return Art.STAGE;
case VOID: return Art.VOID;
case SKULL_AND_ROSES: return Art.SKULL_AND_ROSES;
case FIGHTERS: return Art.FIGHTERS;
case POINTER: return Art.POINTER;
case PIGSCENE: return Art.PIGSCENE;
case BURNINGSKULL: return Art.BURNINGSKULL;
case SKELETON: return Art.SKELETON;
case DONKEYKONG: return Art.DONKEYKONG;
}
return null;
}
public static EnumArt BukkitToNotch(Art art) {
switch (art) {
case KEBAB: return EnumArt.KEBAB;
case AZTEC: return EnumArt.AZTEC;
case ALBAN: return EnumArt.ALBAN;
case AZTEC2: return EnumArt.AZTEC2;
case BOMB: return EnumArt.BOMB;
case PLANT: return EnumArt.PLANT;
case WASTELAND: return EnumArt.WASTELAND;
case POOL: return EnumArt.POOL;
case COURBET: return EnumArt.COURBET;
case SEA: return EnumArt.SEA;
case SUNSET: return EnumArt.SUNSET;
case CREEBET: return EnumArt.CREEBET;
case WANDERER: return EnumArt.WANDERER;
case GRAHAM: return EnumArt.GRAHAM;
case MATCH: return EnumArt.MATCH;
case BUST: return EnumArt.BUST;
case STAGE: return EnumArt.STAGE;
case VOID: return EnumArt.VOID;
case SKULL_AND_ROSES: return EnumArt.SKULL_AND_ROSES;
case FIGHTERS: return EnumArt.FIGHTERS;
case POINTER: return EnumArt.POINTER;
case PIGSCENE: return EnumArt.PIGSCENE;
case BURNINGSKULL: return EnumArt.BURNINGSKULL;
case SKELETON: return EnumArt.SKELETON;
case DONKEYKONG: return EnumArt.DONKEYKONG;
}
return null;
}
{
assert (EnumArt.values().length == 25);
assert (Art.values().length == 25);
}
}

View File

@ -9,6 +9,7 @@ import net.minecraft.server.WorldServer;
import org.bukkit.Art;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.craftbukkit.CraftArt;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.entity.Painting;
@ -31,8 +32,7 @@ public class CraftPainting extends CraftEntity implements Painting {
public Art getArt() {
EnumArt art = getHandle().e;
// Since both EnumArt and Art have exactly the same enum constants, this works
return Art.getByName(art.toString());
return CraftArt.NotchToBukkit(art);
}
public boolean setArt(Art art) {
@ -42,7 +42,7 @@ public class CraftPainting extends CraftEntity implements Painting {
public boolean setArt(Art art, boolean force) {
EntityPainting painting = getHandle();
EnumArt oldArt = painting.e;
EnumArt newArt = EnumArt.valueOf(art.toString());
EnumArt newArt = CraftArt.BukkitToNotch(art);
painting.e = newArt;
painting.b(painting.a);
if(!force && !painting.i()) {