master
jakub 2 years ago
commit 7b5b8f4d1c
  1. 3
      .idea/.gitignore
  2. 19
      .idea/artifacts/MenuMaker_jar.xml
  3. 13
      .idea/compiler.xml
  4. 7
      .idea/encodings.xml
  5. 30
      .idea/jarRepositories.xml
  6. 14
      .idea/misc.xml
  7. 8
      .idea/modules.xml
  8. 124
      .idea/uiDesigner.xml
  9. 6
      .idea/vcs.xml
  10. 13
      MenuMaker.iml
  11. 86
      pom.xml
  12. 56
      src/main/java/xyz/soukup/menumaker/MenuMaker.java
  13. 39
      src/main/java/xyz/soukup/menumaker/PDC.java
  14. 78
      src/main/java/xyz/soukup/menumaker/commands/createItem.java
  15. 60
      src/main/java/xyz/soukup/menumaker/commands/enchantitem.java
  16. 29
      src/main/java/xyz/soukup/menumaker/commands/hideEnchant.java
  17. 124
      src/main/java/xyz/soukup/menumaker/commands/menumaker.java
  18. 15
      src/main/java/xyz/soukup/menumaker/commands/setsize.java
  19. 60
      src/main/java/xyz/soukup/menumaker/events/saveInventory.java
  20. 21
      src/main/resources/plugin.yml
  21. 21
      target/classes/plugin.yml
  22. BIN
      target/classes/xyz/soukup/menumaker/MenuMaker.class
  23. BIN
      target/classes/xyz/soukup/menumaker/PDC.class
  24. BIN
      target/classes/xyz/soukup/menumaker/commands/createItem.class
  25. BIN
      target/classes/xyz/soukup/menumaker/commands/enchantitem.class
  26. BIN
      target/classes/xyz/soukup/menumaker/commands/hideEnchant.class
  27. BIN
      target/classes/xyz/soukup/menumaker/commands/menumaker.class
  28. BIN
      target/classes/xyz/soukup/menumaker/commands/setsize.class
  29. BIN
      target/classes/xyz/soukup/menumaker/events/saveInventory.class

3
.idea/.gitignore vendored

@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

@ -0,0 +1,19 @@
<component name="ArtifactManager">
<artifact type="jar" build-on-make="true" name="MenuMaker:jar">
<output-path>$USER_HOME$/Plocha/betaserver/plugins</output-path>
<root id="archive" name="MenuMaker.jar">
<element id="module-output" name="MenuMaker" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/yaml/snakeyaml/2.0/snakeyaml-2.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/net/kyori/examination-string/1.3.0/examination-string-1.3.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.13.1/jackson-core-2.13.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/fasterxml/jackson/dataformat/jackson-dataformat-yaml/2.13.1/jackson-dataformat-yaml-2.13.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.13.1/jackson-databind-2.13.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/net/kyori/examination-api/1.3.0/examination-api-1.3.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/annotations/24.1.0/annotations-24.1.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/net/kyori/adventure-key/4.16.0/adventure-key-4.16.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/net/kyori/adventure-api/4.16.0/adventure-api-4.16.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.13.1/jackson-annotations-2.13.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/net/kyori/adventure-text-minimessage/4.16.0/adventure-text-minimessage-4.16.0.jar" path-in-jar="/" />
</root>
</artifact>
</component>

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="MenuMaker" />
</profile>
</annotationProcessing>
</component>
</project>

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
</component>
</project>

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="https://repo.maven.apache.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="sonatype" />
<option name="name" value="sonatype" />
<option name="url" value="https://oss.sonatype.org/content/groups/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="spigotmc-repo" />
<option name="name" value="spigotmc-repo" />
<option name="url" value="https://hub.spigotmc.org/nexus/content/repositories/snapshots/" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
</component>
</project>

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/MenuMaker.iml" filepath="$PROJECT_DIR$/MenuMaker.iml" />
</modules>
</component>
</project>

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="FacetManager">
<facet type="minecraft" name="Minecraft">
<configuration>
<autoDetectTypes>
<platformType>SPIGOT</platformType>
</autoDetectTypes>
<projectReimportVersion>1</projectReimportVersion>
</configuration>
</facet>
</component>
</module>

