Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package de.msgamerhd.lostisland.befehle;
- import java.io.File;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.HashMap;
- import org.bukkit.Location;
- import org.bukkit.Material;
- import org.bukkit.block.Block;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandExecutor;
- import org.bukkit.command.CommandSender;
- import org.bukkit.configuration.file.YamlConfiguration;
- import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
- import org.bukkit.entity.Player;
- import org.bukkit.inventory.Inventory;
- import org.bukkit.scheduler.BukkitRunnable;
- import de.msgamerhd.lostisland.LostIsland;
- import de.msgamerhd.lostisland.generator.GeneratorItemsUtils;
- import de.msgamerhd.lostisland.generator.LavaType;
- import de.msgamerhd.lostisland.generator.PlaceBreakGenerator;
- import de.msgamerhd.lostisland.insel.InselSettingsUtils;
- import de.msgamerhd.lostisland.insel.InselUtils;
- import de.msgamerhd.lostisland.settings.Settings;
- import de.msgamerhd.lostisland.utils.FileManager;
- import de.msgamerhd.lostisland.utils.NachrichtUtils;
- /**
- * Class created by MsGamerHD on 03.07.2016
- */
- @SuppressWarnings("deprecation")
- public class Einrichten_CMD implements CommandExecutor{
- public static String co = Settings.co;
- public static String pr = Settings.pr;
- public static String wn = Settings.wn;
- public static String kr = Settings.kr;
- public static String hrv = Settings.hrv;
- public static String acpt = Settings.acpt;
- public static String abl = Settings.abl;
- public static String perm = Settings.perm;
- public static String trennungFrAlles = "-";
- public static String trennungFrBlcke = "";
- public static HashMap<String, Location> pos1list = new HashMap<>();
- public static HashMap<String, Location> pos2list = new HashMap<>();
- @Override
- public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
- if(!(sender instanceof Player)){
- sender.sendMessage("Du musst ein Spieler sein!");
- return true;
- }
- Player p = (Player) sender;
- if(NachrichtUtils.hasPermissions(p, cmd.getName())){
- //einrichten <pos1/pos2/saveschematic>
- if(args.length == 1){
- if(args[0].equalsIgnoreCase("pos1")){
- pos1list.put(p.getName(), p.getLocation());
- p.sendMessage(pr+"Du hast die erste Position ausgewhlt.");
- return true;
- } else if(args[0].equalsIgnoreCase("pos2")){
- pos2list.put(p.getName(), p.getLocation());
- p.sendMessage(pr+"Du hast die zweite Position ausgewhlt.");
- return true;
- } else if(args[0].equalsIgnoreCase("test")){
- loadSchematic(p, p.getLocation());
- return true;
- } else if(args[0].equalsIgnoreCase("saveschematic")){
- saveSchematic(p);
- return true;
- }
- }
- NachrichtUtils.sendWrongUse(p, "einrichten <pos1/pos2/saveschematic>");
- }
- return false;
- }
- public static void loadSchematic(Player p, Location mitte){
- p.sendMessage(pr+"Die Insel wird geladen... Die Insel ist in ca. "+hrv+getDauer()+" Sekunden "+co+"fr dich bereit!");
- loadSchematic(p.getName(), mitte);
- }
- public static int getDauer(){
- File file = FileManager.getSchematicFile();
- YamlConfiguration cfg = YamlConfiguration.loadConfiguration(file);
- int count = cfg.getInt("schematic.count");
- return count/(20*Settings.blocksPerTick);
- }
- public static void saveSchematic(Player p){
- if(!pos1list.containsKey(p.getName())){
- NachrichtUtils.sendFehler(p, "Du musst noch die "+hrv+"erste"+wn+" Position setzen!");
- return;
- }
- if(!pos2list.containsKey(p.getName())){
- NachrichtUtils.sendFehler(p, "Du musst noch die "+hrv+"zweite"+wn+" Position setzen!");
- return;
- }
- Location loc1 = pos1list.get(p.getName());
- Location loc2 = pos2list.get(p.getName());
- Location mitte = p.getLocation();
- if(!(loc1.getWorld() == loc2.getWorld())){
- NachrichtUtils.sendFehler(p, "Die Positionen mssen auf der "+hrv+"gleichen Welt"+co+" sein!");
- return;
- }
- File create = FileManager.getSchematicFile();
- create.delete();
- File file = FileManager.getSchematicFile();
- YamlConfiguration cfg = YamlConfiguration.loadConfiguration(file);
- mitte = mitte.subtract(0, 1, 0);
- int maxX = (int) Math.max(loc1.getX(), loc2.getX());
- int maxY = (int) Math.max(loc1.getY(), loc2.getY());
- int maxZ = (int) Math.max(loc1.getZ(), loc2.getZ());
- int minX = (int) Math.min(loc1.getX(), loc2.getX());
- int minY = (int) Math.min(loc1.getY(), loc2.getY());
- int minZ = (int) Math.min(loc1.getZ(), loc2.getZ());
- int count = 0;
- HashMap<Integer, String> allesMAP = new HashMap<>();
- for(int x = minX; x < maxX; x++){
- for(int y = minY; y < maxY; y++){
- for(int z = minZ; z < maxZ; z++){
- Location loc = new Location(loc1.getWorld(), x, y, z);
- Block block = loc.getBlock();
- if(block != null){
- String id = block.getTypeId()+trennungFrBlcke+loc.getBlock().getData();
- String distance = (loc.getBlockX()-mitte.getBlockX())+trennungFrBlcke+(loc.getBlockY()-mitte.getBlockY())+trennungFrBlcke+(loc.getBlockZ()-mitte.getBlockZ());
- if(block.getTypeId() != 0 && block.getTypeId() != 8 && block.getTypeId() != 9){
- count++;
- allesMAP.put(count, distance+trennungFrBlcke+id);
- }
- }
- }
- }
- }
- final int countCopy = count;
- new BukkitRunnable() {
- @Override
- public void run() {
- for(int i = 0; i < 80000; i++){
- if(allesMAP.isEmpty()){
- ((CraftPlayer)p).sendTitle("aabgeschlossen", countCopy+"/"+countCopy+" Blcke");
- cancel();
- break;
- }
- for(int number : allesMAP.keySet()){
- cfg.set("schematic.number."+number, allesMAP.get(number));
- allesMAP.remove(number);
- break;
- }
- }
- if(p != null){
- ((CraftPlayer)p).sendTitle("4wird gespeichert...", countCopy-allesMAP.size()+" von "+countCopy+" Blcke");
- }
- try {
- cfg.save(file);
- } catch (Exception e) {}
- }
- }.runTaskTimer(LostIsland.getInstance(), 10, 10*20);
- cfg.set("schematic.count", count);
- try {
- cfg.save(file);
- } catch (IOException e) {}
- }
- @SuppressWarnings("unchecked")
- public static void loadSchematic(String name, Location mitte) {
- InselSettingsUtils.setCanJoin(name, false);
- ArrayList<String> alles = (ArrayList<String>) LostIsland.allesarraylist.clone();
- new BukkitRunnable() {
- @Override
- public void run() {
- for(int i = 0; i < Settings.blocksPerTick; i++){
- for (String all : alles) {
- String[] alledaten = all.split(trennungFrBlcke);
- int xdistance = Integer.parseInt(alledaten[0]);
- int ydistance = Integer.parseInt(alledaten[1]);
- int zdistance = Integer.parseInt(alledaten[2]);
- int type = Integer.parseInt(alledaten[3]);
- int data = Integer.parseInt(alledaten[4]);
- int newX = (int) (mitte.getX() + xdistance);
- int newY = (int) (mitte.getY() + ydistance);
- int newZ = (int) (mitte.getZ() + zdistance);
- Block block = InselUtils.inselworld.getBlockAt(newX, newY, newZ);
- if(type == 169){
- block.setType(Material.CHEST);
- Inventory chest = GeneratorItemsUtils.getInventoryChest(new Location(mitte.getWorld(), newX, newY, newZ));
- chest.setItem(2, GeneratorItemsUtils.getItem(Material.LEATHER_HELMET, 1, 11, null, null));
- chest.setItem(9+5, GeneratorItemsUtils.getItem(Material.LEATHER_CHESTPLATE, 1, 33, null, null));
- chest.setItem(2*9+2, GeneratorItemsUtils.getItem(Material.LEATHER_LEGGINGS, 1, 18, null, null));
- chest.setItem(8, GeneratorItemsUtils.getItem(Material.LEATHER_BOOTS, 1, 9, null, null));
- chest.setItem(9+3, GeneratorItemsUtils.getItem(Material.STONE_SWORD, 1, 15, null, null));
- chest.setItem(2*9+7, GeneratorItemsUtils.getItem(Material.WOOD_PICKAXE, 1, 9, null, null));
- chest.setItem(2*9+4, GeneratorItemsUtils.getItem(Material.RAW_FISH, 7, 0, null, null));
- chest.setItem(7, GeneratorItemsUtils.getItem(Material.RAW_FISH, 3, 0, null, null));
- chest.setItem(0, PlaceBreakGenerator.generatoritem);
- chest.setItem(6, LavaType.LAVAENERGIE.getLava());
- chest.setItem(2*9+0, LavaType.LAVAENERGIE.getLava());
- chest.setItem(9+8, LavaType.SONNENENERGIE.getLava());
- } else if(type == 41){
- block.setType(Material.CHEST);
- Inventory chest = GeneratorItemsUtils.getInventoryChest(new Location(mitte.getWorld(), newX, newY, newZ));
- chest.setItem(1*9+7, GeneratorItemsUtils.getItem(Material.STONE_PICKAXE, 1, 9, null, null));
- chest.setItem(2*9+4, GeneratorItemsUtils.getItem(Material.RAW_FISH, 7, 0, null, null));
- chest.setItem(0, PlaceBreakGenerator.generatoritem);
- chest.setItem(6, LavaType.LAVAENERGIE.getLava());
- chest.setItem(2*9+0, LavaType.LAVAENERGIE.getLava());
- chest.setItem(9+8, LavaType.SONNENENERGIE.getLava());
- } else {
- block.setTypeId(type);
- block.setData((byte) data);
- }
- alles.remove(all);
- break;
- }
- }
- if(alles.isEmpty()){
- InselSettingsUtils.setCanJoin(name, true);
- cancel();
- }
- }
- }.runTaskTimer(LostIsland.getInstance(), 10, 1);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement