Hi guys i need to save an very custom entity (mob) with armor, lore, name, colors (like in hypixel map) so i can spawn it later on! So i look at an entity and say something like /savemob (name) and later on /spawnmob name! This is no plugin request i know how to code and heres my code, (I'm stuck at the part to convert it to a base64 string so i can save it to the config! Spoiler (Move your mouse to the spoiler area to reveal the content) Show Spoiler Hide Spoiler Code:java package me.Jalau.MobSpawner; import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.Set; import org.bukkit.Bukkit;import org.bukkit.ChatColor;import org.bukkit.GameMode;import org.bukkit.Location;import org.bukkit.Material;import org.bukkit.Sound;import org.bukkit.block.Block;import org.bukkit.block.BlockFace;import org.bukkit.command.Command;import org.bukkit.command.CommandSender;import org.bukkit.entity.Entity;import org.bukkit.entity.LivingEntity;import org.bukkit.entity.Player;import org.bukkit.entity.Skeleton;import org.bukkit.entity.Zombie;import org.bukkit.event.EventHandler;import org.bukkit.event.EventPriority;import org.bukkit.event.Listener;import org.bukkit.event.block.Action;import org.bukkit.event.entity.EntityDamageEvent;import org.bukkit.event.entity.EntityDamageEvent.DamageCause;import org.bukkit.event.inventory.InventoryClickEvent;import org.bukkit.event.player.PlayerDropItemEvent;import org.bukkit.event.player.PlayerFishEvent;import org.bukkit.event.player.PlayerInteractEvent;import org.bukkit.event.player.PlayerJoinEvent;import org.bukkit.event.player.PlayerMoveEvent;import org.bukkit.event.player.PlayerQuitEvent;import org.bukkit.event.player.PlayerToggleFlightEvent;import org.bukkit.inventory.Inventory;import org.bukkit.inventory.ItemStack;import org.bukkit.inventory.meta.ItemMeta;import org.bukkit.plugin.java.JavaPlugin;import org.bukkit.plugin.messaging.PluginMessageListener;import org.bukkit.potion.PotionEffect;import org.bukkit.util.BlockIterator;import org.bukkit.util.Vector;import org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder; public class MobSpawner extends JavaPlugin implements Listener { @Override public void onEnable() { getServer().getPluginManager().registerEvents(this, this); if (!new File(getDataFolder(), "config.yml").exists()) { saveDefaultConfig(); } } public void onDisable() { } @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { Player player = (Player) sender; if (cmd.getName().equalsIgnoreCase("mob")) { if(args.length == 1) { Block targetBlock = player.getTargetBlock(null, 50); for(Entity e : targetBlock.getChunk().getEntities()) { if(e instanceof Zombie || e instanceof Skeleton) if( targetBlock.getLocation().distance(e.getLocation()) < 3) { String s = null; ByteArrayOutputStream b = new ByteArrayOutputStream(); DataOutputStream c = new DataOutputStream (b); s = //base64 string; this.getConfig().set("mob." + args[0] , s); player.sendMessage(ChatColor.GREEN + "Entity saved under: " + args[0]); this.saveConfig(); } } } } if (cmd.getName().equalsIgnoreCase("spawnmob")) { if(args.length == 1) { String mob = args[0]; Block targetBlock = player.getTargetBlock(null, 50); Set<String> keys = this.getConfig().getConfigurationSection("mob." + mob).getKeys(false); //Entity e = this.getConfig().get //.... this.saveConfig(); } } return true; }}
Jalau These should do it. Code:java private String encode(String str) { str = Base64Coder.encodeString(str); return str;} private String decode(String str) { str = new String(Base64Coder.decode(str)); return str;}
Assist Yes probably but still the Entity is no string yet ^^ Bump EDIT by Moderator: merged posts, please use the edit button instead of double posting.