@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>xyz.soukup</groupId>
<artifactId>MenuMaker</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>MenuMaker</name>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
<repositories>
<repository>
<id>spigotmc-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository>
<repository>
<id>sonatype</id>
<url>https://oss.sonatype.org/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.20.1-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>net.kyori</groupId>
<artifactId>adventure-text-minimessage</artifactId>
<version>4.16.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
<version>2.13.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.13.1</version> <!-- or the version compatible with your project -->
</dependency>
</dependencies>
</project>

@ -0,0 +1,56 @@
package xyz.soukup.menumaker;
import org.bukkit.Bukkit;
import org.bukkit.NamespacedKey;
import org.bukkit.entity.Player;
import org.bukkit.persistence.PersistentDataType;
import org.bukkit.plugin.java.JavaPlugin;
import xyz.soukup.menumaker.commands.*;
import xyz.soukup.menumaker.events.saveInventory;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public final class MenuMaker extends JavaPlugin {
public static Logger logger = Bukkit.getLogger();
@Override
public void onEnable() {
Objects.requireNonNull(getCommand("menumaker")).setExecutor(new menumaker());
Objects.requireNonNull(getCommand("menumaker")).setTabCompleter(new menumaker());
Objects.requireNonNull(getCommand("createitem")).setTabCompleter(new createItem());
Objects.requireNonNull(getCommand("enchantitem")).setExecutor(new enchantitem());
Objects.requireNonNull(getCommand("enchantitem")).setTabCompleter(new enchantitem());
Objects.requireNonNull(getCommand("createitem")).setExecutor(new createItem());
Objects.requireNonNull(getCommand("hideenchant")).setExecutor(new hideEnchant());
Objects.requireNonNull(getCommand("setsize")).setExecutor(new setsize());
getServer().getPluginManager().registerEvents(new saveInventory(), this);
logger.info("plugin enabled");
}
@Override
public void onDisable() {
// Plugin shutdown logic
}
public static List<String> getArgs(String input) {
List<String> result = new ArrayList<>();
Pattern pattern = Pattern.compile("\"([^\"]*)\"|([^\\s]+)");
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
String match = matcher.group(1); // Check if the first group (quoted string) matched
if (match == null) {
match = matcher.group(2); // If not, use the second group (unquoted string)
}
result.add(match);
}
return result;
}
}

@ -0,0 +1,39 @@
package xyz.soukup.menumaker;
import org.bukkit.NamespacedKey;
import org.bukkit.entity.Player;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.persistence.PersistentDataContainer;
import org.bukkit.persistence.PersistentDataType;
public class PDC {
public static void WritePlayerPDC(Player player, String key, PersistentDataType type, Object value){
NamespacedKey nKey = new NamespacedKey(MenuMaker.getPlugin(MenuMaker.class), key);
PersistentDataContainer pdc = player.getPersistentDataContainer();
pdc.set(nKey, type, value);
}
public static Object GetPlayerPDC(Player player, String key, PersistentDataType type){
NamespacedKey nKey = new NamespacedKey(MenuMaker.getPlugin(MenuMaker.class), key);
PersistentDataContainer pdc = player.getPersistentDataContainer();
return pdc.get(nKey, type);
}
public static void DeletePlayerPDC(Player player, String key){
NamespacedKey nKey = new NamespacedKey(MenuMaker.getPlugin(MenuMaker.class), key);
PersistentDataContainer pdc = player.getPersistentDataContainer();
pdc.remove(nKey);
}
public static ItemMeta WriteItemMetaPDC(ItemMeta itemMeta, String key, PersistentDataType type, Object value){
NamespacedKey nKey = new NamespacedKey(MenuMaker.getPlugin(MenuMaker.class), key);
PersistentDataContainer pdc = itemMeta.getPersistentDataContainer();
pdc.set(nKey, type, value);
return itemMeta;
}
public static Object GetItemMetaPDC(ItemMeta itemMeta, String key, PersistentDataType type){
NamespacedKey nKey = new NamespacedKey(MenuMaker.getPlugin(MenuMaker.class), key);
PersistentDataContainer pdc = itemMeta.getPersistentDataContainer();
return pdc.get(nKey, type);
}
}

