mirror of https://github.com/Ste3et/furniture.git
515 lines
18 KiB
Java
515 lines
18 KiB
Java
package de.Ste3et_C0st.Furniture.Objects.christmas;
|
|
|
|
import java.io.ByteArrayInputStream;
|
|
import java.io.ByteArrayOutputStream;
|
|
import java.io.IOException;
|
|
import java.text.DateFormat;
|
|
import java.text.ParseException;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.ArrayList;
|
|
import java.util.Date;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Random;
|
|
import java.util.UUID;
|
|
|
|
import net.md_5.bungee.api.ChatColor;
|
|
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.Location;
|
|
import org.bukkit.Material;
|
|
import org.bukkit.OfflinePlayer;
|
|
import org.bukkit.command.ConsoleCommandSender;
|
|
import org.bukkit.configuration.file.FileConfiguration;
|
|
import org.bukkit.entity.EntityType;
|
|
import org.bukkit.entity.Firework;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.event.EventHandler;
|
|
import org.bukkit.event.Listener;
|
|
import org.bukkit.event.inventory.InventoryCloseEvent;
|
|
import org.bukkit.event.player.PlayerJoinEvent;
|
|
import org.bukkit.event.player.PlayerTeleportEvent;
|
|
import org.bukkit.inventory.Inventory;
|
|
import org.bukkit.inventory.ItemStack;
|
|
import org.bukkit.inventory.meta.FireworkMeta;
|
|
import org.bukkit.util.EulerAngle;
|
|
import org.bukkit.util.io.BukkitObjectInputStream;
|
|
import org.bukkit.util.io.BukkitObjectOutputStream;
|
|
import org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder;
|
|
|
|
import de.Ste3et_C0st.Furniture.Objects.garden.config;
|
|
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureBreakEvent;
|
|
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureClickEvent;
|
|
import de.Ste3et_C0st.FurnitureLib.main.Furniture;
|
|
import de.Ste3et_C0st.FurnitureLib.main.ObjectID;
|
|
import de.Ste3et_C0st.FurnitureLib.main.Type.SQLAction;
|
|
import de.Ste3et_C0st.FurnitureLib.main.entity.fArmorStand;
|
|
import de.Ste3et_C0st.FurnitureLib.main.entity.fEntity;
|
|
|
|
public class AdventCalender extends Furniture implements Listener {
|
|
double sub = .9;
|
|
|
|
HashMap<Integer, ItemStack[]> isList = new HashMap<Integer, ItemStack[]>();
|
|
HashMap<UUID, Integer> uuidList = new HashMap<UUID, Integer>();
|
|
Player p;
|
|
int i;
|
|
int currentDay = 0;
|
|
Inventory inv;
|
|
|
|
String ac_1 = "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzFiYzJiY2ZiMmJkMzc1OWU2YjFlODZmYzdhNzk1ODVlMTEyN2RkMzU3ZmMyMDI4OTNmOWRlMjQxYmM5ZTUzMCJ9fX0=";
|
|
String ac_2 = "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNGNkOWVlZWU4ODM0Njg4ODFkODM4NDhhNDZiZjMwMTI0ODVjMjNmNzU3NTNiOGZiZTg0ODczNDE0MTk4NDcifX19";
|
|
String ac_3 = "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWQ0ZWFlMTM5MzM4NjBhNmRmNWU4ZTk1NTY5M2I5NWE4YzNiMTVjMzZiOGI1ODc1MzJhYzA5OTZiYzM3ZTUifX19";
|
|
String ac_4 = "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDJlNzhmYjIyNDI0MjMyZGMyN2I4MWZiY2I0N2ZkMjRjMWFjZjc2MDk4NzUzZjJkOWMyODU5ODI4N2RiNSJ9fX0=";
|
|
String ac_5 = "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNmQ1N2UzYmM4OGE2NTczMGUzMWExNGUzZjQxZTAzOGE1ZWNmMDg5MWE2YzI0MzY0M2I4ZTU0NzZhZTIifX19";
|
|
String ac_6 = "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzM0YjM2ZGU3ZDY3OWI4YmJjNzI1NDk5YWRhZWYyNGRjNTE4ZjVhZTIzZTcxNjk4MWUxZGNjNmIyNzIwYWIifX19";
|
|
String ac_7 = "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNmRiNmViMjVkMWZhYWJlMzBjZjQ0NGRjNjMzYjU4MzI0NzVlMzgwOTZiN2UyNDAyYTNlYzQ3NmRkN2I5In19fQ==";
|
|
String ac_8 = "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTkxOTQ5NzNhM2YxN2JkYTk5NzhlZDYyNzMzODM5OTcyMjI3NzRiNDU0Mzg2YzgzMTljMDRmMWY0Zjc0YzJiNSJ9fX0=";
|
|
String ac_9 = "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTY3Y2FmNzU5MWIzOGUxMjVhODAxN2Q1OGNmYzY0MzNiZmFmODRjZDQ5OWQ3OTRmNDFkMTBiZmYyZTViODQwIn19fQ==";
|
|
String ac_0 = "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMGViZTdlNTIxNTE2OWE2OTlhY2M2Y2VmYTdiNzNmZGIxMDhkYjg3YmI2ZGFlMjg0OWZiZTI0NzE0YjI3In19fQ==";
|
|
String ac_NULL = "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTBlOWQyYmViODRiMzJlM2YxNWUzODBjYzJjNTUxMDY0MjkxMWE1MTIxMDVmYTJlYzY3OWJjNTQwZmQ4MTg0In19fQ==";
|
|
|
|
public AdventCalender(ObjectID id){
|
|
super(id);
|
|
if(isFinish()){
|
|
Bukkit.getPluginManager().registerEvents(this, getPlugin());
|
|
load();
|
|
check();
|
|
return;
|
|
}
|
|
spawn(id.getStartLocation());
|
|
}
|
|
|
|
@EventHandler
|
|
public void onFurnitureBreak(FurnitureBreakEvent e) {
|
|
if(e.getID() == null || getObjID() == null) return;
|
|
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
|
|
if(!e.getID().equals(getObjID())){return;}
|
|
if(!canBuild(e.getPlayer())){return;}
|
|
e.remove(true,false);
|
|
delete();
|
|
}
|
|
|
|
@EventHandler
|
|
public void onFurnitureClick(FurnitureClickEvent e) {
|
|
if(e.getID() == null || getObjID() == null) return;
|
|
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
|
|
if(!e.getID().equals(getObjID())){return;}
|
|
ItemStack is = e.getPlayer().getInventory().getItemInMainHand();
|
|
if(is==null){open(e.getPlayer()); return;}
|
|
if(is.getType()==null){open(e.getPlayer()); return;}
|
|
if(is.getType().equals(Material.ARROW)){
|
|
if(p!=null){open(e.getPlayer());return;}
|
|
if(!getObjID().getUUID().equals(e.getPlayer().getUniqueId())){open(e.getPlayer());return;}
|
|
if(!canBuild(e.getPlayer())){return;}
|
|
i = is.getAmount();
|
|
if(i>31 || i<1) return;
|
|
this.p = e.getPlayer();
|
|
if(isList.containsKey(i)){
|
|
openInventory(isList.get(i));
|
|
}else{
|
|
openInventory(null);
|
|
}
|
|
}else{
|
|
open(e.getPlayer());
|
|
}
|
|
}
|
|
|
|
private void open(Player p){
|
|
if(isList.containsKey(getDay())){
|
|
if(uuidList.containsKey(p.getUniqueId())){
|
|
if(uuidList.get(p.getUniqueId()) == getDay()){
|
|
return;
|
|
}
|
|
}
|
|
ItemStack[] stack = isList.get(getDay());
|
|
for(ItemStack iS : stack){
|
|
if(iS!=null&&iS.getType()!=null){
|
|
if(iS.getType().equals(Material.FIREWORK_ROCKET)){
|
|
Firework fw = (Firework) getWorld().spawnEntity(getCenter(), EntityType.FIREWORK);
|
|
FireworkMeta meta = (FireworkMeta) iS.getItemMeta();
|
|
fw.setFireworkMeta(meta);
|
|
}else if(iS.getType().equals(Material.NAME_TAG)){
|
|
if(iS.getItemMeta()!=null){
|
|
if(iS.getItemMeta().hasDisplayName()){
|
|
String name = iS.getItemMeta().getDisplayName();
|
|
if(name.startsWith("@PLAYER ")){
|
|
name = name.replace("%player%", p.getName());
|
|
name = name.replace("@PLAYER ", "");
|
|
name = ChatColor.translateAlternateColorCodes('&', name);
|
|
p.sendMessage(name);
|
|
}else if(name.startsWith("@BROADCAST ")){
|
|
name = name.replace("%player%", p.getName());
|
|
name = name.replace("@BROADCAST ", "");
|
|
name = ChatColor.translateAlternateColorCodes('&', name);
|
|
getLib().getServer().broadcastMessage(name);
|
|
}
|
|
}
|
|
}
|
|
}else{
|
|
if(iS.getItemMeta()!=null){
|
|
if(iS.getItemMeta().getDisplayName()!=null){
|
|
if(iS.getItemMeta().getDisplayName().startsWith("@CONSOLE ")){
|
|
if(!isOP()) continue;
|
|
String s = iS.getItemMeta().getDisplayName();
|
|
s = s.replace("@CONSOLE ", "");
|
|
s = s.replace("%player%", p.getName());
|
|
ConsoleCommandSender sender = Bukkit.getConsoleSender();
|
|
Bukkit.dispatchCommand(sender, s);
|
|
continue;
|
|
}else if(iS.getItemMeta().getDisplayName().startsWith("@PLAYER ")){
|
|
if(!isOP()) continue;
|
|
String s = iS.getItemMeta().getDisplayName();
|
|
s = s.replace("@PLAYER ", "");
|
|
s = s.replace("%player%", p.getName());
|
|
p.chat("/"+s);
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
p.getInventory().addItem(iS);
|
|
}
|
|
}
|
|
}
|
|
savePlayer(p.getUniqueId());
|
|
uuidList.put(p.getUniqueId(), getDay());
|
|
}
|
|
}
|
|
|
|
public boolean isOP(){
|
|
if(getObjID().getUUID()!=null){
|
|
UUID uuid = getObjID().getUUID();
|
|
OfflinePlayer player = Bukkit.getOfflinePlayer(uuid);
|
|
if(player == null) return false;
|
|
return player.isOp();
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static String itemStackArrayToBase64(ItemStack[] items){
|
|
try {
|
|
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
|
BukkitObjectOutputStream dataOutput = new BukkitObjectOutputStream(outputStream);
|
|
dataOutput.writeInt(items.length);
|
|
for (int i = 0; i < items.length; i++) {
|
|
ItemStack is = items[i];
|
|
dataOutput.writeObject(is);
|
|
}
|
|
dataOutput.close();
|
|
return Base64Coder.encodeLines(outputStream.toByteArray());
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
return "";
|
|
}
|
|
|
|
public static ItemStack[] itemStackArrayFromBase64(String data) throws IOException {
|
|
try {
|
|
ByteArrayInputStream inputStream = new ByteArrayInputStream(Base64Coder.decodeLines(data));
|
|
BukkitObjectInputStream dataInput = new BukkitObjectInputStream(inputStream);
|
|
ItemStack[] items = new ItemStack[dataInput.readInt()];
|
|
for (int i = 0; i < items.length; i++) {
|
|
items[i] = (ItemStack) dataInput.readObject();
|
|
}
|
|
dataInput.close();
|
|
return items;
|
|
} catch (ClassNotFoundException e) {
|
|
throw new IOException("Unable to decode class type.", e);
|
|
}
|
|
}
|
|
|
|
public void load(){
|
|
config conf = new config();
|
|
FileConfiguration file = conf.getConfig(getObjID().getSerial(), "plugin/AdventCalender/Data/");
|
|
if(file == null) return;
|
|
for(int i = 1; i<32;i++){
|
|
if(file.isSet(i+"")){
|
|
String s = file.getString(i+"");
|
|
try {
|
|
ItemStack[] is = itemStackArrayFromBase64(s);
|
|
isList.put(i, is);
|
|
} catch (IOException e) {e.printStackTrace();}
|
|
}
|
|
}
|
|
|
|
conf = new config();
|
|
file = conf.getConfig(getObjID().getSerial() + "_Players", "plugin/AdventCalender/Data/");
|
|
if(file == null) return;
|
|
if(!file.isSet("Players")) return;
|
|
for(String s : file.getConfigurationSection("Players").getKeys(false)){
|
|
UUID uuid = UUID.fromString(s);
|
|
int i = file.getInt("Players." + s);
|
|
uuidList.put(uuid, i);
|
|
}
|
|
}
|
|
|
|
public void save(int i){
|
|
config conf = new config();
|
|
FileConfiguration file = conf.getConfig(getObjID().getSerial(), "plugin/AdventCalender/Data/");
|
|
file.set(i + "", getSerialze(i));
|
|
conf.saveConfig(getObjID().getSerial(), file, "plugin/AdventCalender/Data/");
|
|
}
|
|
|
|
public void savePlayer(UUID uuid){
|
|
if(uuid != null){
|
|
config conf = new config();
|
|
FileConfiguration file = conf.getConfig(getObjID().getSerial() + "_Players", "plugin/AdventCalender/Data/");
|
|
file.set("Players." + uuid.toString(), i);
|
|
conf.saveConfig(getObjID().getSerial() + "_Players", file, "plugin/AdventCalender/Data/");
|
|
}
|
|
}
|
|
|
|
private String getSerialze(int i) {
|
|
if(!isList.containsKey(i)){return "";}
|
|
return itemStackArrayToBase64(isList.get(i));
|
|
}
|
|
|
|
@EventHandler
|
|
public void onJoin(PlayerJoinEvent e){
|
|
check();
|
|
}
|
|
|
|
@EventHandler
|
|
public void onTeleport(PlayerTeleportEvent e){
|
|
check();
|
|
}
|
|
|
|
@EventHandler
|
|
public void onClose(InventoryCloseEvent e){
|
|
if(p==null) return;
|
|
if(e.getInventory()==null) return;
|
|
if(!e.getInventory().equals(inv)) return;
|
|
if(!e.getPlayer().equals(p)) return;
|
|
isList.put(i, e.getInventory().getContents());
|
|
save(i);
|
|
p = null;
|
|
inv = null;
|
|
}
|
|
|
|
private void openInventory(ItemStack[] is){
|
|
inv = Bukkit.createInventory(null, 54, "§8Christmas Reward [§c" + i + "§8]");
|
|
if(is!=null) inv.setContents(is);
|
|
p.openInventory(inv);
|
|
}
|
|
|
|
@Override
|
|
public void spawn(Location arg0) {
|
|
List<fArmorStand> asList = new ArrayList<fArmorStand>();
|
|
int j = 15;
|
|
double l = 0;
|
|
double o = getDegress(j);
|
|
for(int i = 0; i<=j;i++){
|
|
Location loc = getCenter();
|
|
loc.setYaw((float) l);
|
|
fArmorStand stand = spawnArmorStand(loc.subtract(0, 1.2+sub, 0));
|
|
stand.setRightArmPose(getLutil().degresstoRad(new EulerAngle(210, 190, 305)));
|
|
stand.setHeadPose(getLutil().degresstoRad(new EulerAngle(60, 0, 0)));
|
|
stand.setHelmet(new ItemStack(Material.GOLD_BLOCK));
|
|
stand.setItemInMainHand(new ItemStack(Material.OAK_LEAVES));
|
|
asList.add(stand);
|
|
l+=o;
|
|
}
|
|
|
|
l = 0;
|
|
for(int i = 0; i<=j;i++){
|
|
Location loc = getCenter();
|
|
loc.setYaw((float) l);
|
|
fArmorStand stand = spawnArmorStand(loc.subtract(0, .3+sub, 0));
|
|
stand.setRightArmPose(getLutil().degresstoRad(new EulerAngle(210, 190, 305)));
|
|
stand.setHeadPose(getLutil().degresstoRad(new EulerAngle(60, 0, 0)));
|
|
stand.setHelmet(new ItemStack(Material.OAK_LEAVES));
|
|
stand.setItemInMainHand(new ItemStack(Material.OAK_LEAVES));
|
|
stand.setSmall(true);
|
|
asList.add(stand);
|
|
l+=o;
|
|
}
|
|
|
|
Location loc = getCenter();
|
|
loc.setYaw(getYaw()+180);
|
|
fArmorStand stand = spawnArmorStand(loc.add(0,-1.5,0));
|
|
stand.setHelmet(new ItemStack(Material.CHEST));
|
|
asList.add(stand);
|
|
|
|
ItemStack[] is = getStack();
|
|
|
|
loc = getRelative(getCenter(), getBlockFace(), 0, .25);
|
|
loc.setYaw(getYaw()+180);
|
|
stand = spawnArmorStand(loc);
|
|
stand.setHelmet(is[0]);
|
|
stand.setName("#Advent1#");
|
|
stand.setSmall(true);
|
|
asList.add(stand);
|
|
|
|
loc = getRelative(getCenter(), getBlockFace(), 0, -.25);
|
|
loc.setYaw(getYaw()+180);
|
|
stand = spawnArmorStand(loc);
|
|
stand.setHelmet(is[1]);
|
|
stand.setName("#Advent2#");
|
|
stand.setSmall(true);
|
|
asList.add(stand);
|
|
|
|
for(fArmorStand pack : asList){
|
|
pack.setInvisible(true);
|
|
pack.setBasePlate(false);
|
|
}
|
|
|
|
send();
|
|
Bukkit.getPluginManager().registerEvents(this, getPlugin());
|
|
}
|
|
|
|
@SuppressWarnings("deprecation")
|
|
public int getDay(){
|
|
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
|
|
Date today = new Date();
|
|
try {
|
|
Date todayWithZeroTime =formatter.parse(formatter.format(today));
|
|
int i = todayWithZeroTime.getDate();
|
|
return i;
|
|
} catch (ParseException e) {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
@SuppressWarnings("deprecation")
|
|
public int getMonth(){
|
|
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
|
|
Date today = new Date();
|
|
try {
|
|
Date todayWithZeroTime =formatter.parse(formatter.format(today));
|
|
int i = todayWithZeroTime.getMonth();
|
|
return i;
|
|
} catch (ParseException e) {
|
|
return 0;
|
|
}
|
|
|
|
}
|
|
|
|
public void check(){
|
|
if(currentDay==getDay()){return;}
|
|
if(getfAsList()==null) return;
|
|
ItemStack[] is = getStack();
|
|
fEntity stand1= null;
|
|
fEntity stand2 = null;
|
|
for(fEntity stand : getfAsList()){
|
|
if(stand.getName().equalsIgnoreCase("#Advent1#")){
|
|
stand1 = stand;
|
|
}else if(stand.getName().equalsIgnoreCase("#Advent2#")){
|
|
stand2 = stand;
|
|
}
|
|
}
|
|
if(stand1!=null){stand1.setHelmet(is[0]);}
|
|
if(stand2!=null){stand2.setHelmet(is[1]);}
|
|
currentDay=getDay();
|
|
update();
|
|
}
|
|
|
|
public ItemStack[] getStack(){
|
|
ItemStack[] stack = new ItemStack[2];
|
|
stack[0] = getSkull(ac_NULL);
|
|
stack[1] = getSkull(ac_NULL);
|
|
int i = getDay();
|
|
int y = getMonth();
|
|
if(y==11){
|
|
switch (i) {
|
|
case 1:
|
|
stack[0] = getSkull(ac_0);
|
|
stack[1] = getSkull(ac_1);break;
|
|
case 2:
|
|
stack[0] = getSkull(ac_0);
|
|
stack[1] = getSkull(ac_2);break;
|
|
case 3:
|
|
stack[0] = getSkull(ac_0);
|
|
stack[1] = getSkull(ac_3);break;
|
|
case 4:
|
|
stack[0] = getSkull(ac_0);
|
|
stack[1] = getSkull(ac_4);break;
|
|
case 5:
|
|
stack[0] = getSkull(ac_0);
|
|
stack[1] = getSkull(ac_5);break;
|
|
case 6:
|
|
stack[0] = getSkull(ac_0);
|
|
stack[1] = getSkull(ac_6);break;
|
|
case 7:
|
|
stack[0] = getSkull(ac_0);
|
|
stack[1] = getSkull(ac_7);break;
|
|
case 8:
|
|
stack[0] = getSkull(ac_0);
|
|
stack[1] = getSkull(ac_8);break;
|
|
case 9:
|
|
stack[0] = getSkull(ac_0);
|
|
stack[1] = getSkull(ac_9);break;
|
|
case 10:
|
|
stack[0] = getSkull(ac_1);
|
|
stack[1] = getSkull(ac_0);break;
|
|
case 11:
|
|
stack[0] = getSkull(ac_1);
|
|
stack[1] = getSkull(ac_1);break;
|
|
case 12:
|
|
stack[0] = getSkull(ac_1);
|
|
stack[1] = getSkull(ac_2);break;
|
|
case 13:
|
|
stack[0] = getSkull(ac_1);
|
|
stack[1] = getSkull(ac_3);break;
|
|
case 14:
|
|
stack[0] = getSkull(ac_1);
|
|
stack[1] = getSkull(ac_4);break;
|
|
case 15:
|
|
stack[0] = getSkull(ac_1);
|
|
stack[1] = getSkull(ac_5);break;
|
|
case 16:
|
|
stack[0] = getSkull(ac_1);
|
|
stack[1] = getSkull(ac_6);break;
|
|
case 17:
|
|
stack[0] = getSkull(ac_1);
|
|
stack[1] = getSkull(ac_7);break;
|
|
case 18:
|
|
stack[0] = getSkull(ac_1);
|
|
stack[1] = getSkull(ac_8);break;
|
|
case 19:
|
|
stack[0] = getSkull(ac_1);
|
|
stack[1] = getSkull(ac_9);break;
|
|
case 20:
|
|
stack[0] = getSkull(ac_2);
|
|
stack[1] = getSkull(ac_0);break;
|
|
case 21:
|
|
stack[0] = getSkull(ac_2);
|
|
stack[1] = getSkull(ac_1);break;
|
|
case 22:
|
|
stack[0] = getSkull(ac_2);
|
|
stack[1] = getSkull(ac_2);break;
|
|
case 23:
|
|
stack[0] = getSkull(ac_2);
|
|
stack[1] = getSkull(ac_3);break;
|
|
case 24:
|
|
stack[0] = getSkull(ac_2);
|
|
stack[1] = getSkull(ac_4);break;
|
|
default:
|
|
stack[0] = getSkull(ac_NULL);
|
|
stack[1] = getSkull(ac_NULL);break;
|
|
}
|
|
}
|
|
|
|
return stack;
|
|
}
|
|
|
|
public String generateSessionKey(int length){
|
|
String alphabet = new String("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"); //9
|
|
int n = alphabet.length();
|
|
String result = new String();
|
|
Random r = new Random();
|
|
for (int i=0; i<length; i++) result = result + alphabet.charAt(r.nextInt(n));
|
|
return result;
|
|
}
|
|
|
|
private int getDegress(int j){
|
|
return 360/j;
|
|
}
|
|
|
|
@SuppressWarnings("deprecation")
|
|
public ItemStack getSkull(String s) {
|
|
ItemStack skull = new ItemStack(Material.PLAYER_HEAD, 1);
|
|
UUID hashAsId = new UUID(s.hashCode(), s.hashCode());
|
|
return Bukkit.getUnsafe().modifyItemStack(skull,
|
|
"{SkullOwner:{Id:\"" + hashAsId + "\",Properties:{textures:[{Value:\"" + s + "\"}]}}}");
|
|
}
|
|
}
|