152 lines
4.3 KiB
Java
152 lines
4.3 KiB
Java
package org.bukkit.craftbukkit.entity;
|
|
|
|
import com.google.common.base.Preconditions;
|
|
import net.minecraft.world.entity.Display;
|
|
import org.bukkit.Color;
|
|
import org.bukkit.craftbukkit.CraftServer;
|
|
import org.bukkit.craftbukkit.util.CraftChatMessage;
|
|
import org.bukkit.entity.EntityType;
|
|
import org.bukkit.entity.TextDisplay;
|
|
|
|
public class CraftTextDisplay extends CraftDisplay implements TextDisplay {
|
|
|
|
public CraftTextDisplay(CraftServer server, net.minecraft.world.entity.Display.TextDisplay entity) {
|
|
super(server, entity);
|
|
}
|
|
|
|
@Override
|
|
public net.minecraft.world.entity.Display.TextDisplay getHandle() {
|
|
return (net.minecraft.world.entity.Display.TextDisplay) super.getHandle();
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return "CraftTextDisplay";
|
|
}
|
|
|
|
@Override
|
|
public EntityType getType() {
|
|
return EntityType.TEXT_DISPLAY;
|
|
}
|
|
|
|
@Override
|
|
public String getText() {
|
|
return CraftChatMessage.fromComponent(getHandle().getText());
|
|
}
|
|
|
|
@Override
|
|
public void setText(String text) {
|
|
getHandle().setText(CraftChatMessage.fromString(text, true)[0]);
|
|
}
|
|
|
|
@Override
|
|
public int getLineWidth() {
|
|
return getHandle().getLineWidth();
|
|
}
|
|
|
|
@Override
|
|
public void setLineWidth(int width) {
|
|
getHandle().getEntityData().set(Display.TextDisplay.DATA_LINE_WIDTH_ID, width);
|
|
}
|
|
|
|
@Override
|
|
public Color getBackgroundColor() {
|
|
int color = getHandle().getBackgroundColor();
|
|
|
|
return (color == -1) ? null : Color.fromARGB(color);
|
|
}
|
|
|
|
@Override
|
|
public void setBackgroundColor(Color color) {
|
|
if (color == null) {
|
|
getHandle().getEntityData().set(Display.TextDisplay.DATA_BACKGROUND_COLOR_ID, -1);
|
|
} else {
|
|
getHandle().getEntityData().set(Display.TextDisplay.DATA_BACKGROUND_COLOR_ID, color.asARGB());
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public byte getTextOpacity() {
|
|
return getHandle().getTextOpacity();
|
|
}
|
|
|
|
@Override
|
|
public void setTextOpacity(byte opacity) {
|
|
getHandle().setTextOpacity(opacity);
|
|
}
|
|
|
|
@Override
|
|
public boolean isShadowed() {
|
|
return getFlag(Display.TextDisplay.FLAG_SHADOW);
|
|
}
|
|
|
|
@Override
|
|
public void setShadowed(boolean shadow) {
|
|
setFlag(Display.TextDisplay.FLAG_SHADOW, shadow);
|
|
}
|
|
|
|
@Override
|
|
public boolean isSeeThrough() {
|
|
return getFlag(Display.TextDisplay.FLAG_SEE_THROUGH);
|
|
}
|
|
|
|
@Override
|
|
public void setSeeThrough(boolean seeThrough) {
|
|
setFlag(Display.TextDisplay.FLAG_SEE_THROUGH, seeThrough);
|
|
}
|
|
|
|
@Override
|
|
public boolean isDefaultBackground() {
|
|
return getFlag(Display.TextDisplay.FLAG_USE_DEFAULT_BACKGROUND);
|
|
}
|
|
|
|
@Override
|
|
public void setDefaultBackground(boolean defaultBackground) {
|
|
setFlag(Display.TextDisplay.FLAG_USE_DEFAULT_BACKGROUND, defaultBackground);
|
|
}
|
|
|
|
@Override
|
|
public TextAlignment getAlignment() {
|
|
Display.TextDisplay.Align nms = Display.TextDisplay.getAlign(getHandle().getFlags());
|
|
return TextAlignment.valueOf(nms.name());
|
|
}
|
|
|
|
@Override
|
|
public void setAlignment(TextAlignment alignment) {
|
|
Preconditions.checkArgument(alignment != null, "Alignment cannot be null");
|
|
|
|
switch (alignment) {
|
|
case LEFT:
|
|
setFlag(Display.TextDisplay.FLAG_ALIGN_LEFT, true);
|
|
setFlag(Display.TextDisplay.FLAG_ALIGN_RIGHT, false);
|
|
break;
|
|
case RIGHT:
|
|
setFlag(Display.TextDisplay.FLAG_ALIGN_LEFT, false);
|
|
setFlag(Display.TextDisplay.FLAG_ALIGN_RIGHT, true);
|
|
break;
|
|
case CENTER:
|
|
setFlag(Display.TextDisplay.FLAG_ALIGN_LEFT, false);
|
|
setFlag(Display.TextDisplay.FLAG_ALIGN_RIGHT, false);
|
|
break;
|
|
default:
|
|
throw new IllegalArgumentException("Unknown alignment " + alignment);
|
|
}
|
|
}
|
|
|
|
private boolean getFlag(int flag) {
|
|
return (getHandle().getFlags() & flag) != 0;
|
|
}
|
|
|
|
private void setFlag(int flag, boolean set) {
|
|
byte flagBits = getHandle().getFlags();
|
|
|
|
if (set) {
|
|
flagBits |= flag;
|
|
} else {
|
|
flagBits &= ~flag;
|
|
}
|
|
|
|
getHandle().setFlags(flagBits);
|
|
}
|
|
}
|