Rename package name from org.zhdev to net.zhira

This commit is contained in:
Roman Zhuravlev 2025-04-23 23:31:42 +05:00
parent cc7f16f941
commit 6ab7e89561
61 changed files with 314 additions and 192 deletions

View file

@ -2,15 +2,15 @@
```xml ```xml
<repositories> <repositories>
<repository> <repository>
<id>zhdev-repo</id> <id>zhira-repo</id>
<url>https://maven.zhdev.org/repository/</url> <url>https://maven.zhira.net/repository/</url>
</repository> </repository>
</repositories> </repositories>
``` ```
```xml ```xml
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.zhdev.varioutil</groupId> <groupId>net.zhira.varioutil</groupId>
<artifactId>all</artifactId> <artifactId>all</artifactId>
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
</dependency> </dependency>
@ -22,7 +22,7 @@
```xml ```xml
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.zhdev.varioutil</groupId> <groupId>net.zhira.varioutil</groupId>
<artifactId>common</artifactId> <artifactId>common</artifactId>
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
</dependency> </dependency>
@ -32,7 +32,7 @@
```java ```java
import java.lang.reflect.Field; import java.lang.reflect.Field;
import org.zhdev.varioutil.ReflectionUtils; import net.zhira.varioutil.ReflectionUtils;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
public class BukkitFields { public class BukkitFields {
@ -53,7 +53,7 @@ public class BukkitFields {
```xml ```xml
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.zhdev.varioutil</groupId> <groupId>net.zhira.varioutil</groupId>
<artifactId>io</artifactId> <artifactId>io</artifactId>
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
</dependency> </dependency>
@ -62,8 +62,8 @@ public class BukkitFields {
#### Code #### Code
```java ```java
import org.zhdev.varioutil.Config; import net.zhira.varioutil.Config;
import org.zhdev.varioutil.YamlConfig; import net.zhira.varioutil.YamlConfig;
import java.util.List; import java.util.List;

View file

@ -1,9 +1,12 @@
<project> <?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> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<artifactId>parent</artifactId> <artifactId>parent</artifactId>
<groupId>org.zhdev.varioutil</groupId> <groupId>net.zhira.varioutil</groupId>
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
</parent> </parent>

View file

@ -1,8 +1,11 @@
<project> <?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> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>org.zhdev.varioutil</groupId> <groupId>net.zhira.varioutil</groupId>
<artifactId>parent</artifactId> <artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
</parent> </parent>
@ -44,7 +47,7 @@
<dependency> <dependency>
<groupId>org.spigotmc</groupId> <groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId> <artifactId>spigot-api</artifactId>
<version>1.20-R0.1-SNAPSHOT</version> <version>1.21.1-R0.1-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
<exclusions> <exclusions>
<exclusion> <exclusion>

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil; package net.zhira.varioutil;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.command.Command; import org.bukkit.command.Command;

View file

@ -1,5 +1,8 @@
package org.zhdev.varioutil; package net.zhira.varioutil;
import net.zhira.varioutil.language.Language;
import net.zhira.varioutil.util.CollectionUtils;
import net.zhira.varioutil.util.ColorUtils;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.PluginIdentifiableCommand; import org.bukkit.command.PluginIdentifiableCommand;
@ -9,17 +12,14 @@ import org.bukkit.event.Listener;
import org.bukkit.plugin.PluginDescriptionFile; import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.java.JavaPluginLoader; import org.bukkit.plugin.java.JavaPluginLoader;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.zhdev.varioutil.bukkit.command.PreparedPluginCommand; import net.zhira.varioutil.bukkit.command.PreparedPluginCommand;
import org.zhdev.varioutil.config.BukkitYamlConfig; import net.zhira.varioutil.config.BukkitYamlConfig;
import org.zhdev.varioutil.config.Config; import net.zhira.varioutil.config.Config;
import org.zhdev.varioutil.config.ConfigSection; import net.zhira.varioutil.config.ConfigSection;
import org.zhdev.varioutil.config.YamlConfig; import net.zhira.varioutil.config.YamlConfig;
import org.zhdev.varioutil.language.Language; import net.zhira.varioutil.sql.SqlAdapter;
import org.zhdev.varioutil.sql.SqlAdapter; import net.zhira.varioutil.util.BukkitUtils;
import org.zhdev.varioutil.util.BukkitUtils; import net.zhira.varioutil.util.ConfigUtils;
import org.zhdev.varioutil.util.CollectionUtils;
import org.zhdev.varioutil.util.ColorUtils;
import org.zhdev.varioutil.util.ConfigUtils;
import java.io.File; import java.io.File;
import java.nio.file.Path; import java.nio.file.Path;

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.bukkit; package net.zhira.varioutil.bukkit;
import org.bukkit.Material; import org.bukkit.Material;

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.bukkit.command; package net.zhira.varioutil.bukkit.command;
import org.bukkit.command.*; import org.bukkit.command.*;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.bukkit.command; package net.zhira.varioutil.bukkit.command;
import org.bukkit.command.*; import org.bukkit.command.*;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.bukkit.gui; package net.zhira.varioutil.bukkit.gui;
import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryClickEvent;

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.bukkit.gui; package net.zhira.varioutil.bukkit.gui;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;

View file

@ -1,6 +1,6 @@
package org.zhdev.varioutil.bukkit.gui; package net.zhira.varioutil.bukkit.gui;
import org.zhdev.varioutil.config.ConfigSection; import net.zhira.varioutil.config.ConfigSection;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.bukkit.gui; package net.zhira.varioutil.bukkit.gui;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;

View file

@ -1,11 +1,11 @@
package org.zhdev.varioutil.bukkit.gui; package net.zhira.varioutil.bukkit.gui;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.inventory.meta.SkullMeta; import org.bukkit.inventory.meta.SkullMeta;
import org.zhdev.varioutil.util.BukkitUtils; import net.zhira.varioutil.util.BukkitUtils;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;

View file

@ -1,9 +1,9 @@
package org.zhdev.varioutil.bukkit.gui; package net.zhira.varioutil.bukkit.gui;
import net.zhira.varioutil.config.ConfigSection;
import net.zhira.varioutil.util.StringUtils;
import org.bukkit.Material; import org.bukkit.Material;
import org.zhdev.varioutil.bukkit.LegacyMaterial; import net.zhira.varioutil.bukkit.LegacyMaterial;
import org.zhdev.varioutil.config.ConfigSection;
import org.zhdev.varioutil.util.StringUtils;
public class GuiIconConfig { public class GuiIconConfig {
protected final Material type; protected final Material type;

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.bukkit.gui; package net.zhira.varioutil.bukkit.gui;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.bukkit.gui; package net.zhira.varioutil.bukkit.gui;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.event.inventory.InventoryType; import org.bukkit.event.inventory.InventoryType;

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.config; package net.zhira.varioutil.config;
import org.bukkit.configuration.serialization.ConfigurationSerializable; import org.bukkit.configuration.serialization.ConfigurationSerializable;
import org.bukkit.configuration.serialization.ConfigurationSerialization; import org.bukkit.configuration.serialization.ConfigurationSerialization;

View file

@ -0,0 +1,132 @@
package net.zhira.varioutil.util;
import com.mojang.authlib.GameProfile;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandMap;
import org.bukkit.command.SimpleCommandMap;
import org.bukkit.inventory.meta.SkullMeta;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Supplier;
class BukkitReflectionUtils {
private static final String OBC_PACKAGE = Bukkit.getServer().getClass().getPackage().getName();
private static final Class<?> __CraftServer__CLASS = ReflectionUtils.searchType(OBC_PACKAGE + ".CraftServer");
private static final Class<?> __CraftMetaSkull__CLASS = ReflectionUtils.searchType(OBC_PACKAGE + ".inventory.CraftMetaSkull");
private static final Field __commandMap__CraftServer__FIELD = ReflectionUtils.fieldSearcher()
.type(__CraftServer__CLASS)
.fieldOf("commandMap")
.fieldType(CommandMap.class)
.search();
private static final Field __knownCommands__SimpleCommandMap__FIELD = ReflectionUtils.fieldSearcher()
.type(SimpleCommandMap.class)
.fieldOf("knownCommands")
.fieldType(Map.class)
.search();
private static final GameProfileConsumer GAME_PROFILE_CONSUMER;
static CommandMap getCommandMap() {
return (CommandMap) ReflectionUtils.getFieldValue(Bukkit.getServer(), __commandMap__CraftServer__FIELD);
}
@SuppressWarnings("unchecked")
static Map<String, Command> getKnownCommands() {
return (Map<String, Command>) ReflectionUtils.getFieldValue(getCommandMap(), __knownCommands__SimpleCommandMap__FIELD);
}
static void setProfile(SkullMeta meta, GameProfile profile) {
GAME_PROFILE_CONSUMER.accept(meta, profile);
}
private interface GameProfileConsumer {
void accept(SkullMeta meta, GameProfile profile);
}
private static class ModernGameProfileConsumer implements GameProfileConsumer {
private final Class<?> __ResolvableProfile_CLASS = ReflectionUtils.getType("net.minecraft.world.item.component.ResolvableProfile");
private final Constructor<?> __ResolvableProfile_CONSTRUCTOR;
protected final Method __setProfile__CraftMetaSkull__METHOD = ReflectionUtils.methodSearcher()
.type(__CraftMetaSkull__CLASS)
.methodOf("setProfile")
.parameters(__ResolvableProfile_CLASS)
.returns(void.class)
.search();
ModernGameProfileConsumer() {
Constructor<?> resolvableConstructor;
try {
resolvableConstructor = __ResolvableProfile_CLASS.getConstructor(GameProfile.class);
} catch (NoSuchMethodException e) {
throw new NoSuchMethodError("Cannot get constructor of " + __ResolvableProfile_CLASS);
}
__ResolvableProfile_CONSTRUCTOR = resolvableConstructor;
}
@Override
public void accept(SkullMeta meta, GameProfile profile) {
try {
Object resolvableProfile = __ResolvableProfile_CONSTRUCTOR.newInstance(profile);
ReflectionUtils.invokeMethod(meta, __setProfile__CraftMetaSkull__METHOD, resolvableProfile);
} catch (ReflectiveOperationException e) {
throw new RuntimeException(e);
}
}
}
private static class LegacyGameProfileConsumer implements GameProfileConsumer {
protected final Method __setProfile__CraftMetaSkull__METHOD = ReflectionUtils.methodSearcher()
.type(__CraftMetaSkull__CLASS)
.methodOf("setProfile")
.parameters(GameProfile.class)
.returns(void.class)
.search();
@Override
public void accept(SkullMeta meta, GameProfile profile) {
ReflectionUtils.invokeMethod(meta, __setProfile__CraftMetaSkull__METHOD, profile);
}
}
private static class AncientGameProfileConsumer implements GameProfileConsumer {
private final Field __profile__CraftMetaSkull__FIELD = ReflectionUtils.fieldSearcher()
.type(__CraftMetaSkull__CLASS)
.fieldOf("profile")
.fieldType(GameProfile.class)
.search();
@Override
public void accept(SkullMeta meta, GameProfile profile) {
ReflectionUtils.setFieldValue(meta, __profile__CraftMetaSkull__FIELD, profile);
}
}
@SafeVarargs
private static GameProfileConsumer tryCreateGameProfileConsumer(Supplier<GameProfileConsumer>... suppliers) {
List<String> errorMessages = new ArrayList<>();
for (Supplier<GameProfileConsumer> supplier : suppliers) {
try {
return supplier.get();
} catch (Exception | Error e) {
errorMessages.add(e.getClass() + ": " + e.getMessage());
}
}
throw new IllegalStateException("Cannot create GameProfileConsumer: " + String.join("; ", errorMessages));
}
static {
GAME_PROFILE_CONSUMER = tryCreateGameProfileConsumer(
ModernGameProfileConsumer::new,
LegacyGameProfileConsumer::new,
AncientGameProfileConsumer::new
);
}
}

View file

@ -1,7 +1,8 @@
package org.zhdev.varioutil.util; package net.zhira.varioutil.util;
import com.mojang.authlib.GameProfile; import com.mojang.authlib.GameProfile;
import com.mojang.authlib.properties.Property; import com.mojang.authlib.properties.Property;
import net.zhira.varioutil.Version;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandMap; import org.bukkit.command.CommandMap;
@ -9,15 +10,11 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta; import org.bukkit.inventory.meta.SkullMeta;
import org.bukkit.util.io.BukkitObjectInputStream; import org.bukkit.util.io.BukkitObjectInputStream;
import org.bukkit.util.io.BukkitObjectOutputStream; import org.bukkit.util.io.BukkitObjectOutputStream;
import org.zhdev.varioutil.Version;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.util.Base64; import java.util.*;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import java.util.function.Predicate; import java.util.function.Predicate;
public class BukkitUtils { public class BukkitUtils {
@ -28,6 +25,8 @@ public class BukkitUtils {
private static final Map<String, GameProfile> PROFILE_CACHE = new HashMap<>(); private static final Map<String, GameProfile> PROFILE_CACHE = new HashMap<>();
private static final String PROFILE_NAME_CHARACTERS = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890_";
public static Command getCommand(String label) { public static Command getCommand(String label) {
return KNOWN_COMMANDS.get(label); return KNOWN_COMMANDS.get(label);
} }
@ -55,7 +54,12 @@ public class BukkitUtils {
public static void setSkullTexture(SkullMeta meta, String base64) { public static void setSkullTexture(SkullMeta meta, String base64) {
GameProfile profile = PROFILE_CACHE.get(base64); GameProfile profile = PROFILE_CACHE.get(base64);
if (profile == null) { if (profile == null) {
profile = new GameProfile(UUID.randomUUID(), base64); Random random = new Random();
char[] buffer = new char[16];
for (int i = 0; i < 16; i++) {
buffer[i] = PROFILE_NAME_CHARACTERS.charAt(random.nextInt(PROFILE_NAME_CHARACTERS.length()));
}
profile = new GameProfile(UUID.randomUUID(), String.valueOf(buffer));
profile.getProperties().put("textures", new Property("textures", base64)); profile.getProperties().put("textures", new Property("textures", base64));
PROFILE_CACHE.put(base64, profile); PROFILE_CACHE.put(base64, profile);
} }

View file

@ -1,51 +0,0 @@
package org.zhdev.varioutil.util;
import com.mojang.authlib.GameProfile;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandMap;
import org.bukkit.command.SimpleCommandMap;
import org.bukkit.inventory.meta.SkullMeta;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Map;
import static org.zhdev.varioutil.util.ReflectionUtils.*;
class BukkitReflectionUtils {
private static final String VERSION = Bukkit.getServer().getClass().getName().split("\\.")[3];
private static final Class<?> __CraftServer__CLASS = searchType("org.bukkit.craftbukkit." + VERSION + ".CraftServer");
private static final Method __setProfile__CraftMetaSkull__METHOD = ReflectionUtils.methodSearcher()
.typeOf("org.bukkit.craftbukkit." + VERSION + ".inventory.CraftMetaSkull")
.methodOf("setProfile")
.parameters(GameProfile.class)
.returns(void.class)
.search();
private static final Field __commandMap__CraftServer__FIELD = fieldSearcher()
.fieldOf("commandMap")
.type(__CraftServer__CLASS)
.fieldType(CommandMap.class)
.search();
private static final Field __knownCommands__SimpleCommandMap__FIELD = fieldSearcher()
.fieldOf("knownCommands")
.type(SimpleCommandMap.class)
.fieldType(Map.class)
.search();
static CommandMap getCommandMap() {
return (CommandMap) getFieldValue(__commandMap__CraftServer__FIELD, Bukkit.getServer());
}
@SuppressWarnings("unchecked")
static Map<String, Command> getKnownCommands() {
return (Map<String, Command>) getFieldValue(__knownCommands__SimpleCommandMap__FIELD, getCommandMap());
}
static void setProfile(SkullMeta meta, GameProfile profile) {
ReflectionUtils.invokeMethod(meta, __setProfile__CraftMetaSkull__METHOD, profile);
}
}

View file

@ -1,9 +1,12 @@
<project> <?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> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<artifactId>parent</artifactId> <artifactId>parent</artifactId>
<groupId>org.zhdev.varioutil</groupId> <groupId>net.zhira.varioutil</groupId>
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
</parent> </parent>

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil; package net.zhira.varioutil;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;

View file

@ -1,6 +1,6 @@
package org.zhdev.varioutil.language; package net.zhira.varioutil.language;
import org.zhdev.varioutil.util.StringUtils; import net.zhira.varioutil.util.StringUtils;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;

View file

@ -1,6 +1,6 @@
package org.zhdev.varioutil.reflection; package net.zhira.varioutil.reflection;
import org.zhdev.varioutil.util.ReflectionUtils; import net.zhira.varioutil.util.ReflectionUtils;
import java.lang.reflect.Field; import java.lang.reflect.Field;
@ -74,7 +74,7 @@ public class FieldSearcher {
} }
public Object get() { public Object get() {
return ReflectionUtils.getFieldValue(search(), instance); return ReflectionUtils.getFieldValue(instance, search());
} }
public <T> T get(Class<T> type) { public <T> T get(Class<T> type) {

View file

@ -1,6 +1,6 @@
package org.zhdev.varioutil.reflection; package net.zhira.varioutil.reflection;
import org.zhdev.varioutil.util.ReflectionUtils; import net.zhira.varioutil.util.ReflectionUtils;
import java.lang.reflect.Method; import java.lang.reflect.Method;

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.util; package net.zhira.varioutil.util;
import java.util.Collection; import java.util.Collection;
import java.util.function.Function; import java.util.function.Function;

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.util; package net.zhira.varioutil.util;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.util; package net.zhira.varioutil.util;
import java.time.*; import java.time.*;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.util; package net.zhira.varioutil.util;
public class EnumUtils { public class EnumUtils {
private static <T extends Enum<T>> T[] getValues(T eNum) { private static <T extends Enum<T>> T[] getValues(T eNum) {

View file

@ -1,7 +1,7 @@
package org.zhdev.varioutil.util; package net.zhira.varioutil.util;
import org.zhdev.varioutil.reflection.FieldSearcher; import net.zhira.varioutil.reflection.FieldSearcher;
import org.zhdev.varioutil.reflection.MethodSearcher; import net.zhira.varioutil.reflection.MethodSearcher;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@ -61,7 +61,8 @@ public class ReflectionUtils {
for (String typeName : typeNames) { for (String typeName : typeNames) {
try { try {
return Class.forName(typeName); return Class.forName(typeName);
} catch (ClassNotFoundException ignored) {} } catch (ClassNotFoundException ignored) {
}
} }
throw new NoClassDefFoundError(String.join(", ", typeNames)); throw new NoClassDefFoundError(String.join(", ", typeNames));
@ -81,7 +82,8 @@ public class ReflectionUtils {
for (String typeName : typeNames) { for (String typeName : typeNames) {
try { try {
return Class.forName(packageName + '.' + typeName); return Class.forName(packageName + '.' + typeName);
} catch (ClassNotFoundException ignored) {} } catch (ClassNotFoundException ignored) {
}
} }
} }
@ -103,7 +105,8 @@ public class ReflectionUtils {
return checkMethodType(getMethod0(type, methodName, parameterTypes), returnType); return checkMethodType(getMethod0(type, methodName, parameterTypes), returnType);
} catch (IllegalStateException e) { } catch (IllegalStateException e) {
exception = e; exception = e;
} catch (NoSuchMethodException ignored) { } } catch (NoSuchMethodException ignored) {
}
} }
if (parameterTypes.length > 0) { if (parameterTypes.length > 0) {
@ -144,7 +147,8 @@ public class ReflectionUtils {
return checkFieldType(getField0(type, fieldName), fieldType); return checkFieldType(getField0(type, fieldName), fieldType);
} catch (IllegalStateException e) { } catch (IllegalStateException e) {
exception = e; exception = e;
} catch (NoSuchFieldException ignored) {} } catch (NoSuchFieldException ignored) {
}
} }
if (exception != null) { if (exception != null) {
@ -154,7 +158,7 @@ public class ReflectionUtils {
throw new NoSuchFieldError(String.join(", ", fieldNames) + " in " + type); throw new NoSuchFieldError(String.join(", ", fieldNames) + " in " + type);
} }
public static Object getFieldValue(Field field, Object instance) throws IllegalStateException { public static Object getFieldValue(Object instance, Field field) throws IllegalStateException {
try { try {
return field.get(instance); return field.get(instance);
} catch (IllegalAccessException e) { } catch (IllegalAccessException e) {
@ -162,7 +166,7 @@ public class ReflectionUtils {
} }
} }
public static void setFieldValue(Field field, Object instance, Object value) throws IllegalStateException { public static void setFieldValue(Object instance, Field field, Object value) throws IllegalStateException {
try { try {
field.set(instance, value); field.set(instance, value);
} catch (IllegalAccessException e) { } catch (IllegalAccessException e) {
@ -186,7 +190,8 @@ public class ReflectionUtils {
if (packagePath.equals(packageName)) { if (packagePath.equals(packageName)) {
try { try {
consumer.accept(loader.loadClass(link)); consumer.accept(loader.loadClass(link));
} catch (ClassNotFoundException ignored) {} } catch (ClassNotFoundException ignored) {
}
} }
} }
} }

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.util; package net.zhira.varioutil.util;
import java.io.*; import java.io.*;
import java.net.URL; import java.net.URL;

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.util; package net.zhira.varioutil.util;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;

View file

@ -1,9 +1,12 @@
<project> <?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> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<artifactId>parent</artifactId> <artifactId>parent</artifactId>
<groupId>org.zhdev.varioutil</groupId> <groupId>net.zhira.varioutil</groupId>
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
</parent> </parent>

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.sql; package net.zhira.varioutil.sql;
import java.sql.Connection; import java.sql.Connection;
import java.sql.SQLException; import java.sql.SQLException;

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.sql; package net.zhira.varioutil.sql;
import java.sql.Connection; import java.sql.Connection;
import java.sql.SQLException; import java.sql.SQLException;

View file

@ -1,6 +1,6 @@
package org.zhdev.varioutil.sql; package net.zhira.varioutil.sql;
import org.zhdev.varioutil.util.SqlUtils; import net.zhira.varioutil.util.SqlUtils;
public class H2Provider extends AbstractProvider { public class H2Provider extends AbstractProvider {
public H2Provider(String path, String username, String password) { public H2Provider(String path, String username, String password) {

View file

@ -1,6 +1,6 @@
package org.zhdev.varioutil.sql; package net.zhira.varioutil.sql;
import org.zhdev.varioutil.util.SqlUtils; import net.zhira.varioutil.util.SqlUtils;
public class MysqlProvider extends AbstractProvider { public class MysqlProvider extends AbstractProvider {
public MysqlProvider(String address, String dbname, String username, String password, boolean ssl) { public MysqlProvider(String address, String dbname, String username, String password, boolean ssl) {

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.sql; package net.zhira.varioutil.sql;
import java.sql.Connection; import java.sql.Connection;

View file

@ -1,6 +1,6 @@
package org.zhdev.varioutil.sql; package net.zhira.varioutil.sql;
import org.zhdev.varioutil.util.CheckedFunction; import net.zhira.varioutil.util.CheckedFunction;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.sql; package net.zhira.varioutil.sql;
public class SqlException extends RuntimeException { public class SqlException extends RuntimeException {
public SqlException() { public SqlException() {

View file

@ -1,6 +1,6 @@
package org.zhdev.varioutil.sql; package net.zhira.varioutil.sql;
import org.zhdev.varioutil.util.SqlUtils; import net.zhira.varioutil.util.SqlUtils;
public class SqliteProvider extends AbstractProvider { public class SqliteProvider extends AbstractProvider {
public SqliteProvider(String path) { public SqliteProvider(String path) {

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.util; package net.zhira.varioutil.util;
@FunctionalInterface @FunctionalInterface
public interface CheckedFunction<T, R, E extends Exception> { public interface CheckedFunction<T, R, E extends Exception> {

View file

@ -1,6 +1,6 @@
package org.zhdev.varioutil.util; package net.zhira.varioutil.util;
import org.zhdev.varioutil.sql.SqlException; import net.zhira.varioutil.sql.SqlException;
import java.io.IOException; import java.io.IOException;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
@ -42,14 +42,14 @@ public class SqlUtils {
try { try {
Connection connection; Connection connection;
if (username != null) { if (username != null) {
connection = DriverManager.getConnection("jdbc:h2:./" + encodeUrlValue(path) + ";mode=MySQL;AUTO_SERVER=TRUE", username, password); connection = DriverManager.getConnection("jdbc:h2:./" + path + ";mode=MySQL;AUTO_SERVER=TRUE", username, password);
} else { } else {
connection = DriverManager.getConnection("jdbc:h2:./" + encodeUrlValue(path) + ";mode=MySQL;AUTO_SERVER=TRUE", "sa", ""); connection = DriverManager.getConnection("jdbc:h2:./" + path + ";mode=MySQL;AUTO_SERVER=TRUE", "sa", "");
} }
return connection; return connection;
} catch (NoClassDefFoundError e) { } catch (NoClassDefFoundError e) {
throw new SqlException("No suitable driver"); throw new SqlException("No suitable driver");
} catch (SQLException | UnsupportedEncodingException e) { } catch (SQLException e) {
throw new SqlException(e); throw new SqlException(e);
} }
} }
@ -68,8 +68,8 @@ public class SqlUtils {
} }
} }
try { try {
return DriverManager.getConnection("jdbc:sqlite:" + encodeUrlValue(path.toString())); return DriverManager.getConnection("jdbc:sqlite:" + path);
} catch (SQLException | UnsupportedEncodingException e) { } catch (SQLException e) {
throw new SqlException(e); throw new SqlException(e);
} }
} }

View file

@ -1,9 +1,12 @@
<project> <?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> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<artifactId>parent</artifactId> <artifactId>parent</artifactId>
<groupId>org.zhdev.varioutil</groupId> <groupId>net.zhira.varioutil</groupId>
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
</parent> </parent>

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.config; package net.zhira.varioutil.config;
import java.io.*; import java.io.*;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.config; package net.zhira.varioutil.config;
public class ConfigException extends RuntimeException { public class ConfigException extends RuntimeException {
public ConfigException() { public ConfigException() {

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.config; package net.zhira.varioutil.config;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.config; package net.zhira.varioutil.config;
final class ConfigSectionNode { final class ConfigSectionNode {
Object value; Object value;

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.config; package net.zhira.varioutil.config;
import java.util.*; import java.util.*;
import java.util.function.Function; import java.util.function.Function;

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.config; package net.zhira.varioutil.config;
import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.LoaderOptions; import org.yaml.snakeyaml.LoaderOptions;

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.config; package net.zhira.varioutil.config;
import org.yaml.snakeyaml.LoaderOptions; import org.yaml.snakeyaml.LoaderOptions;
import org.yaml.snakeyaml.constructor.SafeConstructor; import org.yaml.snakeyaml.constructor.SafeConstructor;

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.config; package net.zhira.varioutil.config;
import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.representer.Representer; import org.yaml.snakeyaml.representer.Representer;

View file

@ -1,9 +1,12 @@
<project> <?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> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<artifactId>parent</artifactId> <artifactId>parent</artifactId>
<groupId>org.zhdev.varioutil</groupId> <groupId>net.zhira.varioutil</groupId>
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
</parent> </parent>

View file

@ -1,10 +1,10 @@
package org.zhdev.varioutil; package net.zhira.varioutil;
import org.zhdev.varioutil.config.Config; import net.zhira.varioutil.config.Config;
import org.zhdev.varioutil.config.ConfigException; import net.zhira.varioutil.config.ConfigException;
import org.zhdev.varioutil.language.Language; import net.zhira.varioutil.language.Language;
import org.zhdev.varioutil.sql.SqlAdapter; import net.zhira.varioutil.util.ResourceUtils;
import org.zhdev.varioutil.util.ResourceUtils; import net.zhira.varioutil.sql.SqlAdapter;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
@ -26,7 +26,7 @@ public interface PreparedPlugin {
default Path loadConfig(Config config, String pathname, boolean resourcePreload) { default Path loadConfig(Config config, String pathname, boolean resourcePreload) {
ClassLoader classLoader = getClass().getClassLoader(); ClassLoader classLoader = getClass().getClassLoader();
Path path = Paths.get(pathname); Path path = Paths.get(getDataDirectory().toString() + '/' + pathname);
try (InputStream stream = ResourceUtils.getResource(pathname, classLoader)) { try (InputStream stream = ResourceUtils.getResource(pathname, classLoader)) {
if (stream != null) { if (stream != null) {
if (resourcePreload) { if (resourcePreload) {

View file

@ -1,13 +1,21 @@
package org.zhdev.varioutil.util; package net.zhira.varioutil.util;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
public class ColorUtils { public class ColorUtils {
public static final char COLOR_CHAR = '§'; public static final char COLOR_CHAR = '§';
private static final Map<String, Pattern> COMPILED_PATTERNS = new HashMap<>();
private static Pattern getPattern(String regexp) {
return COMPILED_PATTERNS.computeIfAbsent(regexp, s -> Pattern.compile(regexp));
}
public static void translateAlternateColorCodes(StringBuilder builder, char replaceChar) { public static void translateAlternateColorCodes(StringBuilder builder, char replaceChar) {
Matcher m = Pattern.compile(Pattern.quote(String.valueOf(replaceChar)) + "(#[0-9a-fA-F]{6})").matcher(builder); Matcher m = getPattern(Pattern.quote(String.valueOf(replaceChar)) + "(#[0-9a-fA-F]{6})").matcher(builder);
int start = 0; int start = 0;
while (m.find(start)) { while (m.find(start)) {
String hex = m.group(1); String hex = m.group(1);

View file

@ -1,8 +1,8 @@
package org.zhdev.varioutil.util; package net.zhira.varioutil.util;
import org.zhdev.varioutil.config.ConfigSection; import net.zhira.varioutil.config.ConfigSection;
import org.zhdev.varioutil.language.Language; import net.zhira.varioutil.language.Language;
import org.zhdev.varioutil.sql.*; import net.zhira.varioutil.sql.*;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;

13
pom.xml
View file

@ -1,7 +1,10 @@
<project> <?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> <modelVersion>4.0.0</modelVersion>
<groupId>org.zhdev.varioutil</groupId> <groupId>net.zhira.varioutil</groupId>
<artifactId>parent</artifactId> <artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
<packaging>pom</packaging> <packaging>pom</packaging>
@ -23,8 +26,8 @@
<distributionManagement> <distributionManagement>
<repository> <repository>
<id>zhdev-repo</id> <id>zhira-repo</id>
<url>https://maven.zhdev.org/repository/</url> <url>https://maven.zhira.net/repository/</url>
</repository> </repository>
</distributionManagement> </distributionManagement>
@ -72,7 +75,7 @@
<phase>package</phase> <phase>package</phase>
<goals> <goals>
<goal>shade</goal> <goal>shade</goal>
</goals>repo </goals>
</execution> </execution>
</executions> </executions>
</plugin> </plugin>

View file

@ -1,9 +1,12 @@
<project> <?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> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<artifactId>parent</artifactId> <artifactId>parent</artifactId>
<groupId>org.zhdev.varioutil</groupId> <groupId>net.zhira.varioutil</groupId>
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
</parent> </parent>

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil; package net.zhira.varioutil;
import com.velocitypowered.api.proxy.ProxyServer; import com.velocitypowered.api.proxy.ProxyServer;
import org.slf4j.Logger; import org.slf4j.Logger;

View file

@ -1,17 +1,17 @@
package org.zhdev.varioutil; package net.zhira.varioutil;
import com.velocitypowered.api.event.Subscribe; import com.velocitypowered.api.event.Subscribe;
import com.velocitypowered.api.event.proxy.ProxyInitializeEvent; import com.velocitypowered.api.event.proxy.ProxyInitializeEvent;
import com.velocitypowered.api.event.proxy.ProxyShutdownEvent; import com.velocitypowered.api.event.proxy.ProxyShutdownEvent;
import com.velocitypowered.api.proxy.ProxyServer; import com.velocitypowered.api.proxy.ProxyServer;
import net.zhira.varioutil.config.ConfigSection;
import net.zhira.varioutil.language.Language;
import net.zhira.varioutil.util.ColorUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.zhdev.varioutil.config.Config; import net.zhira.varioutil.config.Config;
import org.zhdev.varioutil.config.ConfigSection; import net.zhira.varioutil.config.VelocityTomlConfig;
import org.zhdev.varioutil.config.VelocityTomlConfig; import net.zhira.varioutil.sql.SqlAdapter;
import org.zhdev.varioutil.language.Language; import net.zhira.varioutil.util.ConfigUtils;
import org.zhdev.varioutil.sql.SqlAdapter;
import org.zhdev.varioutil.util.ColorUtils;
import org.zhdev.varioutil.util.ConfigUtils;
import java.nio.file.Path; import java.nio.file.Path;

View file

@ -1,4 +1,4 @@
package org.zhdev.varioutil.config; package net.zhira.varioutil.config;
import com.electronwill.nightconfig.core.CommentedConfig; import com.electronwill.nightconfig.core.CommentedConfig;
import com.electronwill.nightconfig.toml.TomlFormat; import com.electronwill.nightconfig.toml.TomlFormat;