@ -0,0 +1,78 @@
package xyz.soukup.menumaker.commands;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import xyz.soukup.menumaker.MenuMaker;
import javax.annotation.Nonnull;
import java.awt.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
public class createItem implements TabExecutor {
@Override
public boolean onCommand(@Nonnull CommandSender commandSender,@Nonnull Command command,@Nonnull String s,@Nonnull String[] args) {
StringBuilder argsString = new StringBuilder();
for (String ss : args){
argsString.append(ss).append(" ");
}
List<String> processedArgs = MenuMaker.getArgs(argsString.toString());
if (!processedArgs.isEmpty() && Material.getMaterial(processedArgs.get(0).toUpperCase()) != null){
ItemStack item = new ItemStack(Objects.requireNonNull(Material.getMaterial(processedArgs.get(0).toUpperCase())));
if (processedArgs.size() > 1){
ItemMeta itemMeta = item.getItemMeta();
assert itemMeta != null;
itemMeta.setDisplayName(ChatColor.translateAlternateColorCodes('&', processedArgs.get(1)));
if (processedArgs.size() > 2){
processedArgs.remove(0);
processedArgs.remove(0);
int i = 0;
while (i< processedArgs.size()){
processedArgs.set(i, ChatColor.translateAlternateColorCodes('&', processedArgs.get(i)));
i++;
}
itemMeta.setLore(processedArgs);
}
item.setItemMeta(itemMeta);
}
((Player) commandSender).getInventory().addItem(item);
return true;
}else{
commandSender.sendMessage(ChatColor.RED + "chybí argument");
return false;
}
}
@Override
public List<String> onTabComplete(@Nonnull CommandSender commandSender,@Nonnull Command command,@Nonnull String s,@Nonnull String[] args) {
List<String> completetion = new ArrayList<>();
StringBuilder argsString = new StringBuilder();
for (String ss : args){
argsString.append(ss).append(" ");
}
List<String> processedArgs = MenuMaker.getArgs(argsString.toString());
if (args.length == 1){
for (Material m: Material.values()){
String mname = m.name().toLowerCase();
if (mname.contains(args[0])){
completetion.add(mname);
}
}
}else if (processedArgs.size() > 2){
completetion.add("\"lore linka\"");
}else{
completetion.add("\"název itemu\"");
}
return completetion;
}
}

@ -0,0 +1,60 @@
package xyz.soukup.menumaker.commands;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.NamespacedKey;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import xyz.soukup.menumaker.PDC;
import java.util.ArrayList;
import java.util.List;
public class enchantitem implements TabExecutor {
@Override
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] args) {
Player player = (Player) commandSender;
ItemStack item = player.getInventory().getItemInMainHand();
if (item == null) {
commandSender.sendMessage("No item");
return false;
}
for (Enchantment enchantment : Enchantment.values()) {
if (enchantment.getKey().toString().equals(args[0])){
int level = 1;
if (Integer.getInteger(args[1]) != null){
level = Integer.parseInt(args[1]);
}
item.addUnsafeEnchantment(enchantment, level);
return true;
}
}
commandSender.sendMessage(ChatColor.RED + "Wrong enchant");
return false;
}
@Nullable
@Override
public List<String> onTabComplete(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] args) {
List<String> completetions = new ArrayList<>();
if (args.length <= 1){
for (Enchantment enchantment: Enchantment.values()){
completetions.add(enchantment.getKey().toString());
}
}else{
completetions.add("1");
completetions.add("2");
completetions.add("3");
completetions.add("4");
completetions.add("5");
}
return completetions;
}
}

