Updated to 2.0.9 (extremely much updates and changes).

This commit is contained in:
CoderMarido 2018-09-01 18:24:10 +02:00
parent 12df56f445
commit f3ada50e9c
132 changed files with 1605 additions and 1002 deletions

45
src/italian/config.yml Normal file
View File

@ -0,0 +1,45 @@
hide-no-perm-categories: true
free-in-creative: false
check-for-updates: true
economy:
enabled: false
default-head-cost: 0
vault-eco:
enabled: true
item-eco:
enabled: false
item:
type: skull_item
damage: 3
name: '&6Player Head Token'
lore:
- '&8Utilizza in /heads!'
player-points-eco:
enabled: false
breaking-head-names:
enabled: true
attempt-hook-blockstore: true
similar-heads-in-cache: true
default-name: 'Decoration Head'
commands:
heads:
label: 'heads'
aliases:
- 'head'
description: 'Ottieni Teste fantastiche'
sub-commands:
# open menu is when no arguments are supplied
get: 'get'
search: 'search'
random: 'random'
help: 'help'
add: 'add'
hand: 'hand'
remove: 'remove'
rename: 'rename'
give: 'give'
cost: 'cost'
category-cost: 'categorycost'
item-eco: 'itemeco'
id: 'id'
reload: 'reload'

BIN
src/italian/heads.cache Normal file

Binary file not shown.

174
src/italian/lang.yml Normal file
View File

@ -0,0 +1,174 @@
updater:
old-version: '&cStai utilizzando una Versione obsoleta di Heads (%version%).'
new-version: '&cStai utilizzando la Versione recente di Heads (%version%).'
currency:
zero: "Gratuito"
non-zero: "%amount%"
exempt: "Gratuito / %cost%"
menu:
get:
open: '&7Apertura Menu...'
added: []
purchased: '&7Acquistata la Testa &6%name% &7per &6%cost%'
not-enough-money: '&cNon hai abbastanza Soldi per acquistare questa Testa!'
transaction-error: '&cErrore durante il Prelievo dei tuoi Soldi'
category-permission: '&cNon hai il permesso per aprire la Categoria &4%category%'
search:
added: []
not-enough-money: '&cNon hai abbastanza Soldi per acquistare questa Testa'
transaction-error: '&cErrore durante il Prelievo dei tuoi Soldi'
category-permission: '&cNon hai il permesso di Ottenere le Teste della Categoria &4%category%'
remove:
open: '&cSeleziona una Testa da rimuovere'
removed: '&cRimossa la Testa &4%name%'
rename:
open: '&7Seleziona una Testa da rinominare in &6%newname%'
renamed: '&7Rinominata la Testa &6%name% &7in &6%newname%'
cost:
open: '&7Seleziona una Testa da impostare con il Costo di &6%newcost%'
set-cost: '&7Il costo della Testa &6%name% &7è stato impostato a &6%newcost%'
category-cost:
open: '&7Seleziona la Categoria di Teste da impostare con il Costo di &6%newcost%'
set-cost: '&7Il costo della Categoria &6%category% &7è stato impostato a &6%newcost%'
open-remove: '&7Seleziona la Categoria di Teste da impostare al Costo iniziale di &6%newcost%'
remove-cost: '&7Il costo della Categoria &6%category% &7è stato portato al Costo iniziale di &6%newcost%'
id:
open: '&7Clicca su una Testa per ottenere il suo ID'
clicked: '&7La Testa &6%name% &7possiede l''ID &6%id%'
command:
unknown-command: '&cComando sconosciuto &4/heads %command%'
errors:
must-be-player: '&cDevi essere un Player per utilizzare questo Comando.'
no-permission: '&cNon hai il Permesso per eseguire questo Comando.'
invalid-arguments: '&4Parametri errati > &c%valid%'
integer: '&cDevi inserire un Numero intero > Hai inserito &4%number%'
number: '&cDevi inserire un Numero > Hai inserito &4%number%'
negative: '&cDevi inserire un Numero positivo > Hai inserito &4%number%'
help:
header: '&8&m&l---&e&l Heads Aiuto &7(&e%page% di %pages%&7) &8&m&l---'
line:
- '&6%command%'
- '&7 - &5%description%'
footer:
- '&8&m&l---&e Vedi /heads help %next-page% &8&m&l---'
unknown-page: '&cPagina sconosciuta &4%page%&c, le pagine devono essere tra &41 &ce &4%pages%'
help:
command: '/heads help [pagina]'
description: 'Apri il Menu di Aiuto'
reload:
reloaded: '&7Config Ricaricata'
help:
command: '/heads reload'
description: 'Ricarica i File di Configurazione di Heads'
get:
head-name: '&7Testa di %name%'
old-method: '&cOttenere le Textures delle Teste non è possibile nelle versioni Spigot inferiori alla 1.8, verrà utilizzato il metodo vecchio.'
adding: '&7Aggiunto la Testa di &6%name% nel tuo Inventario.'
fetching: '&7Ottengo le Texture, attendi...'
cant-find:
- '&cImpossibile trovare le Texture di &4%name%'
- '&4I Server di Autenticazione potrebbero essere offline, oppure il giocatore richiesto non esiste.'
help:
command: '/heads get <player name>'
description: 'Ottieni la Testa di un Player'
search:
found: '&7Trovate &6%heads% Teste &7con il Nome &6%query%'
none-found: '&cNon ho trovato Teste che coincidono con &4%query%'
help:
command: '/heads search <search query>'
description: 'Trova Teste interessanti'
random:
no-heads: '&cNon ci sono Teste nella Cache del Plugin'
cant-find-player: '&cNon riesco a Trovare il Player &4%name%'
retrieve-own: '&7Trovata casualmente la Testa di &6%name%'
retrieve: '&7Hai ricevuto casualmente la Testa di &6%name%'
give: '&7Ho dato la Testa di &6%name% &7a &6%player%'
help:
command: '/heads random [player]'
description: 'Ottieni o Dai una Testa casuale'
add:
not-supported: '&cOttenere le Textures delle Teste non è possibile nelle versioni Spigot inferiori alla 1.8.'
category-length:
- '&cLa Categoria può contenere un Massimo di 32 Caratteri'
- '&cHai inserito &4%category% &c(%length% Caratteri)'
fetching: '&7Ottengo le Texture, attendi...'
cant-find:
- '&cImpossibile trovare le Texture &4%name%'
- '&4I Server di Autenticazione potrebbero essere offline, oppure il giocatore richiesto non esiste.'
added: '&7Aggiunta la Testa di &6%name%&7 alla Categoria &6%category%'
help:
command: '/heads add <player-name> <category> [head name]'
description: 'Aggiungi una Nuova Testa nel Menu'
hand:
not-supported: '&cOttenere le Textures delle Teste non è possibile nelle versioni Spigot inferiori alla 1.8.'
no-texture-property: '&cNessuna Texture adatta trovata, cerco per il nome del giocatore'
no-name-property: '&cNessun nome trovato, la testa non è stata aggiunta.'
not-skull: '&cDevi avere in Mano una Testa per ottenere la sua Texture!'
category-length:
- '&cLa Categoria può contenere un Massimo di 32 Caratteri'
- '&cHai inserito &4%category% &c(%length% Caratteri)'
fetching: '&7Fetching textures, please wait...'
cant-find:
- '&cImpossibile trovare le Texture &4%name%'
- '&4The authentication servers may be down, or the player does not exist.'
adding: '&7Aggiunta la Testa di &6%name%&7 alla Categoria &6%category%'
help:
command: '/heads hand <category> <head name>'
description: 'Aggiungi una nuova Testa in una Categoria'
give:
cant-find-player: '&cIl player &4%name% &cnon è stato trovato.'
cant-find-head: '&cNon ho trovato una Testa con l''ID &4%id%'
give: '&7Hai dato &6%amount% &7delle Teste di &6%head% &7a &6%name%'
invalid-amount: 'Il numero deve essere più grande di 0 > Hai inserito &4%number%'
help:
command: '/heads give <head id> <player> <amount>'
description: 'Dai una Testa ad un Player'
remove:
help:
command: '/heads remove'
description: 'Rimuovi una Testa dal Menu'
rename:
help:
command: '/heads rename <new name>'
description: 'Rinomina una Testa nel Menu'
cost:
help:
command: '/heads cost <new cost>'
description: 'Imposta il Costo di una Testa nel Menu'
category-cost:
help:
command: '/heads categorycost <reset : new cost>'
description: 'Imposta il Costo delle Teste con una Categoria'
open-menu:
help:
command: '/heads'
description: 'Apri il Menu delle Teste'
id:
help:
command: '/heads id'
description: 'Ottieni l''ID di una Testa'
hold-skull: '&cPer favore tieni in mano la Testa di un Player'
unknown-head: '&7Impossibile trovare la Testa &7%head%'
found-id: "&7La Testa che stai tenendo in mano con il Nome &6%name% &7possiede l''ID &6%id%"
item-eco:
help:
command: '/heads itemeco <get:set:give>'
description: 'Edita l''economia delle Teste'
set:
set: '&7L''economia delle Teste è stata impostata sull''item che stai tenendo in Mano'
no-item: '&cDevi tenere in mano un''item per utilizzare questa Funzione!'
help:
command: '/heads itemeco set'
description: 'Imposta l''item dell''economia'
get:
got: '&7Hai ricevuto &6%amount% &7Heads Tokens'
help:
command: '/heads itemeco get [amount]'
description: 'Ottien l''economy Item delle Teste'
give:
given: '&6%amount% &7Heads token items sono stati a &6%player%'
got: '&7Hai ricevuto &6%amount% &7Heads token Items'
unknown-player: '&cImpossibile trovare il Player &4%player%'
help:
command: '/heads itemeco give <player> [amount]'
description: 'Dai l''economy item ad un Player'

289
src/italian/menus.yml Normal file
View File

