mirror of
https://github.com/Ste3et/furniture.git
synced 2024-11-29 05:55:53 +01:00
Fix Guillotine,Log,Campfire2
https://www.spigotmc.org/threads/dicefurniture-plugin-m%C3%B6bel-plugin.60698/page-155#post-3315582
This commit is contained in:
parent
980c78afdf
commit
3742238bb6
2
pom.xml
2
pom.xml
@ -110,7 +110,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>de.Ste3et_C0st.furniture</groupId>
|
<groupId>de.Ste3et_C0st.furniture</groupId>
|
||||||
<artifactId>FurnitureLib</artifactId>
|
<artifactId>FurnitureLib</artifactId>
|
||||||
<version>2.0.5</version>
|
<version>2.0.6</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
@ -1,277 +0,0 @@
|
|||||||
package de.Ste3et_C0st.Furniture.Main;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.GameMode;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.entity.ArmorStand;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.Listener;
|
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
|
||||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
|
||||||
import org.bukkit.inventory.Inventory;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
|
||||||
|
|
||||||
import de.Ste3et_C0st.FurnitureLib.Crafting.Project;
|
|
||||||
import de.Ste3et_C0st.FurnitureLib.ShematicLoader.Events.ProjectBreakEvent;
|
|
||||||
import de.Ste3et_C0st.FurnitureLib.ShematicLoader.Events.ProjectClickEvent;
|
|
||||||
import de.Ste3et_C0st.FurnitureLib.Utilitis.HiddenStringUtils;
|
|
||||||
import de.Ste3et_C0st.FurnitureLib.Utilitis.ManageInv;
|
|
||||||
import de.Ste3et_C0st.FurnitureLib.main.FurnitureHelper;
|
|
||||||
import de.Ste3et_C0st.FurnitureLib.main.FurnitureLib;
|
|
||||||
import de.Ste3et_C0st.FurnitureLib.main.ObjectID;
|
|
||||||
import de.Ste3et_C0st.FurnitureLib.main.Type.SQLAction;
|
|
||||||
import de.Ste3et_C0st.FurnitureLib.main.entity.fEntity;
|
|
||||||
|
|
||||||
public class Log extends FurnitureHelper implements Listener{
|
|
||||||
|
|
||||||
private int mode = 0;
|
|
||||||
private Inventory inv = Bukkit.createInventory(null, 9, "§2Settings");
|
|
||||||
private ItemStack pane = new ItemStack(Material.WHITE_STAINED_GLASS_PANE);
|
|
||||||
private ItemStack permissions = new ItemStack(Material.ARROW);
|
|
||||||
private Player p;
|
|
||||||
private List<ItemStack> isList = new ArrayList<ItemStack>();
|
|
||||||
|
|
||||||
public Log(ObjectID id) {
|
|
||||||
super(id);
|
|
||||||
Bukkit.getPluginManager().registerEvents(this, main.instance);
|
|
||||||
setList();
|
|
||||||
for(fEntity entity : getObjID().getPacketList()){
|
|
||||||
entity.setNameVasibility(false);
|
|
||||||
}
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
private void onBlockBreak(ProjectBreakEvent e){
|
|
||||||
if(e.getID() == null || getObjID() == null) return;
|
|
||||||
if(!e.getID().equals(getObjID())){return;}
|
|
||||||
if(!e.canBuild()){return;}
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@EventHandler
|
|
||||||
private void onBlockBreak(ProjectClickEvent e){
|
|
||||||
if(e.getID() == null || getObjID() == null) return;
|
|
||||||
if(!e.getID().equals(getObjID())){return;}
|
|
||||||
if(!e.canBuild()){return;}
|
|
||||||
if(e.getPlayer().isSneaking()){
|
|
||||||
if(e.getPlayer().getInventory().getItemInMainHand().getType().isBlock()&&
|
|
||||||
!e.getPlayer().getInventory().getItemInMainHand().getType().equals(Material.AIR)){
|
|
||||||
e.setCancelled(false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
openInventory(e.getPlayer());
|
|
||||||
}else{
|
|
||||||
if(e.getPlayer().getInventory().getItemInMainHand().getType().isBlock() && !e.getPlayer().getInventory().getItemInMainHand().getType().equals(Material.AIR)){
|
|
||||||
getCenter().getBlock().setType(e.getPlayer().getInventory().getItemInMainHand().getType());
|
|
||||||
removeItem(e.getPlayer());
|
|
||||||
return;
|
|
||||||
}else if(!e.getPlayer().getInventory().getItemInMainHand().getType().isBlock() && !e.getPlayer().getInventory().getItemInMainHand().getType().equals(Material.AIR)){
|
|
||||||
fEntity stand = null;
|
|
||||||
if(getProjectByItem(e.getPlayer().getInventory().getItemInMainHand()) != null){return;}
|
|
||||||
for(fEntity s : getObjID().getPacketList()){
|
|
||||||
if(s.getName().equalsIgnoreCase(mode+"")){
|
|
||||||
stand = s;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(stand==null){return;}
|
|
||||||
if(stand.getInventory().getItemInMainHand()!=null&&!stand.getInventory().getItemInMainHand().getType().equals(Material.AIR)){
|
|
||||||
if(e.getPlayer().getInventory().getItemInMainHand()!=null){
|
|
||||||
if(e.getPlayer().getInventory().getItemInMainHand().equals(stand.getItemInMainHand())){
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ItemStack is = stand.getInventory().getItemInMainHand();
|
|
||||||
is.setAmount(1);
|
|
||||||
getWorld().dropItem(getLocation(), is);
|
|
||||||
}
|
|
||||||
|
|
||||||
ItemStack is = e.getPlayer().getInventory().getItemInMainHand().clone();
|
|
||||||
is.setAmount(1);
|
|
||||||
stand.setItemInMainHand(is);
|
|
||||||
update();
|
|
||||||
removeItem(e.getPlayer());
|
|
||||||
return;
|
|
||||||
}else{
|
|
||||||
fEntity stand = null;
|
|
||||||
for(fEntity s : getObjID().getPacketList()){
|
|
||||||
if(s.getName().equalsIgnoreCase(mode+"")){
|
|
||||||
stand = s;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(stand==null){return;}
|
|
||||||
|
|
||||||
if(stand.getInventory().getItemInMainHand()!=null&&!stand.getInventory().getItemInMainHand().getType().equals(Material.AIR)){
|
|
||||||
for(fEntity s : getObjID().getPacketList()){
|
|
||||||
if(s.getName().equalsIgnoreCase(mode+"")){
|
|
||||||
stand = s;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ItemStack is = stand.getInventory().getItemInMainHand();
|
|
||||||
is.setAmount(1);
|
|
||||||
getWorld().dropItem(getLocation(), is);
|
|
||||||
}
|
|
||||||
|
|
||||||
stand.setItemInMainHand(new ItemStack(Material.AIR));
|
|
||||||
update();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setList(){
|
|
||||||
ItemStack stack = new ItemStack(Material.WHITE_BANNER);
|
|
||||||
ItemMeta meta = stack.getItemMeta();
|
|
||||||
meta.setDisplayName("§6Mode: §cTop");
|
|
||||||
stack.setItemMeta(meta);
|
|
||||||
isList.add(stack);
|
|
||||||
stack = new ItemStack(Material.ORANGE_BANNER);
|
|
||||||
meta = stack.getItemMeta();
|
|
||||||
meta.setDisplayName("§6Mode: §cFront I");
|
|
||||||
stack.setItemMeta(meta);
|
|
||||||
isList.add(stack);
|
|
||||||
stack = new ItemStack(Material.BLUE_BANNER);
|
|
||||||
meta = stack.getItemMeta();
|
|
||||||
meta.setDisplayName("§6Mode: §cFront II");
|
|
||||||
stack.setItemMeta(meta);
|
|
||||||
isList.add(stack);
|
|
||||||
|
|
||||||
meta = permissions.getItemMeta();
|
|
||||||
meta.setDisplayName("§cChange Permissions (Owner Only)");
|
|
||||||
permissions.setItemMeta(meta);
|
|
||||||
}
|
|
||||||
|
|
||||||
private Project getProjectByItem(ItemStack is){
|
|
||||||
ItemStack stack = is.clone();
|
|
||||||
if(stack==null) return null;
|
|
||||||
String systemID = "";
|
|
||||||
if(stack.hasItemMeta()){
|
|
||||||
if(stack.getItemMeta().hasLore()){
|
|
||||||
List<String> s = stack.getItemMeta().getLore();
|
|
||||||
if(HiddenStringUtils.hasHiddenString(s.get(0))) systemID = HiddenStringUtils.extractHiddenString(s.get(0));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for(Project pro : FurnitureLib.getInstance().getFurnitureManager().getProjects()){
|
|
||||||
if(pro==null) continue;
|
|
||||||
if(pro.getSystemID()==null) continue;
|
|
||||||
if(pro.getSystemID().equalsIgnoreCase(systemID)){
|
|
||||||
return pro;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void removeItem(Player p){
|
|
||||||
Boolean useGameMode = FurnitureLib.getInstance().useGamemode();
|
|
||||||
if(useGameMode&&p.getGameMode().equals(GameMode.CREATIVE)){return;}
|
|
||||||
Integer slot = p.getInventory().getHeldItemSlot();
|
|
||||||
ItemStack itemStack = p.getInventory().getItemInMainHand().clone();
|
|
||||||
itemStack.setAmount(itemStack.getAmount()-1);
|
|
||||||
p.getInventory().setItem(slot, itemStack);
|
|
||||||
p.updateInventory();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void openInventory(Player p){
|
|
||||||
if(this.p !=null) return;
|
|
||||||
this.p = p;
|
|
||||||
inv.clear();
|
|
||||||
int j = mode;
|
|
||||||
for(int i = 0; i<inv.getSize();i++){
|
|
||||||
if(i==2){
|
|
||||||
inv.addItem(isList.get(j));
|
|
||||||
continue;
|
|
||||||
}else if(i==6){
|
|
||||||
inv.addItem(permissions);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
inv.setItem(i,pane);
|
|
||||||
}
|
|
||||||
p.openInventory(inv);
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
private void onClick(InventoryClickEvent e){
|
|
||||||
if(getObjID()==null){return;}
|
|
||||||
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
|
|
||||||
if(e.getClickedInventory()==null||!e.getClickedInventory().equals(inv)){return;}
|
|
||||||
e.setCancelled(true);
|
|
||||||
if(e.getCurrentItem()==null){return;}
|
|
||||||
if(e.getCurrentItem().getType().name().contains("_BANNER")){
|
|
||||||
Integer i = isList.indexOf(e.getCurrentItem());
|
|
||||||
ItemStack is = null;
|
|
||||||
if(i>=2){i = -1;}
|
|
||||||
i++;
|
|
||||||
is = isList.get(i);
|
|
||||||
mode = i;
|
|
||||||
modeSwitch(e.getCurrentItem().getDurability());
|
|
||||||
inv.setItem(e.getSlot(), is);
|
|
||||||
p.updateInventory();
|
|
||||||
}else if(e.getCurrentItem().getType().equals(Material.ARROW)){
|
|
||||||
if(!getObjID().getUUID().equals(p.getUniqueId())){
|
|
||||||
if(!getLib().getPermission().hasPerm(p, "furniture.admin") && !p.isOp() && !getLib().getPermission().hasPerm(p, "furniture.manage.other")){
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
p.closeInventory();
|
|
||||||
new ManageInv((Player) e.getWhoClicked(), getObjID());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void modeSwitch(short dura){
|
|
||||||
int oldArmorStand = 0;
|
|
||||||
int currentArmorStand = 0;
|
|
||||||
|
|
||||||
switch (dura) {
|
|
||||||
case 1:
|
|
||||||
oldArmorStand = 0;
|
|
||||||
currentArmorStand = 1;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
oldArmorStand = 1;
|
|
||||||
currentArmorStand = 2;
|
|
||||||
break;
|
|
||||||
case 11:
|
|
||||||
oldArmorStand = 2;
|
|
||||||
currentArmorStand = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
fEntity standOld = null;
|
|
||||||
fEntity standCurrent = null;
|
|
||||||
for(fEntity s : getObjID().getPacketList()){
|
|
||||||
if(s.getName().equalsIgnoreCase(oldArmorStand+"")){
|
|
||||||
standOld=s;
|
|
||||||
}else if(s.getName().equalsIgnoreCase(currentArmorStand+"")){
|
|
||||||
standCurrent=s;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(standOld!=null&&standCurrent!=null){
|
|
||||||
standCurrent.setItemInMainHand(standOld.getItemInMainHand());
|
|
||||||
standOld.setItemInMainHand(new ItemStack(Material.AIR));
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void onClose(InventoryCloseEvent e){
|
|
||||||
if(getObjID()==null){return;}
|
|
||||||
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
|
|
||||||
if(e.getInventory()==null){return;}
|
|
||||||
if(e.getInventory().equals(inv)){this.p = null;}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -19,9 +19,9 @@ import org.bukkit.plugin.java.JavaPlugin;
|
|||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
import de.Ste3et_C0st.Furniture.Objects.RPG.Crossbow;
|
import de.Ste3et_C0st.Furniture.Objects.RPG.Crossbow;
|
||||||
|
import de.Ste3et_C0st.Furniture.Objects.RPG.Guillotine;
|
||||||
import de.Ste3et_C0st.Furniture.Objects.RPG.Catapult;
|
import de.Ste3et_C0st.Furniture.Objects.RPG.Catapult;
|
||||||
import de.Ste3et_C0st.Furniture.Objects.RPG.flag;
|
import de.Ste3et_C0st.Furniture.Objects.RPG.flag;
|
||||||
import de.Ste3et_C0st.Furniture.Objects.RPG.guillotine;
|
|
||||||
import de.Ste3et_C0st.Furniture.Objects.RPG.weaponStand;
|
import de.Ste3et_C0st.Furniture.Objects.RPG.weaponStand;
|
||||||
import de.Ste3et_C0st.Furniture.Objects.School.TrashCan;
|
import de.Ste3et_C0st.Furniture.Objects.School.TrashCan;
|
||||||
import de.Ste3et_C0st.Furniture.Objects.christmas.AdventCalender;
|
import de.Ste3et_C0st.Furniture.Objects.christmas.AdventCalender;
|
||||||
@ -34,6 +34,7 @@ import de.Ste3et_C0st.Furniture.Objects.garden.Trunk;
|
|||||||
import de.Ste3et_C0st.Furniture.Objects.garden.config;
|
import de.Ste3et_C0st.Furniture.Objects.garden.config;
|
||||||
import de.Ste3et_C0st.Furniture.Objects.garden.fance;
|
import de.Ste3et_C0st.Furniture.Objects.garden.fance;
|
||||||
import de.Ste3et_C0st.Furniture.Objects.garden.graveStone;
|
import de.Ste3et_C0st.Furniture.Objects.garden.graveStone;
|
||||||
|
import de.Ste3et_C0st.Furniture.Objects.garden.log;
|
||||||
import de.Ste3et_C0st.Furniture.Objects.garden.sunshade;
|
import de.Ste3et_C0st.Furniture.Objects.garden.sunshade;
|
||||||
import de.Ste3et_C0st.Furniture.Objects.indoor.largeTable;
|
import de.Ste3et_C0st.Furniture.Objects.indoor.largeTable;
|
||||||
import de.Ste3et_C0st.Furniture.Objects.light.WaxCandle;
|
import de.Ste3et_C0st.Furniture.Objects.light.WaxCandle;
|
||||||
@ -94,7 +95,7 @@ public class main extends JavaPlugin implements Listener{
|
|||||||
new Project("Streetlamp", this, getResource("Crafting/Streetlamp.dModel"),PlaceableSide.TOP, streetlamp.class).setSize(2, 4, 1, CenterType.FRONT);
|
new Project("Streetlamp", this, getResource("Crafting/Streetlamp.dModel"),PlaceableSide.TOP, streetlamp.class).setSize(2, 4, 1, CenterType.FRONT);
|
||||||
new Project("Billboard", this, getResource("Crafting/Billboard.dModel"),PlaceableSide.TOP, billboard.class).setSize(1, 3, 3, CenterType.RIGHT);
|
new Project("Billboard", this, getResource("Crafting/Billboard.dModel"),PlaceableSide.TOP, billboard.class).setSize(1, 3, 3, CenterType.RIGHT);
|
||||||
new Project("WeaponStand", this, getResource("Crafting/WeaponStand.dModel"),PlaceableSide.TOP, weaponStand.class).setSize(1, 1, 1, CenterType.RIGHT);
|
new Project("WeaponStand", this, getResource("Crafting/WeaponStand.dModel"),PlaceableSide.TOP, weaponStand.class).setSize(1, 1, 1, CenterType.RIGHT);
|
||||||
new Project("Guillotine", this, getResource("Crafting/Guillotine.dModel"),PlaceableSide.TOP, guillotine.class).setSize(1, 5, 2, CenterType.RIGHT);
|
new Project("Guillotine", this, getResource("Crafting/Guillotine.dModel"),PlaceableSide.TOP, Guillotine.class).setSize(1, 5, 2, CenterType.RIGHT);
|
||||||
new Project("FlowerPot", this, getResource("Crafting/FlowerPot.dModel"),PlaceableSide.BOTTOM, TFlowerPot.class).setSize(1, 1, 1, CenterType.RIGHT);
|
new Project("FlowerPot", this, getResource("Crafting/FlowerPot.dModel"),PlaceableSide.BOTTOM, TFlowerPot.class).setSize(1, 1, 1, CenterType.RIGHT);
|
||||||
new Project("BearTrap", this, getResource("Crafting/BearTrap.dModel"), PlaceableSide.TOP, BearTrap.class).setSize(1, 1, 1, CenterType.RIGHT);
|
new Project("BearTrap", this, getResource("Crafting/BearTrap.dModel"), PlaceableSide.TOP, BearTrap.class).setSize(1, 1, 1, CenterType.RIGHT);
|
||||||
new Project("TrashCan", this, getResource("Crafting/TrashCan.dModel"), PlaceableSide.TOP, TrashCan.class).setSize(1, 1, 1, CenterType.RIGHT);
|
new Project("TrashCan", this, getResource("Crafting/TrashCan.dModel"), PlaceableSide.TOP, TrashCan.class).setSize(1, 1, 1, CenterType.RIGHT);
|
||||||
@ -135,7 +136,6 @@ public class main extends JavaPlugin implements Listener{
|
|||||||
new Project("Camera", this, getResource("Models/Camera.dModel")).setSize(1, 1, 1, CenterType.RIGHT).setEditorProject(false);
|
new Project("Camera", this, getResource("Models/Camera.dModel")).setSize(1, 1, 1, CenterType.RIGHT).setEditorProject(false);
|
||||||
new Project("Sofa", this, getResource("Models/Sofa.dModel")).setSize(1, 1, 3, CenterType.RIGHT).setEditorProject(false);
|
new Project("Sofa", this, getResource("Models/Sofa.dModel")).setSize(1, 1, 3, CenterType.RIGHT).setEditorProject(false);
|
||||||
new Project("Log", this, getResource("Models/Log.dModel")).setSize(1, 1, 1, CenterType.CENTER).setEditorProject(false);
|
new Project("Log", this, getResource("Models/Log.dModel")).setSize(1, 1, 1, CenterType.CENTER).setEditorProject(false);
|
||||||
|
|
||||||
lib.registerPluginFurnitures(getInstance());
|
lib.registerPluginFurnitures(getInstance());
|
||||||
loadModels();
|
loadModels();
|
||||||
}else{
|
}else{
|
||||||
@ -216,7 +216,7 @@ public class main extends JavaPlugin implements Listener{
|
|||||||
case "Tent1": new tent_1(id);break;
|
case "Tent1": new tent_1(id);break;
|
||||||
case "GraveStone": new graveStone(id);break;
|
case "GraveStone": new graveStone(id);break;
|
||||||
case "Camera": new camera(id);break;
|
case "Camera": new camera(id);break;
|
||||||
case "Log": new Log(id);break;
|
case "Log": new log(id);break;
|
||||||
default:break;
|
default:break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -241,7 +241,7 @@ public class main extends JavaPlugin implements Listener{
|
|||||||
case "Tent1": new tent_1(event.getID());break;
|
case "Tent1": new tent_1(event.getID());break;
|
||||||
case "GraveStone": new graveStone(event.getID());break;
|
case "GraveStone": new graveStone(event.getID());break;
|
||||||
case "Camera": new camera(event.getID());break;
|
case "Camera": new camera(event.getID());break;
|
||||||
case "Log": new Log(event.getID());break;
|
case "Log": new log(event.getID());break;
|
||||||
default:break;
|
default:break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ package de.Ste3et_C0st.Furniture.Objects.RPG;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
@ -32,7 +33,7 @@ import de.Ste3et_C0st.FurnitureLib.main.Type.SQLAction;
|
|||||||
import de.Ste3et_C0st.FurnitureLib.main.entity.fArmorStand;
|
import de.Ste3et_C0st.FurnitureLib.main.entity.fArmorStand;
|
||||||
import de.Ste3et_C0st.FurnitureLib.main.entity.fEntity;
|
import de.Ste3et_C0st.FurnitureLib.main.entity.fEntity;
|
||||||
|
|
||||||
public class guillotine extends Furniture implements Listener{
|
public class Guillotine extends Furniture implements Listener{
|
||||||
|
|
||||||
Boolean soundPlaying = false, isFinish = false;
|
Boolean soundPlaying = false, isFinish = false;
|
||||||
fArmorStand packet1, packet2, packet3;
|
fArmorStand packet1, packet2, packet3;
|
||||||
@ -55,9 +56,9 @@ public class guillotine extends Furniture implements Listener{
|
|||||||
List<Material> matListIII = Arrays.asList(
|
List<Material> matListIII = Arrays.asList(
|
||||||
Material.LEATHER_BOOTS,Material.IRON_BOOTS,Material.GOLDEN_BOOTS,
|
Material.LEATHER_BOOTS,Material.IRON_BOOTS,Material.GOLDEN_BOOTS,
|
||||||
Material.DIAMOND_BOOTS, Material.CHAINMAIL_BOOTS);
|
Material.DIAMOND_BOOTS, Material.CHAINMAIL_BOOTS);
|
||||||
List<fArmorStand> armorStandList = new ArrayList<fArmorStand>();
|
List<fEntity> armorStandList = new ArrayList<fEntity>();
|
||||||
ItemStack pane = new ItemStack(Material.BLACK_STAINED_GLASS_PANE);
|
ItemStack pane = new ItemStack(Material.BLACK_STAINED_GLASS_PANE);
|
||||||
public guillotine(ObjectID id) {
|
public Guillotine(ObjectID id) {
|
||||||
super(id);
|
super(id);
|
||||||
if(isFinish()){
|
if(isFinish()){
|
||||||
Bukkit.getPluginManager().registerEvents(this, main.getInstance());
|
Bukkit.getPluginManager().registerEvents(this, main.getInstance());
|
||||||
@ -95,24 +96,15 @@ public class guillotine extends Furniture implements Listener{
|
|||||||
|
|
||||||
private void setDefault(){
|
private void setDefault(){
|
||||||
armorStandList.clear();
|
armorStandList.clear();
|
||||||
if(packet1==null){packet2 = getByName("#Oblation#");}
|
|
||||||
if(packet3==null){packet3 = getByName("#Head#");}
|
this.packet1 = (fArmorStand) entityByCustomName("#Executioner#");
|
||||||
for(fEntity packets : getManager().getfArmorStandByObjectID(getObjID())){
|
this.packet3 = (fArmorStand) entityByCustomName("#Head#");
|
||||||
if(packets instanceof fArmorStand){
|
this.packet2 = (fArmorStand) getfAsList().stream().filter(entity -> entity.getCustomName().startsWith("#Oblation#")).findFirst().orElse(null);
|
||||||
fArmorStand stand = (fArmorStand) packets;
|
|
||||||
if(!packets.getName().equalsIgnoreCase("")){
|
getfAsList().stream().filter(entity -> entity.getCustomName().startsWith("iron")).forEach(entity -> {
|
||||||
if(!(packets.getName().startsWith("#Oblation#") && packets.getName().startsWith("#Head#"))){
|
armorStandList.add(entity);
|
||||||
if(packets.getName().startsWith("iron")){
|
entity.teleport(getStartLocation(entity.getCustomName()));
|
||||||
armorStandList.add(stand);
|
});
|
||||||
Location loc = getStartLocation(packets.getName());
|
|
||||||
packets.teleport(loc);
|
|
||||||
}else{
|
|
||||||
packet1 = stand;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(packet3!=null){
|
if(packet3!=null){
|
||||||
if(packet3.getHelmet()!=null){
|
if(packet3.getHelmet()!=null){
|
||||||
@ -447,30 +439,22 @@ public class guillotine extends Furniture implements Listener{
|
|||||||
boolean a = false,b = false,c = false;
|
boolean a = false,b = false,c = false;
|
||||||
a = !packet1.isInvisible();
|
a = !packet1.isInvisible();
|
||||||
b = !packet2.isInvisible();
|
b = !packet2.isInvisible();
|
||||||
|
|
||||||
|
if(packet1.getItemInMainHand() == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(packet1.getHelmet() == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if(packet1.getItemInMainHand()!=null&&!packet1.getItemInMainHand().getType().equals(Material.AIR)){
|
if(packet1.getItemInMainHand()!=null&&!packet1.getItemInMainHand().getType().equals(Material.AIR)){
|
||||||
c = true;
|
c = true;
|
||||||
}else {
|
|
||||||
|
|
||||||
if(!packet1.getItemInMainHand().getType().equals(Material.AIR)) System.out.println("material");
|
|
||||||
System.out.println("false");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(packet1.getItemInMainHand()!=null) {
|
|
||||||
System.out.println("mainHand");
|
|
||||||
if(!packet1.getItemInMainHand().getType().equals(Material.AIR)) {
|
|
||||||
System.out.println("material");
|
|
||||||
}else {
|
|
||||||
System.out.println("material==null");
|
|
||||||
}
|
|
||||||
}else {
|
|
||||||
System.out.println("mainHand == null");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if(a&&b&&c){
|
if(a&&b&&c){
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
System.out.println("test");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -514,7 +498,7 @@ public class guillotine extends Furniture implements Listener{
|
|||||||
i++;
|
i++;
|
||||||
}else{
|
}else{
|
||||||
if(d4>d3){
|
if(d4>d3){
|
||||||
for(fArmorStand stand : armorStandList){
|
for(fEntity stand : armorStandList){
|
||||||
stand.teleport(stand.getLocation().add(0, -1.7, 0));
|
stand.teleport(stand.getLocation().add(0, -1.7, 0));
|
||||||
}
|
}
|
||||||
d4=-1.7;
|
d4=-1.7;
|
@ -1,77 +1,151 @@
|
|||||||
package de.Ste3et_C0st.Furniture.Objects.garden;
|
package de.Ste3et_C0st.Furniture.Objects.garden;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
import org.bukkit.util.EulerAngle;
|
|
||||||
|
|
||||||
import de.Ste3et_C0st.Furniture.Main.main;
|
import de.Ste3et_C0st.Furniture.Main.main;
|
||||||
import de.Ste3et_C0st.FurnitureLib.Crafting.Project;
|
import de.Ste3et_C0st.FurnitureLib.Crafting.Project;
|
||||||
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureBlockBreakEvent;
|
import de.Ste3et_C0st.FurnitureLib.ShematicLoader.Events.ProjectBreakEvent;
|
||||||
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureBlockClickEvent;
|
import de.Ste3et_C0st.FurnitureLib.ShematicLoader.Events.ProjectClickEvent;
|
||||||
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureBreakEvent;
|
|
||||||
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureClickEvent;
|
|
||||||
import de.Ste3et_C0st.FurnitureLib.Utilitis.HiddenStringUtils;
|
import de.Ste3et_C0st.FurnitureLib.Utilitis.HiddenStringUtils;
|
||||||
import de.Ste3et_C0st.FurnitureLib.Utilitis.ManageInv;
|
import de.Ste3et_C0st.FurnitureLib.Utilitis.ManageInv;
|
||||||
import de.Ste3et_C0st.FurnitureLib.main.Furniture;
|
import de.Ste3et_C0st.FurnitureLib.main.FurnitureHelper;
|
||||||
import de.Ste3et_C0st.FurnitureLib.main.FurnitureLib;
|
import de.Ste3et_C0st.FurnitureLib.main.FurnitureLib;
|
||||||
import de.Ste3et_C0st.FurnitureLib.main.ObjectID;
|
import de.Ste3et_C0st.FurnitureLib.main.ObjectID;
|
||||||
import de.Ste3et_C0st.FurnitureLib.main.Type.SQLAction;
|
import de.Ste3et_C0st.FurnitureLib.main.Type.SQLAction;
|
||||||
import de.Ste3et_C0st.FurnitureLib.main.entity.fArmorStand;
|
import de.Ste3et_C0st.FurnitureLib.main.entity.fArmorStand;
|
||||||
import de.Ste3et_C0st.FurnitureLib.main.entity.fEntity;
|
import de.Ste3et_C0st.FurnitureLib.main.entity.fEntity;
|
||||||
|
|
||||||
public class log extends Furniture {
|
public class log extends FurnitureHelper implements Listener{
|
||||||
|
|
||||||
Block b;
|
private int mode = 0;
|
||||||
int mode = 0;
|
private Inventory inv = Bukkit.createInventory(null, 9, "§2Settings");
|
||||||
Inventory inv = Bukkit.createInventory(null, 9, "§2Settings");
|
private ItemStack pane = new ItemStack(Material.BLACK_STAINED_GLASS_PANE);
|
||||||
ItemStack pane = new ItemStack(Material.BLACK_STAINED_GLASS_PANE);
|
private ItemStack permissions = new ItemStack(Material.ARROW);
|
||||||
ItemStack permissions = new ItemStack(Material.ARROW);
|
private Player p;
|
||||||
List<ItemStack> isList = new ArrayList<ItemStack>();
|
private List<ItemStack> isList = new ArrayList<ItemStack>();
|
||||||
Player p;
|
|
||||||
|
|
||||||
public log(ObjectID id){
|
public log(ObjectID id) {
|
||||||
super(id);
|
super(id);
|
||||||
b = getLocation().getBlock();
|
Bukkit.getPluginManager().registerEvents(this, main.instance);
|
||||||
ItemMeta meta = pane.getItemMeta();
|
getObjID().getPacketList().stream().forEach(entity -> {
|
||||||
meta.setDisplayName("§c");
|
entity.setNameVasibility(false);
|
||||||
pane.setItemMeta(meta);
|
((fArmorStand) entity).setMarker(false);
|
||||||
pane.setDurability((short) 15);
|
});
|
||||||
pane.setItemMeta(meta);
|
update();
|
||||||
setList();
|
setList();
|
||||||
getObjID().addBlock(Arrays.asList(b));
|
}
|
||||||
if(isFinish()){
|
|
||||||
Bukkit.getPluginManager().registerEvents(this, main.getInstance());
|
@EventHandler
|
||||||
|
private void onBlockBreak(ProjectBreakEvent e){
|
||||||
|
if(e.getID() == null || getObjID() == null) return;
|
||||||
|
if(!e.getID().equals(getObjID())){return;}
|
||||||
|
if(!e.canBuild()){return;}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Project getProjectByItem(ItemStack is){
|
||||||
|
ItemStack stack = getItemStackCopy(is);
|
||||||
|
if(stack==null) return null;
|
||||||
|
String systemID = "";
|
||||||
|
if(stack.hasItemMeta()){
|
||||||
|
if(stack.getItemMeta().hasLore()){
|
||||||
|
List<String> s = stack.getItemMeta().getLore();
|
||||||
|
if(HiddenStringUtils.hasHiddenString(s.get(0))) systemID = HiddenStringUtils.extractHiddenString(s.get(0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(Project pro : FurnitureLib.getInstance().getFurnitureManager().getProjects()){
|
||||||
|
if(pro==null) continue;
|
||||||
|
if(pro.getSystemID()==null) continue;
|
||||||
|
if(pro.getSystemID().equalsIgnoreCase(systemID)){
|
||||||
|
return pro;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private ItemStack getItemStackCopy(ItemStack is){
|
||||||
|
ItemStack copy = is.clone();
|
||||||
|
copy.setAmount(1);
|
||||||
|
return copy;
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
private void onBlockBreak(ProjectClickEvent e){
|
||||||
|
if(e.getID() == null || getObjID() == null) return;
|
||||||
|
if(!e.getID().equals(getObjID())){return;}
|
||||||
|
if(!e.canBuild()){return;}
|
||||||
|
if(e.getPlayer().isSneaking()){
|
||||||
|
if(e.getPlayer().getInventory().getItemInMainHand().getType().isBlock()&&
|
||||||
|
!e.getPlayer().getInventory().getItemInMainHand().getType().equals(Material.AIR)){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
spawn(id.getStartLocation());
|
openInventory(e.getPlayer());
|
||||||
|
}else{
|
||||||
|
ItemStack stack = e.getPlayer().getInventory().getItemInMainHand();
|
||||||
|
if(stack == null || stack.getType().equals(Material.AIR)){
|
||||||
|
//dropItem
|
||||||
|
fEntity entity = entityByCustomName(this.mode + "");
|
||||||
|
if(entity != null) {
|
||||||
|
if(entity.getItemInMainHand() != null) {
|
||||||
|
if(!entity.getItemInMainHand().getType().equals(Material.AIR)) {
|
||||||
|
if(entity.getItemInMainHand().equals(stack)) {return;}
|
||||||
|
getWorld().dropItem(getLocation(), entity.getItemInMainHand());
|
||||||
|
entity.getInventory().setItemInMainHand(new ItemStack(Material.AIR));
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if(getProjectByItem(stack) != null) {return;}
|
||||||
|
if(stack.getType().isBlock()) {
|
||||||
|
Block b = getCenter().getBlock();
|
||||||
|
b.setType(stack.getType());
|
||||||
|
}else{
|
||||||
|
fEntity entity = entityByCustomName(this.mode + "");
|
||||||
|
if(entity != null) {
|
||||||
|
if(entity.getItemInMainHand() != null) {
|
||||||
|
if(!entity.getItemInMainHand().getType().equals(Material.AIR)) {
|
||||||
|
if(entity.getItemInMainHand().equals(stack)) {return;}
|
||||||
|
getWorld().dropItem(getLocation(), entity.getItemInMainHand());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ItemStack placeItem = stack.clone();
|
||||||
|
placeItem.setAmount(1);
|
||||||
|
entity.getInventory().setItemInMainHand(placeItem);
|
||||||
|
consumeItem(e.getPlayer());
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setList(){
|
private void setList(){
|
||||||
ItemStack stack = new ItemStack(Material.ORANGE_WOOL);
|
ItemStack stack = new ItemStack(Material.WHITE_BANNER);
|
||||||
ItemMeta meta = stack.getItemMeta();
|
ItemMeta meta = stack.getItemMeta();
|
||||||
meta.setDisplayName("§6Mode: §cTop");
|
meta.setDisplayName("§6Mode: §cTop");
|
||||||
stack.setItemMeta(meta);
|
stack.setItemMeta(meta);
|
||||||
isList.add(stack);
|
isList.add(stack);
|
||||||
stack = new ItemStack(Material.MAGENTA_WOOL);
|
stack = new ItemStack(Material.ORANGE_BANNER);
|
||||||
meta = stack.getItemMeta();
|
meta = stack.getItemMeta();
|
||||||
meta.setDisplayName("§6Mode: §cFront I");
|
meta.setDisplayName("§6Mode: §cFront I");
|
||||||
stack.setItemMeta(meta);
|
stack.setItemMeta(meta);
|
||||||
isList.add(stack);
|
isList.add(stack);
|
||||||
stack = new ItemStack(Material.BLUE_WOOL);
|
stack = new ItemStack(Material.BLUE_BANNER);
|
||||||
meta = stack.getItemMeta();
|
meta = stack.getItemMeta();
|
||||||
meta.setDisplayName("§6Mode: §cFront II");
|
meta.setDisplayName("§6Mode: §cFront II");
|
||||||
stack.setItemMeta(meta);
|
stack.setItemMeta(meta);
|
||||||
@ -82,43 +156,14 @@ public class log extends Furniture {
|
|||||||
permissions.setItemMeta(meta);
|
permissions.setItemMeta(meta);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public void removeItem(Player p){
|
||||||
public void spawn(Location loc) {
|
Boolean useGameMode = FurnitureLib.getInstance().useGamemode();
|
||||||
b.setType(Material.OAK_LOG);
|
if(useGameMode&&p.getGameMode().equals(GameMode.CREATIVE)){return;}
|
||||||
List<fArmorStand> lStand = new ArrayList<fArmorStand>();
|
Integer slot = p.getInventory().getHeldItemSlot();
|
||||||
|
ItemStack itemStack = p.getInventory().getItemInMainHand().clone();
|
||||||
Location loc1 = getLutil().getRelativ(getCenter(), getBlockFace(), .5, .35);
|
itemStack.setAmount(itemStack.getAmount()-1);
|
||||||
loc1.setYaw(getYaw());
|
p.getInventory().setItem(slot, itemStack);
|
||||||
Location loc2 = getLutil().getRelativ(getCenter(), getBlockFace(), -.7, .35d);
|
p.updateInventory();
|
||||||
loc2.setYaw(getYaw());
|
|
||||||
|
|
||||||
Location loc3 = getLutil().getRelativ(getCenter(), getBlockFace(), -1.3, .35d).subtract(0, 1.0, 0);
|
|
||||||
loc3.setYaw(getYaw());
|
|
||||||
|
|
||||||
fArmorStand stand = spawnArmorStand(loc1);
|
|
||||||
stand.setRightArmPose(new EulerAngle(1.35, 0, 0));
|
|
||||||
stand.setName("0");
|
|
||||||
lStand.add(stand);
|
|
||||||
|
|
||||||
|
|
||||||
stand = spawnArmorStand(loc2);
|
|
||||||
stand.setRightArmPose(getLutil().degresstoRad(new EulerAngle(15, 0, 0)));
|
|
||||||
stand.setName("1");
|
|
||||||
lStand.add(stand);
|
|
||||||
|
|
||||||
stand = spawnArmorStand(loc3);
|
|
||||||
stand.setRightArmPose(getLutil().degresstoRad(new EulerAngle(-30, 0, 0)));
|
|
||||||
stand.setName("2");
|
|
||||||
lStand.add(stand);
|
|
||||||
|
|
||||||
for(fArmorStand asp : lStand){
|
|
||||||
asp.setInvisible(false);
|
|
||||||
asp.setBasePlate(false);
|
|
||||||
asp.setMarker(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
send();
|
|
||||||
Bukkit.getPluginManager().registerEvents(this, getPlugin());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void openInventory(Player p){
|
private void openInventory(Player p){
|
||||||
@ -146,14 +191,14 @@ public class log extends Furniture {
|
|||||||
if(e.getClickedInventory()==null||!e.getClickedInventory().equals(inv)){return;}
|
if(e.getClickedInventory()==null||!e.getClickedInventory().equals(inv)){return;}
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
if(e.getCurrentItem()==null){return;}
|
if(e.getCurrentItem()==null){return;}
|
||||||
if(e.getCurrentItem().getType().equals(Material.WHITE_BANNER)){
|
if(e.getCurrentItem().getType().name().contains("_BANNER")){
|
||||||
Integer i = isList.indexOf(e.getCurrentItem());
|
Integer i = isList.indexOf(e.getCurrentItem());
|
||||||
ItemStack is = null;
|
ItemStack is = null;
|
||||||
if(i>=2){i = -1;}
|
if(i>=2){i = -1;}
|
||||||
i++;
|
i++;
|
||||||
is = isList.get(i);
|
is = isList.get(i);
|
||||||
mode = i;
|
mode = i;
|
||||||
modeSwitch(e.getCurrentItem().getDurability());
|
modeSwitch(e.getCurrentItem().getType());
|
||||||
inv.setItem(e.getSlot(), is);
|
inv.setItem(e.getSlot(), is);
|
||||||
p.updateInventory();
|
p.updateInventory();
|
||||||
}else if(e.getCurrentItem().getType().equals(Material.ARROW)){
|
}else if(e.getCurrentItem().getType().equals(Material.ARROW)){
|
||||||
@ -167,23 +212,24 @@ public class log extends Furniture {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void modeSwitch(short dura){
|
public void modeSwitch(Material type){
|
||||||
int oldArmorStand = 0;
|
int oldArmorStand = 0;
|
||||||
int currentArmorStand = 0;
|
int currentArmorStand = 0;
|
||||||
|
|
||||||
switch (dura) {
|
switch (type) {
|
||||||
case 1:
|
case WHITE_BANNER:
|
||||||
oldArmorStand = 0;
|
oldArmorStand = 0;
|
||||||
currentArmorStand = 1;
|
currentArmorStand = 1;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case ORANGE_BANNER:
|
||||||
oldArmorStand = 1;
|
oldArmorStand = 1;
|
||||||
currentArmorStand = 2;
|
currentArmorStand = 2;
|
||||||
break;
|
break;
|
||||||
case 11:
|
case BLUE_BANNER:
|
||||||
oldArmorStand = 2;
|
oldArmorStand = 2;
|
||||||
currentArmorStand = 0;
|
currentArmorStand = 0;
|
||||||
break;
|
break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
fEntity standOld = null;
|
fEntity standOld = null;
|
||||||
@ -211,156 +257,4 @@ public class log extends Furniture {
|
|||||||
if(e.getInventory().equals(inv)){this.p = null;}
|
if(e.getInventory().equals(inv)){this.p = null;}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@EventHandler
|
|
||||||
public void onBlockClick(FurnitureBlockClickEvent e){
|
|
||||||
if(e.getID() == null || getObjID() == null) return;
|
|
||||||
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
|
|
||||||
if(e.isCancelled()){return;}
|
|
||||||
if(!e.getID().equals(getObjID())){return;}
|
|
||||||
if(!e.canBuild()){return;}
|
|
||||||
e.setCancelled(true);
|
|
||||||
Player p = e.getPlayer();
|
|
||||||
if(p.isSneaking()){
|
|
||||||
if(p.getInventory().getItemInMainHand().getType().isBlock()&&!p.getInventory().getItemInMainHand().getType().equals(Material.AIR)){
|
|
||||||
e.setCancelled(false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
openInventory(p);
|
|
||||||
}else{
|
|
||||||
if(p.getInventory().getItemInMainHand().getType().isBlock() && !p.getInventory().getItemInMainHand().getType().equals(Material.AIR)){
|
|
||||||
this.b.setType(p.getInventory().getItemInMainHand().getType());
|
|
||||||
removeItem(p);
|
|
||||||
return;
|
|
||||||
}else if(!p.getInventory().getItemInMainHand().getType().isBlock() && !p.getInventory().getItemInMainHand().getType().equals(Material.AIR)){
|
|
||||||
fEntity stand = null;
|
|
||||||
if(getProjectByItem(p.getInventory().getItemInMainHand()) != null){return;}
|
|
||||||
for(fEntity s : getObjID().getPacketList()){
|
|
||||||
if(s.getName().equalsIgnoreCase(mode+"")){
|
|
||||||
stand = s;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(stand==null){return;}
|
|
||||||
if(stand.getInventory().getItemInMainHand()!=null&&!stand.getInventory().getItemInMainHand().getType().equals(Material.AIR)){
|
|
||||||
if(p.getInventory().getItemInMainHand()!=null){
|
|
||||||
if(p.getInventory().getItemInMainHand().equals(stand.getItemInMainHand())){
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ItemStack is = stand.getInventory().getItemInMainHand();
|
|
||||||
is.setAmount(1);
|
|
||||||
getWorld().dropItem(getLocation(), is);
|
|
||||||
}
|
|
||||||
|
|
||||||
ItemStack is = p.getInventory().getItemInMainHand().clone();
|
|
||||||
is.setAmount(1);
|
|
||||||
stand.setItemInMainHand(is);
|
|
||||||
update();
|
|
||||||
removeItem(p);
|
|
||||||
return;
|
|
||||||
}else{
|
|
||||||
fEntity stand = null;
|
|
||||||
for(fEntity s : getObjID().getPacketList()){
|
|
||||||
if(s.getName().equalsIgnoreCase(mode+"")){
|
|
||||||
stand = s;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(stand==null){return;}
|
|
||||||
|
|
||||||
if(stand.getInventory().getItemInMainHand()!=null&&!stand.getInventory().getItemInMainHand().getType().equals(Material.AIR)){
|
|
||||||
for(fEntity s : getObjID().getPacketList()){
|
|
||||||
if(s.getName().equalsIgnoreCase(mode+"")){
|
|
||||||
stand = s;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ItemStack is = stand.getInventory().getItemInMainHand();
|
|
||||||
is.setAmount(1);
|
|
||||||
getWorld().dropItem(getLocation(), is);
|
|
||||||
}
|
|
||||||
|
|
||||||
stand.setItemInMainHand(new ItemStack(Material.AIR));
|
|
||||||
update();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void removeItem(Player p){
|
|
||||||
Boolean useGameMode = FurnitureLib.getInstance().useGamemode();
|
|
||||||
if(useGameMode&&p.getGameMode().equals(GameMode.CREATIVE)){return;}
|
|
||||||
Integer slot = p.getInventory().getHeldItemSlot();
|
|
||||||
ItemStack itemStack = p.getInventory().getItemInMainHand().clone();
|
|
||||||
itemStack.setAmount(itemStack.getAmount()-1);
|
|
||||||
p.getInventory().setItem(slot, itemStack);
|
|
||||||
p.updateInventory();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onFurnitureBreak(FurnitureBreakEvent paramFurnitureBreakEvent) {}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onFurnitureClick(FurnitureClickEvent paramFurnitureClickEvent) {}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void onBlockBreak(FurnitureBlockBreakEvent e){
|
|
||||||
if(e.getID() == null || getObjID() == null) return;
|
|
||||||
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
|
|
||||||
if(!e.getID().equals(getObjID())){return;}
|
|
||||||
if(!e.canBuild()){return;}
|
|
||||||
Player p = e.getPlayer();
|
|
||||||
|
|
||||||
fEntity stand = null;
|
|
||||||
for(fEntity s : getObjID().getPacketList()){
|
|
||||||
if(s.getName().equalsIgnoreCase(mode+"")){
|
|
||||||
stand = s;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(stand.getItemInMainHand()!=null&&!stand.getItemInMainHand().getType().equals(Material.AIR)){
|
|
||||||
ItemStack is = stand.getItemInMainHand();
|
|
||||||
is.setAmount(1);
|
|
||||||
getWorld().dropItem(getLocation(), is);
|
|
||||||
}
|
|
||||||
|
|
||||||
destroy(p);
|
|
||||||
b.setType(Material.AIR);
|
|
||||||
b=null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Project getProjectByItem(ItemStack is){
|
|
||||||
ItemStack stack = getItemStackCopy(is);
|
|
||||||
if(stack==null) return null;
|
|
||||||
String systemID = "";
|
|
||||||
if(stack.hasItemMeta()){
|
|
||||||
if(stack.getItemMeta().hasLore()){
|
|
||||||
List<String> s = stack.getItemMeta().getLore();
|
|
||||||
if(HiddenStringUtils.hasHiddenString(s.get(0))) systemID = HiddenStringUtils.extractHiddenString(s.get(0));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for(Project pro : FurnitureLib.getInstance().getFurnitureManager().getProjects()){
|
|
||||||
if(pro==null) continue;
|
|
||||||
if(pro.getSystemID()==null) continue;
|
|
||||||
if(pro.getSystemID().equalsIgnoreCase(systemID)){
|
|
||||||
return pro;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private ItemStack getItemStackCopy(ItemStack is){
|
|
||||||
ItemStack copy = new ItemStack(is.getType());
|
|
||||||
copy.setAmount(1);
|
|
||||||
copy.setDurability(is.getDurability());
|
|
||||||
copy.setItemMeta(is.getItemMeta());
|
|
||||||
return copy;
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -1,7 +0,0 @@
|
|||||||
name: DiceFurniture
|
|
||||||
version: 3.2.1.4
|
|
||||||
description: Add some new Objects to the Server
|
|
||||||
author: Ste3et_C0st
|
|
||||||
website: http://dicecraft.de
|
|
||||||
depend: [FurnitureLib]
|
|
||||||
main: de.Ste3et_C0st.Furniture.Main.main
|
|
@ -253,9 +253,22 @@ public class campfire_2 extends Furniture implements Listener{
|
|||||||
if(is==null){return null;}
|
if(is==null){return null;}
|
||||||
if(is.getType()==null){return null;}
|
if(is.getType()==null){return null;}
|
||||||
if(items.contains(is.getType())){
|
if(items.contains(is.getType())){
|
||||||
String name = is.getType().name();
|
Material mat = null;
|
||||||
Material mat = EnumSet.allOf(Material.class).stream().filter(ma -> ma.name().startsWith(name) && !ma.equals(is.getType())).filter(ma -> ma.name().equalsIgnoreCase("COOKED") || ma.name().equalsIgnoreCase("BAKED")).findFirst().orElse(null);
|
int rnd = (int)(Math.random()*100);
|
||||||
if(mat == null) return null;
|
if(rnd < 5) {
|
||||||
|
mat = Material.COAL;
|
||||||
|
}else {
|
||||||
|
switch(is.getType()) {
|
||||||
|
case BEEF: mat = Material.COOKED_BEEF; break;
|
||||||
|
case CHICKEN: mat = Material.COOKED_CHICKEN; break;
|
||||||
|
case COD: mat = Material.COOKED_COD; break;
|
||||||
|
case POTATO: mat = Material.BAKED_POTATO; break;
|
||||||
|
case PORKCHOP: mat = Material.COOKED_PORKCHOP; break;
|
||||||
|
case RABBIT: mat = Material.RABBIT_STEW; break;
|
||||||
|
case MUTTON: mat = Material.COOKED_MUTTON; break;
|
||||||
|
default: mat = Material.COAL;break;
|
||||||
|
}
|
||||||
|
}
|
||||||
return new ItemStack(mat);
|
return new ItemStack(mat);
|
||||||
}
|
}
|
||||||
return is;
|
return is;
|
||||||
|
Loading…
Reference in New Issue
Block a user