furniture/src/de/Ste3et_C0st/Furniture/Objects/garden/graveStone.java

163 lines
4.6 KiB
Java
Raw Normal View History

2015-07-08 18:15:57 +02:00
package de.Ste3et_C0st.Furniture.Objects.garden;
import java.util.Arrays;
2015-07-08 18:15:57 +02:00
import org.bukkit.ChatColor;
2017-03-09 19:25:40 +01:00
import org.bukkit.Bukkit;
2015-07-08 18:15:57 +02:00
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
2016-06-21 19:17:24 +02:00
import org.bukkit.block.BlockState;
2015-07-08 18:15:57 +02:00
import org.bukkit.block.Sign;
2017-10-28 18:54:21 +02:00
import org.bukkit.entity.Player;
2015-07-08 18:15:57 +02:00
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.BookMeta;
2016-06-21 19:17:24 +02:00
import de.Ste3et_C0st.FurnitureLib.Utilitis.LocationUtil;
2017-03-09 19:25:40 +01:00
import de.Ste3et_C0st.FurnitureLib.main.FurnitureHelper;
2015-07-08 18:15:57 +02:00
import de.Ste3et_C0st.FurnitureLib.main.ObjectID;
import de.Ste3et_C0st.FurnitureLib.main.Type.SQLAction;
2015-07-08 18:15:57 +02:00
public class graveStone extends FurnitureHelper{
2017-03-09 19:25:40 +01:00
private Location signLoc;
private Block sign;
private String[] lines = new String[4];
public graveStone(ObjectID id) {
2015-11-18 18:04:31 +01:00
super(id);
2015-07-08 18:15:57 +02:00
setBlock();
}
2016-06-21 19:17:24 +02:00
@SuppressWarnings("deprecation")
2015-07-08 18:15:57 +02:00
private void setBlock(){
Location location = getLocation().clone();
if(getBlockFace().equals(BlockFace.WEST)){location = getLutil().getRelativ(location, getBlockFace(), .0, -1.02);}
if(getBlockFace().equals(BlockFace.SOUTH)){location = getLutil().getRelativ(location, getBlockFace(), -1.0, -1.02);}
if(getBlockFace().equals(BlockFace.EAST)){location = getLutil().getRelativ(location, getBlockFace(), -1.0, .0);}
Location center = getLutil().getRelativ(location, getBlockFace(), .18D, .955D);
center.setYaw(getLutil().FaceToYaw(getBlockFace().getOppositeFace()) + 90);
Location kreutz2 = getLutil().getRelativ(center, getBlockFace(), -.23, -1.27);
Location sign = getLutil().getRelativ(kreutz2.getBlock().getLocation(), getBlockFace(), 0D, 1D);
2015-07-08 18:15:57 +02:00
this.signLoc = sign;
2015-07-15 20:52:52 +02:00
if(!sign.getBlock().getType().equals(Material.OAK_SIGN)){
sign.getBlock().setType(Material.OAK_SIGN);
2016-06-21 19:17:24 +02:00
this.sign = sign.getBlock();
BlockState state = this.sign.getState();
LocationUtil util = getLutil();
state.setRawData(util.getFacebyte(util.yawToFace(getYaw() + 90)));
state.update();
2015-07-15 20:52:52 +02:00
}else{
this.sign = sign.getBlock();
}
2015-07-08 18:15:57 +02:00
this.lines = getText();
getObjID().addBlock(Arrays.asList(this.sign));
2015-07-08 18:15:57 +02:00
}
@Override
public void onBreak(Player player) {
if(getObjID() == null) return;
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)) return;
if(player == null) return;
if(canBuild(player)) {
this.destroy(player);
if(sign!=null){
sign.setType(Material.AIR);
}
2017-03-09 19:25:40 +01:00
}
2015-07-08 18:15:57 +02:00
}
2017-10-28 18:54:21 +02:00
@Override
public void onClick(Player player){
if(getObjID() == null) return;
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)) return;
if(player == null) return;
if(canBuild(player)) {
ItemStack is = player.getInventory().getItemInMainHand();
if (is == null) return;
if (!is.getType().equals(Material.WRITTEN_BOOK)) return;
readFromBook(is);
}
2017-10-28 18:54:21 +02:00
}
2015-07-08 18:15:57 +02:00
public void resetSign(){
Bukkit.getScheduler().scheduleSyncDelayedTask(getPlugin(), new Runnable() {
2015-07-08 18:15:57 +02:00
@Override
public void run() {
sign = getLutil().setSign(getBlockFace(), signLoc);
2015-07-08 18:15:57 +02:00
placetext();
}
});
}
2017-03-09 19:25:40 +01:00
public Location getSignLocation(){return this.signLoc;}
2015-07-15 20:52:52 +02:00
public void removeSign(){
if(sign!=null){
sign.setType(Material.AIR);
sign = null;
getManager().remove(getObjID());
delete();
2015-07-15 20:52:52 +02:00
}
}
2015-07-08 18:15:57 +02:00
public void readFromBook(ItemStack is){
BookMeta bm = (BookMeta) is.getItemMeta();
if(bm == null){return;}
String side = bm.getPage(1);
if(side==null){return;}
String lines[] = side.split("\\r?\\n");
Integer line = 0;
for(String s : lines){
if(s!=null && line<=3){
Integer i = 15;
if(s.length()>=15){i=15;}else{i=s.length();}
String a = s.substring(0, i);
if(a!=null){
a = ChatColor.translateAlternateColorCodes('&', a);
setText(line, a);
}
line++;
}
}
if(line!=3){
for(int i = line; i<=3; i++){
setText(i, "");
}
}
return;
}
public void placetext(){
if ((this.sign.getState() instanceof Sign) && lines != null){
Sign sign = (Sign) this.sign.getState();
Integer i = 0;
for(String s : lines){
if(i>3){break;}
sign.setLine(i, s);
i++;
}
sign.update(true, false);
2015-07-08 18:15:57 +02:00
}
}
public String[] getText(){
if(sign==null || !sign.getType().equals(Material.OAK_SIGN)){return null;}
2015-07-08 18:15:57 +02:00
Sign sign = (Sign) this.sign.getState();
return sign.getLines();
}
public void setText(Integer line, String text){
if(line==null || text == null){return;}
if(sign==null || !sign.getType().equals(Material.OAK_SIGN)){return;}
2015-07-08 18:15:57 +02:00
Sign sign = (Sign) this.sign.getState();
sign.setLine(line, text);
sign.update(true, false);
lines[line] = text;
}
}