@ -0,0 +1,289 @@
search-heads:
title: Cerca Teste
head:
type: skull_item
name: '&7%name%'
lore:
- '&8%category%'
damage: 3
head-cost:
type: skull_item
name: '&7%name%'
lore:
- '&8%category%'
- ''
- '&6Costo: &e%cost%'
damage: 3
head-no-perms:
type: skull_item
name: '&7%name%'
lore:
- '&8%category%'
- ''
- '&cNon hai il Permesso'
- '&cDi usare questa Testa'
damage: 3
filler:
type: stained_glass_pane
name: ' '
damage: 15
back:
type: redstone_block
name: '&cTorna al Menu Principale'
forwards:
type: arrow
name: '&7Salta una Pagina'
backwards:
type: arrow
name: '&7Pagina precedente'
get-categories:
title: Categorie
head:
type: skull_item
name: '&6%category%'
lore:
- '&e%heads% Teste'
damage: 3
get-heads:
title: '%category%'
head:
type: skull_item
name: '&7%name%'
lore:
- '&6Costo: &e%cost%'
damage: 3
filler:
type: stained_glass_pane
name: ' '
damage: 15
back:
type: redstone_block
name: '&cTorna al Menu principale'
forwards:
type: arrow
name: '&7Pagina successiva'
backwards:
type: arrow
name: '&7Pagina precedente'
get-confirm:
title: Compra Testa
head:
type: skull_item
name: '&aAcquista %name% per $%cost%'
damage: 3
accept:
type: stained_clay
name: '&aAcquista %name% per $%cost%'
damage: 5
deny:
type: stained_clay
name: '&cAnnulla Acquisto'
damage: 14
id-categories:
title: Categorie
head:
type: skull_item
name: '&6%category%'
lore:
- '&e%heads% Teste'
damage: 3
id-heads:
title: '%category%'
head:
type: skull_item
name: '&7%name%'
lore:
- '&6ID&8: &a%id%'
damage: 3
filler:
type: stained_glass_pane
name: ' '
damage: 15
back:
type: redstone_block
name: '&cTorna al Menu principale'
forwards:
type: arrow
name: '&7Pagina successiva'
backwards:
type: arrow
name: '&7Pagina precedente'
remove-categories:
title: Categorie
head:
type: skull_item
name: '&6%category%'
lore:
- '&e%heads% Teste'
damage: 3
remove-heads:
title: '%category%'
head:
type: skull_item
name: '&cRimuovi %name%'
damage: 3
filler:
type: stained_glass_pane
name: ' '
damage: 15
back:
type: redstone_block
name: '&cTorna al Menu principale'
forwards:
type: arrow
name: '&7Pagina successiva'
backwards:
type: arrow
name: '&7Pagina precedente'
remove-confirm:
title: Rimuovi testa
head:
type: skull_item
name: '&cRimuovi %name%'
damage: 3
accept:
type: stained_clay
name: '&cRimuovi %name%'
damage: 5
deny:
type: stained_clay
name: '&aNon rimuovere %name%'
damage: 14
rename-categories:
title: Categorie
head:
type: skull_item
name: '&6%category%'
lore:
- '&e%heads% Teste'
damage: 3
rename-heads:
title: '%category%'
head:
type: skull_item
name: '&aRinomina %name%'
damage: 3
filler:
type: stained_glass_pane
name: ' '
damage: 15
back:
type: redstone_block
name: '&cTorna al Menu principale'
forwards:
type: arrow
name: '&7Pagina successiva'
backwards:
type: arrow
name: '&7Pagina precedente'
rename-confirm:
title: Rename Head
head:
type: skull_item
name: '&aRinomina %name% in %newname%'
damage: 3
accept:
type: stained_clay
name: '&aRinomina %name% in %newname%'
damage: 5
deny:
type: stained_clay
name: '&aNon rinominare %name%'
damage: 14
cost-categories:
title: Categories
head:
type: skull_item
name: '&6%category%'
lore:
- '&e%heads% Teste'
damage: 3
cost-heads:
title: '%category%'
head:
type: skull_item
name: '&aImposta il costo di %name%'
damage: 3
filler:
type: stained_glass_pane
name: ' '
damage: 15
back:
type: redstone_block
name: '&cTorna al Menu principale'
forwards:
type: arrow
name: '&7Pagina successiva'
backwards:
type: arrow
name: '&7Pagina precedente'
cost-confirm:
title: Imposta il Costo di una Testa
head:
type: skull_item
name: '&aImposta il Costo di %name%'
lore:
- '&7In &6%newcost%'
damage: 3
accept:
type: stained_clay
name: '&aImposta il Costo di %name%'
lore:
- '&7in &6%newcost%'
damage: 5
deny:
type: stained_clay
name: '&aNon impostare il Costo di %name%'
damage: 14
category-cost-categories:
title: Categories
head:
type: skull_item
name: '&7Imposta il costo di &6%category%'
lore:
- '&e%heads% Teste'
damage: 3
category-cost-confirm:
title: Imposta il Costo della Categoria
head:
type: skull_item
name: '&aImposta il Costo di %category%'
lore:
- '&7in &6%newcost%'
damage: 3
accept:
type: stained_clay
name: '&aImposta il Costo di %category%'
lore:
- '&7in &6%newcost%'
damage: 5
deny:
type: stained_clay
name: '&aNon impostare il Costo di %category%'
damage: 14
category-cost-remove-categories:
title: Categorie
head:
type: skull_item
name: '&7Ripristina il Costo di &6%category%'
lore:
- '&e%heads% Teste'
damage: 3
category-cost-remove-confirm:
title: Imposta il Costo della Categoria
head:
type: skull_item
name: '&aRipristina il Costo di %category%'
lore:
- '&7in &6%newcost%'
damage: 3
accept:
type: stained_clay
name: '&aRipristina il Costo di %category%'
lore:
- '&7in &6%newcost%'
damage: 5
deny:
type: stained_clay
name: '&aNon impostare il Costo di %category%'
damage: 14

View File

@ -0,0 +1,68 @@
menu:
categories-title: Categorie
category-title: '%category%'
close:
type: redstone_block
name: '&cChiudi Menu'
back:
type: redstone_block
name: '&cTorna alle Categorie'
search:
type: compass
name: '&7Cerca Teste'
categories:
category:
type: skull_item
name: '&7%category%'
lore:
- '&6%heads% &eTeste'
damage: 3
unselected-page:
type: paper
name: '&7Pagina %page%'
selected-page:
type: empty_map
name: '&7Pagina %page%'
scrollbar:
left:
type: arrow
name: '&7Sinistra'
right:
type: arrow
name: '&7Destra'
no-left:
type: air
no-right:
type: air
filler:
type: stained_glass_pane
name: ' '
damage: 15
heads:
head:
type: skull_item
name: '&7%name%'
lore:
- '&eCosto: &6%cost%'
damage: 3
unselected-page:
type: paper
name: '&7Pagina %page%'
selected-page:
type: empty_map
name: '&7Pagina %page%'
scrollbar:
left:
type: arrow
name: '&7Sinistro'
right:
type: arrow
name: '&7Destro'
no-left:
type: air
no-right:
type: air
filler:
type: stained_glass_pane
name: ' '
damage: 15

View File

@ -1,92 +0,0 @@
package net.sothatsit.heads.config.oldmenu;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Function;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.menu.ui.item.Item;
import net.sothatsit.heads.config.lang.Placeholder;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.inventory.ItemStack;
public class Menu {
private Function<String, Boolean> FILTER_ECONOMY_LINES_OUT = line -> !line.contains("%cost%");
private String title;
private final Map<String, Item> items = new HashMap<>();
private final Menu defaults;
public Menu() {
this(null);
}
public Menu(Menu defaults) {
this.defaults = defaults;
}
public String getTitle(Placeholder... placeholders) {
return title != null ? Placeholder.applyAll(title, placeholders) : "Menu";
}
public Item getItem(String name) {
Item item = items.get(name.toLowerCase());
return item != null ? item : getDefaultItem(name);
}
public ItemStack getItemStack(String name, Placeholder... placeholders) {
Item item = getItem(name);
return item != null ? item.build(getItemLoreFilter(), placeholders) : null;
}
private Item getDefaultItem(String name) {
return defaults != null ? defaults.getItem(name) : null;
}
private Function<String, Boolean> getItemLoreFilter() {
return Heads.getMainConfig().isEconomyEnabled() ? null : FILTER_ECONOMY_LINES_OUT;
}
public void load(String filename, ConfigurationSection section, AtomicBoolean shouldSave) {
for (String key : section.getKeys(false)) {
if (!section.isConfigurationSection(key)) {
loadValue(section, key);
continue;
}
Item item = Item.load(filename, section.getConfigurationSection(key), shouldSave);
if(item == null)
continue;
items.put(key.toLowerCase(), item);
}
}
private void loadValue(ConfigurationSection section, String key) {
if(key.equals("title")) {
title = section.getString(key, null);
return;
}
Heads.warning("Unknown use of value \"" + key + "\" in menu \"" + section.getCurrentPath() + "\"");
}
public static Menu loadMenu(String filename, ConfigurationSection section, AtomicBoolean shouldSave) {
return loadMenu(filename, section, shouldSave, null);
}
public static Menu loadMenu(String filename, ConfigurationSection section, AtomicBoolean shouldSave, Menu defaults) {
Menu menu = new Menu(defaults);
menu.load(filename, section, shouldSave);
return menu;
}
}

View File

@ -1,76 +0,0 @@
package net.sothatsit.heads.config.oldmenu;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.oldmenu.InventoryType;
public class Menus {
public static final String SPLIT = "-";
public static final String CATEGORIES = "categories";
public static final String HEADS = "heads";
public static final String CONFIRM = "confirm";
public static final MenusGroup GET = new MenusGroup("get");
public static final MenusGroup SEARCH = new MenusGroup("search");
public static final MenusGroup REMOVE = new MenusGroup("remove");
public static final MenusGroup RENAME = new MenusGroup("rename");
public static final MenusGroup COST = new MenusGroup("cost");
public static final MenusGroup CATEGORY_COST = new MenusGroup("category-cost");
public static final MenusGroup CATEGORY_COST_REMOVE = new MenusGroup("category-cost-remove");
public static final MenusGroup ID = new MenusGroup("id");
public static Menu get(String name) {
return Heads.getMenuConfig().getMenu(name);
}
public static class MenusGroup {
private String prefix;
public MenusGroup(String prefix) {
this.prefix = prefix;
}
public String getPrefix() {
return prefix;
}
public String getCategoriesName() {
return prefix + SPLIT + CATEGORIES;
}
public String getHeadsName() {
return prefix + SPLIT + HEADS;
}
public String getConfirmName() {
return prefix + SPLIT + CONFIRM;
}
public Menu categories() {
return get(getCategoriesName());
}
public Menu heads() {
return get(getHeadsName());
}
public Menu confirm() {
return get(getConfirmName());
}
public Menu fromType(InventoryType type) {
switch (type) {
case CATEGORY:
return categories();
case HEADS:
return heads();
case CONFIRM:
return confirm();
default:
return null;
}
}
}
}

View File

