Fixes language option and Fixes #633

This commit is contained in:
Jesse Boyd 2017-07-10 16:00:17 +10:00
parent 03b4aaad3c
commit f20a1002bb
No known key found for this signature in database
GPG Key ID: 59F1DE6293AF6E1F
9 changed files with 85 additions and 53 deletions

View File

@ -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);
} }
} }

View File

@ -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();

View File

@ -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: ");

View File

@ -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);

View File

@ -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();
} }

View File

@ -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();

View File

@ -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;
}
}
}

View File

@ -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;
} }
} }