@ -0,0 +1,29 @@
package xyz.soukup.menumaker.commands;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull;
public class hideEnchant implements CommandExecutor {
@Override
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] strings) {
ItemStack item = ((Player) commandSender).getInventory().getItemInMainHand();
ItemMeta meta = item.getItemMeta();
assert meta != null;
if (meta.hasItemFlag(ItemFlag.HIDE_ENCHANTS)){
meta.removeItemFlags(ItemFlag.HIDE_ENCHANTS);
commandSender.sendMessage(ChatColor.AQUA + "Enchants will be shown");
}else {
meta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
commandSender.sendMessage(ChatColor.AQUA + "Enchants won' be shown");
}
return true;
}
}

@ -0,0 +1,124 @@
package xyz.soukup.menumaker.commands;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.persistence.PersistentDataType;
import xyz.soukup.menumaker.MenuMaker;
import xyz.soukup.menumaker.PDC;
import javax.annotation.Nonnull;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class menumaker implements TabExecutor {
MenuMaker plugin = MenuMaker.getPlugin(MenuMaker.class);
@Override
public boolean onCommand(@Nonnull CommandSender commandSender,@Nonnull Command command,@Nonnull String s,@Nonnull String[] args) {
Player player = (Player) commandSender;
StringBuilder nameBuilder;
int i;
switch (args[0]){
case "create":
File menuFile = new File(plugin.getDataFolder() + "/menus/", args[2] + ".yml");
if (menuFile.exists()){
commandSender.sendMessage(ChatColor.RED + "Menu already exists. Use /mm edit " + args[2]);
return false;
}
nameBuilder = new StringBuilder();
i = 3;
while (i < args.length){
nameBuilder.append(args[i]).append(" ");
i++;
}
Inventory inventory = Bukkit.createInventory(null, Integer.parseInt(args[1]), ChatColor.translateAlternateColorCodes('&', nameBuilder.toString()));
PDC.WritePlayerPDC(player, "opened-inv", PersistentDataType.STRING, args[2]);
player.openInventory(inventory);
return true;
case "edit":
File mFile = new File(plugin.getDataFolder() + "/menus/", args[1] + ".yml");
if (!mFile.exists()){
commandSender.sendMessage(ChatColor.RED + "Menu does not exists. Use /mm create <size> <name> <Display Name>");
return false;
}
YamlConfiguration menuConfig = YamlConfiguration.loadConfiguration(mFile);
String name = menuConfig.getString("data.name");
int size = menuConfig.getInt("data.size");
if (args.length > 2){
nameBuilder = new StringBuilder();
i = 2;
while (i < args.length){
nameBuilder.append(args[i]).append(" ");
i++;
}
name = ChatColor.translateAlternateColorCodes('&', nameBuilder.toString());
}
assert name != null;
Inventory menu = Bukkit.createInventory(null, size, name);
for (int ii = 0; ii < size; ii++) {
if (menuConfig.getObject("data.items." + ii + ".itemstack", ItemStack.class) != null){
menu.setItem(ii, menuConfig.getObject("data.items." + ii + ".itemstack", ItemStack.class));
}
}
PDC.WritePlayerPDC(player, "opened-inv", PersistentDataType.STRING, args[1]);
player.openInventory(menu);
}
return false;
}
@Override
public List<String> onTabComplete(@Nonnull CommandSender commandSender, @Nonnull Command command,@Nonnull String s,@Nonnull String[] args) {
List<String> completetions = new ArrayList<>();
switch (args.length){
case 1:
completetions.add("create");
completetions.add("edit");
completetions.add("delete");
case 2:
if (args[0].equals("create")) {
completetions.add("9");
completetions.add("18");
completetions.add("27");
completetions.add("36");
completetions.add("45");
completetions.add("54");
}
}
return completetions;
}
public static Inventory loadInventoryFromFile(File file) {
YamlConfiguration config = YamlConfiguration.loadConfiguration(file);
// Check if the "data" key exists
if (!config.contains("data")) {
return null; // If "data" key doesn't exist, return null
}
ConfigurationSection dataSection = config.getConfigurationSection("data");
Inventory inventory = Bukkit.createInventory(null, dataSection.getInt("size"), dataSection.getString("title"));
// Deserialize ItemStacks from the YAML configuration
for (String key : dataSection.getKeys(false)) {
if (!key.equals("size") && !key.equals("title")) {
ItemStack item = dataSection.getItemStack(key);
inventory.addItem(item);
}
}
return inventory;
}
}

