Skip to content

Commit

Permalink
Merge pull request #37 from flinbein/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
dpohvar authored Jan 7, 2022
2 parents 5451b05 + 84b4111 commit 03795d6
Show file tree
Hide file tree
Showing 88 changed files with 2,713 additions and 6,436 deletions.
16 changes: 15 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

<bukkit-version>1.15.2-R0.1-SNAPSHOT</bukkit-version>
<spigot-version>1.17.1-R0.1-SNAPSHOT</spigot-version>
<groovy-version>3.0.9</groovy-version>

<github.global.server>github</github.global.server>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
Expand All @@ -30,7 +31,7 @@

<groupId>me.dpohvar.powernbt</groupId>
<artifactId>powernbt</artifactId>
<version>0.8.9.2</version>
<version>0.9.2</version>
<packaging>jar</packaging>

<description>Powerful NBT editor for CraftBukkit 1.5 and later</description>
Expand Down Expand Up @@ -68,6 +69,19 @@
<version>${bukkit-version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>${groovy-version}</version>
<type>pom</type>
<scope>provided</scope>
</dependency>
</dependencies>

<build>
Expand Down
47 changes: 30 additions & 17 deletions src/main/java/me/dpohvar/powernbt/PowerNBT.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,29 +6,56 @@
import me.dpohvar.powernbt.completer.TypeCompleter;
import me.dpohvar.powernbt.listener.SelectListener;
import me.dpohvar.powernbt.utils.*;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;

import java.io.File;
import java.nio.charset.Charset;
import java.util.Arrays;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.List;

public class PowerNBT extends JavaPlugin {

private static final boolean SILENT = true;
public static PowerNBT plugin;
public static final Charset charset = Charset.forName("UTF8");
public static final Charset charset = StandardCharsets.UTF_8;
private final HashMap<String, Caller> callers = new HashMap<String, Caller>();
private Translator translator;
private static final Tokenizer tokenizer = new Tokenizer(
null, null, null, Arrays.asList('\"'), null, Arrays.asList(' ')
null, null, null, List.of('\"'), null, List.of(' ')
);
private final String prefix = ChatColor.GOLD.toString() + ChatColor.BOLD + "[" + ChatColor.YELLOW + "PowerNBT" + ChatColor.GOLD + ChatColor.BOLD + "] " + ChatColor.RESET;
private final String errorPrefix = ChatColor.DARK_RED.toString() + ChatColor.BOLD + "[" + ChatColor.RED + "PowerNBT" + ChatColor.DARK_RED + ChatColor.BOLD + "] " + ChatColor.RESET;
private TypeCompleter typeCompleter;

public PowerNBT() {
super();

try {
loadExtensions();
} catch (Error e) {
e.printStackTrace();
}
}

private static void loadExtensions(){
try {
Plugin varScript = Bukkit.getPluginManager().getPlugin("VarScript");
if (varScript != null) {
Class<?> bootHelperClazz = varScript.getClass().getClassLoader().loadClass("ru.dpohvar.varscript.boot.BootHelper");
ReflectionUtils.RefClass<?> bootHelperFefClazz = ReflectionUtils.getRefClass(bootHelperClazz);
ReflectionUtils.RefMethod<?> loadExtensionsMethod = bootHelperFefClazz.getMethod("loadExtensions", ClassLoader.class);
loadExtensionsMethod.call(PowerNBT.class.getClassLoader());
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}

/**
* Get the folder where are stored saved files
*
Expand Down Expand Up @@ -121,26 +148,12 @@ public void onEnable() {
getCommand("powernbt.").setExecutor(new CommandNBT(SILENT));
getCommand("powernbt").setTabCompleter(new CompleterNBT());
getCommand("powernbt.").setTabCompleter(new CompleterNBT());

initializeUtils();
}

public TypeCompleter getTypeCompleter() {
return typeCompleter;
}

private void initializeUtils() {
printDebug(EntityUtils.entityUtils);
printDebug(ItemStackUtils.itemStackUtils);
printDebug(NBTBlockUtils.nbtBlockUtils);
printDebug(NBTCompressedUtils.nbtCompressedUtils);
if (getConfig().getBoolean("utils.chunk", false)) {
printDebug(ChunkUtils.chunkUtils);
}
printDebug(NBTUtils.nbtUtils);
printDebug(PacketUtils.packetUtils);
}

private void printDebug(Object t){
if (isDebug()) getLogger().info("" + t);
}
Expand Down
37 changes: 37 additions & 0 deletions src/main/java/me/dpohvar/powernbt/api/NBTBox.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package me.dpohvar.powernbt.api;

public interface NBTBox extends Cloneable {

/**
* Get original NBT tag.
* @return NBTBase
*/
public Object getHandle();

/**
* Get copy of original nbt box.
* @return NBTTagCompound
*/
public Object getHandleCopy();

/**
* Create clone of this NBT tag
* @return cloned {@link NBTBox}
*/
public NBTBox clone();

public int size();

public boolean isEmpty();

}










63 changes: 63 additions & 0 deletions src/main/java/me/dpohvar/powernbt/api/NBTBridge.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package me.dpohvar.powernbt.api;

import org.bukkit.World;
import org.bukkit.block.BlockState;
import org.bukkit.entity.Entity;
import org.bukkit.inventory.ItemStack;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import java.util.List;
import java.util.Map;

abstract class NBTBridge {

private static NBTBridge instance;

public static NBTBridge getInstance(){
if (instance == null) instance = new NBTBridgeSpigot();
return instance;
}

abstract Map<String, Object> getNbtInnerMap(Object nbtTagCompound);

abstract List<Object> getNbtInnerList(Object nbtTagList);

abstract Object getBlockNBTTag(BlockState state);

abstract Object getEntityNBTTag(Entity entity);

abstract Object getItemStackNBTTag(ItemStack itemStack);

abstract void setBlockNBTTag(BlockState state, Object tag);

abstract void setEntityNBTTag(Entity entity, Object tag);

abstract void setItemStackNBTTag(ItemStack itemStack, Object tag);

abstract ItemStack asCraftCopyItemStack(ItemStack itemStack);

abstract Object readNBTData(DataInput dataInput) throws IOException;

abstract void writeNBTData(DataOutput dataInput, Object tag) throws IOException;

abstract Entity spawnEntity(Object tag, World world);

abstract byte getTagType(Object tag);

abstract Object getPrimitiveValue(Object tag);

abstract Object getTagValueByPrimitive(Object javaPrimitive);

abstract Object cloneTag(Object tag);

abstract Object createNBTTagCompound();

abstract Object createNBTTagList();

abstract byte getNBTTagListType(Object tagList);

abstract void setNBTTagListType(Object tagList, byte type);

}
Loading

0 comments on commit 03795d6

Please sign in to comment.