forked from SteamWar/SteamWar
Format code
This commit is contained in:
@@ -48,88 +48,90 @@ import java.util.Objects;
|
||||
|
||||
public class Missile extends SpecialItem {
|
||||
|
||||
private static final World world = new BukkitWorld(Bukkit.getWorlds().get(0));
|
||||
private static final World world = new BukkitWorld(Bukkit.getWorlds().get(0));
|
||||
|
||||
private final Clipboard clipboard;
|
||||
private final ItemStack item;
|
||||
private final Clipboard clipboard;
|
||||
private final ItemStack item;
|
||||
|
||||
private Missile(File missileFile) {
|
||||
String[] strings = missileFile.getName().split("\\.");
|
||||
String name = strings[0];
|
||||
String material = strings[1];
|
||||
if (!material.endsWith("_SPAWN_EGG")) material += "_SPAWN_EGG";
|
||||
Material itemType = Material.valueOf(material);
|
||||
private Missile(File missileFile) {
|
||||
String[] strings = missileFile.getName().split("\\.");
|
||||
String name = strings[0];
|
||||
String material = strings[1];
|
||||
if (!material.endsWith("_SPAWN_EGG")) material += "_SPAWN_EGG";
|
||||
Material itemType = Material.valueOf(material);
|
||||
|
||||
ClipboardFormat format = ClipboardFormats.findByFile(missileFile);
|
||||
try {
|
||||
assert format != null;
|
||||
clipboard = format.getReader(new FileInputStream(missileFile)).read();
|
||||
} catch (IOException e) {
|
||||
throw new SecurityException("Corrupt missile");
|
||||
}
|
||||
ClipboardFormat format = ClipboardFormats.findByFile(missileFile);
|
||||
try {
|
||||
assert format != null;
|
||||
clipboard = format.getReader(new FileInputStream(missileFile)).read();
|
||||
} catch (IOException e) {
|
||||
throw new SecurityException("Corrupt missile");
|
||||
}
|
||||
|
||||
List<String> lore = new ArrayList<>();
|
||||
lore(lore, strings, 2, "§7Speed");
|
||||
lore(lore, strings, 3, "§7Size");
|
||||
List<String> lore = new ArrayList<>();
|
||||
lore(lore, strings, 2, "§7Speed");
|
||||
lore(lore, strings, 3, "§7Size");
|
||||
|
||||
EditSession e = WorldEdit.getInstance().getEditSessionFactory().getEditSession(world, -1);
|
||||
BlockTypeMask blockTypeMask = new BlockTypeMask(clipboard, BlockTypes.TNT);
|
||||
lore.add("§7TNT §8: §e" + e.countBlocks(clipboard.getRegion(), blockTypeMask));
|
||||
EditSession e = WorldEdit.getInstance().getEditSessionFactory().getEditSession(world, -1);
|
||||
BlockTypeMask blockTypeMask = new BlockTypeMask(clipboard, BlockTypes.TNT);
|
||||
lore.add("§7TNT §8: §e" + e.countBlocks(clipboard.getRegion(), blockTypeMask));
|
||||
|
||||
item = createItem(itemType, "§c" + name, 1, lore);
|
||||
}
|
||||
item = createItem(itemType, "§c" + name, 1, lore);
|
||||
}
|
||||
|
||||
private void lore(List<String> lore, String[] args, int index, String tag) {
|
||||
if (args.length > index) {
|
||||
lore.add(tag + " §8: §e" + Integer.parseInt(args[index]) + "§8/§77");
|
||||
} else {
|
||||
lore.add(tag + " §8: §e0§8/§77");
|
||||
}
|
||||
}
|
||||
private void lore(List<String> lore, String[] args, int index, String tag) {
|
||||
if (args.length > index) {
|
||||
lore.add(tag + " §8: §e" + Integer.parseInt(args[index]) + "§8/§77");
|
||||
} else {
|
||||
lore.add(tag + " §8: §e0§8/§77");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getItem() {
|
||||
return item;
|
||||
}
|
||||
@Override
|
||||
public ItemStack getItem() {
|
||||
return item;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handleUse(Player p) {
|
||||
BlockVector3 dimensions = clipboard.getDimensions();
|
||||
Location location = p.getLocation();
|
||||
BlockVector3 v = BlockVector3.ZERO;
|
||||
BlockVector3 offset = clipboard.getRegion().getMinimumPoint().subtract(clipboard.getOrigin());
|
||||
AffineTransform aT = new AffineTransform();
|
||||
@Override
|
||||
public boolean handleUse(Player p) {
|
||||
BlockVector3 dimensions = clipboard.getDimensions();
|
||||
Location location = p.getLocation();
|
||||
BlockVector3 v = BlockVector3.ZERO;
|
||||
BlockVector3 offset = clipboard.getRegion().getMinimumPoint().subtract(clipboard.getOrigin());
|
||||
AffineTransform aT = new AffineTransform();
|
||||
|
||||
double yaw = (p.getLocation().getYaw() + 360f) % 360;
|
||||
if (yaw > 45 && yaw <= 135) aT = aT.rotateY(270);
|
||||
else if (yaw > 135 && yaw <= 225) aT = aT.rotateY(180);
|
||||
else if (yaw > 225 && yaw <= 315) aT = aT.rotateY(90);
|
||||
double yaw = (p.getLocation().getYaw() + 360f) % 360;
|
||||
if (yaw > 45 && yaw <= 135) aT = aT.rotateY(270);
|
||||
else if (yaw > 135 && yaw <= 225) aT = aT.rotateY(180);
|
||||
else if (yaw > 225 && yaw <= 315) aT = aT.rotateY(90);
|
||||
|
||||
v = v.subtract(dimensions.x()/2, dimensions.y() + 2, -2).subtract(offset);
|
||||
v = aT.apply(v.toVector3()).toBlockPoint();
|
||||
v = v.add(location.getBlockX(), location.getBlockY(), location.getBlockZ());
|
||||
v = v.subtract(dimensions.x() / 2, dimensions.y() + 2, -2).subtract(offset);
|
||||
v = aT.apply(v.toVector3()).toBlockPoint();
|
||||
v = v.add(location.getBlockX(), location.getBlockY(), location.getBlockZ());
|
||||
|
||||
EditSession e = WorldEdit.getInstance().getEditSessionFactory().getEditSession(world, -1);
|
||||
ClipboardHolder ch = new ClipboardHolder(clipboard);
|
||||
ch.setTransform(aT);
|
||||
Operations.completeBlindly(ch.createPaste(e).to(v).ignoreAirBlocks(true).build());
|
||||
e.flushSession();
|
||||
return true;
|
||||
}
|
||||
EditSession e = WorldEdit.getInstance().getEditSessionFactory().getEditSession(world, -1);
|
||||
ClipboardHolder ch = new ClipboardHolder(clipboard);
|
||||
ch.setTransform(aT);
|
||||
Operations.completeBlindly(ch.createPaste(e).to(v).ignoreAirBlocks(true).build());
|
||||
e.flushSession();
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMissile() {
|
||||
return true;
|
||||
}
|
||||
@Override
|
||||
public boolean isMissile() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void init() {
|
||||
File missileFolder = new File(MissileWars.getPlugin().getDataFolder(), "missiles");
|
||||
if (!missileFolder.exists() || !missileFolder.canRead() || !missileFolder.isDirectory()) throw new SecurityException("Missiles could not be loaded");
|
||||
for (File missileFile : Objects.requireNonNull(missileFolder.listFiles())) {
|
||||
if (!missileFile.canRead() || !missileFile.isFile()) continue;
|
||||
if (!missileFile.getName().endsWith(".schem")) continue;
|
||||
new Missile(missileFile);
|
||||
}
|
||||
}
|
||||
public static void init() {
|
||||
File missileFolder = new File(MissileWars.getPlugin().getDataFolder(), "missiles");
|
||||
if (!missileFolder.exists() || !missileFolder.canRead() || !missileFolder.isDirectory()) {
|
||||
throw new SecurityException("Missiles could not be loaded");
|
||||
}
|
||||
for (File missileFile : Objects.requireNonNull(missileFolder.listFiles())) {
|
||||
if (!missileFile.canRead() || !missileFile.isFile()) continue;
|
||||
if (!missileFile.getName().endsWith(".schem")) continue;
|
||||
new Missile(missileFile);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user