@ -0,0 +1,15 @@
package xyz.soukup.menumaker.commands;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
public class setsize implements CommandExecutor {
@Override
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] args) {
((Player) commandSender).getInventory().getItemInMainHand().setAmount(Integer.getInteger(args[0]));
return true;
}
}

@ -0,0 +1,60 @@
package xyz.soukup.menumaker.events;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryView;
import org.bukkit.inventory.ItemStack;
import org.bukkit.persistence.PersistentDataType;
import xyz.soukup.menumaker.MenuMaker;
import xyz.soukup.menumaker.PDC;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class saveInventory implements Listener {
@EventHandler
public void onPlayerCloseMenuEditor(InventoryCloseEvent event) throws IOException {
Player player = (Player) event.getPlayer();
String inventoryName = (String) PDC.GetPlayerPDC(player, "opened-inv", PersistentDataType.STRING);
if (inventoryName != null){
PDC.DeletePlayerPDC(player, "opened-inv");
MenuMaker plugin = MenuMaker.getPlugin(MenuMaker.class);
Files.createDirectories(Paths.get(plugin.getDataFolder() + "/menus"));
File menuFile = new File(plugin.getDataFolder() + "/menus/", inventoryName + ".yml");
YamlConfiguration menuConfig = YamlConfiguration.loadConfiguration(menuFile);
Inventory menu = event.getInventory();
InventoryView view = event.getView();
menuConfig.set("data.name", view.getTitle());
menuConfig.set("data.size", menu.getSize());
int i = 0;
for (ItemStack item: menu.getContents()){
if(item != null){
menuConfig.set("data.items." + i + ".itemstack", item);
menuConfig.set("data.items." + i + ".identifier", null);
}else{
menuConfig.set("data.items." + i + ".itemstack", null);
menuConfig.set("data.items." + i + ".identifier", null);
}
i++;
}
menuConfig.save(menuFile);
player.sendMessage(ChatColor.AQUA + "menu saved as plugins/menumaker/menus/"+ inventoryName + ".yml");
}
}
}

@ -0,0 +1,21 @@
name: MenuMaker
version: '${project.version}'
main: xyz.soukup.menumaker.MenuMaker
api-version: '1.20'
commands:
menumaker:
permission: menumaker.commands.menumaker
aliases:
- "mm"
createitem:
permission: menumaker.commands.createitem
aliases:
- "ci"
enchantitem:
permission: menumaker.commands.enchantitem
aliases:
- "ei"
hideenchant:
permission: menumaker.commands.hideenchand
aliases:
- "he"

@ -0,0 +1,21 @@
name: MenuMaker
version: '1.0-SNAPSHOT'
main: xyz.soukup.menumaker.MenuMaker
api-version: '1.20'
commands:
menumaker:
permission: menumaker.commands.menumaker
aliases:
- "mm"
createitem:
permission: menumaker.commands.createitem
aliases:
- "ci"
enchantitem:
permission: menumaker.commands.enchantitem
aliases:
- "ei"
hideenchant:
permission: menumaker.commands.hideenchand
aliases:
- "he"
Loading…
Cancel
Save