forked from leomelki/LoupGarou
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
GUI for roles and /lg roles update from commentary (PR leomelki#19)
- Il y a un GUI pour changer les rôles plus facilement. L'item pour le GUI est donner si le joueur a la perm 'loupgarou.admin'. - Il y a un item pour lancer la partie simplement. - Changement de l'event 'FoodLevelEvent' qui mettait la nourriture à 6, et c'est franchement pas utile donc il est à 20. Revert "GUI for roles and /lg roles update" This reverts commit 196b94c. GUI for roles and /lg roles update (fix space changes) - Il y a un GUI pour changer les rôles plus facilement. L'item pour le GUI est donner si le joueur a la perm 'loupgarou.admin'. - Il y a un item pour lancer la partie simplement. fix d'un oublie J'ai oublier de mettre le registerEvent pour PlayerInteractListener Revert "fix d'un oublie" This reverts commit 585abeb. fix d'un oublie J'ai oublier de mettre le registerEvent pour PlayerInteractListener Fix items disappears Les items disparaîssent quand on valide les rôles ou en faisant '/lg joinall'
- Loading branch information
1 parent
63d2711
commit d3697fb
Showing
5 changed files
with
198 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
86 changes: 86 additions & 0 deletions
86
src/main/java/fr/leomelki/loupgarou/listeners/PlayerInteractListener.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
package fr.leomelki.loupgarou.listeners; | ||
|
||
import fr.leomelki.loupgarou.MainLg; | ||
import fr.leomelki.loupgarou.roles.Role; | ||
import fr.leomelki.loupgarou.utils.ItemBuilder; | ||
import lombok.Getter; | ||
import org.bukkit.Bukkit; | ||
import org.bukkit.Material; | ||
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.player.PlayerInteractEvent; | ||
import org.bukkit.event.player.PlayerJoinEvent; | ||
import org.bukkit.event.player.PlayerQuitEvent; | ||
import org.bukkit.inventory.Inventory; | ||
import org.bukkit.inventory.ItemStack; | ||
|
||
import java.lang.reflect.Constructor; | ||
import java.util.HashMap; | ||
|
||
public class PlayerInteractListener implements Listener { | ||
|
||
@Getter | ||
private HashMap<String, Constructor<? extends Role>> roles = new HashMap<String, Constructor<? extends Role>>(); | ||
public PlayerInteractListener(HashMap<String, Constructor<? extends Role>> roles) { | ||
this.roles = roles; | ||
} | ||
|
||
@EventHandler | ||
public void onInteract(PlayerInteractEvent e){ | ||
int index = 0; | ||
ItemStack item = e.getItem(); | ||
|
||
if(item == null) return; | ||
|
||
if(item.getType().equals(Material.ENDER_EYE)){ | ||
Player p = e.getPlayer(); | ||
|
||
Inventory gui = Bukkit.createInventory(null, 4*9, "Rôles"); | ||
for (String role : getRoles().keySet()) | ||
gui.setItem(index++, new ItemBuilder(Material.HEART_OF_THE_SEA).setName(role).build()); | ||
gui.setItem(35, new ItemBuilder(Material.GOLD_NUGGET).setName("Valider").build()); | ||
p.openInventory(gui); | ||
} else if (item.getType().equals(Material.EMERALD)){ | ||
Bukkit.dispatchCommand(e.getPlayer(), "lg start " + e.getPlayer().getDisplayName()); | ||
} | ||
} | ||
|
||
@EventHandler | ||
public void onInventoryClick(InventoryClickEvent e){ | ||
Player p = (Player) e.getWhoClicked(); | ||
if(e.getView().getTitle().equals("Rôles")){ | ||
int index = 0; | ||
Integer n = null; | ||
|
||
if(e.getCurrentItem().getType() == Material.GOLD_NUGGET){ | ||
for (Player pl : Bukkit.getOnlinePlayers()) | ||
Bukkit.getPluginManager().callEvent(new PlayerQuitEvent(pl, "joinall")); | ||
for (Player pl : Bukkit.getOnlinePlayers()) | ||
Bukkit.getPluginManager().callEvent(new PlayerJoinEvent(pl, "joinall")); | ||
p.getInventory().setItem(3,new ItemBuilder(Material.EMERALD).setName("Lancer la partie").build()); | ||
p.getInventory().setItem(1,new ItemBuilder(Material.ENDER_EYE).setName("Choisir les rôles").build()); | ||
} else if(e.isLeftClick()){ | ||
for(String role : getRoles().keySet()){ | ||
if(role.equals(e.getCurrentItem().getItemMeta().getDisplayName())){ | ||
n = MainLg.getInstance().getConfig().getInt("role." + role); | ||
Bukkit.dispatchCommand(p, "lg roles set " + index + " " + (n+1)); | ||
return; | ||
} | ||
index++; | ||
} | ||
} else if(e.isRightClick()){ | ||
for(String role : getRoles().keySet()){ | ||
if(role.equals(e.getCurrentItem().getItemMeta().getDisplayName())){ | ||
n = MainLg.getInstance().getConfig().getInt("role." + role); | ||
if(n > 0) | ||
Bukkit.dispatchCommand(p, "lg roles set " + index + " " + (n-1)); | ||
return; | ||
} | ||
index++; | ||
} | ||
} | ||
} | ||
} | ||
} |
78 changes: 78 additions & 0 deletions
78
src/main/java/fr/leomelki/loupgarou/utils/ItemBuilder.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
package fr.leomelki.loupgarou.utils; | ||
|
||
import org.bukkit.Material; | ||
import org.bukkit.inventory.ItemStack; | ||
import org.bukkit.inventory.meta.ItemMeta; | ||
|
||
import java.beans.ConstructorProperties; | ||
|
||
public class ItemBuilder implements Cloneable { | ||
private ItemStack is; | ||
|
||
/** | ||
* Create a new ItemBuilder from scratch. | ||
* | ||
* @param material The material to create the ItemBuilder with. | ||
*/ | ||
@ConstructorProperties({"material"}) | ||
public ItemBuilder(Material material) | ||
{ | ||
this(material, 1); | ||
} | ||
|
||
/** | ||
* Create a new ItemBuilder over an existing itemstack. | ||
* | ||
* @param is The itemstack to create the ItemBuilder over. | ||
*/ | ||
public ItemBuilder(ItemStack is) | ||
{ | ||
this.is = is; | ||
} | ||
|
||
/** | ||
* Create a new ItemBuilder from scratch. | ||
* | ||
* @param m The material of the item. | ||
* @param amount The amount of the item. | ||
*/ | ||
public ItemBuilder(Material m, int amount) | ||
{ | ||
is = new ItemStack(m, amount); | ||
} | ||
|
||
/** | ||
* Clone the ItemBuilder into a new one. | ||
* | ||
* @return The cloned instance. | ||
*/ | ||
@Override | ||
public ItemBuilder clone() | ||
{ | ||
return new ItemBuilder(is); | ||
} | ||
|
||
/** | ||
* Set the displayname of the item. | ||
* | ||
* @param name The name to change it to. | ||
* @return | ||
*/ | ||
public ItemBuilder setName(String name) | ||
{ | ||
ItemMeta im = is.getItemMeta(); | ||
im.setDisplayName(name); | ||
is.setItemMeta(im); | ||
return this; | ||
} | ||
|
||
/** | ||
* Retrieves the itemstack from the ItemBuilder. | ||
* | ||
* @return The itemstack created/modified by the ItemBuilder instance. | ||
*/ | ||
public ItemStack build() | ||
{ | ||
return is; | ||
} | ||
} |