mirror of
https://github.com/boy0001/FastAsyncWorldedit.git
synced 2024-11-28 21:56:33 +01:00
Fixes language option and Fixes #633
This commit is contained in:
parent
03b4aaad3c
commit
f20a1002bb
@ -1,7 +1,12 @@
|
|||||||
package com.boydti.fawe.bukkit;
|
package com.boydti.fawe.bukkit;
|
||||||
|
|
||||||
import com.boydti.fawe.Fawe;
|
import com.boydti.fawe.Fawe;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.nio.channels.Channels;
|
||||||
|
import java.nio.channels.ReadableByteChannel;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -49,6 +54,25 @@ public class BukkitMain extends JavaPlugin {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
|
if (Bukkit.getPluginManager().getPlugin("WorldEdit") == null) {
|
||||||
|
try {
|
||||||
|
File output = new File(this.getDataFolder().getParentFile(), "WorldEdit.jar");
|
||||||
|
URL worldEditUrl = new URL("https://addons.cursecdn.com/files/2431/372/worldedit-bukkit-6.1.7.2.jar");
|
||||||
|
try (ReadableByteChannel rbc = Channels.newChannel(worldEditUrl.openStream())) {
|
||||||
|
try (FileOutputStream fos = new FileOutputStream(output)) {
|
||||||
|
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Bukkit.getPluginManager().loadPlugin(output);
|
||||||
|
} catch (Throwable e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
Fawe.debug("====== INSTALL WORLDEDIT ======");
|
||||||
|
Fawe.debug("FAWE requires WorldEdit to function correctly");
|
||||||
|
Fawe.debug("Info: https://github.com/boy0001/FastAsyncWorldedit/releases/");
|
||||||
|
Fawe.debug("===============================");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
FaweBukkit imp = new FaweBukkit(this);
|
FaweBukkit imp = new FaweBukkit(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -36,13 +36,9 @@ import com.sk89q.worldedit.bukkit.EditSessionBlockChangeDelegate;
|
|||||||
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
|
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
|
||||||
import com.sk89q.worldedit.world.World;
|
import com.sk89q.worldedit.world.World;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileOutputStream;
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.lang.reflect.Modifier;
|
import java.lang.reflect.Modifier;
|
||||||
import java.net.URL;
|
|
||||||
import java.nio.channels.Channels;
|
|
||||||
import java.nio.channels.ReadableByteChannel;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -112,25 +108,6 @@ public class FaweBukkit implements IFawe, Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setupInjector() {
|
public void setupInjector() {
|
||||||
if (Bukkit.getPluginManager().getPlugin("WorldEdit") == null) {
|
|
||||||
try {
|
|
||||||
File output = new File(getDirectory().getParentFile(), "WorldEdit.jar");
|
|
||||||
URL worldEditUrl = new URL("http://builds.enginehub.org/job/worldedit/9819/download/worldedit-bukkit-6.1.8-SNAPSHOT-dist.jar");
|
|
||||||
try (ReadableByteChannel rbc = Channels.newChannel(worldEditUrl.openStream())) {
|
|
||||||
try (FileOutputStream fos = new FileOutputStream(output)) {
|
|
||||||
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Bukkit.getPluginManager().loadPlugin(output);
|
|
||||||
} catch (Throwable e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
Fawe.debug("====== INSTALL WORLDEDIT ======");
|
|
||||||
Fawe.debug("FAWE requires WorldEdit to function correctly");
|
|
||||||
Fawe.debug("Info: https://github.com/boy0001/FastAsyncWorldedit/releases/");
|
|
||||||
Fawe.debug("===============================");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Fawe.setupInjector();
|
Fawe.setupInjector();
|
||||||
// Inject
|
// Inject
|
||||||
EditSessionBlockChangeDelegate.inject();
|
EditSessionBlockChangeDelegate.inject();
|
||||||
|
@ -176,6 +176,7 @@ public abstract class BukkitQueue_0<CHUNK, CHUNKSECTIONS, SECTION> extends NMSMa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
|
setupAdapter = false;
|
||||||
Fawe.debug("====== NO NATIVE WORLDEDIT ADAPTER ======");
|
Fawe.debug("====== NO NATIVE WORLDEDIT ADAPTER ======");
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
Fawe.debug("Try updating WorldEdit: ");
|
Fawe.debug("Try updating WorldEdit: ");
|
||||||
|
@ -78,7 +78,7 @@ public class BukkitChunk_1_12 extends CharFaweChunk<Chunk, BukkitQueue_1_12> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean storeEntity(Entity ent) throws InvocationTargetException, IllegalAccessException {
|
public boolean storeEntity(Entity ent) throws InvocationTargetException, IllegalAccessException {
|
||||||
if (ent instanceof EntityPlayer) {
|
if (ent instanceof EntityPlayer || BukkitQueue_0.adapter == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
int x = ((int) Math.round(ent.locX) & 15);
|
int x = ((int) Math.round(ent.locX) & 15);
|
||||||
@ -90,7 +90,7 @@ public class BukkitChunk_1_12 extends CharFaweChunk<Chunk, BukkitQueue_1_12> {
|
|||||||
if (id != null) {
|
if (id != null) {
|
||||||
NBTTagCompound tag = new NBTTagCompound();
|
NBTTagCompound tag = new NBTTagCompound();
|
||||||
ent.save(tag); // readEntityIntoTag
|
ent.save(tag); // readEntityIntoTag
|
||||||
CompoundTag nativeTag = (CompoundTag) getParent().methodToNative.invoke(getParent().adapter, tag);
|
CompoundTag nativeTag = (CompoundTag) BukkitQueue_0.methodToNative.invoke(getParent().adapter, tag);
|
||||||
Map<String, Tag> map = ReflectionUtils.getMap(nativeTag.getValue());
|
Map<String, Tag> map = ReflectionUtils.getMap(nativeTag.getValue());
|
||||||
map.put("Id", new StringTag(id));
|
map.put("Id", new StringTag(id));
|
||||||
setEntity(nativeTag);
|
setEntity(nativeTag);
|
||||||
|
@ -143,6 +143,7 @@ import java.lang.management.MemoryUsage;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
@ -419,8 +420,8 @@ public class Fawe {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setupConfigs() {
|
public void setupConfigs() {
|
||||||
MainUtil.copyFile(MainUtil.getJarFile(), "de/messages.yml", null);
|
MainUtil.copyFile(MainUtil.getJarFile(), "de/message.yml", null);
|
||||||
MainUtil.copyFile(MainUtil.getJarFile(), "ru/messages.yml", null);
|
MainUtil.copyFile(MainUtil.getJarFile(), "ru/message.yml", null);
|
||||||
MainUtil.copyFile(MainUtil.getJarFile(), "ru/commands.yml", null);
|
MainUtil.copyFile(MainUtil.getJarFile(), "ru/commands.yml", null);
|
||||||
// Setting up config.yml
|
// Setting up config.yml
|
||||||
File file = new File(this.IMP.getDirectory(), "config.yml");
|
File file = new File(this.IMP.getDirectory(), "config.yml");
|
||||||
@ -437,9 +438,11 @@ public class Fawe {
|
|||||||
} catch (Throwable ignore) {}
|
} catch (Throwable ignore) {}
|
||||||
Settings.IMP.reload(file);
|
Settings.IMP.reload(file);
|
||||||
// Setting up message.yml
|
// Setting up message.yml
|
||||||
BBC.load(new File(this.IMP.getDirectory(), "message.yml"));
|
String lang = Objects.toString(Settings.IMP.LANGUAGE);
|
||||||
|
BBC.load(new File(this.IMP.getDirectory(), (lang.isEmpty() ? "" : lang + File.separator) + "message.yml"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public WorldEdit getWorldEdit() {
|
public WorldEdit getWorldEdit() {
|
||||||
return WorldEdit.getInstance();
|
return WorldEdit.getInstance();
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import com.boydti.fawe.Fawe;
|
|||||||
import com.boydti.fawe.bukkit.BukkitCommand;
|
import com.boydti.fawe.bukkit.BukkitCommand;
|
||||||
import com.boydti.fawe.object.FaweCommand;
|
import com.boydti.fawe.object.FaweCommand;
|
||||||
import com.boydti.fawe.object.FawePlayer;
|
import com.boydti.fawe.object.FawePlayer;
|
||||||
|
import com.boydti.fawe.util.MainUtil;
|
||||||
import com.thevoxelbox.voxelsniper.RangeBlockHelper;
|
import com.thevoxelbox.voxelsniper.RangeBlockHelper;
|
||||||
import com.thevoxelbox.voxelsniper.SnipeData;
|
import com.thevoxelbox.voxelsniper.SnipeData;
|
||||||
import com.thevoxelbox.voxelsniper.Sniper;
|
import com.thevoxelbox.voxelsniper.Sniper;
|
||||||
@ -21,18 +22,32 @@ import org.bukkit.entity.Player;
|
|||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
public class Favs extends JavaPlugin {
|
public class Favs extends JavaPlugin {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
try {
|
try {
|
||||||
if (Bukkit.getPluginManager().getPlugin("VoxelSniper") == null) {
|
if (Bukkit.getPluginManager().getPlugin("VoxelSniper") == null) {
|
||||||
try {
|
try {
|
||||||
File output = new File(this.getDataFolder().getParentFile(), "VoxelSniper.jar");
|
File thisFile = MainUtil.getJarFile();
|
||||||
|
String thisName = thisFile.getName().toLowerCase();
|
||||||
|
File output = null;
|
||||||
|
for (File file : getDataFolder().getParentFile().listFiles()) {
|
||||||
|
String name = file.getName().toLowerCase();
|
||||||
|
if (name.endsWith(".jar") && name.contains("voxelsniper") && !name.contains("fastasyncvoxelsniper")) {
|
||||||
|
output = file;
|
||||||
|
System.out.println("File " + file + " | " + thisName);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (output == null) {
|
||||||
|
output = new File(this.getDataFolder().getParentFile(), "VoxelSniper.jar");
|
||||||
URL worldEditUrl = new URL("https://addons-origin.cursecdn.com/files/912/511/VoxelSniper-5.171.0-SNAPSHOT.jar");
|
URL worldEditUrl = new URL("https://addons-origin.cursecdn.com/files/912/511/VoxelSniper-5.171.0-SNAPSHOT.jar");
|
||||||
try (ReadableByteChannel rbc = Channels.newChannel(worldEditUrl.openStream())) {
|
try (ReadableByteChannel rbc = Channels.newChannel(worldEditUrl.openStream())) {
|
||||||
try (FileOutputStream fos = new FileOutputStream(output)) {
|
try (FileOutputStream fos = new FileOutputStream(output)) {
|
||||||
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
|
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
Bukkit.getPluginManager().loadPlugin(output);
|
Bukkit.getPluginManager().loadPlugin(output);
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -0,0 +1,30 @@
|
|||||||
|
package com.boydti.fawe.bukkit.favs;
|
||||||
|
|
||||||
|
import com.boydti.fawe.config.BBC;
|
||||||
|
import com.boydti.fawe.object.FawePlayer;
|
||||||
|
import com.sk89q.worldedit.WorldEdit;
|
||||||
|
import com.sk89q.worldedit.extension.input.InputParseException;
|
||||||
|
import com.sk89q.worldedit.extension.input.ParserContext;
|
||||||
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.thevoxelbox.voxelsniper.SnipeData;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class PatternUtil {
|
||||||
|
public static Pattern parsePattern(Player player, SnipeData snipeData, String arg) {
|
||||||
|
ParserContext context = new ParserContext();
|
||||||
|
FawePlayer<Object> fp = FawePlayer.wrap(player);
|
||||||
|
context.setActor(fp.getPlayer());
|
||||||
|
context.setWorld(fp.getWorld());
|
||||||
|
context.setSession(fp.getSession());
|
||||||
|
try {
|
||||||
|
Pattern pattern = WorldEdit.getInstance().getPatternFactory().parseFromInput(arg, context);
|
||||||
|
snipeData.setPattern(pattern, arg);
|
||||||
|
snipeData.sendMessage(ChatColor.GOLD + "Voxel: " + ChatColor.RED + arg);
|
||||||
|
return pattern;
|
||||||
|
} catch (InputParseException e) {
|
||||||
|
fp.sendMessage(BBC.getPrefix() + e.getMessage());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -5,19 +5,12 @@
|
|||||||
|
|
||||||
package com.thevoxelbox.voxelsniper.command;
|
package com.thevoxelbox.voxelsniper.command;
|
||||||
|
|
||||||
import com.boydti.fawe.config.BBC;
|
import com.boydti.fawe.bukkit.favs.PatternUtil;
|
||||||
import com.boydti.fawe.object.FawePlayer;
|
|
||||||
import com.sk89q.worldedit.WorldEdit;
|
|
||||||
import com.sk89q.worldedit.extension.input.InputParseException;
|
|
||||||
import com.sk89q.worldedit.extension.input.ParserContext;
|
|
||||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
|
||||||
import com.thevoxelbox.voxelsniper.RangeBlockHelper;
|
import com.thevoxelbox.voxelsniper.RangeBlockHelper;
|
||||||
import com.thevoxelbox.voxelsniper.SnipeData;
|
import com.thevoxelbox.voxelsniper.SnipeData;
|
||||||
import com.thevoxelbox.voxelsniper.Sniper;
|
import com.thevoxelbox.voxelsniper.Sniper;
|
||||||
import com.thevoxelbox.voxelsniper.VoxelSniper;
|
import com.thevoxelbox.voxelsniper.VoxelSniper;
|
||||||
import com.thevoxelbox.voxelsniper.api.command.VoxelCommand;
|
import com.thevoxelbox.voxelsniper.api.command.VoxelCommand;
|
||||||
import com.thevoxelbox.voxelsniper.brush.perform.PerformBrush;
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -59,18 +52,7 @@ public class VoxelVoxelCommand extends VoxelCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ParserContext context = new ParserContext();
|
PatternUtil.parsePattern(player, snipeData, args[0]);
|
||||||
FawePlayer<Object> fp = FawePlayer.wrap(player);
|
|
||||||
context.setActor(fp.getPlayer());
|
|
||||||
context.setWorld(fp.getWorld());
|
|
||||||
context.setSession(fp.getSession());
|
|
||||||
try {
|
|
||||||
Pattern pattern = WorldEdit.getInstance().getPatternFactory().parseFromInput(args[0], context);
|
|
||||||
snipeData.setPattern(pattern, args[0]);
|
|
||||||
snipeData.sendMessage(ChatColor.GOLD + "Voxel: " + ChatColor.RED + args[0]);
|
|
||||||
} catch (InputParseException e) {
|
|
||||||
fp.sendMessage(BBC.getPrefix() + e.getMessage());
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user