@ -1,234 +0,0 @@
package net.sothatsit.heads.volatilecode;
import java.util.UUID;
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.properties.Property;
import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.chat.ComponentSerializer;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.volatilecode.reflection.Version;
import net.sothatsit.heads.volatilecode.reflection.nms.nbt.NBTTagString;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import net.sothatsit.heads.volatilecode.reflection.craftbukkit.CraftItemStack;
import net.sothatsit.heads.volatilecode.reflection.nms.ItemStack;
import net.sothatsit.heads.volatilecode.reflection.nms.nbt.NBTTagCompound;
import net.sothatsit.heads.volatilecode.reflection.nms.nbt.NBTTagList;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.meta.ItemMeta;
public class ItemNBT {
public static org.bukkit.inventory.ItemStack addGlow(org.bukkit.inventory.ItemStack itemstack) {
itemstack = itemstack.clone();
if(Version.getVersion().higherThan(Version.v1_10)) {
itemstack.addUnsafeEnchantment(Enchantment.LURE, 1);
ItemMeta meta = itemstack.getItemMeta();
meta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
itemstack.setItemMeta(meta);
return itemstack;
} else {
ItemStack item = CraftItemStack.asNMSCopy(itemstack);
NBTTagCompound tag = item.getTag();
if (tag.isNull())
tag = new NBTTagCompound();
tag.set("ench", new NBTTagList());
item.setTag(tag);
return CraftItemStack.asBukkitCopy(item);
}
}
public static String getTextureProperty(org.bukkit.inventory.ItemStack item) {
return getTextureProperty(CraftItemStack.asNMSCopy(item));
}
public static String getTextureProperty(ItemStack item) {
NBTTagCompound tag = item.getTag();
if (tag == null || tag.getHandle() == null) {
return null;
}
NBTTagCompound skullOwner = tag.getCompound("SkullOwner");
if (skullOwner == null || skullOwner.getHandle() == null) {
return null;
}
NBTTagCompound properties = skullOwner.getCompound("Properties");
if (properties == null || properties.getHandle() == null) {
return null;
}
NBTTagList textures = properties.getList("textures", 10);
if (textures == null || textures.getHandle() == null || textures.size() == 0) {
return null;
}
return textures.get(0).getString("Value");
}
private static ItemStack createNMSSkull() {
if(Version.isBelow(Version.v1_13))
return new ItemStack(net.sothatsit.heads.volatilecode.reflection.nms.Items.getItem("SKULL"), 1, 3);
return new ItemStack(net.sothatsit.heads.volatilecode.reflection.nms.Items.getItem("PLAYER_HEAD"), 1);
}
public static org.bukkit.inventory.ItemStack createHead(CacheHead head, String name) {
if(name == null) {
name = ChatColor.GRAY + head.getName();
}
ItemStack nmsItemstack = createNMSSkull();
NBTTagCompound tag = nmsItemstack.getTag();
if (tag.getHandle() == null) {
tag = new NBTTagCompound();
nmsItemstack.setTag(tag);
}
tag.set("display", createDisplayTag(name, new String[] {ChatColor.DARK_GRAY + head.getCategory()}));
return CraftItemStack.asBukkitCopy(applyNBT(head, nmsItemstack));
}
public static org.bukkit.inventory.ItemStack createHead(GameProfile profile, String name) {
ItemStack nmsItemstack = createNMSSkull();
NBTTagCompound tag = nmsItemstack.getTag();
if (tag.getHandle() == null) {
tag = new NBTTagCompound();
nmsItemstack.setTag(tag);
}
NBTTagCompound skullOwner = tag.getCompound("SkullOwner");
skullOwner.setString("Id", UUID.randomUUID().toString());
skullOwner.setString("Name", "SpigotHeadPlugin");
NBTTagCompound properties = skullOwner.getCompound("Properties");
NBTTagList textures = new NBTTagList();
for (Property property : profile.getProperties().get("textures")) {
NBTTagCompound value = new NBTTagCompound();
value.setString("Value", property.getValue());
if(property.hasSignature()) {
value.setString("Signature", property.getSignature());
}
textures.add(value);
}
properties.set("textures", textures);
skullOwner.set("Properties", properties);
tag.set("SkullOwner", skullOwner);
tag.set("display", createDisplayTag(name, new String[0]));
nmsItemstack.setTag(tag);
return CraftItemStack.asBukkitCopy(nmsItemstack);
}
public static NBTTagCompound createDisplayTag(String name, String[] lore) {
NBTTagCompound display = new NBTTagCompound();
if(Version.isBelow(Version.v1_13)) {
display.setString("Name", name);
NBTTagList list = new NBTTagList();
for(String line : lore) {
list.add(new NBTTagString(line));
}
display.set("Lore", list);
} else {
display.setString("Name", ComponentSerializer.toString(TextComponent.fromLegacyText(name)));
NBTTagList list = new NBTTagList();
for(String line : lore) {
list.add(new NBTTagString(ComponentSerializer.toString(TextComponent.fromLegacyText(line))));
}
display.set("Lore", list);
}
return display;
}
public static org.bukkit.inventory.ItemStack applyHead(CacheHead head, org.bukkit.inventory.ItemStack item) {
if(!Items.isSkull(item))
return item;
ItemStack itemstack = CraftItemStack.asNMSCopy(item);
return CraftItemStack.asBukkitCopy(applyNBT(head, itemstack));
}
private static ItemStack copy(ItemStack itemstack) {
return CraftItemStack.asNMSCopy(CraftItemStack.asBukkitCopy(itemstack));
}
public static ItemStack applyNBT(CacheHead head, ItemStack itemstack) {
itemstack = copy(itemstack);
NBTTagCompound tag = itemstack.getTag();
if (tag.getHandle() == null) {
tag = new NBTTagCompound();
itemstack.setTag(tag);
}
NBTTagCompound skullOwner = tag.getCompound("SkullOwner");
skullOwner.setString("Id", UUID.randomUUID().toString());
skullOwner.setString("Name", "SpigotHeadPlugin");
NBTTagCompound properties = skullOwner.getCompound("Properties");
NBTTagList textures = new NBTTagList();
NBTTagCompound value = new NBTTagCompound();
value.setString("Value", head.getTexture());
if(Bukkit.getPluginManager().getPlugin("SkinsRestorer") == null) {
value.setString("Signature", "");
}
textures.add(value);
properties.set("textures", textures);
skullOwner.set("Properties", properties);
tag.set("SkullOwner", skullOwner);
NBTTagCompound headInfo = new NBTTagCompound();
headInfo.setString("id", Integer.toString(head.getId()));
headInfo.setString("name", head.getName());
headInfo.setString("category", head.getCategory());
headInfo.setString("texture", head.getTexture());
headInfo.setString("cost", Double.toString(head.getCost()));
headInfo.setString("permission", head.getPermission());
tag.set("SpigotHeadPlugin", headInfo);
itemstack.setTag(tag);
return itemstack;
}
}

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads;
package nl.marido.heads;
import java.util.ArrayList;
import java.util.List;
@ -27,13 +27,13 @@ import org.bukkit.plugin.RegisteredListener;
import com.mojang.authlib.GameProfile;
import net.sothatsit.blockstore.BlockStoreApi;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.volatilecode.ItemNBT;
import net.sothatsit.heads.volatilecode.Items;
import net.sothatsit.heads.volatilecode.TextureGetter;
import net.sothatsit.heads.volatilecode.reflection.nms.BlockPosition;
import net.sothatsit.heads.volatilecode.reflection.nms.TileEntitySkull;
import net.sothatsit.heads.volatilecode.reflection.nms.World;
import nl.marido.heads.cache.CacheHead;
import nl.marido.heads.volatilecode.ItemNBT;
import nl.marido.heads.volatilecode.Items;
import nl.marido.heads.volatilecode.TextureGetter;
import nl.marido.heads.volatilecode.reflection.nms.BlockPosition;
import nl.marido.heads.volatilecode.reflection.nms.TileEntitySkull;
import nl.marido.heads.volatilecode.reflection.nms.World;
public class HeadNamer implements Listener {

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads;
package nl.marido.heads;
import java.io.File;
import java.io.IOException;
@ -21,33 +21,33 @@ import org.bukkit.inventory.InventoryHolder;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import net.sothatsit.heads.cache.CacheFile;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.cache.ModsFile;
import net.sothatsit.heads.cache.ModsFileHeader;
import net.sothatsit.heads.cache.legacy.CacheFileConverter;
import net.sothatsit.heads.cache.legacy.LegacyCacheConfig;
import net.sothatsit.heads.command.HeadsCommand;
import net.sothatsit.heads.command.RuntimeCommand;
import net.sothatsit.heads.config.FileConfigFile;
import net.sothatsit.heads.config.MainConfig;
import net.sothatsit.heads.config.lang.Lang;
import net.sothatsit.heads.config.lang.LangConfig;
import net.sothatsit.heads.config.menu.Menus;
import net.sothatsit.heads.config.oldmenu.MenuConfig;
import net.sothatsit.heads.economy.Economy;
import net.sothatsit.heads.economy.ItemEconomy;
import net.sothatsit.heads.economy.NoEconomy;
import net.sothatsit.heads.economy.PlayerPointsEconomy;
import net.sothatsit.heads.economy.VaultEconomy;
import net.sothatsit.heads.menu.ui.InventoryMenu;
import net.sothatsit.heads.oldmenu.ClickInventory;
import net.sothatsit.heads.util.Clock;
import net.sothatsit.heads.volatilecode.injection.ProtocolHackFixer;
import net.sothatsit.heads.volatilecode.reflection.Version;
import net.sothatsit.heads.volatilecode.reflection.craftbukkit.CommandMap;
import net.sothatsit.heads.volatilecode.reflection.craftbukkit.CraftMetaItem;
import net.sothatsit.heads.volatilecode.reflection.craftbukkit.CraftServer;
import nl.marido.heads.cache.CacheFile;
import nl.marido.heads.cache.CacheHead;
import nl.marido.heads.cache.ModsFile;
import nl.marido.heads.cache.ModsFileHeader;
import nl.marido.heads.cache.legacy.CacheFileConverter;
import nl.marido.heads.cache.legacy.LegacyCacheConfig;
import nl.marido.heads.command.HeadsCommand;
import nl.marido.heads.command.RuntimeCommand;
import nl.marido.heads.config.FileConfigFile;
import nl.marido.heads.config.MainConfig;
import nl.marido.heads.config.lang.Lang;
import nl.marido.heads.config.lang.LangConfig;
import nl.marido.heads.config.menu.Menus;
import nl.marido.heads.config.oldmenu.MenuConfig;
import nl.marido.heads.economy.Economy;
import nl.marido.heads.economy.ItemEconomy;
import nl.marido.heads.economy.NoEconomy;
import nl.marido.heads.economy.PlayerPointsEconomy;
import nl.marido.heads.economy.VaultEconomy;
import nl.marido.heads.menu.ui.InventoryMenu;
import nl.marido.heads.oldmenu.ClickInventory;
import nl.marido.heads.util.Clock;
import nl.marido.heads.volatilecode.injection.ProtocolHackFixer;
import nl.marido.heads.volatilecode.reflection.Version;
import nl.marido.heads.volatilecode.reflection.craftbukkit.CommandMap;
import nl.marido.heads.volatilecode.reflection.craftbukkit.CraftMetaItem;
import nl.marido.heads.volatilecode.reflection.craftbukkit.CraftServer;
public class Heads extends JavaPlugin implements Listener {

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads;
package nl.marido.heads;
import java.io.BufferedReader;
import java.io.BufferedWriter;
@ -14,7 +14,7 @@ import java.util.Map;
import org.bukkit.Material;
import net.sothatsit.heads.util.Checks;
import nl.marido.heads.util.Checks;
public class LegacyIDs {

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads;
package nl.marido.heads;
import java.util.List;

View File

@ -1,10 +1,10 @@
package net.sothatsit.heads;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.util.Checks;
package nl.marido.heads;
import java.util.*;
import nl.marido.heads.cache.CacheHead;
import nl.marido.heads.util.Checks;
public final class Search {
private Query query;

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads;
package nl.marido.heads;
import java.io.BufferedReader;
import java.io.IOException;

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.animation;
package nl.marido.heads.animation;
public class Animations {

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.animation;
package nl.marido.heads.animation;
public class LiveData {

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.animation;
package nl.marido.heads.animation;
public class Monitor {

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.api;
package nl.marido.heads.api;
import java.util.List;
import java.util.Set;
@ -8,10 +8,10 @@ import org.bukkit.inventory.ItemStack;
import com.google.common.collect.ImmutableList;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.util.Checks;
import net.sothatsit.heads.volatilecode.TextureGetter;
import nl.marido.heads.Heads;
import nl.marido.heads.cache.CacheHead;
import nl.marido.heads.util.Checks;
import nl.marido.heads.volatilecode.TextureGetter;
public class HeadsAPI {

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.cache;
package nl.marido.heads.cache;
import java.io.File;
import java.io.FileInputStream;
@ -21,10 +21,10 @@ import java.util.function.Consumer;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.Search;
import net.sothatsit.heads.util.Checks;
import net.sothatsit.heads.util.IOUtils;
import nl.marido.heads.Heads;
import nl.marido.heads.Search;
import nl.marido.heads.util.Checks;
import nl.marido.heads.util.IOUtils;
public final class CacheFile implements Mod {

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.cache;
package nl.marido.heads.cache;
import java.io.IOException;
import java.io.ObjectInputStream;
@ -19,12 +19,12 @@ import org.bukkit.inventory.ItemStack;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.config.lang.Lang;
import net.sothatsit.heads.config.lang.Placeholder;
import net.sothatsit.heads.util.Checks;
import net.sothatsit.heads.util.IOUtils;
import net.sothatsit.heads.volatilecode.ItemNBT;
import nl.marido.heads.Heads;
import nl.marido.heads.config.lang.Lang;
import nl.marido.heads.config.lang.Placeholder;
import nl.marido.heads.util.Checks;
import nl.marido.heads.util.IOUtils;
import nl.marido.heads.volatilecode.ItemNBT;
public final class CacheHead implements Comparable<CacheHead> {

View File

@ -1,7 +1,4 @@
package net.sothatsit.heads.cache;
import net.sothatsit.heads.util.Checks;
import net.sothatsit.heads.util.IOUtils;
package nl.marido.heads.cache;
import java.io.IOException;
import java.io.ObjectInputStream;
@ -10,6 +7,9 @@ import java.util.HashSet;
import java.util.List;
import java.util.UUID;
import nl.marido.heads.util.Checks;
import nl.marido.heads.util.IOUtils;
public final class HeadPatch {
private final UUID uniqueId;

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.cache;
package nl.marido.heads.cache;
import java.io.IOException;
import java.io.ObjectInputStream;

View File

@ -1,6 +1,4 @@
package net.sothatsit.heads.cache;
import net.sothatsit.heads.Heads;
package nl.marido.heads.cache;
import java.io.*;
import java.util.*;
@ -8,6 +6,8 @@ import java.util.stream.Collectors;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import nl.marido.heads.Heads;
public final class ModsFile {
private final List<Mod> mods = new ArrayList<>();

View File

@ -1,12 +1,12 @@
package net.sothatsit.heads.cache;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.util.IOUtils;
package nl.marido.heads.cache;
import java.io.*;
import java.util.*;
import java.util.zip.GZIPInputStream;
import nl.marido.heads.Heads;
import nl.marido.heads.util.IOUtils;
public class ModsFileHeader {
private final int version;

View File

@ -1,12 +1,12 @@
package net.sothatsit.heads.cache;
import net.sothatsit.heads.Heads;
package nl.marido.heads.cache;
import java.io.*;
import java.util.*;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import nl.marido.heads.Heads;
public class PatchFile implements Mod {
private final String name;

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.cache.legacy;
package nl.marido.heads.cache.legacy;
import java.io.File;
import java.io.IOException;
@ -8,9 +8,9 @@ import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import net.sothatsit.heads.cache.CacheFile;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.config.DefaultsConfigFile;
import nl.marido.heads.cache.CacheFile;
import nl.marido.heads.cache.CacheHead;
import nl.marido.heads.config.DefaultsConfigFile;
public class CacheFileConverter {

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.cache.legacy;
package nl.marido.heads.cache.legacy;
import java.util.ArrayList;
import java.util.Collections;
@ -8,7 +8,7 @@ import java.util.Set;
import org.bukkit.configuration.ConfigurationSection;
import net.sothatsit.heads.config.ConfigFile;
import nl.marido.heads.config.ConfigFile;
public class LegacyCacheConfig {

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.cache.legacy;
package nl.marido.heads.cache.legacy;
import org.bukkit.configuration.ConfigurationSection;

View File

@ -1,10 +1,11 @@
package net.sothatsit.heads.command;
package nl.marido.heads.command;
import net.sothatsit.heads.config.MainConfig;
import net.sothatsit.heads.config.lang.Lang;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import nl.marido.heads.config.MainConfig;
import nl.marido.heads.config.lang.Lang;
public abstract class AbstractCommand implements CommandExecutor {
public abstract String getCommandLabel(MainConfig config);

View File

@ -1,27 +1,27 @@
package net.sothatsit.heads.command;
package nl.marido.heads.command;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.command.admin.AddCommand;
import net.sothatsit.heads.command.admin.CategoryCostCommand;
import net.sothatsit.heads.command.admin.CostCommand;
import net.sothatsit.heads.command.admin.GiveCommand;
import net.sothatsit.heads.command.admin.HandCommand;
import net.sothatsit.heads.command.admin.IdCommand;
import net.sothatsit.heads.command.admin.ItemEcoCommand;
import net.sothatsit.heads.command.admin.ReloadCommand;
import net.sothatsit.heads.command.admin.RemoveCommand;
import net.sothatsit.heads.command.admin.RenameCommand;
import net.sothatsit.heads.command.user.GetCommand;
import net.sothatsit.heads.command.user.OpenMenuCommand;
import net.sothatsit.heads.command.user.RandomCommand;
import net.sothatsit.heads.command.user.SearchCommand;
import net.sothatsit.heads.config.MainConfig;
import net.sothatsit.heads.config.lang.Lang;
import net.sothatsit.heads.config.lang.LangMessage;
import nl.marido.heads.Heads;
import nl.marido.heads.command.admin.AddCommand;
import nl.marido.heads.command.admin.CategoryCostCommand;
import nl.marido.heads.command.admin.CostCommand;
import nl.marido.heads.command.admin.GiveCommand;
import nl.marido.heads.command.admin.HandCommand;
import nl.marido.heads.command.admin.IdCommand;
import nl.marido.heads.command.admin.ItemEcoCommand;
import nl.marido.heads.command.admin.ReloadCommand;
import nl.marido.heads.command.admin.RemoveCommand;
import nl.marido.heads.command.admin.RenameCommand;
import nl.marido.heads.command.user.GetCommand;
import nl.marido.heads.command.user.OpenMenuCommand;
import nl.marido.heads.command.user.RandomCommand;
import nl.marido.heads.command.user.SearchCommand;
import nl.marido.heads.config.MainConfig;
import nl.marido.heads.config.lang.Lang;
import nl.marido.heads.config.lang.LangMessage;
public class HeadsCommand implements CommandExecutor {

View File

@ -1,12 +1,12 @@
package net.sothatsit.heads.command;
import net.sothatsit.heads.config.MainConfig;
import net.sothatsit.heads.config.lang.Lang;
import net.sothatsit.heads.config.lang.Lang.HelpSection;
package nl.marido.heads.command;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import nl.marido.heads.config.MainConfig;
import nl.marido.heads.config.lang.Lang;
import nl.marido.heads.config.lang.Lang.HelpSection;
public class HelpCommand extends AbstractCommand {
@Override

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.command;
package nl.marido.heads.command;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;

View File

@ -1,16 +1,16 @@
package net.sothatsit.heads.command.admin;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.command.AbstractCommand;
import net.sothatsit.heads.config.MainConfig;
import net.sothatsit.heads.config.lang.Lang;
import net.sothatsit.heads.volatilecode.TextureGetter;
import net.sothatsit.heads.volatilecode.reflection.Version;
package nl.marido.heads.command.admin;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import nl.marido.heads.Heads;
import nl.marido.heads.cache.CacheHead;
import nl.marido.heads.command.AbstractCommand;
import nl.marido.heads.config.MainConfig;
import nl.marido.heads.config.lang.Lang;
import nl.marido.heads.volatilecode.TextureGetter;
import nl.marido.heads.volatilecode.reflection.Version;
public class AddCommand extends AbstractCommand {
@Override

View File

@ -1,14 +1,15 @@
package net.sothatsit.heads.command.admin;
package nl.marido.heads.command.admin;
import net.sothatsit.heads.command.AbstractCommand;
import net.sothatsit.heads.config.MainConfig;
import net.sothatsit.heads.config.lang.Lang;
import net.sothatsit.heads.oldmenu.mode.CategoryCostMode;
import net.sothatsit.heads.oldmenu.mode.InvModeType;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import nl.marido.heads.command.AbstractCommand;
import nl.marido.heads.config.MainConfig;
import nl.marido.heads.config.lang.Lang;
import nl.marido.heads.oldmenu.mode.CategoryCostMode;
import nl.marido.heads.oldmenu.mode.InvModeType;
public class CategoryCostCommand extends AbstractCommand {
@Override

View File

@ -1,15 +1,15 @@
package net.sothatsit.heads.command.admin;
import net.sothatsit.heads.command.AbstractCommand;
import net.sothatsit.heads.config.MainConfig;
import net.sothatsit.heads.config.lang.Lang;
import net.sothatsit.heads.oldmenu.mode.CostMode;
import net.sothatsit.heads.oldmenu.mode.InvModeType;
package nl.marido.heads.command.admin;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import nl.marido.heads.command.AbstractCommand;
import nl.marido.heads.config.MainConfig;
import nl.marido.heads.config.lang.Lang;
import nl.marido.heads.oldmenu.mode.CostMode;
import nl.marido.heads.oldmenu.mode.InvModeType;
public class CostCommand extends AbstractCommand {
@Override

View File

@ -1,10 +1,4 @@
package net.sothatsit.heads.command.admin;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.command.AbstractCommand;
import net.sothatsit.heads.config.MainConfig;
import net.sothatsit.heads.config.lang.Lang;
package nl.marido.heads.command.admin;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
@ -13,6 +7,12 @@ import org.bukkit.entity.Item;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import nl.marido.heads.Heads;
import nl.marido.heads.cache.CacheHead;
import nl.marido.heads.command.AbstractCommand;
import nl.marido.heads.config.MainConfig;
import nl.marido.heads.config.lang.Lang;
public class GiveCommand extends AbstractCommand {
@Override

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.command.admin;
package nl.marido.heads.command.admin;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@ -6,15 +6,15 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.command.AbstractCommand;
import net.sothatsit.heads.config.MainConfig;
import net.sothatsit.heads.config.lang.Lang;
import net.sothatsit.heads.volatilecode.ItemNBT;
import net.sothatsit.heads.volatilecode.Items;
import net.sothatsit.heads.volatilecode.TextureGetter;
import net.sothatsit.heads.volatilecode.reflection.Version;
import nl.marido.heads.Heads;
import nl.marido.heads.cache.CacheHead;
import nl.marido.heads.command.AbstractCommand;
import nl.marido.heads.config.MainConfig;
import nl.marido.heads.config.lang.Lang;
import nl.marido.heads.volatilecode.ItemNBT;
import nl.marido.heads.volatilecode.Items;
import nl.marido.heads.volatilecode.TextureGetter;
import nl.marido.heads.volatilecode.reflection.Version;
public class HandCommand extends AbstractCommand {

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.command.admin;
package nl.marido.heads.command.admin;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
@ -7,13 +7,13 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.command.AbstractCommand;
import net.sothatsit.heads.config.MainConfig;
import net.sothatsit.heads.config.lang.Lang;
import net.sothatsit.heads.volatilecode.ItemNBT;
import net.sothatsit.heads.volatilecode.Items;
import nl.marido.heads.Heads;
import nl.marido.heads.cache.CacheHead;
import nl.marido.heads.command.AbstractCommand;
import nl.marido.heads.config.MainConfig;
import nl.marido.heads.config.lang.Lang;
import nl.marido.heads.volatilecode.ItemNBT;
import nl.marido.heads.volatilecode.Items;
public class IdCommand extends AbstractCommand {

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.command.admin;
package nl.marido.heads.command.admin;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
@ -6,11 +6,11 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.command.AbstractCommand;
import net.sothatsit.heads.config.MainConfig;
import net.sothatsit.heads.config.lang.Lang;
import net.sothatsit.heads.menu.ui.item.Item;
import nl.marido.heads.Heads;
import nl.marido.heads.command.AbstractCommand;
import nl.marido.heads.config.MainConfig;
import nl.marido.heads.config.lang.Lang;
import nl.marido.heads.menu.ui.item.Item;
public class ItemEcoCommand extends AbstractCommand {

View File

@ -1,12 +1,13 @@
package net.sothatsit.heads.command.admin;
package nl.marido.heads.command.admin;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.command.AbstractCommand;
import net.sothatsit.heads.config.MainConfig;
import net.sothatsit.heads.config.lang.Lang;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import nl.marido.heads.Heads;
import nl.marido.heads.command.AbstractCommand;
import nl.marido.heads.config.MainConfig;
import nl.marido.heads.config.lang.Lang;
public class ReloadCommand extends AbstractCommand {
@Override

View File

@ -1,14 +1,14 @@
package net.sothatsit.heads.command.admin;
import net.sothatsit.heads.command.AbstractCommand;
import net.sothatsit.heads.config.MainConfig;
import net.sothatsit.heads.config.lang.Lang;
import net.sothatsit.heads.oldmenu.mode.InvModeType;
package nl.marido.heads.command.admin;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import nl.marido.heads.command.AbstractCommand;
import nl.marido.heads.config.MainConfig;
import nl.marido.heads.config.lang.Lang;
import nl.marido.heads.oldmenu.mode.InvModeType;
public class RemoveCommand extends AbstractCommand {
@Override

View File

@ -1,15 +1,15 @@
package net.sothatsit.heads.command.admin;
import net.sothatsit.heads.command.AbstractCommand;
import net.sothatsit.heads.config.MainConfig;
import net.sothatsit.heads.config.lang.Lang;
import net.sothatsit.heads.oldmenu.mode.InvModeType;
import net.sothatsit.heads.oldmenu.mode.RenameMode;
package nl.marido.heads.command.admin;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import nl.marido.heads.command.AbstractCommand;
import nl.marido.heads.config.MainConfig;
import nl.marido.heads.config.lang.Lang;
import nl.marido.heads.oldmenu.mode.InvModeType;
import nl.marido.heads.oldmenu.mode.RenameMode;
public class RenameCommand extends AbstractCommand {
@Override

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.command.user;
package nl.marido.heads.command.user;
import java.util.UUID;
@ -9,13 +9,13 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.command.AbstractCommand;
import net.sothatsit.heads.config.MainConfig;
import net.sothatsit.heads.config.lang.Lang;
import net.sothatsit.heads.volatilecode.Items;
import net.sothatsit.heads.volatilecode.TextureGetter;
import net.sothatsit.heads.volatilecode.reflection.Version;
import nl.marido.heads.cache.CacheHead;
import nl.marido.heads.command.AbstractCommand;
import nl.marido.heads.config.MainConfig;
import nl.marido.heads.config.lang.Lang;
import nl.marido.heads.volatilecode.Items;
import nl.marido.heads.volatilecode.TextureGetter;
import nl.marido.heads.volatilecode.reflection.Version;
public class GetCommand extends AbstractCommand {

View File

@ -1,13 +1,13 @@
package net.sothatsit.heads.command.user;
package nl.marido.heads.command.user;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import net.sothatsit.heads.command.AbstractCommand;
import net.sothatsit.heads.config.MainConfig;
import net.sothatsit.heads.config.lang.Lang;
import net.sothatsit.heads.oldmenu.mode.InvModeType;
import nl.marido.heads.command.AbstractCommand;
import nl.marido.heads.config.MainConfig;
import nl.marido.heads.config.lang.Lang;
import nl.marido.heads.oldmenu.mode.InvModeType;
public class OpenMenuCommand extends AbstractCommand {

View File

@ -1,18 +1,18 @@
package net.sothatsit.heads.command.user;
package nl.marido.heads.command.user;
import java.util.Random;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.command.AbstractCommand;
import net.sothatsit.heads.config.MainConfig;
import net.sothatsit.heads.config.lang.Lang;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import nl.marido.heads.Heads;
import nl.marido.heads.cache.CacheHead;
import nl.marido.heads.command.AbstractCommand;
import nl.marido.heads.config.MainConfig;
import nl.marido.heads.config.lang.Lang;
public class RandomCommand extends AbstractCommand {
private static final Random RANDOM = new Random();

View File

@ -1,14 +1,15 @@
package net.sothatsit.heads.command.user;
package nl.marido.heads.command.user;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.command.AbstractCommand;
import net.sothatsit.heads.config.MainConfig;
import net.sothatsit.heads.config.lang.Lang;
import net.sothatsit.heads.oldmenu.mode.SearchMode;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import nl.marido.heads.Heads;
import nl.marido.heads.command.AbstractCommand;
import nl.marido.heads.config.MainConfig;
import nl.marido.heads.config.lang.Lang;
import nl.marido.heads.oldmenu.mode.SearchMode;
public class SearchCommand extends AbstractCommand {
@Override

View File

@ -1,10 +1,11 @@
package net.sothatsit.heads.config;
package nl.marido.heads.config;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.menu.ui.item.Item;
import net.sothatsit.heads.util.Checks;
import org.bukkit.configuration.ConfigurationSection;
import nl.marido.heads.Heads;
import nl.marido.heads.menu.ui.item.Item;
import nl.marido.heads.util.Checks;
import java.util.concurrent.atomic.AtomicBoolean;
public abstract class ConfigFile {

View File

@ -1,13 +1,13 @@
package net.sothatsit.heads.config;
package nl.marido.heads.config;
import java.io.InputStream;
import java.io.InputStreamReader;
import net.sothatsit.heads.Heads;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration;
import nl.marido.heads.Heads;
public class DefaultsConfigFile extends ConfigFile {
private ConfigurationSection config;

View File

@ -1,13 +1,13 @@
package net.sothatsit.heads.config;
package nl.marido.heads.config;
import java.io.*;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.util.Checks;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration;
import nl.marido.heads.Heads;
import nl.marido.heads.util.Checks;
public class FileConfigFile extends ConfigFile {
private YamlConfiguration config;

View File

@ -1,19 +1,19 @@
package net.sothatsit.heads.config;
package nl.marido.heads.config;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.menu.ui.item.Item;
import net.sothatsit.heads.util.Checks;
import net.sothatsit.heads.util.Clock;
import net.sothatsit.heads.volatilecode.Items;
import org.bukkit.Bukkit;
import org.bukkit.configuration.ConfigurationSection;
import nl.marido.heads.Heads;
import nl.marido.heads.menu.ui.item.Item;
import nl.marido.heads.util.Checks;
import nl.marido.heads.util.Clock;
import nl.marido.heads.volatilecode.Items;
public class MainConfig {
private final ConfigFile configFile;

View File

@ -1,10 +1,10 @@
package net.sothatsit.heads.config.lang;
package nl.marido.heads.config.lang;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.cache.CacheHead;
import nl.marido.heads.Heads;
import nl.marido.heads.cache.CacheHead;
public class Lang {

View File

@ -1,17 +1,17 @@
package net.sothatsit.heads.config.lang;
package nl.marido.heads.config.lang;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.config.ConfigFile;
import net.sothatsit.heads.config.FileConfigFile;
import net.sothatsit.heads.util.Clock;
import org.bukkit.configuration.ConfigurationSection;
import nl.marido.heads.Heads;
import nl.marido.heads.config.ConfigFile;
import nl.marido.heads.config.FileConfigFile;
import nl.marido.heads.util.Clock;
public class LangConfig {
private final ConfigFile configFile;

View File

@ -1,11 +1,11 @@
package net.sothatsit.heads.config.lang;
package nl.marido.heads.config.lang;
import java.util.Arrays;
import net.sothatsit.heads.util.ArrayUtils;
import org.bukkit.command.CommandSender;
import nl.marido.heads.util.ArrayUtils;
public final class LangMessage {
private final String[] messages;

View File

@ -1,8 +1,9 @@
package net.sothatsit.heads.config.lang;
package nl.marido.heads.config.lang;
import net.sothatsit.heads.util.Checks;
import org.bukkit.ChatColor;
import nl.marido.heads.util.Checks;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

View File

@ -1,16 +1,16 @@
package net.sothatsit.heads.config.menu;
package nl.marido.heads.config.menu;
import java.util.concurrent.atomic.AtomicBoolean;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.config.ConfigFile;
import net.sothatsit.heads.menu.CacheHeadsMenu;
import net.sothatsit.heads.menu.CategoriesMenu;
import net.sothatsit.heads.menu.HeadsMenu;
import net.sothatsit.heads.menu.ui.element.PagedBox;
import net.sothatsit.heads.menu.ui.element.Scrollbar;
import net.sothatsit.heads.menu.ui.item.Item;
import net.sothatsit.heads.util.Checks;
import nl.marido.heads.Heads;
import nl.marido.heads.config.ConfigFile;
import nl.marido.heads.menu.CacheHeadsMenu;
import nl.marido.heads.menu.CategoriesMenu;
import nl.marido.heads.menu.HeadsMenu;
import nl.marido.heads.menu.ui.element.PagedBox;
import nl.marido.heads.menu.ui.element.Scrollbar;
import nl.marido.heads.menu.ui.item.Item;
import nl.marido.heads.util.Checks;
public class MenuConfig {

View File

@ -1,10 +1,10 @@
package net.sothatsit.heads.config.menu;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.menu.CacheHeadsMenu;
package nl.marido.heads.config.menu;
import java.io.File;
import nl.marido.heads.Heads;
import nl.marido.heads.menu.CacheHeadsMenu;
public class Menus {
private MenuConfig browseConfig;

View File

@ -0,0 +1,93 @@
package nl.marido.heads.config.oldmenu;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Function;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.inventory.ItemStack;
import nl.marido.heads.Heads;
import nl.marido.heads.config.lang.Placeholder;
import nl.marido.heads.menu.ui.item.Item;
@Deprecated
public class Menu {
private Function<String, Boolean> FILTER_ECONOMY_LINES_OUT = line -> !line.contains("%cost%");
private String title;
private final Map<String, Item> items = new HashMap<>();
private final Menu defaults;
public Menu() {
this(null);
}
public Menu(Menu defaults) {
this.defaults = defaults;
}
public String getTitle(Placeholder... placeholders) {
return title != null ? Placeholder.applyAll(title, placeholders) : "Menu";
}
public Item getItem(String name) {
Item item = items.get(name.toLowerCase());
return item != null ? item : getDefaultItem(name);
}
public ItemStack getItemStack(String name, Placeholder... placeholders) {
Item item = getItem(name);
return item != null ? item.build(getItemLoreFilter(), placeholders) : null;
}
private Item getDefaultItem(String name) {
return defaults != null ? defaults.getItem(name) : null;
}
private Function<String, Boolean> getItemLoreFilter() {
return Heads.getMainConfig().isEconomyEnabled() ? null : FILTER_ECONOMY_LINES_OUT;
}
public void load(String filename, ConfigurationSection section, AtomicBoolean shouldSave) {
for (String key : section.getKeys(false)) {
if (!section.isConfigurationSection(key)) {
loadValue(section, key);
continue;
}
Item item = Item.load(filename, section.getConfigurationSection(key), shouldSave);
if (item == null)
continue;
items.put(key.toLowerCase(), item);
}
}
private void loadValue(ConfigurationSection section, String key) {
if (key.equals("title")) {
title = section.getString(key, null);
return;
}
Heads.warning("Unknown use of value \"" + key + "\" in menu \"" + section.getCurrentPath() + "\"");
}
public static Menu loadMenu(String filename, ConfigurationSection section, AtomicBoolean shouldSave) {
return loadMenu(filename, section, shouldSave, null);
}
public static Menu loadMenu(String filename, ConfigurationSection section, AtomicBoolean shouldSave, Menu defaults) {
Menu menu = new Menu(defaults);
menu.load(filename, section, shouldSave);
return menu;
}
}

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.config.oldmenu;
package nl.marido.heads.config.oldmenu;
import java.util.HashMap;
import java.util.Map;
@ -6,10 +6,11 @@ import java.util.concurrent.atomic.AtomicBoolean;
import org.bukkit.configuration.ConfigurationSection;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.config.ConfigFile;
import net.sothatsit.heads.util.Clock;
import nl.marido.heads.Heads;
import nl.marido.heads.config.ConfigFile;
import nl.marido.heads.util.Clock;
@Deprecated
public class MenuConfig {
private final ConfigurationSection defaults;

View File

@ -0,0 +1,77 @@
package nl.marido.heads.config.oldmenu;
import nl.marido.heads.Heads;
import nl.marido.heads.oldmenu.InventoryType;
@Deprecated
public class Menus {
public static final String SPLIT = "-";
public static final String CATEGORIES = "categories";
public static final String HEADS = "heads";
public static final String CONFIRM = "confirm";
public static final MenusGroup GET = new MenusGroup("get");
public static final MenusGroup SEARCH = new MenusGroup("search");
public static final MenusGroup REMOVE = new MenusGroup("remove");
public static final MenusGroup RENAME = new MenusGroup("rename");
public static final MenusGroup COST = new MenusGroup("cost");
public static final MenusGroup CATEGORY_COST = new MenusGroup("category-cost");
public static final MenusGroup CATEGORY_COST_REMOVE = new MenusGroup("category-cost-remove");
public static final MenusGroup ID = new MenusGroup("id");
public static Menu get(String name) {
return Heads.getMenuConfig().getMenu(name);
}
public static class MenusGroup {
private String prefix;
public MenusGroup(String prefix) {
this.prefix = prefix;
}
public String getPrefix() {
return prefix;
}
public String getCategoriesName() {
return prefix + SPLIT + CATEGORIES;
}
public String getHeadsName() {
return prefix + SPLIT + HEADS;
}
public String getConfirmName() {
return prefix + SPLIT + CONFIRM;
}
public Menu categories() {
return get(getCategoriesName());
}
public Menu heads() {
return get(getHeadsName());
}
public Menu confirm() {
return get(getConfirmName());
}
public Menu fromType(InventoryType type) {
switch (type) {
case CATEGORY:
return categories();
case HEADS:
return heads();
case CONFIRM:
return confirm();
default:
return null;
}
}
}
}

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.economy;
package nl.marido.heads.economy;
import org.bukkit.entity.Player;

View File

@ -1,10 +1,11 @@
package net.sothatsit.heads.economy;
package nl.marido.heads.economy;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.menu.ui.item.Item;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import nl.marido.heads.Heads;
import nl.marido.heads.menu.ui.item.Item;
public class ItemEconomy implements Economy {
public boolean isItem(ItemStack itemStack) {

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.economy;
package nl.marido.heads.economy;
import org.bukkit.entity.Player;

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.economy;
package nl.marido.heads.economy;
import org.black_ixx.playerpoints.PlayerPoints;
import org.bukkit.Bukkit;

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.economy;
package nl.marido.heads.economy;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.menu;
package nl.marido.heads.menu;
import java.util.List;
import java.util.function.Function;
@ -7,17 +7,17 @@ import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.cache.CacheFile;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.menu.ui.Bounds;
import net.sothatsit.heads.menu.ui.InventoryMenu;
import net.sothatsit.heads.menu.ui.MenuResponse;
import net.sothatsit.heads.menu.ui.element.Element;
import net.sothatsit.heads.menu.ui.item.Button;
import net.sothatsit.heads.menu.ui.item.Item;
import net.sothatsit.heads.util.Checks;
import net.sothatsit.heads.util.Stringify;
import nl.marido.heads.Heads;
import nl.marido.heads.cache.CacheFile;
import nl.marido.heads.cache.CacheHead;
import nl.marido.heads.menu.ui.Bounds;
import nl.marido.heads.menu.ui.InventoryMenu;
import nl.marido.heads.menu.ui.MenuResponse;
import nl.marido.heads.menu.ui.element.Element;
import nl.marido.heads.menu.ui.item.Button;
import nl.marido.heads.menu.ui.item.Item;
import nl.marido.heads.util.Checks;
import nl.marido.heads.util.Stringify;
public class CacheHeadsMenu extends Element {

View File

@ -1,20 +1,21 @@
package net.sothatsit.heads.menu;
package nl.marido.heads.menu;
import net.sothatsit.heads.cache.CacheFile;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.config.lang.Placeholder;
import net.sothatsit.heads.menu.ui.Bounds;
import net.sothatsit.heads.menu.ui.item.Item;
import net.sothatsit.heads.menu.ui.MenuResponse;
import net.sothatsit.heads.menu.ui.element.Element;
import net.sothatsit.heads.menu.ui.element.PagedBox;
import net.sothatsit.heads.menu.ui.item.Button;
import net.sothatsit.heads.util.Checks;
import net.sothatsit.heads.util.SafeCall;
import net.sothatsit.heads.util.Stringify;
import net.sothatsit.heads.volatilecode.Items;
import org.bukkit.inventory.ItemStack;
import nl.marido.heads.cache.CacheFile;
import nl.marido.heads.cache.CacheHead;
import nl.marido.heads.config.lang.Placeholder;
import nl.marido.heads.menu.ui.Bounds;
import nl.marido.heads.menu.ui.MenuResponse;
import nl.marido.heads.menu.ui.element.Element;
import nl.marido.heads.menu.ui.element.PagedBox;
import nl.marido.heads.menu.ui.item.Button;
import nl.marido.heads.menu.ui.item.Item;
import nl.marido.heads.util.Checks;
import nl.marido.heads.util.SafeCall;
import nl.marido.heads.util.Stringify;
import nl.marido.heads.volatilecode.Items;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

View File

@ -1,18 +1,19 @@
package net.sothatsit.heads.menu;
package nl.marido.heads.menu;
import net.sothatsit.heads.menu.ui.Bounds;
import net.sothatsit.heads.menu.ui.MenuResponse;
import net.sothatsit.heads.menu.ui.Position;
import net.sothatsit.heads.menu.ui.element.Container;
import net.sothatsit.heads.menu.ui.element.Element;
import net.sothatsit.heads.menu.ui.item.Button;
import net.sothatsit.heads.menu.ui.item.Item;
import net.sothatsit.heads.util.Checks;
import net.sothatsit.heads.util.SafeCall;
import net.sothatsit.heads.util.Stringify;
import net.sothatsit.heads.volatilecode.Items;
import org.bukkit.Material;
import nl.marido.heads.menu.ui.Bounds;
import nl.marido.heads.menu.ui.MenuResponse;
import nl.marido.heads.menu.ui.Position;
import nl.marido.heads.menu.ui.element.Container;
import nl.marido.heads.menu.ui.element.Element;
import nl.marido.heads.menu.ui.item.Button;
import nl.marido.heads.menu.ui.item.Item;
import nl.marido.heads.util.Checks;
import nl.marido.heads.util.SafeCall;
import nl.marido.heads.util.Stringify;
import nl.marido.heads.volatilecode.Items;
import java.util.concurrent.Callable;
public class ConfirmationMenu extends Element {

View File

@ -1,18 +1,19 @@
package net.sothatsit.heads.menu;
package nl.marido.heads.menu;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.menu.ui.Bounds;
import net.sothatsit.heads.menu.ui.MenuResponse;
import net.sothatsit.heads.menu.ui.element.Element;
import net.sothatsit.heads.menu.ui.element.PagedBox;
import net.sothatsit.heads.menu.ui.item.Button;
import net.sothatsit.heads.menu.ui.item.Item;
import net.sothatsit.heads.util.Checks;
import net.sothatsit.heads.util.SafeCall;
import net.sothatsit.heads.util.Stringify;
import net.sothatsit.heads.volatilecode.Items;
import org.bukkit.inventory.ItemStack;
import nl.marido.heads.cache.CacheHead;
import nl.marido.heads.menu.ui.Bounds;
import nl.marido.heads.menu.ui.MenuResponse;
import nl.marido.heads.menu.ui.element.Element;
import nl.marido.heads.menu.ui.element.PagedBox;
import nl.marido.heads.menu.ui.item.Button;
import nl.marido.heads.menu.ui.item.Item;
import nl.marido.heads.util.Checks;
import nl.marido.heads.util.SafeCall;
import nl.marido.heads.util.Stringify;
import nl.marido.heads.volatilecode.Items;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

View File

@ -1,7 +1,7 @@
package net.sothatsit.heads.menu.ui;
package nl.marido.heads.menu.ui;
import net.sothatsit.heads.util.Checks;
import net.sothatsit.heads.util.Stringify;
import nl.marido.heads.util.Checks;
import nl.marido.heads.util.Stringify;
public final class Bounds {

View File

@ -1,11 +1,5 @@
package net.sothatsit.heads.menu.ui;
package nl.marido.heads.menu.ui;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.menu.ui.element.Container;
import net.sothatsit.heads.menu.ui.element.Element;
import net.sothatsit.heads.menu.ui.item.Button;
import net.sothatsit.heads.util.Checks;
import net.sothatsit.heads.util.Stringify;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
@ -14,6 +8,13 @@ import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.InventoryView;
import org.bukkit.inventory.ItemStack;
import nl.marido.heads.Heads;
import nl.marido.heads.menu.ui.element.Container;
import nl.marido.heads.menu.ui.element.Element;
import nl.marido.heads.menu.ui.item.Button;
import nl.marido.heads.util.Checks;
import nl.marido.heads.util.Stringify;
import java.util.ArrayList;
import java.util.List;

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.menu.ui;
package nl.marido.heads.menu.ui;
public enum MenuResponse {

View File

@ -1,7 +1,7 @@
package net.sothatsit.heads.menu.ui;
package nl.marido.heads.menu.ui;
import net.sothatsit.heads.util.Checks;
import net.sothatsit.heads.util.Stringify;
import nl.marido.heads.util.Checks;
import nl.marido.heads.util.Stringify;
public final class Position {

View File

@ -1,13 +1,13 @@
package net.sothatsit.heads.menu.ui.element;
import net.sothatsit.heads.menu.ui.Bounds;
import net.sothatsit.heads.menu.ui.MenuResponse;
import net.sothatsit.heads.menu.ui.Position;
import net.sothatsit.heads.menu.ui.item.Button;
import net.sothatsit.heads.util.Checks;
package nl.marido.heads.menu.ui.element;
import java.util.Arrays;
import nl.marido.heads.menu.ui.Bounds;
import nl.marido.heads.menu.ui.MenuResponse;
import nl.marido.heads.menu.ui.Position;
import nl.marido.heads.menu.ui.item.Button;
import nl.marido.heads.util.Checks;
public final class Container extends Element {
private final Button[] items;

View File

@ -1,9 +1,9 @@
package net.sothatsit.heads.menu.ui.element;
package nl.marido.heads.menu.ui.element;
import net.sothatsit.heads.menu.ui.Bounds;
import net.sothatsit.heads.menu.ui.item.Button;
import net.sothatsit.heads.util.Checks;
import net.sothatsit.heads.util.Stringify;
import nl.marido.heads.menu.ui.Bounds;
import nl.marido.heads.menu.ui.item.Button;
import nl.marido.heads.util.Checks;
import nl.marido.heads.util.Stringify;
public abstract class Element {

View File

@ -1,15 +1,16 @@
package net.sothatsit.heads.menu.ui.element;
package nl.marido.heads.menu.ui.element;
import net.sothatsit.heads.config.lang.Placeholder;
import net.sothatsit.heads.menu.ui.Bounds;
import net.sothatsit.heads.menu.ui.item.*;
import net.sothatsit.heads.menu.ui.MenuResponse;
import net.sothatsit.heads.util.Checks;
import net.sothatsit.heads.util.Stringify;
import net.sothatsit.heads.volatilecode.Items;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import nl.marido.heads.config.lang.Placeholder;
import nl.marido.heads.menu.ui.Bounds;
import nl.marido.heads.menu.ui.MenuResponse;
import nl.marido.heads.menu.ui.item.*;
import nl.marido.heads.util.Checks;
import nl.marido.heads.util.Stringify;
import nl.marido.heads.volatilecode.Items;
public class PagedBox extends Element {
public static final Item defaultUnselected = Item.create(Material.PAPER).name("&7Page %page%");

View File

@ -1,14 +1,15 @@
package net.sothatsit.heads.menu.ui.element;
package nl.marido.heads.menu.ui.element;
import net.sothatsit.heads.menu.ui.Bounds;
import net.sothatsit.heads.menu.ui.item.Item;
import net.sothatsit.heads.menu.ui.MenuResponse;
import net.sothatsit.heads.menu.ui.item.Button;
import net.sothatsit.heads.util.Checks;
import net.sothatsit.heads.util.Stringify;
import net.sothatsit.heads.volatilecode.Items;
import org.bukkit.Material;
import nl.marido.heads.menu.ui.Bounds;
import nl.marido.heads.menu.ui.MenuResponse;
import nl.marido.heads.menu.ui.item.Button;
import nl.marido.heads.menu.ui.item.Item;
import nl.marido.heads.util.Checks;
import nl.marido.heads.util.Stringify;
import nl.marido.heads.volatilecode.Items;
import java.util.Arrays;
public class Scrollbar extends Element {

View File

@ -1,12 +1,13 @@
package net.sothatsit.heads.menu.ui.item;
package nl.marido.heads.menu.ui.item;
import net.sothatsit.heads.menu.ui.MenuResponse;
import net.sothatsit.heads.util.Checks;
import net.sothatsit.heads.util.SafeCall;
import net.sothatsit.heads.util.SafeCall.SafeCallable;
import net.sothatsit.heads.util.Stringify;
import org.bukkit.inventory.ItemStack;
import nl.marido.heads.menu.ui.MenuResponse;
import nl.marido.heads.util.Checks;
import nl.marido.heads.util.SafeCall;
import nl.marido.heads.util.Stringify;
import nl.marido.heads.util.SafeCall.SafeCallable;
import java.util.concurrent.Callable;
public class Button {

View File

@ -1,11 +1,11 @@
package net.sothatsit.heads.menu.ui.item;
import net.sothatsit.heads.util.Checks;
import net.sothatsit.heads.util.Stringify;
package nl.marido.heads.menu.ui.item;
import java.util.ArrayList;
import java.util.List;
import nl.marido.heads.util.Checks;
import nl.marido.heads.util.Stringify;
public class ButtonGroup {
private final List<SelectableButton> buttons = new ArrayList<>();

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.menu.ui.item;
package nl.marido.heads.menu.ui.item;
import java.util.Arrays;
import java.util.List;
@ -15,13 +15,13 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.material.MaterialData;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.config.lang.Placeholder;
import net.sothatsit.heads.menu.ui.MenuResponse;
import net.sothatsit.heads.util.Checks;
import net.sothatsit.heads.util.Stringify;
import net.sothatsit.heads.volatilecode.ItemNBT;
import net.sothatsit.heads.volatilecode.reflection.Version;
import nl.marido.heads.Heads;
import nl.marido.heads.config.lang.Placeholder;
import nl.marido.heads.menu.ui.MenuResponse;
import nl.marido.heads.util.Checks;
import nl.marido.heads.util.Stringify;
import nl.marido.heads.volatilecode.ItemNBT;
import nl.marido.heads.volatilecode.reflection.Version;
@SuppressWarnings("deprecation")
public final class Item {

View File

@ -1,10 +1,11 @@
package net.sothatsit.heads.menu.ui.item;
package nl.marido.heads.menu.ui.item;
import net.sothatsit.heads.menu.ui.MenuResponse;
import net.sothatsit.heads.util.Checks;
import net.sothatsit.heads.util.Stringify;
import org.bukkit.inventory.ItemStack;
import nl.marido.heads.menu.ui.MenuResponse;
import nl.marido.heads.util.Checks;
import nl.marido.heads.util.Stringify;
import java.util.concurrent.Callable;
public class SelectableButton extends Button {

View File

@ -1,8 +1,5 @@
package net.sothatsit.heads.oldmenu;
package nl.marido.heads.oldmenu;
import net.sothatsit.heads.config.oldmenu.Menu;
import net.sothatsit.heads.config.lang.Placeholder;
import net.sothatsit.heads.oldmenu.mode.InvMode;
import org.bukkit.ChatColor;
import org.bukkit.Bukkit;
@ -10,6 +7,10 @@ import org.bukkit.command.CommandSender;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import nl.marido.heads.config.lang.Placeholder;
import nl.marido.heads.config.oldmenu.Menu;
import nl.marido.heads.oldmenu.mode.InvMode;
public abstract class AbstractModedInventory implements ClickInventory {
private InventoryType type;

View File

@ -1,21 +1,21 @@
package net.sothatsit.heads.oldmenu;
package nl.marido.heads.oldmenu;
import java.util.*;
import net.sothatsit.heads.cache.CacheFile;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.volatilecode.Items;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.config.lang.Placeholder;
import net.sothatsit.heads.oldmenu.mode.InvMode;
import org.bukkit.inventory.meta.ItemMeta;
import nl.marido.heads.Heads;
import nl.marido.heads.cache.CacheFile;
import nl.marido.heads.cache.CacheHead;
import nl.marido.heads.config.lang.Placeholder;
import nl.marido.heads.oldmenu.mode.InvMode;
import nl.marido.heads.volatilecode.Items;
public class CategorySelectMenu extends AbstractModedInventory {
private Map<String, List<CacheHead>> heads;

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.oldmenu;
package nl.marido.heads.oldmenu;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.InventoryHolder;

View File

@ -1,14 +1,14 @@
package net.sothatsit.heads.oldmenu;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.config.oldmenu.Menu;
import net.sothatsit.heads.config.lang.Placeholder;
import net.sothatsit.heads.oldmenu.mode.InvMode;
import net.sothatsit.heads.util.ArrayUtils;
package nl.marido.heads.oldmenu;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import nl.marido.heads.cache.CacheHead;
import nl.marido.heads.config.lang.Placeholder;
import nl.marido.heads.config.oldmenu.Menu;
import nl.marido.heads.oldmenu.mode.InvMode;
import nl.marido.heads.util.ArrayUtils;
public class ConfirmMenu extends AbstractModedInventory {
private CacheHead subject;

View File

@ -1,15 +1,15 @@
package net.sothatsit.heads.oldmenu;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.config.oldmenu.Menu;
import net.sothatsit.heads.config.lang.Placeholder;
import net.sothatsit.heads.oldmenu.mode.InvMode;
import net.sothatsit.heads.oldmenu.mode.SearchMode;
import net.sothatsit.heads.util.ArrayUtils;
package nl.marido.heads.oldmenu;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import nl.marido.heads.cache.CacheHead;
import nl.marido.heads.config.lang.Placeholder;
import nl.marido.heads.config.oldmenu.Menu;
import nl.marido.heads.oldmenu.mode.InvMode;
import nl.marido.heads.oldmenu.mode.SearchMode;
import nl.marido.heads.util.ArrayUtils;
import java.util.List;
public class HeadMenu extends AbstractModedInventory {

View File

@ -1,8 +1,8 @@
package net.sothatsit.heads.oldmenu;
package nl.marido.heads.oldmenu;
import java.lang.reflect.Constructor;
import net.sothatsit.heads.oldmenu.mode.InvMode;
import nl.marido.heads.oldmenu.mode.InvMode;
public enum InventoryType {

View File

@ -1,14 +1,14 @@
package net.sothatsit.heads.oldmenu.mode;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.oldmenu.CategorySelectMenu;
import net.sothatsit.heads.oldmenu.ConfirmMenu;
import net.sothatsit.heads.oldmenu.HeadMenu;
import net.sothatsit.heads.oldmenu.InventoryType;
package nl.marido.heads.oldmenu.mode;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import nl.marido.heads.cache.CacheHead;
import nl.marido.heads.oldmenu.CategorySelectMenu;
import nl.marido.heads.oldmenu.ConfirmMenu;
import nl.marido.heads.oldmenu.HeadMenu;
import nl.marido.heads.oldmenu.InventoryType;
public abstract class BaseMode extends InvMode {
public BaseMode(Player player) {

View File

@ -1,16 +1,17 @@
package net.sothatsit.heads.oldmenu.mode;
package nl.marido.heads.oldmenu.mode;
import net.md_5.bungee.api.ChatColor;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.config.oldmenu.Menus;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.config.oldmenu.Menu;
import net.sothatsit.heads.config.lang.Placeholder;
import net.sothatsit.heads.config.lang.Lang;
import net.sothatsit.heads.oldmenu.ConfirmMenu;
import net.sothatsit.heads.oldmenu.HeadMenu;
import net.sothatsit.heads.oldmenu.InventoryType;
import net.sothatsit.heads.util.ArrayUtils;
import nl.marido.heads.Heads;
import nl.marido.heads.cache.CacheHead;
import nl.marido.heads.config.lang.Lang;
import nl.marido.heads.config.lang.Placeholder;
import nl.marido.heads.config.oldmenu.Menu;
import nl.marido.heads.config.oldmenu.Menus;
import nl.marido.heads.oldmenu.ConfirmMenu;
import nl.marido.heads.oldmenu.HeadMenu;
import nl.marido.heads.oldmenu.InventoryType;
import nl.marido.heads.util.ArrayUtils;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;

View File

@ -1,16 +1,17 @@
package net.sothatsit.heads.oldmenu.mode;
package nl.marido.heads.oldmenu.mode;
import net.md_5.bungee.api.ChatColor;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.config.oldmenu.Menus;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.config.oldmenu.Menu;
import net.sothatsit.heads.config.lang.Placeholder;
import net.sothatsit.heads.config.lang.Lang;
import net.sothatsit.heads.oldmenu.ConfirmMenu;
import net.sothatsit.heads.oldmenu.HeadMenu;
import net.sothatsit.heads.oldmenu.InventoryType;
import net.sothatsit.heads.util.ArrayUtils;
import nl.marido.heads.Heads;
import nl.marido.heads.cache.CacheHead;
import nl.marido.heads.config.lang.Lang;
import nl.marido.heads.config.lang.Placeholder;
import nl.marido.heads.config.oldmenu.Menu;
import nl.marido.heads.config.oldmenu.Menus;
import nl.marido.heads.oldmenu.ConfirmMenu;
import nl.marido.heads.oldmenu.HeadMenu;
import nl.marido.heads.oldmenu.InventoryType;
import nl.marido.heads.util.ArrayUtils;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;

View File

@ -1,19 +1,19 @@
package net.sothatsit.heads.oldmenu.mode;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.config.oldmenu.Menus;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.config.oldmenu.Menu;
import net.sothatsit.heads.config.lang.Placeholder;
import net.sothatsit.heads.config.lang.Lang;
import net.sothatsit.heads.oldmenu.ConfirmMenu;
import net.sothatsit.heads.oldmenu.HeadMenu;
import net.sothatsit.heads.oldmenu.InventoryType;
import net.sothatsit.heads.util.ArrayUtils;
package nl.marido.heads.oldmenu.mode;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import nl.marido.heads.Heads;
import nl.marido.heads.cache.CacheHead;
import nl.marido.heads.config.lang.Lang;
import nl.marido.heads.config.lang.Placeholder;
import nl.marido.heads.config.oldmenu.Menu;
import nl.marido.heads.config.oldmenu.Menus;
import nl.marido.heads.oldmenu.ConfirmMenu;
import nl.marido.heads.oldmenu.HeadMenu;
import nl.marido.heads.oldmenu.InventoryType;
import nl.marido.heads.util.ArrayUtils;
public class CostMode extends BaseMode {
private Double cost = null;

View File

@ -1,16 +1,16 @@
package net.sothatsit.heads.oldmenu.mode;
package nl.marido.heads.oldmenu.mode;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.config.lang.Lang;
import net.sothatsit.heads.config.oldmenu.Menu;
import net.sothatsit.heads.config.oldmenu.Menus;
import net.sothatsit.heads.oldmenu.ConfirmMenu;
import net.sothatsit.heads.oldmenu.HeadMenu;
import net.sothatsit.heads.oldmenu.InventoryType;
import nl.marido.heads.Heads;
import nl.marido.heads.cache.CacheHead;
import nl.marido.heads.config.lang.Lang;
import nl.marido.heads.config.oldmenu.Menu;
import nl.marido.heads.config.oldmenu.Menus;
import nl.marido.heads.oldmenu.ConfirmMenu;
import nl.marido.heads.oldmenu.HeadMenu;
import nl.marido.heads.oldmenu.InventoryType;
public class GetMode extends BaseMode {

View File

@ -1,16 +1,16 @@
package net.sothatsit.heads.oldmenu.mode;
import net.sothatsit.heads.config.oldmenu.Menus;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.config.oldmenu.Menu;
import net.sothatsit.heads.config.lang.Lang;
import net.sothatsit.heads.oldmenu.ConfirmMenu;
import net.sothatsit.heads.oldmenu.HeadMenu;
import net.sothatsit.heads.oldmenu.InventoryType;
package nl.marido.heads.oldmenu.mode;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import nl.marido.heads.cache.CacheHead;
import nl.marido.heads.config.lang.Lang;
import nl.marido.heads.config.oldmenu.Menu;
import nl.marido.heads.config.oldmenu.Menus;
import nl.marido.heads.oldmenu.ConfirmMenu;
import nl.marido.heads.oldmenu.HeadMenu;
import nl.marido.heads.oldmenu.InventoryType;
public class IdMode extends BaseMode {
public IdMode(Player player) {

View File

@ -1,12 +1,12 @@
package net.sothatsit.heads.oldmenu.mode;
import net.sothatsit.heads.config.oldmenu.Menu;
import net.sothatsit.heads.oldmenu.AbstractModedInventory;
import net.sothatsit.heads.oldmenu.InventoryType;
package nl.marido.heads.oldmenu.mode;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import nl.marido.heads.config.oldmenu.Menu;
import nl.marido.heads.oldmenu.AbstractModedInventory;
import nl.marido.heads.oldmenu.InventoryType;
public abstract class InvMode {
private AbstractModedInventory inventory;

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.oldmenu.mode;
package nl.marido.heads.oldmenu.mode;
import org.bukkit.entity.Player;

View File

@ -1,17 +1,17 @@
package net.sothatsit.heads.oldmenu.mode;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.config.oldmenu.Menus;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.config.oldmenu.Menu;
import net.sothatsit.heads.config.lang.Lang;
import net.sothatsit.heads.oldmenu.ConfirmMenu;
import net.sothatsit.heads.oldmenu.HeadMenu;
import net.sothatsit.heads.oldmenu.InventoryType;
package nl.marido.heads.oldmenu.mode;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import nl.marido.heads.Heads;
import nl.marido.heads.cache.CacheHead;
import nl.marido.heads.config.lang.Lang;
import nl.marido.heads.config.oldmenu.Menu;
import nl.marido.heads.config.oldmenu.Menus;
import nl.marido.heads.oldmenu.ConfirmMenu;
import nl.marido.heads.oldmenu.HeadMenu;
import nl.marido.heads.oldmenu.InventoryType;
public class RemoveMode extends BaseMode {
public RemoveMode(Player player) {

View File

@ -1,19 +1,19 @@
package net.sothatsit.heads.oldmenu.mode;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.config.oldmenu.Menus;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.config.oldmenu.Menu;
import net.sothatsit.heads.config.lang.Placeholder;
import net.sothatsit.heads.config.lang.Lang;
import net.sothatsit.heads.oldmenu.ConfirmMenu;
import net.sothatsit.heads.oldmenu.HeadMenu;
import net.sothatsit.heads.oldmenu.InventoryType;
import net.sothatsit.heads.util.ArrayUtils;
package nl.marido.heads.oldmenu.mode;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import nl.marido.heads.Heads;
import nl.marido.heads.cache.CacheHead;
import nl.marido.heads.config.lang.Lang;
import nl.marido.heads.config.lang.Placeholder;
import nl.marido.heads.config.oldmenu.Menu;
import nl.marido.heads.config.oldmenu.Menus;
import nl.marido.heads.oldmenu.ConfirmMenu;
import nl.marido.heads.oldmenu.HeadMenu;
import nl.marido.heads.oldmenu.InventoryType;
import nl.marido.heads.util.ArrayUtils;
public class RenameMode extends BaseMode {
private String name = null;

View File

@ -1,18 +1,18 @@
package net.sothatsit.heads.oldmenu.mode;
package nl.marido.heads.oldmenu.mode;
import java.util.List;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import net.sothatsit.heads.Heads;
import net.sothatsit.heads.cache.CacheHead;
import net.sothatsit.heads.config.lang.Lang;
import net.sothatsit.heads.config.oldmenu.Menu;
import net.sothatsit.heads.config.oldmenu.Menus;
import net.sothatsit.heads.oldmenu.ConfirmMenu;
import net.sothatsit.heads.oldmenu.HeadMenu;
import net.sothatsit.heads.oldmenu.InventoryType;
import nl.marido.heads.Heads;
import nl.marido.heads.cache.CacheHead;
import nl.marido.heads.config.lang.Lang;
import nl.marido.heads.config.oldmenu.Menu;
import nl.marido.heads.config.oldmenu.Menus;
import nl.marido.heads.oldmenu.ConfirmMenu;
import nl.marido.heads.oldmenu.HeadMenu;
import nl.marido.heads.oldmenu.InventoryType;
public class SearchMode extends BaseMode {

View File

@ -1,10 +1,10 @@
package net.sothatsit.heads.patches;
package nl.marido.heads.patches;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPlaceEvent;
import net.sothatsit.heads.volatilecode.reflection.Version;
import nl.marido.heads.volatilecode.reflection.Version;
public class HeadPlace implements Listener {

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.util;
package nl.marido.heads.util;
import java.util.Arrays;

View File

@ -1,4 +1,4 @@
package net.sothatsit.heads.util;
package nl.marido.heads.util;
public class Checks {

Some files were not shown because too many files have changed in this diff Show More