mirror of
https://github.com/TotalFreedomMC/PlayerParticles.git
synced 2025-02-11 03:29:53 +00:00
GUI Pagination
This commit is contained in:
parent
6bf75f81da
commit
bf5f50c1d0
17 changed files with 439 additions and 385 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -54,4 +54,4 @@ Network Trash Folder
|
|||
Temporary Items
|
||||
.apdisk
|
||||
images/
|
||||
*.iml
|
||||
*.iml
|
||||
|
|
|
@ -22,10 +22,20 @@ public abstract class GuiInventory implements InventoryHolder {
|
|||
protected enum BorderColor {
|
||||
WHITE(0, "WHITE_STAINED_GLASS_PANE"),
|
||||
ORANGE(1, "ORANGE_STAINED_GLASS_PANE"),
|
||||
RED(14, "RED_STAINED_GLASS_PANE"),
|
||||
MAGENTA(2, "MAGENTA_STAINED_GLASS_PANE"),
|
||||
LIGHT_BLUE(3, "LIGHT_BLUE_STAINED_GLASS_PANE"),
|
||||
YELLOW(4, "YELLOW_STAINED_GLASS_PANE"),
|
||||
LIME(5, "LIME_STAINED_GLASS_PANE"),
|
||||
PINK(6, "PINK_STAINED_GLASS_PANE"),
|
||||
GRAY(7, "GRAY_STAINED_GLASS_PANE"),
|
||||
LIGHT_GRAY(8, "LIGHT_GRAY_STAINED_GLASS_PANE"),
|
||||
CYAN(9, "CYAN_STAINED_GLASS_PANE"),
|
||||
PURPLE(10, "PURPLE_STAINED_GLASS_PANE"),
|
||||
BLUE(11, "BLUE_STAINED_GLASS_PANE"),
|
||||
BROWN(12, "BROWN_STAINED_GLASS_PANE"),
|
||||
GREEN(13, "GREEN_STAINED_GLASS_PANE"),
|
||||
YELLOW(4, "YELLOW_STAINED_GLASS_PANE");
|
||||
RED(14, "RED_STAINED_GLASS_PANE"),
|
||||
BLACK(15, "BLACK_STAINED_GLASS_PANE");
|
||||
|
||||
private short data;
|
||||
private Material material;
|
||||
|
|
|
@ -117,7 +117,7 @@ public class GuiInventoryDefault extends GuiInventory {
|
|||
(button, isShiftClick) -> {
|
||||
List<GuiInventoryEditFinishedCallback> callbacks = new ArrayList<>();
|
||||
callbacks.add(() -> GuiHandler.transition(new GuiInventoryDefault(pplayer)));
|
||||
callbacks.add(() -> GuiHandler.transition(new GuiInventoryEditEffect(pplayer, editingParticle, callbacks, 1)));
|
||||
callbacks.add(() -> GuiHandler.transition(new GuiInventoryEditEffect(pplayer, editingParticle, 1, callbacks, 1)));
|
||||
callbacks.add(() -> {
|
||||
ParticleGroup group = pplayer.getActiveParticleGroup();
|
||||
if (canEditPrimaryStyleAndData) {
|
||||
|
@ -159,7 +159,7 @@ public class GuiInventoryDefault extends GuiInventory {
|
|||
|
||||
List<GuiInventoryEditFinishedCallback> callbacks = new ArrayList<>();
|
||||
callbacks.add(() -> GuiHandler.transition(new GuiInventoryDefault(pplayer)));
|
||||
callbacks.add(() -> GuiHandler.transition(new GuiInventoryEditStyle(pplayer, editingParticle, callbacks, 1)));
|
||||
callbacks.add(() -> GuiHandler.transition(new GuiInventoryEditStyle(pplayer, editingParticle, 1, callbacks, 1)));
|
||||
callbacks.add(() -> {
|
||||
ParticleGroup group = pplayer.getActiveParticleGroup();
|
||||
for (ParticlePair particle : group.getParticles()) {
|
||||
|
@ -202,7 +202,7 @@ public class GuiInventoryDefault extends GuiInventory {
|
|||
|
||||
List<GuiInventoryEditFinishedCallback> callbacks = new ArrayList<>();
|
||||
callbacks.add(() -> GuiHandler.transition(new GuiInventoryDefault(pplayer)));
|
||||
callbacks.add(() -> GuiHandler.transition(new GuiInventoryEditData(pplayer, editingParticle, callbacks, 1)));
|
||||
callbacks.add(() -> GuiHandler.transition(new GuiInventoryEditData(pplayer, editingParticle, 1, callbacks, 1)));
|
||||
callbacks.add(() -> {
|
||||
ParticleGroup group = pplayer.getActiveParticleGroup();
|
||||
for (ParticlePair particle : group.getParticles()) {
|
||||
|
|
|
@ -9,6 +9,7 @@ import com.esophose.playerparticles.particles.ParticleEffect.NoteColor;
|
|||
import com.esophose.playerparticles.particles.ParticleEffect.OrdinaryColor;
|
||||
import com.esophose.playerparticles.particles.ParticleEffect.ParticleProperty;
|
||||
import com.esophose.playerparticles.particles.ParticlePair;
|
||||
import com.esophose.playerparticles.util.NMSUtil;
|
||||
import com.esophose.playerparticles.util.ParticleUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
|
@ -26,11 +27,10 @@ import java.util.Random;
|
|||
@SuppressWarnings("deprecation")
|
||||
public class GuiInventoryEditData extends GuiInventory {
|
||||
|
||||
private static Random RANDOM = new Random();
|
||||
private static List<Material> BLOCK_MATERIALS, ITEM_MATERIALS;
|
||||
private static ColorData[] colorMapping;
|
||||
private static ColorData[] rainbowColorMapping;
|
||||
private static ColorData[] noteColorMapping;
|
||||
private static ColorData[] noteColorMapping, noteColorMappingOld;
|
||||
|
||||
static {
|
||||
colorMapping = new ColorData[]{
|
||||
|
@ -58,37 +58,66 @@ public class GuiInventoryEditData extends GuiInventory {
|
|||
colorMapping[2], // Yellow
|
||||
colorMapping[3], // Lime
|
||||
colorMapping[7], // Light Blue
|
||||
colorMapping[6], // Cyan
|
||||
colorMapping[5], // Blue
|
||||
colorMapping[8] // Purple
|
||||
colorMapping[8], // Purple
|
||||
colorMapping[9] // Magenta
|
||||
};
|
||||
|
||||
// Note: This is supposed to be a rainbow but there's actually a bug in Minecraft since 1.8 that makes a bunch of them gray
|
||||
noteColorMapping = new ColorData[]{
|
||||
colorMapping[7], // Light Blue
|
||||
colorMapping[7], // Light Blue
|
||||
colorMapping[13], // Gray
|
||||
colorMapping[10], // Pink
|
||||
colorMapping[9], // Magenta
|
||||
colorMapping[9], // Magenta
|
||||
colorMapping[0], // Red
|
||||
colorMapping[2], // Yellow
|
||||
colorMapping[2], // Yellow
|
||||
colorMapping[14], // Light Gray
|
||||
colorMapping[13], // Gray
|
||||
colorMapping[6], // Cyan
|
||||
colorMapping[6], // Cyan
|
||||
colorMapping[6], // Cyan
|
||||
colorMapping[5], // Blue
|
||||
colorMapping[8], // Purple
|
||||
colorMapping[8], // Purple
|
||||
colorMapping[8], // Purple
|
||||
colorMapping[13], // Gray
|
||||
colorMapping[4], // Green
|
||||
colorMapping[3], // Lime
|
||||
colorMapping[2], // Yellow
|
||||
colorMapping[4], // Green
|
||||
colorMapping[7], // Light Blue
|
||||
colorMapping[7] // Light Blue
|
||||
rainbowColorMapping[3], // 0 Lime
|
||||
rainbowColorMapping[3], // 1 Lime
|
||||
rainbowColorMapping[2], // 2 Yellow
|
||||
rainbowColorMapping[1], // 3 Orange
|
||||
rainbowColorMapping[1], // 4 Orange
|
||||
rainbowColorMapping[0], // 5 Red
|
||||
rainbowColorMapping[0], // 6 Red
|
||||
rainbowColorMapping[0], // 7 Red
|
||||
rainbowColorMapping[8], // 8 Magenta
|
||||
rainbowColorMapping[8], // 9 Magenta
|
||||
rainbowColorMapping[7], // 10 Purple
|
||||
rainbowColorMapping[7], // 11 Purple
|
||||
rainbowColorMapping[7], // 12 Purple
|
||||
rainbowColorMapping[6], // 13 Blue
|
||||
rainbowColorMapping[6], // 14 Blue
|
||||
rainbowColorMapping[6], // 15 Blue
|
||||
rainbowColorMapping[6], // 16 Blue
|
||||
rainbowColorMapping[5], // 17 Cyan
|
||||
rainbowColorMapping[5], // 18 Cyan
|
||||
rainbowColorMapping[5], // 20 Lime
|
||||
rainbowColorMapping[5], // 21 Lime
|
||||
rainbowColorMapping[5], // 22 Lime
|
||||
rainbowColorMapping[5], // 23 Lime
|
||||
rainbowColorMapping[5] // 24 Lime
|
||||
};
|
||||
|
||||
// Note: Minecraft 1.8 through 1.13 had screwed up note color values, they were thankfully fixed in 1.14
|
||||
noteColorMappingOld = new ColorData[]{
|
||||
colorMapping[7], // 0 Light Blue
|
||||
colorMapping[7], // 1 Light Blue
|
||||
colorMapping[13], // 2 Gray
|
||||
colorMapping[10], // 3 Pink
|
||||
colorMapping[9], // 4 Magenta
|
||||
colorMapping[9], // 5 Magenta
|
||||
colorMapping[0], // 6 Red
|
||||
colorMapping[2], // 7 Yellow
|
||||
colorMapping[2], // 8 Yellow
|
||||
colorMapping[14], // 9 Light Gray
|
||||
colorMapping[13], // 10 Gray
|
||||
colorMapping[6], // 11 Cyan
|
||||
colorMapping[6], // 12 Cyan
|
||||
colorMapping[6], // 13 Cyan
|
||||
colorMapping[5], // 14 Blue
|
||||
colorMapping[8], // 15 Purple
|
||||
colorMapping[8], // 16 Purple
|
||||
colorMapping[8], // 17 Purple
|
||||
colorMapping[13], // 18 Gray
|
||||
colorMapping[4], // 19 Green
|
||||
colorMapping[3], // 20 Lime
|
||||
colorMapping[2], // 21 Yellow
|
||||
colorMapping[4], // 22 Green
|
||||
colorMapping[7], // 23 Light Blue
|
||||
colorMapping[7] // 24 Light Blue
|
||||
};
|
||||
|
||||
BLOCK_MATERIALS = new ArrayList<>();
|
||||
|
@ -110,21 +139,23 @@ public class GuiInventoryEditData extends GuiInventory {
|
|||
}
|
||||
}
|
||||
|
||||
public GuiInventoryEditData(PPlayer pplayer, ParticlePair editingParticle, List<GuiInventoryEditFinishedCallback> callbackList, int callbackListPosition) {
|
||||
public GuiInventoryEditData(PPlayer pplayer, ParticlePair editingParticle, int pageNumber, List<GuiInventoryEditFinishedCallback> callbackList, int callbackListPosition) {
|
||||
super(pplayer, Bukkit.createInventory(pplayer.getPlayer(), INVENTORY_SIZE, LangManager.getText(Lang.GUI_SELECT_DATA)));
|
||||
|
||||
this.fillBorder(BorderColor.MAGENTA);
|
||||
|
||||
ParticleEffect pe = editingParticle.getEffect();
|
||||
if (pe.hasProperty(ParticleProperty.COLORABLE)) {
|
||||
if (pe == ParticleEffect.NOTE) { // Note data
|
||||
this.populateNoteData(editingParticle, callbackList, callbackListPosition);
|
||||
this.populateNoteData(editingParticle, pageNumber, callbackList, callbackListPosition);
|
||||
} else { // Color data
|
||||
this.populateColorData(editingParticle, callbackList, callbackListPosition);
|
||||
this.populateColorData(editingParticle, pageNumber, callbackList, callbackListPosition);
|
||||
}
|
||||
} else if (pe.hasProperty(ParticleProperty.REQUIRES_MATERIAL_DATA)) {
|
||||
if (pe == ParticleEffect.ITEM) { // Item data
|
||||
this.populateItemData(editingParticle, callbackList, callbackListPosition);
|
||||
this.populateItemData(editingParticle, pageNumber, callbackList, callbackListPosition);
|
||||
} else { // Block data
|
||||
this.populateBlockData(editingParticle, callbackList, callbackListPosition);
|
||||
this.populateBlockData(editingParticle, pageNumber, callbackList, callbackListPosition);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -144,14 +175,14 @@ public class GuiInventoryEditData extends GuiInventory {
|
|||
* Populates the Inventory with available color data options
|
||||
*
|
||||
* @param editingParticle The ParticlePair that's being edited
|
||||
* @param pageNumber The current page number
|
||||
* @param callbackList The List of GuiInventoryEditFinishedCallbacks
|
||||
* @param callbackListPosition The index of the callbackList we're currently at
|
||||
*/
|
||||
private void populateColorData(ParticlePair editingParticle, List<GuiInventoryEditFinishedCallback> callbackList, int callbackListPosition) {
|
||||
private void populateColorData(ParticlePair editingParticle, int pageNumber, List<GuiInventoryEditFinishedCallback> callbackList, int callbackListPosition) {
|
||||
int index = 10;
|
||||
int nextWrap = 17;
|
||||
for (int i = 0; i < colorMapping.length; i++) {
|
||||
ColorData colorData = colorMapping[i];
|
||||
for (ColorData colorData : colorMapping) {
|
||||
String formattedDisplayColor = ChatColor.RED.toString() + colorData.getOrdinaryColor().getRed() + " " + ChatColor.GREEN + colorData.getOrdinaryColor().getGreen() + " " + ChatColor.AQUA + colorData.getOrdinaryColor().getBlue();
|
||||
|
||||
// Color Data Buttons
|
||||
|
@ -206,18 +237,26 @@ public class GuiInventoryEditData extends GuiInventory {
|
|||
*
|
||||
* @param editingParticle The ParticlePair that's being edited
|
||||
* @param callbackList The List of GuiInventoryEditFinishedCallbacks
|
||||
* @param pageNumber The current page number
|
||||
* @param callbackListPosition The index of the callbackList we're currently at
|
||||
*/
|
||||
private void populateNoteData(ParticlePair editingParticle, List<GuiInventoryEditFinishedCallback> callbackList, int callbackListPosition) {
|
||||
for (int i = 0; i < noteColorMapping.length; i++) {
|
||||
ColorData colorData = noteColorMapping[i];
|
||||
private void populateNoteData(ParticlePair editingParticle, int pageNumber, List<GuiInventoryEditFinishedCallback> callbackList, int callbackListPosition) {
|
||||
int numberOfItems = noteColorMapping.length;
|
||||
int maxPages = (int) Math.floor(numberOfItems / 28.0);
|
||||
int itemsPerPage = 14;
|
||||
int slot = 10;
|
||||
int nextWrap = 17;
|
||||
int maxSlot = 43;
|
||||
|
||||
for (int i = (pageNumber - 1) * itemsPerPage; i < numberOfItems; i++) {
|
||||
ColorData colorData = NMSUtil.getVersionNumber() > 13 ? noteColorMapping[i] : noteColorMappingOld[i];
|
||||
String formattedDisplayName = LangManager.getText(Lang.GUI_COLOR_ICON_NAME) + LangManager.getText(Lang.GUI_SELECT_DATA_NOTE, i) + " (" + colorData.getName() + LangManager.getText(Lang.GUI_COLOR_ICON_NAME) + ")";
|
||||
String formattedDescription = LangManager.getText(Lang.GUI_COLOR_INFO) + LangManager.getText(Lang.GUI_SELECT_DATA_DESCRIPTION, LangManager.getText(Lang.GUI_SELECT_DATA_NOTE, i));
|
||||
|
||||
// Note Color Buttons
|
||||
int noteIndex = i;
|
||||
GuiActionButton setColorButton = new GuiActionButton(
|
||||
i,
|
||||
slot,
|
||||
colorData,
|
||||
formattedDisplayName,
|
||||
new String[]{formattedDescription},
|
||||
|
@ -226,6 +265,13 @@ public class GuiInventoryEditData extends GuiInventory {
|
|||
callbackList.get(callbackListPosition + 1).execute();
|
||||
});
|
||||
this.actionButtons.add(setColorButton);
|
||||
|
||||
slot++;
|
||||
if (slot == nextWrap) { // Loop around border
|
||||
nextWrap += 9;
|
||||
slot += 2;
|
||||
}
|
||||
if (slot > maxSlot) break; // Overflowed the available space
|
||||
}
|
||||
|
||||
// Rainbow Note Data Button
|
||||
|
@ -255,6 +301,28 @@ public class GuiInventoryEditData extends GuiInventory {
|
|||
callbackList.get(callbackListPosition + 1).execute();
|
||||
});
|
||||
this.actionButtons.add(setRandomColorButton);
|
||||
|
||||
// Previous page button
|
||||
if (pageNumber != 1) {
|
||||
GuiActionButton previousPageButton = new GuiActionButton(
|
||||
INVENTORY_SIZE - 6,
|
||||
GuiIcon.PREVIOUS_PAGE.get(),
|
||||
LangManager.getText(Lang.GUI_COLOR_INFO) + LangManager.getText(Lang.GUI_PREVIOUS_PAGE_BUTTON, pageNumber - 1, maxPages),
|
||||
new String[]{},
|
||||
(button, isShiftClick) -> GuiHandler.transition(new GuiInventoryEditData(this.pplayer, editingParticle, pageNumber - 1, callbackList, callbackListPosition)));
|
||||
this.actionButtons.add(previousPageButton);
|
||||
}
|
||||
|
||||
// Next page button
|
||||
if (pageNumber != maxPages) {
|
||||
GuiActionButton nextPageButton = new GuiActionButton(
|
||||
INVENTORY_SIZE - 4,
|
||||
GuiIcon.NEXT_PAGE.get(),
|
||||
LangManager.getText(Lang.GUI_COLOR_INFO) + LangManager.getText(Lang.GUI_NEXT_PAGE_BUTTON, pageNumber + 1, maxPages),
|
||||
new String[]{},
|
||||
(button, isShiftClick) -> GuiHandler.transition(new GuiInventoryEditData(this.pplayer, editingParticle, pageNumber + 1, callbackList, callbackListPosition)));
|
||||
this.actionButtons.add(nextPageButton);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -262,20 +330,22 @@ public class GuiInventoryEditData extends GuiInventory {
|
|||
*
|
||||
* @param editingParticle The ParticlePair that's being edited
|
||||
* @param callbackList The List of GuiInventoryEditFinishedCallbacks
|
||||
* @param pageNumber The current page number
|
||||
* @param callbackListPosition The index of the callbackList we're currently at
|
||||
*/
|
||||
private void populateItemData(ParticlePair editingParticle, List<GuiInventoryEditFinishedCallback> callbackList, int callbackListPosition) {
|
||||
List<Material> materialBag = new ArrayList<>();
|
||||
while (materialBag.size() < 36) { // Grab 36 random materials that are an item
|
||||
Material randomMaterial = ITEM_MATERIALS.get(RANDOM.nextInt(ITEM_MATERIALS.size()));
|
||||
if (!materialBag.contains(randomMaterial)) materialBag.add(randomMaterial);
|
||||
}
|
||||
private void populateItemData(ParticlePair editingParticle, int pageNumber, List<GuiInventoryEditFinishedCallback> callbackList, int callbackListPosition) {
|
||||
int numberOfItems = ITEM_MATERIALS.size();
|
||||
int maxPages = (int) Math.floor(numberOfItems / 28.0);
|
||||
int itemsPerPage = 28;
|
||||
int slot = 10;
|
||||
int nextWrap = 17;
|
||||
int maxSlot = 43;
|
||||
|
||||
for (int i = 0; i < materialBag.size(); i++) {
|
||||
for (int i = (pageNumber - 1) * itemsPerPage; i < numberOfItems; i++) {
|
||||
// Item Data Button
|
||||
Material material = materialBag.get(i);
|
||||
Material material = ITEM_MATERIALS.get(i);
|
||||
GuiActionButton setRainbowColorButton = new GuiActionButton(
|
||||
i,
|
||||
slot,
|
||||
material,
|
||||
LangManager.getText(Lang.GUI_COLOR_ICON_NAME) + material.name().toLowerCase(),
|
||||
new String[]{LangManager.getText(Lang.GUI_COLOR_INFO) + LangManager.getText(Lang.GUI_SELECT_DATA_DESCRIPTION, material.name().toLowerCase())},
|
||||
|
@ -284,18 +354,36 @@ public class GuiInventoryEditData extends GuiInventory {
|
|||
callbackList.get(callbackListPosition + 1).execute();
|
||||
});
|
||||
this.actionButtons.add(setRainbowColorButton);
|
||||
|
||||
slot++;
|
||||
if (slot == nextWrap) { // Loop around border
|
||||
nextWrap += 9;
|
||||
slot += 2;
|
||||
}
|
||||
if (slot > maxSlot) break; // Overflowed the available space
|
||||
}
|
||||
|
||||
// Randomize Button, re-randomizes the icons
|
||||
GuiActionButton randomizeButton = new GuiActionButton(
|
||||
45,
|
||||
GuiIcon.RANDOMIZE.get(),
|
||||
LangManager.getText(Lang.GUI_COLOR_ICON_NAME) + LangManager.getText(Lang.GUI_SELECT_DATA_RANDOMIZE_ITEMS),
|
||||
new String[]{LangManager.getText(Lang.GUI_COLOR_SUBTEXT) + LangManager.getText(Lang.GUI_SELECT_DATA_RANDOMIZE_ITEMS_DESCRIPTION)},
|
||||
(block, isShiftClick) -> {
|
||||
callbackList.get(callbackListPosition).execute(); // Just reopen the same inventory
|
||||
});
|
||||
this.actionButtons.add(randomizeButton);
|
||||
// Previous page button
|
||||
if (pageNumber != 1) {
|
||||
GuiActionButton previousPageButton = new GuiActionButton(
|
||||
INVENTORY_SIZE - 6,
|
||||
GuiIcon.PREVIOUS_PAGE.get(),
|
||||
LangManager.getText(Lang.GUI_COLOR_INFO) + LangManager.getText(Lang.GUI_PREVIOUS_PAGE_BUTTON, pageNumber - 1, maxPages),
|
||||
new String[]{},
|
||||
(button, isShiftClick) -> GuiHandler.transition(new GuiInventoryEditData(this.pplayer, editingParticle, pageNumber - 1, callbackList, callbackListPosition)));
|
||||
this.actionButtons.add(previousPageButton);
|
||||
}
|
||||
|
||||
// Next page button
|
||||
if (pageNumber != maxPages) {
|
||||
GuiActionButton nextPageButton = new GuiActionButton(
|
||||
INVENTORY_SIZE - 4,
|
||||
GuiIcon.NEXT_PAGE.get(),
|
||||
LangManager.getText(Lang.GUI_COLOR_INFO) + LangManager.getText(Lang.GUI_NEXT_PAGE_BUTTON, pageNumber + 1, maxPages),
|
||||
new String[]{},
|
||||
(button, isShiftClick) -> GuiHandler.transition(new GuiInventoryEditData(this.pplayer, editingParticle, pageNumber + 1, callbackList, callbackListPosition)));
|
||||
this.actionButtons.add(nextPageButton);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -303,20 +391,22 @@ public class GuiInventoryEditData extends GuiInventory {
|
|||
*
|
||||
* @param editingParticle The ParticlePair that's being edited
|
||||
* @param callbackList The List of GuiInventoryEditFinishedCallbacks
|
||||
* @param pageNumber The current page number
|
||||
* @param callbackListPosition The index of the callbackList we're currently at
|
||||
*/
|
||||
private void populateBlockData(ParticlePair editingParticle, List<GuiInventoryEditFinishedCallback> callbackList, int callbackListPosition) {
|
||||
List<Material> materialBag = new ArrayList<>();
|
||||
while (materialBag.size() < 36) { // Grab 36 random materials that are an item
|
||||
Material randomMaterial = BLOCK_MATERIALS.get(RANDOM.nextInt(BLOCK_MATERIALS.size()));
|
||||
if (!materialBag.contains(randomMaterial)) materialBag.add(randomMaterial);
|
||||
}
|
||||
private void populateBlockData(ParticlePair editingParticle, int pageNumber, List<GuiInventoryEditFinishedCallback> callbackList, int callbackListPosition) {
|
||||
int numberOfItems = BLOCK_MATERIALS.size();
|
||||
int maxPages = (int) Math.floor(numberOfItems / 28.0);
|
||||
int itemsPerPage = 28;
|
||||
int slot = 10;
|
||||
int nextWrap = 17;
|
||||
int maxSlot = 43;
|
||||
|
||||
for (int i = 0; i < materialBag.size(); i++) {
|
||||
for (int i = (pageNumber - 1) * itemsPerPage; i < numberOfItems; i++) {
|
||||
// Item Data Button
|
||||
Material material = materialBag.get(i);
|
||||
Material material = BLOCK_MATERIALS.get(i);
|
||||
GuiActionButton setRainbowColorButton = new GuiActionButton(
|
||||
i,
|
||||
slot,
|
||||
material,
|
||||
LangManager.getText(Lang.GUI_COLOR_ICON_NAME) + material.name().toLowerCase(),
|
||||
new String[]{LangManager.getText(Lang.GUI_COLOR_INFO) + LangManager.getText(Lang.GUI_SELECT_DATA_DESCRIPTION, material.name().toLowerCase())},
|
||||
|
@ -325,18 +415,36 @@ public class GuiInventoryEditData extends GuiInventory {
|
|||
callbackList.get(callbackListPosition + 1).execute();
|
||||
});
|
||||
this.actionButtons.add(setRainbowColorButton);
|
||||
|
||||
slot++;
|
||||
if (slot == nextWrap) { // Loop around border
|
||||
nextWrap += 9;
|
||||
slot += 2;
|
||||
}
|
||||
if (slot > maxSlot) break; // Overflowed the available space
|
||||
}
|
||||
|
||||
// Randomize Button, re-randomizes the icons
|
||||
GuiActionButton randomizeButton = new GuiActionButton(
|
||||
45,
|
||||
GuiIcon.RANDOMIZE.get(),
|
||||
LangManager.getText(Lang.GUI_COLOR_ICON_NAME) + LangManager.getText(Lang.GUI_SELECT_DATA_RANDOMIZE_BLOCKS),
|
||||
new String[]{LangManager.getText(Lang.GUI_COLOR_SUBTEXT) + LangManager.getText(Lang.GUI_SELECT_DATA_RANDOMIZE_BLOCKS_DESCRIPTION)},
|
||||
(block, isShiftClick) -> {
|
||||
callbackList.get(callbackListPosition).execute(); // Just reopen the same inventory
|
||||
});
|
||||
this.actionButtons.add(randomizeButton);
|
||||
// Previous page button
|
||||
if (pageNumber != 1) {
|
||||
GuiActionButton previousPageButton = new GuiActionButton(
|
||||
INVENTORY_SIZE - 6,
|
||||
GuiIcon.PREVIOUS_PAGE.get(),
|
||||
LangManager.getText(Lang.GUI_COLOR_INFO) + LangManager.getText(Lang.GUI_PREVIOUS_PAGE_BUTTON, pageNumber - 1, maxPages),
|
||||
new String[]{},
|
||||
(button, isShiftClick) -> GuiHandler.transition(new GuiInventoryEditData(this.pplayer, editingParticle, pageNumber - 1, callbackList, callbackListPosition)));
|
||||
this.actionButtons.add(previousPageButton);
|
||||
}
|
||||
|
||||
// Next page button
|
||||
if (pageNumber != maxPages) {
|
||||
GuiActionButton nextPageButton = new GuiActionButton(
|
||||
INVENTORY_SIZE - 4,
|
||||
GuiIcon.NEXT_PAGE.get(),
|
||||
LangManager.getText(Lang.GUI_COLOR_INFO) + LangManager.getText(Lang.GUI_NEXT_PAGE_BUTTON, pageNumber + 1, maxPages),
|
||||
new String[]{},
|
||||
(button, isShiftClick) -> GuiHandler.transition(new GuiInventoryEditData(this.pplayer, editingParticle, pageNumber + 1, callbackList, callbackListPosition)));
|
||||
this.actionButtons.add(nextPageButton);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -14,16 +14,24 @@ import java.util.List;
|
|||
|
||||
public class GuiInventoryEditEffect extends GuiInventory {
|
||||
|
||||
public GuiInventoryEditEffect(PPlayer pplayer, ParticlePair editingParticle, List<GuiInventoryEditFinishedCallback> callbackList, int callbackListPosition) {
|
||||
public GuiInventoryEditEffect(PPlayer pplayer, ParticlePair editingParticle, int pageNumber, List<GuiInventoryEditFinishedCallback> callbackList, int callbackListPosition) {
|
||||
super(pplayer, Bukkit.createInventory(pplayer.getPlayer(), INVENTORY_SIZE, LangManager.getText(Lang.GUI_SELECT_EFFECT)));
|
||||
|
||||
this.fillBorder(BorderColor.LIGHT_BLUE);
|
||||
|
||||
// Select Effect Buttons
|
||||
List<ParticleEffect> effectsUserHasPermissionFor = PermissionManager.getEffectsUserHasPermissionFor(pplayer.getPlayer());
|
||||
for (int i = 0; i < effectsUserHasPermissionFor.size(); i++) {
|
||||
// TODO: Paginate when there are more effects than will fit normally
|
||||
int numberOfItems = effectsUserHasPermissionFor.size();
|
||||
int maxPages = (int) Math.floor(numberOfItems / 28.0);
|
||||
int itemsPerPage = 28;
|
||||
int slot = 10;
|
||||
int nextWrap = 17;
|
||||
int maxSlot = 43;
|
||||
|
||||
for (int i = (pageNumber - 1) * itemsPerPage; i < numberOfItems; i++) {
|
||||
ParticleEffect effect = effectsUserHasPermissionFor.get(i);
|
||||
GuiActionButton selectButton = new GuiActionButton(
|
||||
i,
|
||||
slot,
|
||||
GuiIcon.EFFECT.get(effect.getName()),
|
||||
LangManager.getText(Lang.GUI_COLOR_ICON_NAME) + ParticleUtils.formatName(effect.getName()),
|
||||
new String[]{LangManager.getText(Lang.GUI_COLOR_INFO) + LangManager.getText(Lang.GUI_SELECT_EFFECT_DESCRIPTION, ParticleUtils.formatName(effect.getName()))},
|
||||
|
@ -32,6 +40,13 @@ public class GuiInventoryEditEffect extends GuiInventory {
|
|||
callbackList.get(callbackListPosition + 1).execute();
|
||||
});
|
||||
this.actionButtons.add(selectButton);
|
||||
|
||||
slot++;
|
||||
if (slot == nextWrap) { // Loop around border
|
||||
nextWrap += 9;
|
||||
slot += 2;
|
||||
}
|
||||
if (slot > maxSlot) break; // Overflowed the available space
|
||||
}
|
||||
|
||||
// Back Button
|
||||
|
@ -43,6 +58,28 @@ public class GuiInventoryEditEffect extends GuiInventory {
|
|||
(button, isShiftClick) -> callbackList.get(callbackListPosition - 1).execute());
|
||||
this.actionButtons.add(backButton);
|
||||
|
||||
// Previous page button
|
||||
if (pageNumber != 1) {
|
||||
GuiActionButton previousPageButton = new GuiActionButton(
|
||||
INVENTORY_SIZE - 6,
|
||||
GuiIcon.PREVIOUS_PAGE.get(),
|
||||
LangManager.getText(Lang.GUI_COLOR_INFO) + LangManager.getText(Lang.GUI_PREVIOUS_PAGE_BUTTON, pageNumber - 1, maxPages),
|
||||
new String[]{},
|
||||
(button, isShiftClick) -> GuiHandler.transition(new GuiInventoryEditEffect(pplayer, editingParticle, pageNumber - 1, callbackList, callbackListPosition)));
|
||||
this.actionButtons.add(previousPageButton);
|
||||
}
|
||||
|
||||
// Next page button
|
||||
if (pageNumber != maxPages) {
|
||||
GuiActionButton nextPageButton = new GuiActionButton(
|
||||
INVENTORY_SIZE - 4,
|
||||
GuiIcon.NEXT_PAGE.get(),
|
||||
LangManager.getText(Lang.GUI_COLOR_INFO) + LangManager.getText(Lang.GUI_NEXT_PAGE_BUTTON, pageNumber + 1, maxPages),
|
||||
new String[]{},
|
||||
(button, isShiftClick) -> GuiHandler.transition(new GuiInventoryEditEffect(pplayer, editingParticle, pageNumber + 1, callbackList, callbackListPosition)));
|
||||
this.actionButtons.add(nextPageButton);
|
||||
}
|
||||
|
||||
this.populate();
|
||||
}
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ public class GuiInventoryEditParticle extends GuiInventory {
|
|||
(button, isShiftClick) -> {
|
||||
List<GuiInventoryEditFinishedCallback> callbacks = new ArrayList<>();
|
||||
callbacks.add(() -> GuiHandler.transition(new GuiInventoryEditParticle(pplayer, editingParticle)));
|
||||
callbacks.add(() -> GuiHandler.transition(new GuiInventoryEditEffect(pplayer, editingParticle, callbacks, 1)));
|
||||
callbacks.add(() -> GuiHandler.transition(new GuiInventoryEditEffect(pplayer, editingParticle, 1, callbacks, 1)));
|
||||
callbacks.add(() -> {
|
||||
ParticleGroup group = pplayer.getActiveParticleGroup();
|
||||
for (ParticlePair particle : group.getParticles()) {
|
||||
|
@ -65,7 +65,7 @@ public class GuiInventoryEditParticle extends GuiInventory {
|
|||
(button, isShiftClick) -> {
|
||||
List<GuiInventoryEditFinishedCallback> callbacks = new ArrayList<>();
|
||||
callbacks.add(() -> GuiHandler.transition(new GuiInventoryEditParticle(pplayer, editingParticle)));
|
||||
callbacks.add(() -> GuiHandler.transition(new GuiInventoryEditStyle(pplayer, editingParticle, callbacks, 1)));
|
||||
callbacks.add(() -> GuiHandler.transition(new GuiInventoryEditStyle(pplayer, editingParticle, 1, callbacks, 1)));
|
||||
callbacks.add(() -> {
|
||||
ParticleGroup group = pplayer.getActiveParticleGroup();
|
||||
for (ParticlePair particle : group.getParticles()) {
|
||||
|
@ -94,7 +94,7 @@ public class GuiInventoryEditParticle extends GuiInventory {
|
|||
if (usesData) {
|
||||
List<GuiInventoryEditFinishedCallback> callbacks = new ArrayList<>();
|
||||
callbacks.add(() -> GuiHandler.transition(new GuiInventoryEditParticle(pplayer, editingParticle)));
|
||||
callbacks.add(() -> GuiHandler.transition(new GuiInventoryEditData(pplayer, editingParticle, callbacks, 1)));
|
||||
callbacks.add(() -> GuiHandler.transition(new GuiInventoryEditData(pplayer, editingParticle, 1, callbacks, 1)));
|
||||
callbacks.add(() -> {
|
||||
ParticleGroup group = pplayer.getActiveParticleGroup();
|
||||
for (ParticlePair particle : group.getParticles()) {
|
||||
|
|
|
@ -14,15 +14,24 @@ import java.util.List;
|
|||
|
||||
public class GuiInventoryEditStyle extends GuiInventory {
|
||||
|
||||
public GuiInventoryEditStyle(PPlayer pplayer, ParticlePair editingParticle, List<GuiInventoryEditFinishedCallback> callbackList, int callbackListPosition) {
|
||||
public GuiInventoryEditStyle(PPlayer pplayer, ParticlePair editingParticle, int pageNumber, List<GuiInventoryEditFinishedCallback> callbackList, int callbackListPosition) {
|
||||
super(pplayer, Bukkit.createInventory(pplayer.getPlayer(), INVENTORY_SIZE, LangManager.getText(Lang.GUI_SELECT_STYLE)));
|
||||
|
||||
this.fillBorder(BorderColor.BLUE);
|
||||
|
||||
// Select Style Buttons
|
||||
List<ParticleStyle> stylesUserHasPermissionFor = PermissionManager.getStylesUserHasPermissionFor(pplayer.getPlayer());
|
||||
for (int i = 0; i < stylesUserHasPermissionFor.size(); i++) {
|
||||
int numberOfItems = stylesUserHasPermissionFor.size();
|
||||
int maxPages = (int) Math.floor(numberOfItems / 28.0);
|
||||
int itemsPerPage = 28;
|
||||
int slot = 10;
|
||||
int nextWrap = 17;
|
||||
int maxSlot = 43;
|
||||
|
||||
for (int i = (pageNumber - 1) * itemsPerPage; i < numberOfItems; i++) {
|
||||
ParticleStyle style = stylesUserHasPermissionFor.get(i);
|
||||
GuiActionButton selectButton = new GuiActionButton(
|
||||
i,
|
||||
slot,
|
||||
GuiIcon.STYLE.get(style.getName()),
|
||||
LangManager.getText(Lang.GUI_COLOR_ICON_NAME) + ParticleUtils.formatName(style.getName()),
|
||||
new String[]{LangManager.getText(Lang.GUI_COLOR_INFO) + LangManager.getText(Lang.GUI_SELECT_EFFECT_DESCRIPTION, ParticleUtils.formatName(style.getName()))},
|
||||
|
@ -31,6 +40,13 @@ public class GuiInventoryEditStyle extends GuiInventory {
|
|||
callbackList.get(callbackListPosition + 1).execute();
|
||||
});
|
||||
this.actionButtons.add(selectButton);
|
||||
|
||||
slot++;
|
||||
if (slot == nextWrap) { // Loop around border
|
||||
nextWrap += 9;
|
||||
slot += 2;
|
||||
}
|
||||
if (slot > maxSlot) break; // Overflowed the available space
|
||||
}
|
||||
|
||||
// Back Button
|
||||
|
@ -42,6 +58,28 @@ public class GuiInventoryEditStyle extends GuiInventory {
|
|||
(button, isShiftClick) -> callbackList.get(callbackListPosition - 1).execute());
|
||||
this.actionButtons.add(backButton);
|
||||
|
||||
// Previous page button
|
||||
if (pageNumber != 1) {
|
||||
GuiActionButton previousPageButton = new GuiActionButton(
|
||||
INVENTORY_SIZE - 6,
|
||||
GuiIcon.PREVIOUS_PAGE.get(),
|
||||
LangManager.getText(Lang.GUI_COLOR_INFO) + LangManager.getText(Lang.GUI_PREVIOUS_PAGE_BUTTON, pageNumber - 1, maxPages),
|
||||
new String[]{},
|
||||
(button, isShiftClick) -> GuiHandler.transition(new GuiInventoryEditStyle(pplayer, editingParticle, pageNumber - 1, callbackList, callbackListPosition)));
|
||||
this.actionButtons.add(previousPageButton);
|
||||
}
|
||||
|
||||
// Next page button
|
||||
if (pageNumber != maxPages) {
|
||||
GuiActionButton nextPageButton = new GuiActionButton(
|
||||
INVENTORY_SIZE - 4,
|
||||
GuiIcon.NEXT_PAGE.get(),
|
||||
LangManager.getText(Lang.GUI_COLOR_INFO) + LangManager.getText(Lang.GUI_NEXT_PAGE_BUTTON, pageNumber + 1, maxPages),
|
||||
new String[]{},
|
||||
(button, isShiftClick) -> GuiHandler.transition(new GuiInventoryEditStyle(pplayer, editingParticle, pageNumber + 1, callbackList, callbackListPosition)));
|
||||
this.actionButtons.add(nextPageButton);
|
||||
}
|
||||
|
||||
this.populate();
|
||||
}
|
||||
|
||||
|
|
|
@ -1,165 +0,0 @@
|
|||
package com.esophose.playerparticles.gui;
|
||||
|
||||
import com.esophose.playerparticles.gui.hook.PlayerChatHook;
|
||||
import com.esophose.playerparticles.gui.hook.PlayerChatHookData;
|
||||
import com.esophose.playerparticles.manager.DataManager;
|
||||
import com.esophose.playerparticles.manager.LangManager;
|
||||
import com.esophose.playerparticles.manager.LangManager.Lang;
|
||||
import com.esophose.playerparticles.manager.PermissionManager;
|
||||
import com.esophose.playerparticles.manager.SettingManager.GuiIcon;
|
||||
import com.esophose.playerparticles.manager.SettingManager.PSetting;
|
||||
import com.esophose.playerparticles.particles.PPlayer;
|
||||
import com.esophose.playerparticles.particles.ParticleGroup;
|
||||
import com.esophose.playerparticles.particles.ParticlePair;
|
||||
import com.esophose.playerparticles.util.ParticleUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
public class GuiInventoryManageFixedEffects extends GuiInventory {
|
||||
|
||||
public GuiInventoryManageFixedEffects(PPlayer pplayer) {
|
||||
super(pplayer, Bukkit.createInventory(pplayer.getPlayer(), INVENTORY_SIZE, LangManager.getText(Lang.GUI_MANAGE_YOUR_GROUPS)));
|
||||
|
||||
this.fillBorder(BorderColor.YELLOW);
|
||||
|
||||
int index = 10;
|
||||
int nextWrap = 17;
|
||||
int maxIndex = 35;
|
||||
List<ParticleGroup> groups = pplayer.getParticleGroups();
|
||||
groups.sort(Comparator.comparing(ParticleGroup::getName));
|
||||
|
||||
for (ParticleGroup group : groups) {
|
||||
if (group.getName().equals(ParticleGroup.DEFAULT_NAME)) continue;
|
||||
|
||||
List<ParticlePair> particles = group.getParticles();
|
||||
particles.sort(Comparator.comparingInt(ParticlePair::getId));
|
||||
|
||||
String[] lore = new String[particles.size() + 2];
|
||||
lore[0] = LangManager.getText(Lang.GUI_COLOR_SUBTEXT) + LangManager.getText(Lang.GUI_CLICK_TO_LOAD, particles.size());
|
||||
int i = 1;
|
||||
for (ParticlePair particle : particles) {
|
||||
lore[i] = LangManager.getText(Lang.GUI_COLOR_INFO) + LangManager.getText(Lang.GUI_PARTICLE_INFO, particle.getId(), ParticleUtils.formatName(particle.getEffect().getName()), ParticleUtils.formatName(particle.getStyle().getName()), particle.getDataString());
|
||||
i++;
|
||||
}
|
||||
lore[i] = LangManager.getText(Lang.GUI_COLOR_UNAVAILABLE) + LangManager.getText(Lang.GUI_SHIFT_CLICK_TO_DELETE);
|
||||
|
||||
// Load Group Buttons
|
||||
GuiActionButton groupButton = new GuiActionButton(
|
||||
index, GuiIcon.GROUPS.get(),
|
||||
LangManager.getText(Lang.GUI_COLOR_ICON_NAME) + group.getName(),
|
||||
lore,
|
||||
(button, isShiftClick) -> {
|
||||
if (isShiftClick) {
|
||||
DataManager.removeParticleGroup(pplayer.getUniqueId(), group);
|
||||
|
||||
this.actionButtons.remove(button);
|
||||
this.inventory.setItem(button.getSlot(), null);
|
||||
} else {
|
||||
ParticleGroup activeGroup = pplayer.getActiveParticleGroup();
|
||||
activeGroup.getParticles().clear();
|
||||
for (ParticlePair particle : particles)
|
||||
activeGroup.getParticles().add(particle.clone());
|
||||
DataManager.saveParticleGroup(pplayer.getUniqueId(), activeGroup);
|
||||
|
||||
if (PSetting.GUI_CLOSE_AFTER_GROUP_SELECTED.getBoolean()) {
|
||||
pplayer.getPlayer().closeInventory();
|
||||
}
|
||||
}
|
||||
});
|
||||
this.actionButtons.add(groupButton);
|
||||
|
||||
index++;
|
||||
if (index == nextWrap) { // Loop around border
|
||||
nextWrap += 9;
|
||||
index += 2;
|
||||
}
|
||||
if (index > maxIndex) break; // Overflowed the available space
|
||||
}
|
||||
|
||||
boolean hasReachedMax = PermissionManager.hasPlayerReachedMaxGroups(pplayer);
|
||||
boolean hasParticles = !pplayer.getActiveParticles().isEmpty();
|
||||
String[] lore;
|
||||
if (hasReachedMax) {
|
||||
lore = new String[]{
|
||||
LangManager.getText(Lang.GUI_COLOR_INFO) + LangManager.getText(Lang.GUI_SAVE_GROUP_DESCRIPTION),
|
||||
LangManager.getText(Lang.GUI_COLOR_UNAVAILABLE) + LangManager.getText(Lang.GUI_SAVE_GROUP_FULL)
|
||||
};
|
||||
} else if (!hasParticles) {
|
||||
lore = new String[]{
|
||||
LangManager.getText(Lang.GUI_COLOR_INFO) + LangManager.getText(Lang.GUI_SAVE_GROUP_DESCRIPTION),
|
||||
LangManager.getText(Lang.GUI_COLOR_UNAVAILABLE) + LangManager.getText(Lang.GUI_SAVE_GROUP_NO_PARTICLES)
|
||||
};
|
||||
} else {
|
||||
lore = new String[]{LangManager.getText(Lang.GUI_COLOR_INFO) + LangManager.getText(Lang.GUI_SAVE_GROUP_DESCRIPTION)};
|
||||
}
|
||||
|
||||
// Save Group Button
|
||||
GuiActionButton saveGroupButton = new GuiActionButton(
|
||||
40,
|
||||
GuiIcon.CREATE.get(),
|
||||
LangManager.getText(Lang.GUI_COLOR_ICON_NAME) + LangManager.getText(Lang.GUI_SAVE_GROUP),
|
||||
lore,
|
||||
(button, isShiftClick) -> {
|
||||
if (hasReachedMax || !hasParticles)
|
||||
return;
|
||||
|
||||
PlayerChatHook.addHook(new PlayerChatHookData(pplayer.getUniqueId(), 15, (textEntered) -> {
|
||||
if (textEntered == null || textEntered.equalsIgnoreCase("cancel")) {
|
||||
GuiHandler.transition(new GuiInventoryManageGroups(pplayer));
|
||||
} else {
|
||||
String groupName = textEntered.split(" ")[0];
|
||||
|
||||
// Check that the groupName isn't the reserved name
|
||||
if (groupName.equalsIgnoreCase(ParticleGroup.DEFAULT_NAME)) {
|
||||
LangManager.sendMessage(pplayer, Lang.GROUP_RESERVED);
|
||||
return;
|
||||
}
|
||||
|
||||
// The database column can only hold up to 100 characters, cut it off there
|
||||
if (groupName.length() >= 100) {
|
||||
groupName = groupName.substring(0, 100);
|
||||
}
|
||||
|
||||
// Use the existing group if available, otherwise create a new one
|
||||
ParticleGroup group = pplayer.getParticleGroupByName(groupName);
|
||||
boolean groupUpdated = false;
|
||||
if (group == null) {
|
||||
List<ParticlePair> particles = new ArrayList<ParticlePair>();
|
||||
for (ParticlePair particle : pplayer.getActiveParticles())
|
||||
particles.add(particle.clone()); // Make sure the ParticlePairs aren't the same references in both the active and saved group
|
||||
group = new ParticleGroup(groupName, particles);
|
||||
} else {
|
||||
groupUpdated = true;
|
||||
}
|
||||
|
||||
// Apply changes and notify player
|
||||
DataManager.saveParticleGroup(pplayer.getUniqueId(), group);
|
||||
if (groupUpdated) {
|
||||
LangManager.sendMessage(pplayer, Lang.GROUP_SAVE_SUCCESS_OVERWRITE, groupName);
|
||||
} else {
|
||||
LangManager.sendMessage(pplayer, Lang.GROUP_SAVE_SUCCESS, groupName);
|
||||
}
|
||||
|
||||
GuiHandler.transition(new GuiInventoryManageGroups(pplayer));
|
||||
}
|
||||
}));
|
||||
pplayer.getPlayer().closeInventory();
|
||||
});
|
||||
this.actionButtons.add(saveGroupButton);
|
||||
|
||||
// Back Button
|
||||
GuiActionButton backButton = new GuiActionButton(
|
||||
INVENTORY_SIZE - 1,
|
||||
GuiIcon.BACK.get(),
|
||||
LangManager.getText(Lang.GUI_COLOR_INFO) + LangManager.getText(Lang.GUI_BACK_BUTTON),
|
||||
new String[]{},
|
||||
(button, isShiftClick) -> GuiHandler.transition(new GuiInventoryDefault(pplayer)));
|
||||
this.actionButtons.add(backButton);
|
||||
|
||||
this.populate();
|
||||
}
|
||||
|
||||
}
|
|
@ -82,11 +82,11 @@ public class GuiInventoryManageParticles extends GuiInventory {
|
|||
ParticlePair editingParticle = ParticlePair.getNextDefault(pplayer);
|
||||
List<GuiInventoryEditFinishedCallback> callbacks = new ArrayList<>();
|
||||
callbacks.add(() -> GuiHandler.transition(new GuiInventoryManageParticles(pplayer)));
|
||||
callbacks.add(() -> GuiHandler.transition(new GuiInventoryEditEffect(pplayer, editingParticle, callbacks, 1)));
|
||||
callbacks.add(() -> GuiHandler.transition(new GuiInventoryEditStyle(pplayer, editingParticle, callbacks, 2)));
|
||||
callbacks.add(() -> GuiHandler.transition(new GuiInventoryEditEffect(pplayer, editingParticle, 1, callbacks, 1)));
|
||||
callbacks.add(() -> GuiHandler.transition(new GuiInventoryEditStyle(pplayer, editingParticle, 1, callbacks, 2)));
|
||||
callbacks.add(() -> {
|
||||
if (editingParticle.getEffect().hasProperty(ParticleProperty.COLORABLE) || editingParticle.getEffect().hasProperty(ParticleProperty.REQUIRES_MATERIAL_DATA)) {
|
||||
GuiHandler.transition(new GuiInventoryEditData(pplayer, editingParticle, callbacks, 3));
|
||||
GuiHandler.transition(new GuiInventoryEditData(pplayer, editingParticle, 1, callbacks, 3));
|
||||
} else {
|
||||
callbacks.get(4).execute();
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@ public class LangManager {
|
|||
/**
|
||||
* Contains the location in the .lang file of every chat message
|
||||
*/
|
||||
public static enum Lang { // @formatter:off
|
||||
public enum Lang { // @formatter:off
|
||||
|
||||
// Command Errors
|
||||
COMMAND_ERROR_NO_EFFECTS,
|
||||
|
@ -231,6 +231,8 @@ public class LangManager {
|
|||
GUI_COLOR_UNAVAILABLE,
|
||||
GUI_COMMANDS_INFO,
|
||||
GUI_BACK_BUTTON,
|
||||
GUI_NEXT_PAGE_BUTTON,
|
||||
GUI_PREVIOUS_PAGE_BUTTON,
|
||||
GUI_CLICK_TO_LOAD,
|
||||
GUI_SHIFT_CLICK_TO_DELETE,
|
||||
GUI_PARTICLE_INFO,
|
||||
|
@ -281,10 +283,6 @@ public class LangManager {
|
|||
GUI_SELECT_DATA,
|
||||
GUI_SELECT_DATA_DESCRIPTION,
|
||||
GUI_SELECT_DATA_NOTE,
|
||||
GUI_SELECT_DATA_RANDOMIZE_ITEMS,
|
||||
GUI_SELECT_DATA_RANDOMIZE_ITEMS_DESCRIPTION,
|
||||
GUI_SELECT_DATA_RANDOMIZE_BLOCKS,
|
||||
GUI_SELECT_DATA_RANDOMIZE_BLOCKS_DESCRIPTION,
|
||||
GUI_EDIT_DATA_COLOR_RED,
|
||||
GUI_EDIT_DATA_COLOR_ORANGE,
|
||||
GUI_EDIT_DATA_COLOR_YELLOW,
|
||||
|
|
|
@ -188,11 +188,12 @@ public class SettingManager {
|
|||
GROUPS,
|
||||
PRESET_GROUPS,
|
||||
BACK,
|
||||
NEXT_PAGE,
|
||||
PREVIOUS_PAGE,
|
||||
CREATE,
|
||||
EDIT_EFFECT,
|
||||
EDIT_STYLE,
|
||||
EDIT_DATA,
|
||||
RANDOMIZE,
|
||||
RESET,
|
||||
|
||||
EFFECT,
|
||||
|
|
|
@ -9,6 +9,7 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import com.esophose.playerparticles.util.NMSUtil;
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
|
@ -99,12 +100,15 @@ public enum ParticleEffect {
|
|||
if (effect.isSupported())
|
||||
NAME_MAP.put(effect.getName(), effect);
|
||||
|
||||
try {
|
||||
Particle.valueOf("NAUTILUS");
|
||||
if (NMSUtil.getVersionNumber() > 12) {
|
||||
VERSION_13 = true;
|
||||
DustOptions_CONSTRUCTOR = Particle.REDSTONE.getDataType().getConstructor(Color.class, float.class);
|
||||
createBlockData_METHOD = Material.class.getMethod("createBlockData");
|
||||
} catch (Exception e) {
|
||||
try {
|
||||
DustOptions_CONSTRUCTOR = Particle.REDSTONE.getDataType().getConstructor(Color.class, float.class);
|
||||
createBlockData_METHOD = Material.class.getMethod("createBlockData");
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
} else {
|
||||
DustOptions_CONSTRUCTOR = null;
|
||||
createBlockData_METHOD = null;
|
||||
VERSION_13 = false;
|
||||
|
|
27
src/com/esophose/playerparticles/util/NMSUtil.java
Normal file
27
src/com/esophose/playerparticles/util/NMSUtil.java
Normal file
|
@ -0,0 +1,27 @@
|
|||
package com.esophose.playerparticles.util;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
public class NMSUtil {
|
||||
|
||||
/**
|
||||
* Gets the server version
|
||||
*
|
||||
* @return The server version
|
||||
*/
|
||||
public static String getVersion() {
|
||||
String name = Bukkit.getServer().getClass().getPackage().getName();
|
||||
return name.substring(name.lastIndexOf('.') + 1) + ".";
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the server version major release number
|
||||
*
|
||||
* @return The server version major release number
|
||||
*/
|
||||
public static int getVersionNumber() {
|
||||
String name = getVersion().substring(3);
|
||||
return Integer.valueOf(name.substring(0, name.length() - 4));
|
||||
}
|
||||
|
||||
}
|
|
@ -187,6 +187,10 @@ gui-icon:
|
|||
- ENDER_CHEST
|
||||
back:
|
||||
- ARROW
|
||||
next_page:
|
||||
- PAPER
|
||||
previous_page:
|
||||
- PAPER
|
||||
create:
|
||||
- WRITABLE_BOOK
|
||||
- BOOK_AND_QUILL
|
||||
|
@ -197,8 +201,6 @@ gui-icon:
|
|||
- NETHER_STAR
|
||||
edit_data:
|
||||
- BOOK
|
||||
randomize:
|
||||
- HOPPER
|
||||
reset:
|
||||
- BARRIER
|
||||
effect:
|
||||
|
|
|
@ -217,6 +217,8 @@ gui-color-subtext: "&b"
|
|||
gui-color-unavailable: "&c"
|
||||
gui-commands-info: "Find info about commands with &b/pp help"
|
||||
gui-back-button: "Go Back"
|
||||
gui-next-page-button: "Next Page ({0}/{1})"
|
||||
gui-previous-page-button: "Previous Page ({0}/{1})"
|
||||
gui-click-to-load: "Click to load the following {0} particle(s):"
|
||||
gui-shift-click-to-delete: "Shift click to delete"
|
||||
gui-particle-info: " - ID: &b{0} &eEffect: &b{1} &eStyle: &b{2} &eData: &b{3}"
|
||||
|
@ -267,10 +269,6 @@ gui-select-style-description: "Sets the particle style to &b{0}"
|
|||
gui-select-data: "Select Particle Data"
|
||||
gui-select-data-description: "Sets the particle data to &b{0}"
|
||||
gui-select-data-note: "note #{0}"
|
||||
gui-select-data-randomize-items: "Randomize Items"
|
||||
gui-select-data-randomize-items-description: "Randomizes the items displayed"
|
||||
gui-select-data-randomize-blocks: "Randomize Blocks"
|
||||
gui-select-data-randomize-blocks-description: "Randomizes the blocks displayed"
|
||||
gui-edit-data-color-red: "&cred"
|
||||
gui-edit-data-color-orange: "&6orange"
|
||||
gui-edit-data-color-yellow: "&eyellow"
|
||||
|
|
|
@ -8,10 +8,10 @@
|
|||
# * PLEASE MAKE YOUR OWN .lang FILE IF YOU WANT CUSTOM MESSAGES! #
|
||||
# * This file will be overridden almost every plugin update! #
|
||||
# ================================================================ #
|
||||
# Translator: maxime_n2
|
||||
# Translator: maxime_n2 & SevenX
|
||||
|
||||
# Command Errors
|
||||
command-error-no-effects: "&cVous n avez pas la permission d utiliser cette commande."
|
||||
command-error-no-effects: "&cVous n'avez pas la permission d'utiliser cette commande."
|
||||
command-error-unknown: "&cCommande inconnue, utilisez &b/pp help &cpour afficher la liste des commandes disponibles pour ce plugin."
|
||||
|
||||
# Command Descriptions
|
||||
|
@ -19,87 +19,87 @@ command-descriptions: "&eLes commandes suivantes sont disponibles :"
|
|||
command-descriptions-usage: "&e/pp {0} {1}"
|
||||
command-descriptions-help-1: "&7> &b/pp {0} &e- {1}"
|
||||
command-descriptions-help-2: "&7> &b/pp {0} {1} &e- {2}"
|
||||
command-descriptions-help-other: "&7> &b/ppo <player> <command> &e- Exécute une commande /pp en tant qu un autre joueur."
|
||||
command-descriptions-help-other: "&7> &b/ppo <player> <command> &e- Exécute une commande /pp en tant qu'un autre joueur."
|
||||
command-description-add: "Ajoutez une nouvelle particule"
|
||||
command-description-data: "Voir les paramètres utilisées par la particule"
|
||||
command-description-default: "Commande principale. Par défaut elle ouvre l interface."
|
||||
command-description-default: "Commande principale. Par défaut elle ouvre l'interface."
|
||||
command-description-edit: "Modifiez une particule"
|
||||
command-description-effects: "Affichez une liste des effets utilisés"
|
||||
command-description-fixed: "Gérez vos effets fixes"
|
||||
command-description-group: "Gérez vos groupes d effets"
|
||||
command-description-gui: "Affichez l interface pour modifier facilement les effets"
|
||||
command-description-help: "Affichez le menu d aide... Vous y êtes déjà !"
|
||||
command-description-info: "Voir la description d une de vos particules actives"
|
||||
command-description-group: "Gérez vos groupes d'effets"
|
||||
command-description-gui: "Affichez l'interface pour modifier facilement les effets"
|
||||
command-description-help: "Affichez le menu d'aide... Vous y êtes déjà !"
|
||||
command-description-info: "Voir la description d'une de vos particules actives"
|
||||
command-description-list: "Listez les IDs de vos particules actives"
|
||||
command-description-reload: "Rechargez le fichier config.yml et de langue"
|
||||
command-description-remove: "Supprimez vos particules actives."
|
||||
command-description-reset: "Supprimez toutes vos particules actives"
|
||||
command-description-styles: "Affichez une liste des styles de particules que vous utilisez"
|
||||
command-description-toggle: "Activez ou déativez vos particules actives"
|
||||
command-description-toggle: "Activez ou désactivez vos particules actives"
|
||||
command-description-version: "Affichez la version du plugin et son créateur"
|
||||
command-description-worlds: "Voir les mondes où ce plugin n est pas autorisé"
|
||||
command-description-worlds: "Voir les mondes où ce plugin n'est pas autorisé"
|
||||
|
||||
# Sub-Command Usage
|
||||
command-description-fixed-create: "&e/pp fixed create <<x> <y> <z>|<looking>> <effect> <style> [data] - Créez une particule fixe"
|
||||
command-description-fixed-edit: "&e/pp fixed edit <id> <effect|style|data> <args> - Modifiez une partie d une particule fixe par son ID"
|
||||
command-description-fixed-edit: "&e/pp fixed edit <id> <effect|style|data> <args> - Modifiez une partie d'une particule fixe par son ID"
|
||||
command-description-fixed-remove: "&e/pp fixed remove <ID> - Supprimez une particule fixe par son ID"
|
||||
command-description-fixed-list: "&e/pp fixed list - Affiche l ID de tous vos effets fixes"
|
||||
command-description-fixed-info: "&e/pp fixed info <ID> - Voir des informations sur l une de vos particules fixe"
|
||||
command-description-fixed-clear: "&e/pp fixed clear <radius> - Supprimez tous les effets fixe de tous les joueurs d un rayon"
|
||||
command-description-fixed-list: "&e/pp fixed list - Affiche l'ID de tous vos effets fixes"
|
||||
command-description-fixed-info: "&e/pp fixed info <ID> - Voir des informations sur l'une de vos particules fixe"
|
||||
command-description-fixed-clear: "&e/pp fixed clear <radius> - Supprimez tous les effets fixe de tous les joueurs d'un rayon"
|
||||
command-description-group-save: "&e/pp group save <name> - Sauvegardez toutes les particules actives dans un nouveau groupe"
|
||||
command-description-group-load: "&e/pp group load <name> - Chargez toutes les particules sauvegardées dans un groupe"
|
||||
command-description-group-remove: "&e/pp group remove <name> - Supprimez un groupe que vous avez créé"
|
||||
command-description-group-list: "&e/pp group list <name> - Voir toutes les particules sauvegardées d un groupe que vous avez créé"
|
||||
command-description-group-list: "&e/pp group list <name> - Voir toutes les particules sauvegardées d'un groupe que vous avez créé"
|
||||
command-description-group-info: "&e/pp group info <name> - Voir toutes les particules sauvegardées du groupe"
|
||||
|
||||
# Command ID Lookup
|
||||
id-invalid: "&cL ID rentrée n est pas valide, il doit être un nombre entier positif"
|
||||
id-unknown: "&cVous n avez pas de particules appliquées avec : &b{0} &c!"
|
||||
id-invalid: "&cL'ID rentrée n'est pas valide, il doit être un nombre entier positif"
|
||||
id-unknown: "&cVous n'avez pas de particules appliquées avec : &b{0} &c!"
|
||||
|
||||
# Other Command
|
||||
other-no-permission: "&cVous n avez pas la permission pour exécuter une commande /pp en tant qu un autre joueur."
|
||||
other-no-permission: "&cVous n'avez pas la permission pour exécuter une commande /pp en tant qu'un autre joueur."
|
||||
other-missing-args: "&cVous oubliez des arguments dans votre commande. &b/ppo <player> <command>"
|
||||
other-unknown-player: "&cLe joueur &b{0} &cn a pas été trouvé. Il doit être en ligne."
|
||||
other-unknown-player: "&cLe joueur &b{0} &cn'a pas été trouvé. Il doit être en ligne."
|
||||
other-unknown-command: "&cLa commande &b/pp {0} &cn existe pas."
|
||||
other-success: "&Commande /pp exécutée. &b{0}&e. Retour de la commande :"
|
||||
|
||||
# Add Command
|
||||
add-reached-max: "Impossible d appliquer la particule, vous avez atteint la limite de particules qui est de &b{0} &c!"
|
||||
add-particle-applied: "&aUne nouvelle particule est appliquée avec l effet &b{0}&a, le style &b{1}&a, et les paramètres &b{2} &a!"
|
||||
add-reached-max: "Impossible d'appliquer la particule, vous avez atteint la limite de particules qui est de &b{0} &c!"
|
||||
add-particle-applied: "&aUne nouvelle particule est appliquée avec l'effet &b{0}&a, le style &b{1}&a, et les paramètres &b{2} &a!"
|
||||
|
||||
# Data Command
|
||||
data-no-args: "&cVous oubliez des arguments dans l effet. Utilisation de la commande: &b/pp data <effect>"
|
||||
data-no-args: "&cVous oubliez des arguments dans l'effet. Utilisation de la commande: &b/pp data <effect>"
|
||||
|
||||
# Edit Command
|
||||
edit-invalid-property: "cLa propriété &b{0} &cest interdite. Propriétés valides : &beffect&c, &bstyle&c, &bdata"
|
||||
edit-success-effect: "&aVotre particule avec l ID de &b{0} &aa son effet changé à &b{1} &a!"
|
||||
edit-success-style: "&aVotre particule avec l ID de &b{0} &aa son style changé à &b{1} &a!"
|
||||
edit-success-data: "&aVotre particule avec l ID de &b{0} &aa ses paramètres changés à &b{1} &a!"
|
||||
edit-success-effect: "&aVotre particule avec l'ID de &b{0} &aa son effet changé à &b{1} &a!"
|
||||
edit-success-style: "&aVotre particule avec l'ID de &b{0} &aa son style changé à &b{1} &a!"
|
||||
edit-success-data: "&aVotre particule avec l'ID de &b{0} &aa ses paramètres changés à &b{1} &a!"
|
||||
|
||||
# Group Command
|
||||
group-invalid: "&cUn groupe ou un preset de groupe sauvegardé n existe pas avec le nom &b{0} &c!"
|
||||
group-preset-no-permission: "&cVous oubliez une permission pour un style ou un effet afin d utiliser les persets du groupe &b{0} &c!"
|
||||
group-invalid: "&cUn groupe ou un preset de groupe sauvegardé n'existe pas avec le nom &b{0} &c!"
|
||||
group-preset-no-permission: "&cVous oubliez une permission pour un style ou un effet afin d'utiliser les presets du groupe &b{0} &c!"
|
||||
group-reserved: "&cLe nom de groupe &bactive &cest réservé et ne peut pas être utiliser !"
|
||||
group-no-name: "&cVous n avez pas rentré de nom de groupe ! &b/pp {0} <groupName>"
|
||||
group-no-name: "&cVous n'avez pas rentré de nom de groupe ! &b/pp {0} <groupName>"
|
||||
group-save-reached-max: "&cImpossible de sauvegarder le groupe, vous avez atteint le nombre maximun de groupes !"
|
||||
group-save-no-particles: "&cImpossible de sauvegarder le groupe, vous n avez pas appliqué de particules !"
|
||||
group-save-success: "&aVos particules actuelles on été sauvegardées sous le nom de groupe &b{0} &a!"
|
||||
group-save-no-particles: "&cImpossible de sauvegarder le groupe, vous n'avez pas appliqué de particules !"
|
||||
group-save-success: "&aVos particules actuelles ont été sauvegardées sous le nom de groupe &b{0} &a!"
|
||||
group-save-success-overwrite: "&aLe groupe &b{0} &aa été mis à jour avec vos particules actuelle !"
|
||||
group-load-success: "&b{0} &aparticule(s) appliqués venant du groupe sauvegardé nommé &b{1} &a!"
|
||||
group-load-preset-success: "&b{0} &aparticule(s) appliqués venant du preset sauvegardé nommé &b{1} &a!"
|
||||
group-remove-preset: "&cVous ne pouvez pas supprimer un groupe de presets !"
|
||||
group-remove-success: "&aGroupe de particules &b{0} &asupprimé !"
|
||||
group-info-header: "&eLe groupe &b{0} &eposséde les particules suivantes :"
|
||||
group-list-none: "&eVous n avez pas de groupes de particules sauvegardés !"
|
||||
group-list-none: "&eVous n'avez pas de groupes de particules sauvegardés !"
|
||||
group-list-output: "&eVous avez ces groupes suivants sauvegardés : &b{0}"
|
||||
group-list-presets: "&eCes presets de groupes suivants sont disponibles : &b{0}"
|
||||
|
||||
# Reload Command
|
||||
reload-success: "&aLe plugin a été rechargé..."
|
||||
reload-no-permission: "&cVous n avez pas la permission pour recharger la configuration de ce plugin !"
|
||||
reload-no-permission: "&cVous n'avez pas la permission pour recharger la configuration de ce plugin !"
|
||||
|
||||
# Remove Command
|
||||
remove-no-args: "&cVous n avez pas rentrer d ID à supprimer ! &b/pp remove <ID>"
|
||||
remove-no-args: "&cVous n'avez pas rentrer d'ID à supprimer ! &b/pp remove <ID>"
|
||||
remove-id-success: "&aVotre particule avec l'ID &b{0} &aa été supprimée !"
|
||||
remove-effect-success: "&aSuppression de &b{0} &ade votre particule avec l'effet &b{1} &a!"
|
||||
remove-effect-none: "&cVous n'avez pas de particules appliquées avec l'effet &b{0} &c!"
|
||||
|
@ -108,7 +108,7 @@ remove-style-none: "&cVous n'avez pas de particules appliquées avec le style &b
|
|||
remove-unknown: "&cL'effect avec le nom ou le style &b{0} &cn'existe pas !"
|
||||
|
||||
# List Command
|
||||
list-none: "&eVous n avez pas de particules actives."
|
||||
list-none: "&eVous n'avez pas de particules actives."
|
||||
list-you-have: "&eVous avez les particules suivantes appliquées :"
|
||||
list-output: "&eID: &b{0} &eEffet: &b{1} &eStyle: &b{2} &eParamètre: &b{3}"
|
||||
|
||||
|
@ -123,31 +123,31 @@ rainbow: "&cr&6a&ei&an&bb&9o&dw"
|
|||
random: "aléatoire"
|
||||
|
||||
# Effects
|
||||
effect-no-permission: "&cVous n avez pas la permission pour utiliser la particule &b{0} &c!"
|
||||
effect-invalid: "&cL effet &b{0} &cn existe pas ! Utilisez &b/pp effects &cpour afficher les effets disponibles."
|
||||
effect-no-permission: "&cVous n'avez pas la permission pour utiliser la particule &b{0} &c!"
|
||||
effect-invalid: "&cL'effet &b{0} &cn existe pas ! Utilisez &b/pp effects &cpour afficher les effets disponibles."
|
||||
effect-list: "&eVous pouvez utiliser les effets suivants : &b{0}"
|
||||
effect-list-empty: "&cVous n avez pas la permission pour utiliser des effets !"
|
||||
effect-list-empty: "&cVous n'avez pas la permission pour utiliser des effets !"
|
||||
|
||||
# Styles
|
||||
style-no-permission: "&cVous n avez pas la permission pour utiliser le style &b{0} &c!"
|
||||
style-event-spawning-info: "&eNote: Le style &b{0} &efait apparaitre des particules seulement lors d évènements spécifiques."
|
||||
style-invalid: "&cLe style &b{0} &cn existe pas ! Utilisez &b/pp styles &cpour afficher les styles disponibles."
|
||||
style-no-permission: "&cVous n'avez pas la permission pour utiliser le style &b{0} &c!"
|
||||
style-event-spawning-info: "&eNote: Le style &b{0} &efait apparaitre des particules seulement lors d'évènements spécifiques."
|
||||
style-invalid: "&cLe style &b{0} &cn'existe pas ! Utilisez &b/pp styles &cpour afficher les styles disponibles."
|
||||
style-list: "&eVous pouvez utiliser les styles suivants : &b{0}"
|
||||
|
||||
# Data
|
||||
data-usage-none: "&eL effet &b{0} &en est pas paramétrable."
|
||||
data-usage-block: "&eL effet &b{0} &erequière l ID du bloc ! &bFormat: <blockName>"
|
||||
data-usage-item: "&eL effet &b{0} &erequière l ID de l item ! &bFormat: <itemName>"
|
||||
data-usage-color: "&eL effet &b{0} &erequière l ID de la couleur ! &bFormat: <<0-255> <0-255> <0-255>>|<rainbow>|<random>"
|
||||
data-usage-note: "&eL effet&b{0} &erequière l ID de la note ! &bFormat: <0-24>|<rainbow>|<random>"
|
||||
data-invalid-block: "&cL ID du bloc que vous avez rentré n est pas valide ! &bFormat: <blockName>"
|
||||
data-invalid-item: "&cL ID de l item que vous avez rentré n est pas valide ! &bFormat: <itemName>"
|
||||
data-invalid-color: "&cL ID de la couleur que vous avez rentré n est pas valide ! &bFormat: <<0-255> <0-255> <0-255>>|<rainbow>|<random>"
|
||||
data-invalid-note: "&cL ID du bloc que vous avez rentré n est pas valide ! &bFormat: <0-24>|<rainbow>|<random>"
|
||||
data-invalid-material-not-item: "&cL ID &b{0} &cne correspond pas à un item !"
|
||||
data-invalid-material-not-block: "&cL ID &b{0} &cne correspond pas à un bloc !"
|
||||
data-invalid-material-item: "&cL ID &b{0} n existe pas !"
|
||||
data-invalid-material-block: "&cL ID&b{0} n existe pas !"
|
||||
data-usage-none: "&eL'effet &b{0} &en'est pas paramétrable."
|
||||
data-usage-block: "&eL'effet &b{0} &erequière l'ID du bloc ! &bFormat: <blockName>"
|
||||
data-usage-item: "&eL'effet &b{0} &erequière l'ID de l'item ! &bFormat: <itemName>"
|
||||
data-usage-color: "&eL'effet &b{0} &erequière l'ID de la couleur ! &bFormat: <<0-255> <0-255> <0-255>>|<rainbow>|<random>"
|
||||
data-usage-note: "&eL'effet&b{0} &erequière l'ID de la note ! &bFormat: <0-24>|<rainbow>|<random>"
|
||||
data-invalid-block: "&cL'ID du bloc que vous avez rentré n'est pas valide ! &bFormat: <blockName>"
|
||||
data-invalid-item: "&cL'ID de l'item que vous avez rentré n'est pas valide ! &bFormat: <itemName>"
|
||||
data-invalid-color: "&cL'ID de la couleur que vous avez rentré n'est pas valide ! &bFormat: <<0-255> <0-255> <0-255>>|<rainbow>|<random>"
|
||||
data-invalid-note: "&cL'ID du bloc que vous avez rentré n'est pas valide ! &bFormat: <0-24>|<rainbow>|<random>"
|
||||
data-invalid-material-not-item: "&cL'ID &b{0} &cne correspond pas à un item !"
|
||||
data-invalid-material-not-block: "&cL'ID &b{0} &cne correspond pas à un bloc !"
|
||||
data-invalid-material-item: "&cL'ID &b{0} n'existe pas !"
|
||||
data-invalid-material-block: "&cL'ID&b{0} n'existe pas !"
|
||||
|
||||
# Worlds
|
||||
disabled-worlds: "&eLes particules sont désactivées dans ces mondes : &b{0}"
|
||||
|
@ -161,48 +161,48 @@ fixed-create-missing-args: "&cImpossible de créer un effet fixe, vous oubliez d
|
|||
fixed-create-invalid-coords: "&cImpossible de créer un effet fixe, coordonnées invalides !"
|
||||
fixed-create-out-of-range: "&cImpossible de créer un effet fixe, Vous devez être à &b{0} &cblocs de la position rentrée !"
|
||||
fixed-create-looking-too-far: "&cImpossible de créer un effet fixe, vous êtes trop loin du bloc que vous regardez !"
|
||||
fixed-create-effect-invalid: "&cImpossible de créer un effet fixe, l effet &b{0} &cn existe pas !"
|
||||
fixed-create-effect-no-permission: "&cImpossible de créer un effet fixe, vous n avez pas la permission pour utiliser le style &b{0} &c!"
|
||||
fixed-create-style-invalid: "&cImpossible de créer un effet fixe, le style &b{0} &cn existe pas!"
|
||||
fixed-create-style-no-permission: "&cImpossible de créer un effet fixe, vous n avez pas la permission pour utiliser le style &b{0} &c!"
|
||||
fixed-create-style-non-fixable: "&cImpossible de créer un effet fixe, le style &b{0} &cne peut pas être utilisé en tant qu effet fixe !"
|
||||
fixed-create-data-error: "&cImpossible de créer un effet fixe, l ID rentrée n est pas valide ! Utilisez &b/pp data <effect> &cpour afficher les IDs valides."
|
||||
fixed-create-success: "&aL effet fixe à été créer."
|
||||
fixed-create-effect-invalid: "&cImpossible de créer un effet fixe, l effet &b{0} &cn'existe pas !"
|
||||
fixed-create-effect-no-permission: "&cImpossible de créer un effet fixe, vous n'avez pas la permission pour utiliser le style &b{0} &c!"
|
||||
fixed-create-style-invalid: "&cImpossible de créer un effet fixe, le style &b{0} &cn'existe pas!"
|
||||
fixed-create-style-no-permission: "&cImpossible de créer un effet fixe, vous n'avez pas la permission pour utiliser le style &b{0} &c!"
|
||||
fixed-create-style-non-fixable: "&cImpossible de créer un effet fixe, le style &b{0} &cne peut pas être utilisé en tant qu'effet fixe !"
|
||||
fixed-create-data-error: "&cImpossible de créer un effet fixe, l'ID rentrée n'est pas valide ! Utilisez &b/pp data <effect> &cpour afficher les IDs valides."
|
||||
fixed-create-success: "&aL'effet fixe à été créer."
|
||||
|
||||
fixed-edit-missing-args: "&cImpossible de modifier l effet fixe, vous oubliez des arguments !"
|
||||
fixed-edit-invalid-id: "&cImpossible de modifier l effet fixe, ID incorrecte !"
|
||||
fixed-edit-invalid-property: "&cImpossible de modifier l effet fixe, argument incorrecte ! Seuls localisation, effet, style, et paramètre sont valides."
|
||||
fixed-edit-invalid-coords: "&cImpossible de modifier l effet fixe, coordonnée incorrecte !"
|
||||
fixed-edit-out-of-range: "&cImpossible de modifier l effet fixe, vous devez être à &b{0} &cblocs de l emplacement désiré !"
|
||||
fixed-edit-looking-too-far: "&cImpossible de modifier l effet fixe, vous êtes trop loin du bloc que vous regardez !"
|
||||
fixed-edit-effect-invalid: "&cImpossible de modifier l effet fixe, l effet &b{0} &cn existe pas !"
|
||||
fixed-edit-effect-no-permission: "&cImpossible de modifier l effet fixe, vous n avez pas la permission pour utiliser l effet &b{0} &c!"
|
||||
fixed-edit-style-invalid: "&cImpossible de modifier l effet fixe, le style &b{0} &cn existe pas !"
|
||||
fixed-edit-style-no-permission: "&cImpossible de modifier l effet fixe, vous n avez pas la permission pour utiliser le style &b{0} &c!"
|
||||
fixed-edit-style-non-fixable: "&cImpossible de modifier l effet fixe, the style &b{0} &cne peut pas être utilisé dans des effets fixes !"
|
||||
fixed-edit-data-error: "&cImpossible de modifier l effet fixe, paramètre incorrecte ! Utilisez &b/pp data <effect> pour afficher les paramètres valides."
|
||||
fixed-edit-data-none: "&cImpossible de modifier l effet fixe, l effet ne requière pas de paramètres !"
|
||||
fixed-edit-success: "&aMise à jour de &b{0} &ade l effet fixe avec l ID &b{1} &a!"
|
||||
fixed-edit-missing-args: "&cImpossible de modifier l'effet fixe, vous oubliez des arguments !"
|
||||
fixed-edit-invalid-id: "&cImpossible de modifier l'effet fixe, ID incorrecte !"
|
||||
fixed-edit-invalid-property: "&cImpossible de modifier l'effet fixe, argument incorrect ! Seuls localisation, effet, style, et paramètre sont valides."
|
||||
fixed-edit-invalid-coords: "&cImpossible de modifier l'effet fixe, coordonnée incorrecte !"
|
||||
fixed-edit-out-of-range: "&cImpossible de modifier l'effet fixe, vous devez être à &b{0} &cblocs de l'emplacement désiré !"
|
||||
fixed-edit-looking-too-far: "&cImpossible de modifier l'effet fixe, vous êtes trop loin du bloc que vous regardez !"
|
||||
fixed-edit-effect-invalid: "&cImpossible de modifier l'effet fixe, l'effet &b{0} &cn'existe pas !"
|
||||
fixed-edit-effect-no-permission: "&cImpossible de modifier l'effet fixe, vous n'avez pas la permission pour utiliser l'effet &b{0} &c!"
|
||||
fixed-edit-style-invalid: "&cImpossible de modifier l'effet fixe, le style &b{0} &cn'existe pas !"
|
||||
fixed-edit-style-no-permission: "&cImpossible de modifier l'effet fixe, vous n'avez pas la permission pour utiliser le style &b{0} &c!"
|
||||
fixed-edit-style-non-fixable: "&cImpossible de modifier l'effet fixe, the style &b{0} &cne peut pas être utilisé dans des effets fixes !"
|
||||
fixed-edit-data-error: "&cImpossible de modifier l'effet fixe, paramètre incorrect ! Utilisez &b/pp data <effect> pour afficher les paramètres valides."
|
||||
fixed-edit-data-none: "&cImpossible de modifier l'effet fixe, l'effet ne requière pas de paramètres !"
|
||||
fixed-edit-success: "&aMise à jour de &b{0} &ade l'effet fixe avec l'ID &b{1} &a!"
|
||||
|
||||
fixed-remove-invalid: "&cImpossible de supprimer l effet fixe, vous n avez pas d effets fixes avec l ID &b{0} &c!"
|
||||
fixed-remove-no-args: "&cVous n avez pas rentrer d ID à supprimer !"
|
||||
fixed-remove-args-invalid: "&cImpossible de supprimer, l ID doit être un nombre !"
|
||||
fixed-remove-success: "&aTous vos effets fixes avec l ID &b{0} &aont été supprimés !"
|
||||
fixed-remove-invalid: "&cImpossible de supprimer l'effet fixe, vous n'avez pas d effets fixes avec l'ID &b{0} &c!"
|
||||
fixed-remove-no-args: "&cVous n'avez pas rentrer d'ID à supprimer !"
|
||||
fixed-remove-args-invalid: "&cImpossible de supprimer, l'ID doit être un nombre !"
|
||||
fixed-remove-success: "&aTous vos effets fixes avec l'ID &b{0} &aont été supprimés !"
|
||||
|
||||
fixed-list-none: "&eVous n avez pas d effets fixes !"
|
||||
fixed-list-none: "&eVous n'avez pas d'effets fixes !"
|
||||
fixed-list-success: "&eVous avez des effets fixes avec ces IDs :&b{0}"
|
||||
|
||||
fixed-info-invalid: "&cImpossible de obtenir l information, vous n avez pas de particules fixes avec l ID &b{0}& c!"
|
||||
fixed-info-no-args: "&cVous n avez pas rentrée d ID pour obtenir d infomations !"
|
||||
fixed-info-invalid-args: "&cImpossible d obtenir l information, vous n avez pas de particules fixes avec l ID, l ID spécifiée doit être un nombre !"
|
||||
fixed-info-invalid: "&cImpossible d'obtenir l'information, vous n'avez pas de particules fixes avec l'ID &b{0}& c!"
|
||||
fixed-info-no-args: "&cVous n'avez pas rentrée d'ID pour obtenir d'infomations !"
|
||||
fixed-info-invalid-args: "&cImpossible d'obtenir l'information, vous n'avez pas de particules fixes avec l'ID, l'ID spécifiée doit être un nombre !"
|
||||
fixed-info-success: "&eID: &b{0} &eWorld: &b{1} &eX: &b{2} &eY: &b{3} &eZ: &b{4} &eEffect: &b{5} &eStyle: &b{6} &eData: &b{7}"
|
||||
|
||||
fixed-clear-no-permission: "&cVous n avez la permission pour supprimer les effets proches !"
|
||||
fixed-clear-no-args: "&cVous n avez pas rentré de rayon !"
|
||||
fixed-clear-invalid-args: "&cLe rayon rentré n est pas valide, il doit être un nombre rond !"
|
||||
fixed-clear-success: "&b{0} &aeffets on été supprimés dans un rayon &b{1} &cblocs !"
|
||||
fixed-clear-no-permission: "&cVous n'avez la permission pour supprimer les effets proches !"
|
||||
fixed-clear-no-args: "&cVous n'avez pas rentré de rayon !"
|
||||
fixed-clear-invalid-args: "&cLe rayon rentré n'est pas valide, il doit être un nombre rond !"
|
||||
fixed-clear-success: "&b{0} &aeffets ont été supprimés dans un rayon &b{1} &cblocs !"
|
||||
|
||||
fixed-no-permission: "&cVous n avez pas la permission d ajouter des effets fixes !"
|
||||
fixed-no-permission: "&cVous n'avez pas la permission d'ajouter des effets fixes !"
|
||||
fixed-max-reached: "&cVous avez atteint le nombre maximum de particules fixes !"
|
||||
fixed-invalid-command: "&cArguments invalides pour la commande &b/pp fixed&c!"
|
||||
|
||||
|
@ -210,13 +210,15 @@ fixed-invalid-command: "&cArguments invalides pour la commande &b/pp fixed&c!"
|
|||
update-available: "&eLa version (&b{0}&e) est disponible ! vous utilisez la version &bv{1}&d. https://www.spigotmc.org/resources/playerparticles.40261/"
|
||||
|
||||
# GUI
|
||||
gui-disabled: "&cL interface du plugin à été désactivée !"
|
||||
gui-disabled: "&cL'interface du plugin à été désactivée !"
|
||||
gui-color-icon-name: "&a"
|
||||
gui-color-info: "&e"
|
||||
gui-color-subtext: "&b"
|
||||
gui-color-unavailable: "&c"
|
||||
gui-commands-info: "Affichez des informations avec &b/pp help"
|
||||
gui-back-button: "Retour en arrière"
|
||||
gui-next-page-button: "Page Suivante ({0}/{1})"
|
||||
gui-previous-page-button: "Page Précédente ({0}/{1})"
|
||||
gui-click-to-load: "Cliquez pour charger : {0}"
|
||||
gui-shift-click-to-delete: "Touche SHIFT + clic-gauche pour effacer un effet"
|
||||
gui-particle-info: " - ID: &b{0} &eEffet: &b{1} &eStyle: &b{2} &eParamètre: &b{3}"
|
||||
|
@ -224,14 +226,14 @@ gui-playerparticles: "PlayerParticles"
|
|||
gui-active-particles: "Particules actives: &b{0}"
|
||||
gui-saved-groups: "Groupes sauvegardés: &b{0}"
|
||||
gui-fixed-effects: "Effets fixes: &b{0}"
|
||||
gui-edit-primary-effect: "Editez l effet primaire"
|
||||
gui-edit-primary-effect: "Editez l'effet primaire"
|
||||
gui-edit-primary-effect-description: "Editez l effet d une de vos particules primaire"
|
||||
gui-edit-primary-style: "Editez le style primaire"
|
||||
gui-edit-primary-style-missing-effect: "Vous devez d abord sélectionner un effet !"
|
||||
gui-edit-primary-style-description: "Editez le style d une particule primaire"
|
||||
gui-edit-primary-data: "Editez les paramètres d une particules primaire"
|
||||
gui-edit-primary-data-missing-effect: "Vous devez d abord sélectionner un effet"
|
||||
gui-edit-primary-data-unavailable: "Votre effet primaire n est pas paramétrable"
|
||||
gui-edit-primary-style-missing-effect: "Vous devez d'abord sélectionner un effet !"
|
||||
gui-edit-primary-style-description: "Editez le style d'une particule primaire"
|
||||
gui-edit-primary-data: "Editez les paramètres d'une particules primaire"
|
||||
gui-edit-primary-data-missing-effect: "Vous devez d'abord sélectionner un effet"
|
||||
gui-edit-primary-data-unavailable: "Votre effet primaire n'est pas paramétrable"
|
||||
gui-edit-primary-data-description: "Editer les paramères de votre effet primaire"
|
||||
gui-manage-your-particles: "Gérez vos particules"
|
||||
gui-manage-your-particles-description: "Créez, éditez, et supprimez vos particules"
|
||||
|
@ -240,7 +242,7 @@ gui-manage-your-groups-description: "Créez, éditez, et supprimez vos groupes p
|
|||
gui-load-a-preset-group: "Chargez un groupe de presets"
|
||||
gui-load-a-preset-group-description: "Chargez un groupe de particules déjà fait"
|
||||
gui-save-group: "Sauvegardez un nouveau groupe"
|
||||
gui-save-group-description: "Cliquez pour sauvegardez un nouveau groupe. Vous allez être invité\na écrire un nouveau nom dans le tchat."
|
||||
gui-save-group-description: "Cliquez pour sauvegardez un nouveau groupe. Vous allez être invité\nà écrire un nouveau nom dans le tchat."
|
||||
gui-save-group-full: "Vous avez atteint le nombre maximal de groupe !"
|
||||
gui-save-group-no-particles: "Vous avez aucunes particules appliquées"
|
||||
gui-save-group-hotbar-message: "&eTapez &b1 &enom dans le tchat pour le nouveau nom du groupe. Tapez &ccancel&e pour annuler. (&b{0}&es restants)"
|
||||
|
@ -249,8 +251,8 @@ gui-reset-particles-description: "Supprimez vos particules actives"
|
|||
gui-particle-name: "Particule #{0}"
|
||||
gui-click-to-edit-particle: "Cliquez pour éditer cette particule"
|
||||
gui-editing-particle: "Edition particule #{0}"
|
||||
gui-edit-effect: "Editez l effet"
|
||||
gui-edit-effect-description: "Cliquez pour éditer l effet de cette particule"
|
||||
gui-edit-effect: "Editez l'effet"
|
||||
gui-edit-effect-description: "Cliquez pour éditer l'effet de cette particule"
|
||||
gui-edit-style: "Editez le style"
|
||||
gui-edit-style-description: "Cliquez pour éditer le style de cette particule"
|
||||
gui-edit-data: "Editez les paramères"
|
||||
|
@ -267,10 +269,6 @@ gui-select-style-description: "Mets le style de la particule à &b{0}"
|
|||
gui-select-data: "Sélectionnez les paramètres"
|
||||
gui-select-data-description: "Mets les paramètres de la particule à &b{0}"
|
||||
gui-select-data-note: "note #{0}"
|
||||
gui-select-data-randomize-items: "Mélangez les items"
|
||||
gui-select-data-randomize-items-description: "Mélangez les items affichés"
|
||||
gui-select-data-randomize-blocks: "Mélangez les blocs"
|
||||
gui-select-data-randomize-blocks-description: "Mélangez les blocs affichés"
|
||||
gui-edit-data-color-red: "&crouge"
|
||||
gui-edit-data-color-orange: "&6orange"
|
||||
gui-edit-data-color-yellow: "&ejaune"
|
||||
|
|
|
@ -217,6 +217,8 @@ gui-color-subtext: "&b"
|
|||
gui-color-unavailable: "&c"
|
||||
gui-commands-info: "Hiển thị thêm các lệnh bằng cách gõ &b/pp help"
|
||||
gui-back-button: "Quay trở về"
|
||||
gui-next-page-button: "Trang tiếp theo ({0}/{1})"
|
||||
gui-previous-page-button: "Trang trước ({0}/{1})"
|
||||
gui-click-to-load: "Nhấn để tải {0} Hạt hiệu ứng sau:"
|
||||
gui-shift-click-to-delete: "Shift Click để xóa"
|
||||
gui-particle-info: " - ID: &b{0} &eEffect: &b{1} &eStyle: &b{2} &eData: &b{3}"
|
||||
|
@ -267,10 +269,6 @@ gui-select-style-description: "Thiết lập Kiểu hiệu ứng của Hạt th
|
|||
gui-select-data: "Chọn Dữ liệu của Hạt"
|
||||
gui-select-data-description: "Thiết lập DỮ liệu của Hạt thành &b{0}"
|
||||
gui-select-data-note: "note #{0}"
|
||||
gui-select-data-randomize-items: "Vật phẩm ngẫu nhiên"
|
||||
gui-select-data-randomize-items-description: "Đã hiển thị vật phẩm ngẫu nhiên"
|
||||
gui-select-data-randomize-blocks: "Khối ngẫu nhiên"
|
||||
gui-select-data-randomize-blocks-description: "Đã hiển thị khối ngẫu nhiên"
|
||||
gui-edit-data-color-red: "&cĐỏ mạnh mẽ"
|
||||
gui-edit-data-color-orange: "&6Cam dịu dàng"
|
||||
gui-edit-data-color-yellow: "&eVàng yêu thương"
|
||||
|
|
Loading…
Reference in a new issue