mirror of
https://github.com/Ste3et/furniture.git
synced 2024-09-27 07:12:39 +02:00
BugFix
This commit is contained in:
parent
3bc20da4bf
commit
0df6cb1fc7
@ -1,12 +0,0 @@
|
||||
ChristmasStar:
|
||||
name: '&cChristmasStar'
|
||||
material: 383
|
||||
glow: false
|
||||
lore: ''
|
||||
crafting:
|
||||
disable: false
|
||||
recipe: XXX,XXX,A0A
|
||||
index:
|
||||
'0': 0
|
||||
X: 160
|
||||
A: 352
|
10
src/Crafting/FireworkLauncher.yml
Normal file
10
src/Crafting/FireworkLauncher.yml
Normal file
@ -0,0 +1,10 @@
|
||||
FireworkLauncher:
|
||||
name: '&cFireworkLauncher'
|
||||
material: 383
|
||||
glow: false
|
||||
lore: ''
|
||||
crafting:
|
||||
disable: true
|
||||
recipe: XXX,XXX,XXX
|
||||
index:
|
||||
X: 0
|
@ -23,6 +23,8 @@ import de.Ste3et_C0st.Furniture.Objects.School.TrashCan;
|
||||
import de.Ste3et_C0st.Furniture.Objects.christmas.AdventCalender;
|
||||
import de.Ste3et_C0st.Furniture.Objects.christmas.AdventWreath;
|
||||
import de.Ste3et_C0st.Furniture.Objects.christmas.CandyCane;
|
||||
import de.Ste3et_C0st.Furniture.Objects.christmas.ChristmasTree;
|
||||
import de.Ste3et_C0st.Furniture.Objects.christmas.FireworkLauncher;
|
||||
import de.Ste3et_C0st.Furniture.Objects.christmas.SnowGolem;
|
||||
import de.Ste3et_C0st.Furniture.Objects.electric.billboard;
|
||||
import de.Ste3et_C0st.Furniture.Objects.electric.camera;
|
||||
@ -114,8 +116,8 @@ public class main extends JavaPlugin{
|
||||
new Project("CandyCane", this, getResource("Crafting/CandyCane.yml"), PlaceableSide.TOP, CandyCane.class).setSize(3, 4, 1, CenterType.RIGHT);
|
||||
new Project("AdventWreath", this, getResource("Crafting/AdventWreath.yml"), PlaceableSide.TOP, AdventWreath.class).setSize(1, 1, 1, CenterType.RIGHT);
|
||||
new Project("AdventCalender", this, getResource("Crafting/AdventCalender.yml"), PlaceableSide.TOP, AdventCalender.class).setSize(1, 1, 1, CenterType.RIGHT);
|
||||
//new Project("ChristmasTree", this, getResource("Crafting/ChristmasTree.yml"), PlaceableSide.TOP, ChristmasTree.class);
|
||||
//new Project("ChristmasStar", this, getResource("Crafting/ChristmasStar.yml"), PlaceableSide.TOP, ChristmasStar.class);
|
||||
new Project("ChristmasTree", this, getResource("Crafting/ChristmasTree.yml"), PlaceableSide.TOP, ChristmasTree.class).setSize(1, 1, 1, CenterType.CENTER);
|
||||
new Project("FireworkLauncher", this, getResource("Crafting/FireworkLauncher.yml"), PlaceableSide.TOP, FireworkLauncher.class).setSize(1, 1, 1, CenterType.CENTER);
|
||||
addDefault("fence", "whiteList", "config.yml");
|
||||
addDefault("bearTrap", "damage", "damage.yml");
|
||||
setDefaults();
|
||||
|
@ -132,6 +132,7 @@ public class flag extends Furniture implements Listener {
|
||||
if(getObjID()==null){return;}
|
||||
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
|
||||
if(e.isCancelled()){return;}
|
||||
if(e.getID() == null || getObjID() == null) return;
|
||||
if(!e.getID().equals(getObjID())){return;}
|
||||
if(!e.canBuild()){return;}
|
||||
delete();
|
||||
|
@ -101,12 +101,13 @@ public class AdventCalender extends Furniture implements Listener {
|
||||
if(e.isCancelled()){return;}
|
||||
if(e.getID() == null || getObjID() == null) return;
|
||||
if(!e.getID().equals(getObjID())){return;}
|
||||
if(!canBuild(e.getPlayer())){return;}
|
||||
if(p!=null){return;}
|
||||
ItemStack is = e.getPlayer().getItemInHand();
|
||||
if(is==null) return;
|
||||
if(is.getType()==null) return;
|
||||
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();
|
||||
@ -116,47 +117,66 @@ public class AdventCalender extends Furniture implements Listener {
|
||||
openInventory(null);
|
||||
}
|
||||
}else{
|
||||
if(isList.containsKey(getDay())){
|
||||
if(uuidList.containsKey(e.getPlayer().getUniqueId())){
|
||||
if(uuidList.get(e.getPlayer().getUniqueId()) == getDay()){
|
||||
return;
|
||||
}
|
||||
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)){
|
||||
if(iS.hasItemMeta()&&iS.getItemMeta().hasDisplayName()){
|
||||
if(is.getItemMeta().getDisplayName().startsWith("@CONSOLE ")){
|
||||
}
|
||||
ItemStack[] stack = isList.get(getDay());
|
||||
for(ItemStack iS : stack){
|
||||
if(iS!=null&&iS.getType()!=null){
|
||||
if(iS.getType().equals(Material.FIREWORK)){
|
||||
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 ", "");
|
||||
p.sendMessage(name);
|
||||
}else if(name.startsWith("@BROADCAST ")){
|
||||
name = name.replace("%player%", p.getName());
|
||||
name = name.replace("@BROADCAST ", "");
|
||||
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();
|
||||
String s = iS.getItemMeta().getDisplayName();
|
||||
s = s.replace("@CONSOLE ", "");
|
||||
s = s.replace("%player%", e.getPlayer().getName());
|
||||
s = s.replace("%player%", p.getName());
|
||||
ConsoleCommandSender sender = Bukkit.getConsoleSender();
|
||||
Bukkit.dispatchCommand(sender, s);
|
||||
continue;
|
||||
}else if(is.getItemMeta().getDisplayName().startsWith("@PLAYER ")){
|
||||
}else if(iS.getItemMeta().getDisplayName().startsWith("@PLAYER ")){
|
||||
if(!isOP()) continue;
|
||||
String s = is.getItemMeta().getDisplayName();
|
||||
String s = iS.getItemMeta().getDisplayName();
|
||||
s = s.replace("@PLAYER ", "");
|
||||
s = s.replace("%player%", e.getPlayer().getName());
|
||||
e.getPlayer().chat(s);
|
||||
s = s.replace("%player%", p.getName());
|
||||
p.chat("/"+s);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
e.getPlayer().getInventory().addItem(iS);
|
||||
}else{
|
||||
Firework fw = (Firework) getWorld().spawnEntity(getCenter(), EntityType.FIREWORK);
|
||||
FireworkMeta meta = (FireworkMeta) iS.getItemMeta();
|
||||
fw.setFireworkMeta(meta);
|
||||
}
|
||||
p.getInventory().addItem(iS);
|
||||
}
|
||||
}
|
||||
save(getDay(), e.getPlayer().getUniqueId());
|
||||
uuidList.put(e.getPlayer().getUniqueId(), getDay());
|
||||
}
|
||||
savePlayer(p.getUniqueId());
|
||||
uuidList.put(p.getUniqueId(), getDay());
|
||||
}
|
||||
}
|
||||
|
||||
@ -170,19 +190,21 @@ public class AdventCalender extends Furniture implements Listener {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static String itemStackArrayToBase64(ItemStack[] items) throws IllegalStateException {
|
||||
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++) {
|
||||
dataOutput.writeObject(items[i]);
|
||||
ItemStack is = items[i];
|
||||
dataOutput.writeObject(is);
|
||||
}
|
||||
dataOutput.close();
|
||||
return Base64Coder.encodeLines(outputStream.toByteArray());
|
||||
} catch (Exception e) {
|
||||
throw new IllegalStateException("Unable to save item stacks.", e);
|
||||
e.printStackTrace();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public static ItemStack[] itemStackArrayFromBase64(String data) throws IOException {
|
||||
@ -210,7 +232,7 @@ public class AdventCalender extends Furniture implements Listener {
|
||||
try {
|
||||
ItemStack[] is = itemStackArrayFromBase64(s);
|
||||
isList.put(i, is);
|
||||
} catch (IOException e) {}
|
||||
} catch (IOException e) {e.printStackTrace();}
|
||||
}
|
||||
}
|
||||
|
||||
@ -225,15 +247,17 @@ public class AdventCalender extends Furniture implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
public void save(int i, UUID uuid){
|
||||
public void save(int i){
|
||||
config conf = new config();
|
||||
FileConfiguration file = conf.getConfig(getObjID().getID(), "plugin/AdventCalender/Data/");
|
||||
file.set(i + "", getSerialze(i));
|
||||
conf.saveConfig(getObjID().getID(), file, "plugin/AdventCalender/Data/");
|
||||
|
||||
}
|
||||
|
||||
public void savePlayer(UUID uuid){
|
||||
if(uuid != null){
|
||||
conf = new config();
|
||||
file = conf.getConfig(getObjID().getID() + ":Players", "plugin/AdventCalender/Data/");
|
||||
config conf = new config();
|
||||
FileConfiguration file = conf.getConfig(getObjID().getID() + ":Players", "plugin/AdventCalender/Data/");
|
||||
file.set("Players." + uuid.toString(), i);
|
||||
conf.saveConfig(getObjID().getID() + ":Players", file, "plugin/AdventCalender/Data/");
|
||||
}
|
||||
@ -261,7 +285,7 @@ public class AdventCalender extends Furniture implements Listener {
|
||||
if(!e.getInventory().equals(inv)) return;
|
||||
if(!e.getPlayer().equals(p)) return;
|
||||
isList.put(i, e.getInventory().getContents());
|
||||
save(i, null);
|
||||
save(i);
|
||||
p = null;
|
||||
inv = null;
|
||||
}
|
||||
@ -352,9 +376,23 @@ public class AdventCalender extends Furniture implements Listener {
|
||||
|
||||
}
|
||||
|
||||
@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();
|
||||
fArmorStand stand1= null;
|
||||
fArmorStand stand2 = null;
|
||||
@ -371,17 +409,12 @@ public class AdventCalender extends Furniture implements Listener {
|
||||
update();
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public ItemStack[] getStack(){
|
||||
ItemStack[] stack = new ItemStack[2];
|
||||
stack[0] = getSkull(ac_NULL);
|
||||
stack[1] = getSkull(ac_NULL);
|
||||
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
|
||||
Date today = new Date();
|
||||
try {
|
||||
Date todayWithZeroTime =formatter.parse(formatter.format(today));
|
||||
int i = todayWithZeroTime.getDate();
|
||||
int y = todayWithZeroTime.getMonth();
|
||||
int i = getDay();
|
||||
int y = getMonth();
|
||||
if(y==11){
|
||||
switch (i) {
|
||||
case 1:
|
||||
@ -463,11 +496,6 @@ public class AdventCalender extends Furniture implements Listener {
|
||||
}
|
||||
|
||||
return stack;
|
||||
|
||||
|
||||
} catch (ParseException e) {
|
||||
return stack;
|
||||
}
|
||||
}
|
||||
|
||||
public String generateSessionKey(int length){
|
||||
|
@ -1,64 +0,0 @@
|
||||
package de.Ste3et_C0st.Furniture.Objects.christmas;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.util.EulerAngle;
|
||||
|
||||
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.entity.fArmorStand;
|
||||
|
||||
public class ChristmasStar extends Furniture implements Listener {
|
||||
|
||||
public ChristmasStar(ObjectID id){
|
||||
super(id);
|
||||
if(isFinish()){
|
||||
Bukkit.getPluginManager().registerEvents(this, getPlugin());
|
||||
return;
|
||||
}
|
||||
spawn(id.getStartLocation());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFurnitureBreak(FurnitureBreakEvent arg0) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFurnitureClick(FurnitureClickEvent arg0) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void spawn(Location loc) {
|
||||
List<fArmorStand> asList = new ArrayList<fArmorStand>();
|
||||
|
||||
Location location = getRelative(getCenter().add(0, -1.0, 0), getBlockFace(), .25,0);
|
||||
fArmorStand stand = spawnArmorStand(location);
|
||||
stand.setHeadPose(getLutil().degresstoRad(new EulerAngle(90f,180f,90f)));
|
||||
stand.setHelmet(new ItemStack(Material.GOLD_BLOCK));
|
||||
asList.add(stand);
|
||||
|
||||
stand = spawnArmorStand(location);
|
||||
stand.setHeadPose(getLutil().degresstoRad(new EulerAngle(90f,180f,45f)));
|
||||
stand.setHelmet(new ItemStack(Material.GOLD_BLOCK));
|
||||
asList.add(stand);
|
||||
|
||||
for(fArmorStand pack : asList){
|
||||
pack.setInvisible(true);
|
||||
pack.setGravity(false);
|
||||
pack.setBasePlate(false);
|
||||
}
|
||||
|
||||
send();
|
||||
Bukkit.getPluginManager().registerEvents(this, getPlugin());
|
||||
}
|
||||
}
|
@ -1,11 +1,14 @@
|
||||
package de.Ste3et_C0st.Furniture.Objects.christmas;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.util.EulerAngle;
|
||||
@ -14,12 +17,14 @@ 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;
|
||||
|
||||
public class ChristmasTree extends Furniture implements Listener{
|
||||
|
||||
public ChristmasTree(ObjectID id){
|
||||
super(id);
|
||||
setBlock();
|
||||
if(isFinish()){
|
||||
Bukkit.getPluginManager().registerEvents(this, getPlugin());
|
||||
return;
|
||||
@ -27,9 +32,22 @@ public class ChristmasTree extends Furniture implements Listener{
|
||||
spawn(id.getStartLocation());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFurnitureBreak(FurnitureBreakEvent arg0) {
|
||||
|
||||
private void setBlock(){
|
||||
Block b = getCenter().getBlock();
|
||||
b.setType(Material.FLOWER_POT);
|
||||
getObjID().addBlock(Arrays.asList(b));
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onFurnitureBreak(FurnitureBreakEvent e) {
|
||||
if(getObjID()==null){return;}
|
||||
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
|
||||
if(e.isCancelled()){return;}
|
||||
if(e.getID() == null || getObjID() == null) return;
|
||||
if(!e.getID().equals(getObjID())){return;}
|
||||
if(!canBuild(e.getPlayer())){return;}
|
||||
e.remove(true,true);
|
||||
delete();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -41,9 +59,42 @@ public class ChristmasTree extends Furniture implements Listener{
|
||||
public void spawn(Location arg0) {
|
||||
List<fArmorStand> asList = new ArrayList<fArmorStand>();
|
||||
|
||||
fArmorStand stand = spawnArmorStand(getCenter());
|
||||
double d = -1.1;
|
||||
|
||||
setEbene(.3, d, .3, asList);
|
||||
setEbene(.2, d+.63, .2, asList);
|
||||
setEbene(.1, d+1.26, .1, asList);
|
||||
fArmorStand stand = spawnArmorStand(getCenter().add(0, d+1.89, 0));
|
||||
stand.setHelmet(new ItemStack(Material.LEAVES));
|
||||
asList.add(stand);
|
||||
|
||||
stand = spawnArmorStand(getCenter().add(0, d+3.18, 0));
|
||||
stand.setHelmet(new ItemStack(Material.LEAVES));
|
||||
stand.setSmall(true);
|
||||
asList.add(stand);
|
||||
|
||||
stand = spawnArmorStand(getRelative(getCenter(), getBlockFace(), .5, .4).add(0, d+.2, 0));
|
||||
stand.setItemInHand(new ItemStack(Material.STICK));
|
||||
stand.setRightArmPose(getLutil().degresstoRad(new EulerAngle(80, 0, 0)));
|
||||
asList.add(stand);
|
||||
|
||||
stand = spawnArmorStand(getRelative(getCenter(), getBlockFace(), .5, .4).add(0, d+3.3, 0));
|
||||
stand.setItemInHand(new ItemStack(Material.STICK));
|
||||
stand.setRightArmPose(getLutil().degresstoRad(new EulerAngle(80, 0, 0)));
|
||||
asList.add(stand);
|
||||
|
||||
Location location = getRelative(getCenter(), getBlockFace(), .15, 0);
|
||||
location.add(0, 2.9, 0);
|
||||
stand = spawnArmorStand(location);
|
||||
stand.setHeadPose(getLutil().degresstoRad(new EulerAngle(90f,180f,90f)));
|
||||
stand.setHelmet(new ItemStack(Material.GOLD_BLOCK));
|
||||
stand.setSmall(true);
|
||||
asList.add(stand);
|
||||
|
||||
stand = spawnArmorStand(location);
|
||||
stand.setHeadPose(getLutil().degresstoRad(new EulerAngle(90f,180f,45f)));
|
||||
stand.setHelmet(new ItemStack(Material.GOLD_BLOCK));
|
||||
stand.setSmall(true);
|
||||
asList.add(stand);
|
||||
|
||||
for(fArmorStand pack : asList){
|
||||
@ -55,4 +106,17 @@ public class ChristmasTree extends Furniture implements Listener{
|
||||
send();
|
||||
Bukkit.getPluginManager().registerEvents(this, getPlugin());
|
||||
}
|
||||
|
||||
private void setEbene(double x, double y, double z, List<fArmorStand> standL){
|
||||
float yaw = 0;
|
||||
for(int i = 1; i<=4;i++){
|
||||
Location loc = getLutil().getRelativ(getCenter(), getLutil().yawToFace(yaw), x, z);
|
||||
loc.add(0, y, 0);
|
||||
loc.setYaw(yaw);
|
||||
fArmorStand stand = spawnArmorStand(loc);
|
||||
stand.setHelmet(new ItemStack(Material.LEAVES));
|
||||
yaw+=90;
|
||||
standL.add(stand);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,166 @@
|
||||
package de.Ste3et_C0st.Furniture.Objects.christmas;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
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.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.FireworkMeta;
|
||||
import org.bukkit.util.EulerAngle;
|
||||
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;
|
||||
|
||||
public class FireworkLauncher extends Furniture implements Listener {
|
||||
|
||||
public FireworkLauncher(ObjectID id){
|
||||
super(id);
|
||||
if(isFinish()){
|
||||
Bukkit.getPluginManager().registerEvents(this, getPlugin());
|
||||
return;
|
||||
}
|
||||
spawn(id.getStartLocation());
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onFurnitureBreak(FurnitureBreakEvent e) {
|
||||
if(getObjID()==null){return;}
|
||||
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
|
||||
if(e.isCancelled()){return;}
|
||||
if(e.getID() == null || getObjID() == null) return;
|
||||
if(!e.getID().equals(getObjID())){return;}
|
||||
if(!canBuild(e.getPlayer())){return;}
|
||||
for(fArmorStand packet : getManager().getfArmorStandByObjectID(getObjID())){
|
||||
if(packet.getName().equalsIgnoreCase("#FIREWORK#")){
|
||||
if(packet.getInventory().getItemInHand()!=null&&!packet.getInventory().getItemInHand().getType().equals(Material.AIR)){
|
||||
ItemStack is = packet.getInventory().getItemInHand();
|
||||
getWorld().dropItem(getLocation(), is);
|
||||
}
|
||||
}
|
||||
}
|
||||
e.remove(true,true);
|
||||
delete();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onFurnitureClick(FurnitureClickEvent e) {
|
||||
if(getObjID()==null){return;}
|
||||
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
|
||||
if(e.isCancelled()){return;}
|
||||
if(e.getID() == null || getObjID() == null) return;
|
||||
if(!e.getID().equals(getObjID())){return;}
|
||||
if(!canBuild(e.getPlayer())){return;}
|
||||
Player p = e.getPlayer();
|
||||
fArmorStand stand = null;
|
||||
for(fArmorStand st : getfAsList()){
|
||||
if(st.getName().equalsIgnoreCase("#FIREWORK#")){
|
||||
stand = st;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(stand == null) return;
|
||||
if(p.getItemInHand()!=null){
|
||||
if(p.getItemInHand().getType()!=null){
|
||||
if(p.getItemInHand().getType().equals(Material.FIREWORK)){
|
||||
drop(stand);
|
||||
setItem(stand, p.getItemInHand());
|
||||
|
||||
Bukkit.getScheduler().runTaskLater(getPlugin(), new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
update();
|
||||
|
||||
}
|
||||
}, 5);
|
||||
|
||||
if(e.getPlayer().getGameMode().equals(GameMode.CREATIVE) && getLib().useGamemode()) return;
|
||||
Integer i = e.getPlayer().getInventory().getHeldItemSlot();
|
||||
ItemStack is = e.getPlayer().getItemInHand();
|
||||
is.setAmount(is.getAmount()-1);
|
||||
p.getInventory().setItem(i, is);
|
||||
p.updateInventory();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(canLaunch(stand)){
|
||||
Firework fw = (Firework) getWorld().spawnEntity(getCenter(), EntityType.FIREWORK);
|
||||
FireworkMeta meta = (FireworkMeta) stand.getItemInHand().getItemMeta();
|
||||
fw.setFireworkMeta(meta);
|
||||
setItem(stand, new ItemStack(Material.AIR));
|
||||
}
|
||||
}
|
||||
|
||||
public double getRandom(double min, double max){
|
||||
return ThreadLocalRandom.current().nextDouble(min, max);
|
||||
}
|
||||
|
||||
public boolean canLaunch(fArmorStand stand){
|
||||
if(stand.getItemInHand()!=null){
|
||||
if(stand.getItemInHand().getType().equals(Material.FIREWORK)){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void setItem(fArmorStand stand, ItemStack is){
|
||||
ItemStack stack = is.clone();
|
||||
stack.setAmount(1);
|
||||
stand.setItemInHand(stack);
|
||||
update();
|
||||
}
|
||||
|
||||
public void drop(fArmorStand stand){
|
||||
if(stand.getItemInHand()!=null){
|
||||
getWorld().dropItem(getCenter(), stand.getItemInHand());
|
||||
stand.setItemInHand(new ItemStack(Material.AIR));
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void spawn(Location arg0) {
|
||||
List<fArmorStand> asList = new ArrayList<fArmorStand>();
|
||||
|
||||
double d = -1.2;
|
||||
fArmorStand stand = spawnArmorStand(getRelative(getCenter(), getBlockFace(), .5, .4).add(0, d+.2, 0));
|
||||
stand.setItemInHand(new ItemStack(Material.STICK));
|
||||
stand.setRightArmPose(getLutil().degresstoRad(new EulerAngle(80, 0, 0)));
|
||||
asList.add(stand);
|
||||
|
||||
stand = spawnArmorStand(getRelative(getCenter(), getBlockFace(), .5, .4).add(0, d+.9, 0));
|
||||
stand.setItemInHand(new ItemStack(Material.STICK));
|
||||
stand.setRightArmPose(getLutil().degresstoRad(new EulerAngle(80, 0, 0)));
|
||||
asList.add(stand);
|
||||
|
||||
stand = spawnArmorStand(getRelative(getCenter(), getBlockFace(), .05, 0.85).add(0, d+.6, 0));
|
||||
stand.setName("#FIREWORK#");
|
||||
stand.setRightArmPose(getLutil().degresstoRad(new EulerAngle(-90, 90, 0)));
|
||||
asList.add(stand);
|
||||
|
||||
for(fArmorStand pack : asList){
|
||||
pack.setInvisible(true);
|
||||
pack.setGravity(false);
|
||||
pack.setBasePlate(false);
|
||||
}
|
||||
|
||||
send();
|
||||
Bukkit.getPluginManager().registerEvents(this, getPlugin());
|
||||
}
|
||||
|
||||
}
|
@ -47,6 +47,7 @@ public class WaterBottle extends Furniture implements Listener {
|
||||
if(getObjID()==null){return;}
|
||||
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
|
||||
if(e.isCancelled()) return;
|
||||
if(e.getID() == null || getObjID() == null) return;
|
||||
if(!e.getID().equals(getObjID())) return;
|
||||
if(!e.canBuild()){return;}
|
||||
e.remove();
|
||||
|
@ -79,6 +79,7 @@ public class hammock extends Furniture implements Listener{
|
||||
if(getObjID()==null){return;}
|
||||
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
|
||||
if(e.isCancelled()){return;}
|
||||
if(e.getID() == null || getObjID() == null) return;
|
||||
if(!e.getID().equals(getObjID())){return;}
|
||||
if(!e.canBuild()){return;}
|
||||
e.remove();
|
||||
|
@ -82,6 +82,7 @@ public class BearTrap extends Furniture implements Listener{
|
||||
if(getObjID()==null){return;}
|
||||
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
|
||||
if(e.isCancelled()){return;}
|
||||
if(e.getID() == null || getObjID() == null) return;
|
||||
if(!e.getID().equals(getObjID())){return;}
|
||||
if(!e.canBuild()){return;}
|
||||
e.remove();
|
||||
|
@ -1,5 +1,5 @@
|
||||
name: DiceFurniture
|
||||
version: 2.5.6
|
||||
version: 2.6
|
||||
description: Add some new Objects to the Server
|
||||
author: Ste3et_C0st
|
||||
website: http://dicecraft.de
|
||||
|
Loading…
Reference in New Issue
Block a user