mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-27 21:19:00 +01:00
SPIGOT-1292: BlockState based FlowerPot API.
This commit is contained in:
parent
cee5bbf00c
commit
a28041daa7
@ -296,6 +296,8 @@ public class CraftBlock implements Block {
|
||||
case WALL_BANNER:
|
||||
case STANDING_BANNER:
|
||||
return new CraftBanner(this);
|
||||
case FLOWER_POT:
|
||||
return new CraftFlowerPot(this);
|
||||
default:
|
||||
return new CraftBlockState(this);
|
||||
}
|
||||
|
@ -0,0 +1,40 @@
|
||||
package org.bukkit.craftbukkit.block;
|
||||
|
||||
import net.minecraft.server.TileEntityFlowerPot;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.FlowerPot;
|
||||
import org.bukkit.craftbukkit.CraftWorld;
|
||||
import org.bukkit.craftbukkit.util.CraftMagicNumbers;
|
||||
import org.bukkit.material.MaterialData;
|
||||
|
||||
public class CraftFlowerPot extends CraftBlockState implements FlowerPot {
|
||||
|
||||
private final TileEntityFlowerPot pot;
|
||||
|
||||
public CraftFlowerPot(Block block) {
|
||||
super(block);
|
||||
|
||||
pot = (TileEntityFlowerPot) ((CraftWorld) block.getWorld()).getTileEntityAt(getX(), getY(), getZ());
|
||||
}
|
||||
|
||||
public CraftFlowerPot(Material material, TileEntityFlowerPot pot) {
|
||||
super(material);
|
||||
|
||||
this.pot = pot;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MaterialData getContents() {
|
||||
return (pot.d() == null) ? null : CraftMagicNumbers.getMaterial(pot.d()).getNewData((byte) pot.e()); // PAIL: rename
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setContents(MaterialData item) {
|
||||
if (item == null) {
|
||||
pot.a(null, 0);
|
||||
} else {
|
||||
pot.a(CraftMagicNumbers.getItem(item.getItemType()), item.getData()); // PAIL: rename
|
||||
}
|
||||
}
|
||||
}
|
@ -16,6 +16,7 @@ import net.minecraft.server.TileEntityCommand;
|
||||
import net.minecraft.server.TileEntityDispenser;
|
||||
import net.minecraft.server.TileEntityDropper;
|
||||
import net.minecraft.server.TileEntityEndGateway;
|
||||
import net.minecraft.server.TileEntityFlowerPot;
|
||||
import net.minecraft.server.TileEntityFurnace;
|
||||
import net.minecraft.server.TileEntityHopper;
|
||||
import net.minecraft.server.TileEntityMobSpawner;
|
||||
@ -36,6 +37,7 @@ import org.bukkit.craftbukkit.block.CraftCreatureSpawner;
|
||||
import org.bukkit.craftbukkit.block.CraftDispenser;
|
||||
import org.bukkit.craftbukkit.block.CraftDropper;
|
||||
import org.bukkit.craftbukkit.block.CraftEndGateway;
|
||||
import org.bukkit.craftbukkit.block.CraftFlowerPot;
|
||||
import org.bukkit.craftbukkit.block.CraftFurnace;
|
||||
import org.bukkit.craftbukkit.block.CraftHopper;
|
||||
import org.bukkit.craftbukkit.block.CraftJukebox;
|
||||
@ -279,6 +281,11 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta
|
||||
te = new TileEntityBanner();
|
||||
}
|
||||
return new CraftBanner(material, (TileEntityBanner) te);
|
||||
case FLOWER_POT_ITEM:
|
||||
if (te == null) {
|
||||
te = new TileEntityFlowerPot();
|
||||
}
|
||||
return new CraftFlowerPot(material, (TileEntityFlowerPot) te);
|
||||
default:
|
||||
throw new IllegalStateException("Missing blockState for " + material);
|
||||
}
|
||||
@ -346,6 +353,9 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta
|
||||
case STANDING_BANNER:
|
||||
valid = te instanceof TileEntityBanner;
|
||||
break;
|
||||
case FLOWER_POT_ITEM:
|
||||
valid = te instanceof TileEntityFlowerPot;
|
||||
break;
|
||||
default:
|
||||
valid = false;
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user