Update forge classes
This commit is contained in:
parent
2f76cb59e3
commit
d562b6cf66
@ -151,7 +151,7 @@ public class FaweBukkit implements IFawe, Listener {
|
|||||||
if (this.version == null) {
|
if (this.version == null) {
|
||||||
try {
|
try {
|
||||||
this.version = new int[3];
|
this.version = new int[3];
|
||||||
final String[] split = Bukkit.getBukkitVersion().split("-")[0].split("\\.");
|
final String[] split = plugin.getDescription().getVersion().split("-")[0].split("\\.");
|
||||||
this.version[0] = Integer.parseInt(split[0]);
|
this.version[0] = Integer.parseInt(split[0]);
|
||||||
this.version[1] = Integer.parseInt(split[1]);
|
this.version[1] = Integer.parseInt(split[1]);
|
||||||
if (split.length == 3) {
|
if (split.length == 3) {
|
||||||
|
@ -36,8 +36,6 @@ import net.minecraft.server.v1_10_R1.BlockPosition;
|
|||||||
import net.minecraft.server.v1_10_R1.Blocks;
|
import net.minecraft.server.v1_10_R1.Blocks;
|
||||||
import net.minecraft.server.v1_10_R1.ChunkCoordIntPair;
|
import net.minecraft.server.v1_10_R1.ChunkCoordIntPair;
|
||||||
import net.minecraft.server.v1_10_R1.ChunkSection;
|
import net.minecraft.server.v1_10_R1.ChunkSection;
|
||||||
import net.minecraft.server.v1_10_R1.DataBits;
|
|
||||||
import net.minecraft.server.v1_10_R1.DataPalette;
|
|
||||||
import net.minecraft.server.v1_10_R1.DataPaletteBlock;
|
import net.minecraft.server.v1_10_R1.DataPaletteBlock;
|
||||||
import net.minecraft.server.v1_10_R1.Entity;
|
import net.minecraft.server.v1_10_R1.Entity;
|
||||||
import net.minecraft.server.v1_10_R1.EntityHuman;
|
import net.minecraft.server.v1_10_R1.EntityHuman;
|
||||||
@ -666,13 +664,6 @@ public class BukkitQueue_1_10 extends BukkitQueue_0<Chunk, ChunkSection[], DataP
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
DataPaletteBlock nibble = section.getBlocks();
|
DataPaletteBlock nibble = section.getBlocks();
|
||||||
Field fieldBits = nibble.getClass().getDeclaredField("b");
|
|
||||||
fieldBits.setAccessible(true);
|
|
||||||
DataBits bits = (DataBits) fieldBits.get(nibble);
|
|
||||||
|
|
||||||
Field fieldPalette = nibble.getClass().getDeclaredField("c");
|
|
||||||
fieldPalette.setAccessible(true);
|
|
||||||
DataPalette palette = (DataPalette) fieldPalette.get(nibble);
|
|
||||||
int nonEmptyBlockCount = 0;
|
int nonEmptyBlockCount = 0;
|
||||||
for (int y = 0; y < 16; y++) {
|
for (int y = 0; y < 16; y++) {
|
||||||
for (int z = 0; z < 16; z++) {
|
for (int z = 0; z < 16; z++) {
|
||||||
|
@ -156,9 +156,9 @@ public class Fawe {
|
|||||||
* Write something to the console
|
* Write something to the console
|
||||||
* @param s
|
* @param s
|
||||||
*/
|
*/
|
||||||
public static void debug(final String s) {
|
public static void debug(final Object s) {
|
||||||
if (INSTANCE != null) {
|
if (INSTANCE != null) {
|
||||||
INSTANCE.IMP.debug(s);
|
INSTANCE.IMP.debug(StringMan.getString(s));
|
||||||
} else {
|
} else {
|
||||||
System.out.print(s);
|
System.out.print(s);
|
||||||
}
|
}
|
||||||
@ -409,7 +409,6 @@ public class Fawe {
|
|||||||
}
|
}
|
||||||
final long alert = (max * Settings.MAX_MEMORY_PERCENT) / 100;
|
final long alert = (max * Settings.MAX_MEMORY_PERCENT) / 100;
|
||||||
mp.setUsageThreshold(alert);
|
mp.setUsageThreshold(alert);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
|
@ -4,6 +4,7 @@ import com.boydti.fawe.Fawe;
|
|||||||
import com.boydti.fawe.configuration.MemorySection;
|
import com.boydti.fawe.configuration.MemorySection;
|
||||||
import com.boydti.fawe.configuration.file.YamlConfiguration;
|
import com.boydti.fawe.configuration.file.YamlConfiguration;
|
||||||
import com.boydti.fawe.object.FawePlayer;
|
import com.boydti.fawe.object.FawePlayer;
|
||||||
|
import com.boydti.fawe.object.RunnableVal3;
|
||||||
import com.boydti.fawe.util.MainUtil;
|
import com.boydti.fawe.util.MainUtil;
|
||||||
import com.boydti.fawe.util.StringMan;
|
import com.boydti.fawe.util.StringMan;
|
||||||
import com.sk89q.worldedit.extension.platform.Actor;
|
import com.sk89q.worldedit.extension.platform.Actor;
|
||||||
@ -358,4 +359,55 @@ public enum BBC {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getColorName(char code) {
|
||||||
|
switch (code) {
|
||||||
|
case '0': return "BLACK";
|
||||||
|
case '1': return "DARK_BLUE";
|
||||||
|
case '2': return "DARK_GREEN";
|
||||||
|
case '3': return "DARK_AQUA";
|
||||||
|
case '4': return "DARK_RED";
|
||||||
|
case '5': return "DARK_PURPLE";
|
||||||
|
case '6': return "GOLD";
|
||||||
|
default:
|
||||||
|
case '7': return "GRAY";
|
||||||
|
case '8': return "DARK_GRAY";
|
||||||
|
case '9': return "BLUE";
|
||||||
|
case 'a': return "GREEN";
|
||||||
|
case 'b': return "AQUA";
|
||||||
|
case 'c': return "RED";
|
||||||
|
case 'd': return "LIGHT_PURPLE";
|
||||||
|
case 'e': return "YELLOW";
|
||||||
|
case 'f': return "WHITE";
|
||||||
|
case 'k': return "OBFUSCATED";
|
||||||
|
case 'l': return "BOLD";
|
||||||
|
case 'm': return "STRIKETHROUGH";
|
||||||
|
case 'n': return "UNDERLINE";
|
||||||
|
case 'o': return "ITALIC";
|
||||||
|
case 'r': return "RESET";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param m
|
||||||
|
* @param runPart Part, Color, NewLine
|
||||||
|
*/
|
||||||
|
public static void splitMessage(String m, RunnableVal3<String, String, Boolean> runPart) {
|
||||||
|
m = color(m);
|
||||||
|
String color = "GRAY";
|
||||||
|
boolean newline = false;
|
||||||
|
for (String line : m.split("\n")) {
|
||||||
|
boolean hasColor = line.charAt(0) == '\u00A7';
|
||||||
|
String[] splitColor = line.split("\u00A7");
|
||||||
|
for (String part : splitColor) {
|
||||||
|
if (hasColor) {
|
||||||
|
color = getColorName(part.charAt(0));
|
||||||
|
part = part.substring(1);
|
||||||
|
}
|
||||||
|
runPart.run(part, color, newline);
|
||||||
|
hasColor = true;
|
||||||
|
}
|
||||||
|
newline = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,10 +3,10 @@ package com.boydti.fawe.example;
|
|||||||
import com.boydti.fawe.Fawe;
|
import com.boydti.fawe.Fawe;
|
||||||
import com.boydti.fawe.config.Settings;
|
import com.boydti.fawe.config.Settings;
|
||||||
import com.boydti.fawe.object.FaweChunk;
|
import com.boydti.fawe.object.FaweChunk;
|
||||||
|
import com.boydti.fawe.object.FaweQueue;
|
||||||
import com.boydti.fawe.object.IntegerPair;
|
import com.boydti.fawe.object.IntegerPair;
|
||||||
import com.boydti.fawe.object.RunnableVal;
|
import com.boydti.fawe.object.RunnableVal;
|
||||||
import com.boydti.fawe.object.exception.FaweException;
|
import com.boydti.fawe.object.exception.FaweException;
|
||||||
import com.boydti.fawe.object.FaweQueue;
|
|
||||||
import com.boydti.fawe.util.MainUtil;
|
import com.boydti.fawe.util.MainUtil;
|
||||||
import com.boydti.fawe.util.SetQueue;
|
import com.boydti.fawe.util.SetQueue;
|
||||||
import com.boydti.fawe.util.TaskManager;
|
import com.boydti.fawe.util.TaskManager;
|
||||||
|
@ -18,7 +18,6 @@ apply plugin: 'com.github.johnrengelman.shadow'
|
|||||||
dependencies {
|
dependencies {
|
||||||
compile project(':core')
|
compile project(':core')
|
||||||
compile 'org.spongepowered:spongeapi:4.+'
|
compile 'org.spongepowered:spongeapi:4.+'
|
||||||
compile 'org.mcstats.sponge:metrics:R8-SNAPSHOT'
|
|
||||||
compile 'com.sk89q.worldedit:worldedit-forge-mc1.8.9:6.1.1'
|
compile 'com.sk89q.worldedit:worldedit-forge-mc1.8.9:6.1.1'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,12 +17,15 @@ import com.sk89q.worldedit.world.World;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import javax.management.InstanceAlreadyExistsException;
|
import javax.management.InstanceAlreadyExistsException;
|
||||||
import net.minecraft.command.ServerCommandManager;
|
import net.minecraft.command.ServerCommandManager;
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraftforge.fml.common.FMLCommonHandler;
|
import net.minecraftforge.fml.common.FMLCommonHandler;
|
||||||
|
import net.minecraftforge.fml.common.ModMetadata;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
public class FaweForge implements IFawe {
|
public class FaweForge implements IFawe {
|
||||||
@ -30,11 +33,13 @@ public class FaweForge implements IFawe {
|
|||||||
private final ForgeMain parent;
|
private final ForgeMain parent;
|
||||||
private final File directory;
|
private final File directory;
|
||||||
private final Logger logger;
|
private final Logger logger;
|
||||||
|
private final ModMetadata mod;
|
||||||
|
|
||||||
public FaweForge(ForgeMain plugin, Logger logger, File directory) {
|
public FaweForge(ForgeMain plugin, Logger logger, ModMetadata mod, File directory) {
|
||||||
this.parent = plugin;
|
this.parent = plugin;
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
this.directory = directory;
|
this.directory = directory;
|
||||||
|
this.mod = mod;
|
||||||
try {
|
try {
|
||||||
Fawe.set(this);
|
Fawe.set(this);
|
||||||
} catch (InstanceAlreadyExistsException e) {
|
} catch (InstanceAlreadyExistsException e) {
|
||||||
@ -52,16 +57,17 @@ public class FaweForge implements IFawe {
|
|||||||
return directory;
|
return directory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private HashMap<String, FaweCommand> commands = new HashMap<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setupCommand(String label, FaweCommand cmd) {
|
public void setupCommand(String label, FaweCommand cmd) {
|
||||||
if (TaskManager.IMP != null) {
|
this.commands.put(label, cmd);
|
||||||
TaskManager.IMP.task(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
ServerCommandManager scm = (ServerCommandManager) FMLCommonHandler.instance().getMinecraftServerInstance().getCommandManager();
|
|
||||||
scm.registerCommand(new ForgeCommand(label, cmd));
|
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
public void insertCommands() {
|
||||||
|
for (Map.Entry<String, FaweCommand> entry : commands.entrySet()) {
|
||||||
|
ServerCommandManager scm = (ServerCommandManager) FMLCommonHandler.instance().getMinecraftServerInstance().getCommandManager();
|
||||||
|
scm.registerCommand(new ForgeCommand(entry.getKey(), entry.getValue()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,7 +102,7 @@ public class FaweForge implements IFawe {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int[] getVersion() {
|
public int[] getVersion() {
|
||||||
String[] version = FMLCommonHandler.instance().getMinecraftServerInstance().getMinecraftVersion().split("\\.");
|
String[] version = this.mod.version.split("\\.");
|
||||||
return new int[] {Integer.parseInt(version[0]), Integer.parseInt(version[1]), Integer.parseInt(version[2])};
|
return new int[] {Integer.parseInt(version[0]), Integer.parseInt(version[1]), Integer.parseInt(version[2])};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ import net.minecraftforge.event.entity.EntityJoinWorldEvent;
|
|||||||
import net.minecraftforge.fml.common.FMLCommonHandler;
|
import net.minecraftforge.fml.common.FMLCommonHandler;
|
||||||
import net.minecraftforge.fml.common.Mod;
|
import net.minecraftforge.fml.common.Mod;
|
||||||
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
|
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
|
||||||
|
import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
|
||||||
import net.minecraftforge.fml.common.event.FMLServerStoppingEvent;
|
import net.minecraftforge.fml.common.event.FMLServerStoppingEvent;
|
||||||
import net.minecraftforge.fml.common.eventhandler.EventPriority;
|
import net.minecraftforge.fml.common.eventhandler.EventPriority;
|
||||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||||
@ -29,7 +30,12 @@ public class ForgeMain {
|
|||||||
File directory = new File(event.getModConfigurationDirectory() + File.separator + "FastAsyncWorldEdit");
|
File directory = new File(event.getModConfigurationDirectory() + File.separator + "FastAsyncWorldEdit");
|
||||||
MinecraftForge.EVENT_BUS.register(this);
|
MinecraftForge.EVENT_BUS.register(this);
|
||||||
FMLCommonHandler.instance().bus().register(this);
|
FMLCommonHandler.instance().bus().register(this);
|
||||||
this.IMP = new com.boydti.fawe.forge.FaweForge(this, event.getModLog(), directory);
|
this.IMP = new FaweForge(this, event.getModLog(), event.getModMetadata(), directory);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Mod.EventHandler
|
||||||
|
public void serverLoad(FMLServerStartingEvent event) {
|
||||||
|
IMP.insertCommands();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent(priority = EventPriority.HIGHEST)
|
@SubscribeEvent(priority = EventPriority.HIGHEST)
|
||||||
|
@ -10,7 +10,6 @@ import com.sk89q.worldedit.forge.ForgeWorldEdit;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.text.TextComponentBase;
|
|
||||||
import net.minecraft.util.text.TextComponentString;
|
import net.minecraft.util.text.TextComponentString;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
@ -52,10 +51,9 @@ public class ForgePlayer extends FawePlayer<EntityPlayerMP> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendMessage(String msg) {
|
public void sendMessage(String msg) {
|
||||||
for (String part : msg.split("\n")) {
|
msg = BBC.color(msg);
|
||||||
part = BBC.color(part);
|
for (String line : msg.split("\n")) {
|
||||||
TextComponentBase text = new TextComponentString(part);
|
this.parent.addChatMessage(new TextComponentString(line));
|
||||||
this.parent.addChatMessage(text);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,7 +42,6 @@ import net.minecraft.network.play.server.SPacketDestroyEntities;
|
|||||||
import net.minecraft.server.management.PlayerChunkMap;
|
import net.minecraft.server.management.PlayerChunkMap;
|
||||||
import net.minecraft.server.management.PlayerChunkMapEntry;
|
import net.minecraft.server.management.PlayerChunkMapEntry;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.BitArray;
|
|
||||||
import net.minecraft.util.ClassInheritanceMultiMap;
|
import net.minecraft.util.ClassInheritanceMultiMap;
|
||||||
import net.minecraft.util.IntHashMap;
|
import net.minecraft.util.IntHashMap;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
@ -51,7 +50,6 @@ import net.minecraft.world.World;
|
|||||||
import net.minecraft.world.WorldServer;
|
import net.minecraft.world.WorldServer;
|
||||||
import net.minecraft.world.chunk.BlockStateContainer;
|
import net.minecraft.world.chunk.BlockStateContainer;
|
||||||
import net.minecraft.world.chunk.Chunk;
|
import net.minecraft.world.chunk.Chunk;
|
||||||
import net.minecraft.world.chunk.IBlockStatePalette;
|
|
||||||
import net.minecraft.world.chunk.IChunkGenerator;
|
import net.minecraft.world.chunk.IChunkGenerator;
|
||||||
import net.minecraft.world.chunk.IChunkProvider;
|
import net.minecraft.world.chunk.IChunkProvider;
|
||||||
import net.minecraft.world.chunk.NibbleArray;
|
import net.minecraft.world.chunk.NibbleArray;
|
||||||
@ -61,11 +59,12 @@ import net.minecraftforge.fml.common.FMLCommonHandler;
|
|||||||
|
|
||||||
public class ForgeQueue_All extends NMSMappedFaweQueue<World, Chunk, ExtendedBlockStorage[], BlockStateContainer> {
|
public class ForgeQueue_All extends NMSMappedFaweQueue<World, Chunk, ExtendedBlockStorage[], BlockStateContainer> {
|
||||||
|
|
||||||
private Method methodFromNative;
|
private static Method methodFromNative;
|
||||||
private Method methodToNative;
|
private static Method methodToNative;
|
||||||
|
|
||||||
public ForgeQueue_All(String world) {
|
public ForgeQueue_All(String world) {
|
||||||
super(world);
|
super(world);
|
||||||
|
if (methodFromNative == null) {
|
||||||
try {
|
try {
|
||||||
Class<?> converter = Class.forName("com.sk89q.worldedit.forge.NBTConverter");
|
Class<?> converter = Class.forName("com.sk89q.worldedit.forge.NBTConverter");
|
||||||
this.methodFromNative = converter.getDeclaredMethod("toNative", Tag.class);
|
this.methodFromNative = converter.getDeclaredMethod("toNative", Tag.class);
|
||||||
@ -76,6 +75,8 @@ public class ForgeQueue_All extends NMSMappedFaweQueue<World, Chunk, ExtendedBlo
|
|||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
getImpWorld();
|
||||||
|
}
|
||||||
|
|
||||||
private BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(0, 0, 0);
|
private BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(0, 0, 0);
|
||||||
|
|
||||||
@ -300,7 +301,7 @@ public class ForgeQueue_All extends NMSMappedFaweQueue<World, Chunk, ExtendedBlo
|
|||||||
ForgeChunk_All fs = (ForgeChunk_All) fc;
|
ForgeChunk_All fs = (ForgeChunk_All) fc;
|
||||||
net.minecraft.world.chunk.Chunk nmsChunk = fs.getChunk();
|
net.minecraft.world.chunk.Chunk nmsChunk = fs.getChunk();
|
||||||
nmsChunk.setModified(true);
|
nmsChunk.setModified(true);
|
||||||
net.minecraft.world.World nmsWorld = nmsChunk.getWorld();
|
net.minecraft.world.World nmsWorld = getWorld();
|
||||||
try {
|
try {
|
||||||
boolean flag = !nmsWorld.provider.getHasNoSky();
|
boolean flag = !nmsWorld.provider.getHasNoSky();
|
||||||
// Sections
|
// Sections
|
||||||
@ -412,8 +413,9 @@ public class ForgeQueue_All extends NMSMappedFaweQueue<World, Chunk, ExtendedBlo
|
|||||||
section = sections[j] = new ExtendedBlockStorage(j << 4, flag);
|
section = sections[j] = new ExtendedBlockStorage(j << 4, flag);
|
||||||
setPalette(section, fs.sectionPalettes[j]);
|
setPalette(section, fs.sectionPalettes[j]);
|
||||||
setCount(0, count - fs.getAir(j), section);
|
setCount(0, count - fs.getAir(j), section);
|
||||||
|
continue;
|
||||||
} else {
|
} else {
|
||||||
sections[j] = new ExtendedBlockStorage(j << 4, flag);
|
sections[j] = section = new ExtendedBlockStorage(j << 4, flag);
|
||||||
}
|
}
|
||||||
} else if (count >= 4096) {
|
} else if (count >= 4096) {
|
||||||
if (fs.sectionPalettes != null && fs.sectionPalettes[j] != null) {
|
if (fs.sectionPalettes != null && fs.sectionPalettes[j] != null) {
|
||||||
@ -421,17 +423,10 @@ public class ForgeQueue_All extends NMSMappedFaweQueue<World, Chunk, ExtendedBlo
|
|||||||
setCount(0, count - fs.getAir(j), section);
|
setCount(0, count - fs.getAir(j), section);
|
||||||
continue;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
sections[j] = new ExtendedBlockStorage(j << 4, flag);
|
sections[j] = section = new ExtendedBlockStorage(j << 4, flag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BlockStateContainer nibble = section.getData();
|
BlockStateContainer nibble = section.getData();
|
||||||
Field fieldBits = BlockStateContainer.class.getDeclaredField("storage");
|
|
||||||
fieldBits.setAccessible(true);
|
|
||||||
BitArray bits = (BitArray) fieldBits.get(nibble);
|
|
||||||
|
|
||||||
Field fieldPalette = BlockStateContainer.class.getDeclaredField("palette");
|
|
||||||
fieldPalette.setAccessible(true);
|
|
||||||
IBlockStatePalette palette = (IBlockStatePalette) fieldPalette.get(nibble);
|
|
||||||
int nonEmptyBlockCount = 0;
|
int nonEmptyBlockCount = 0;
|
||||||
for (int y = 0; y < 16; y++) {
|
for (int y = 0; y < 16; y++) {
|
||||||
for (int z = 0; z < 16; z++) {
|
for (int z = 0; z < 16; z++) {
|
||||||
@ -550,6 +545,7 @@ public class ForgeQueue_All extends NMSMappedFaweQueue<World, Chunk, ExtendedBlo
|
|||||||
if (field.getType() == IntHashMap.class) {
|
if (field.getType() == IntHashMap.class) {
|
||||||
field.setAccessible(true);
|
field.setAccessible(true);
|
||||||
entries = (IntHashMap<EntityTrackerEntry>) field.get(tracker);
|
entries = (IntHashMap<EntityTrackerEntry>) field.get(tracker);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (ClassInheritanceMultiMap<Entity> slice : entitieSlices) {
|
for (ClassInheritanceMultiMap<Entity> slice : entitieSlices) {
|
||||||
@ -619,7 +615,7 @@ public class ForgeQueue_All extends NMSMappedFaweQueue<World, Chunk, ExtendedBlo
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasSky() {
|
public boolean hasSky() {
|
||||||
return nmsWorld.provider.getHasNoSky();
|
return !nmsWorld.provider.getHasNoSky();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -17,7 +17,6 @@ apply plugin: 'com.github.johnrengelman.shadow'
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compile project(':core')
|
compile project(':core')
|
||||||
compile 'org.mcstats.sponge:metrics:R8-SNAPSHOT'
|
|
||||||
compile 'com.sk89q.worldedit:worldedit-forge-mc1.7.10:6.1.1-20151030.011615-19'
|
compile 'com.sk89q.worldedit:worldedit-forge-mc1.7.10:6.1.1-20151030.011615-19'
|
||||||
compile 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
|
compile 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
|
||||||
}
|
}
|
||||||
|
@ -13,10 +13,14 @@ import com.boydti.fawe.util.TaskManager;
|
|||||||
import com.boydti.fawe.wrappers.WorldWrapper;
|
import com.boydti.fawe.wrappers.WorldWrapper;
|
||||||
import com.sk89q.worldedit.forge.ForgeWorld;
|
import com.sk89q.worldedit.forge.ForgeWorld;
|
||||||
import com.sk89q.worldedit.world.World;
|
import com.sk89q.worldedit.world.World;
|
||||||
|
import cpw.mods.fml.common.FMLCommonHandler;
|
||||||
|
import cpw.mods.fml.common.ModMetadata;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import javax.management.InstanceAlreadyExistsException;
|
import javax.management.InstanceAlreadyExistsException;
|
||||||
import net.minecraft.command.ServerCommandManager;
|
import net.minecraft.command.ServerCommandManager;
|
||||||
@ -29,11 +33,13 @@ public class FaweForge implements IFawe {
|
|||||||
private final ForgeMain parent;
|
private final ForgeMain parent;
|
||||||
private final File directory;
|
private final File directory;
|
||||||
private final Logger logger;
|
private final Logger logger;
|
||||||
|
private final ModMetadata mod;
|
||||||
|
|
||||||
public FaweForge(ForgeMain plugin, Logger logger, File directory) {
|
public FaweForge(ForgeMain plugin, Logger logger, ModMetadata mod, File directory) {
|
||||||
this.parent = plugin;
|
this.parent = plugin;
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
this.directory = directory;
|
this.directory = directory;
|
||||||
|
this.mod = mod;
|
||||||
try {
|
try {
|
||||||
Fawe.set(this);
|
Fawe.set(this);
|
||||||
} catch (InstanceAlreadyExistsException e) {
|
} catch (InstanceAlreadyExistsException e) {
|
||||||
@ -51,16 +57,17 @@ public class FaweForge implements IFawe {
|
|||||||
return directory;
|
return directory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private HashMap<String, FaweCommand> commands = new HashMap<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setupCommand(final String label, final FaweCommand cmd) {
|
public void setupCommand(String label, FaweCommand cmd) {
|
||||||
if (TaskManager.IMP != null) {
|
this.commands.put(label, cmd);
|
||||||
TaskManager.IMP.task(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
ServerCommandManager scm = (ServerCommandManager) MinecraftServer.getServer().getCommandManager();
|
|
||||||
scm.registerCommand(new ForgeCommand(label, cmd));
|
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
public void insertCommands() {
|
||||||
|
for (Map.Entry<String, FaweCommand> entry : commands.entrySet()) {
|
||||||
|
ServerCommandManager scm = (ServerCommandManager) FMLCommonHandler.instance().getMinecraftServerInstance().getCommandManager();
|
||||||
|
scm.registerCommand(new ForgeCommand(entry.getKey(), entry.getValue()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,7 +99,7 @@ public class FaweForge implements IFawe {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int[] getVersion() {
|
public int[] getVersion() {
|
||||||
String[] version = MinecraftServer.getServer().getMinecraftVersion().split("\\.");
|
String[] version = this.mod.version.split("\\.");
|
||||||
return new int[] {Integer.parseInt(version[0]), Integer.parseInt(version[1]), Integer.parseInt(version[2])};
|
return new int[] {Integer.parseInt(version[0]), Integer.parseInt(version[1]), Integer.parseInt(version[2])};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ import com.boydti.fawe.object.FawePlayer;
|
|||||||
import cpw.mods.fml.common.FMLCommonHandler;
|
import cpw.mods.fml.common.FMLCommonHandler;
|
||||||
import cpw.mods.fml.common.Mod;
|
import cpw.mods.fml.common.Mod;
|
||||||
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
|
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
|
||||||
|
import cpw.mods.fml.common.event.FMLServerStartingEvent;
|
||||||
import cpw.mods.fml.common.event.FMLServerStoppingEvent;
|
import cpw.mods.fml.common.event.FMLServerStoppingEvent;
|
||||||
import cpw.mods.fml.common.eventhandler.EventPriority;
|
import cpw.mods.fml.common.eventhandler.EventPriority;
|
||||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||||
@ -30,7 +31,12 @@ public class ForgeMain {
|
|||||||
File directory = new File(event.getModConfigurationDirectory() + File.separator + "FastAsyncWorldEdit");
|
File directory = new File(event.getModConfigurationDirectory() + File.separator + "FastAsyncWorldEdit");
|
||||||
MinecraftForge.EVENT_BUS.register(this);
|
MinecraftForge.EVENT_BUS.register(this);
|
||||||
FMLCommonHandler.instance().bus().register(this);
|
FMLCommonHandler.instance().bus().register(this);
|
||||||
this.IMP = new FaweForge(this, event.getModLog(), directory);
|
this.IMP = new FaweForge(this, event.getModLog(), event.getModMetadata(), directory);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Mod.EventHandler
|
||||||
|
public void serverLoad(FMLServerStartingEvent event) {
|
||||||
|
IMP.insertCommands();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent(priority = EventPriority.HIGHEST)
|
@SubscribeEvent(priority = EventPriority.HIGHEST)
|
||||||
|
@ -54,11 +54,12 @@ import net.minecraft.world.gen.ChunkProviderServer;
|
|||||||
|
|
||||||
public class ForgeQueue_All extends NMSMappedFaweQueue<World, Chunk, ExtendedBlockStorage[], ExtendedBlockStorage> {
|
public class ForgeQueue_All extends NMSMappedFaweQueue<World, Chunk, ExtendedBlockStorage[], ExtendedBlockStorage> {
|
||||||
|
|
||||||
private Method methodFromNative;
|
private static Method methodFromNative;
|
||||||
private Method methodToNative;
|
private static Method methodToNative;
|
||||||
|
|
||||||
public ForgeQueue_All(String world) {
|
public ForgeQueue_All(String world) {
|
||||||
super(world);
|
super(world);
|
||||||
|
if (methodFromNative == null) {
|
||||||
try {
|
try {
|
||||||
Class<?> converter = Class.forName("com.sk89q.worldedit.forge.NBTConverter");
|
Class<?> converter = Class.forName("com.sk89q.worldedit.forge.NBTConverter");
|
||||||
this.methodFromNative = converter.getDeclaredMethod("toNative", Tag.class);
|
this.methodFromNative = converter.getDeclaredMethod("toNative", Tag.class);
|
||||||
@ -69,6 +70,8 @@ public class ForgeQueue_All extends NMSMappedFaweQueue<World, Chunk, ExtendedBlo
|
|||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
getImpWorld();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CompoundTag getTileEntity(Chunk chunk, int x, int y, int z) {
|
public CompoundTag getTileEntity(Chunk chunk, int x, int y, int z) {
|
||||||
@ -242,6 +245,7 @@ public class ForgeQueue_All extends NMSMappedFaweQueue<World, Chunk, ExtendedBlo
|
|||||||
if (field.getType() == IntHashMap.class) {
|
if (field.getType() == IntHashMap.class) {
|
||||||
field.setAccessible(true);
|
field.setAccessible(true);
|
||||||
entries = (IntHashMap) field.get(tracker);
|
entries = (IntHashMap) field.get(tracker);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (Collection<Entity> slice : entitieSlices) {
|
for (Collection<Entity> slice : entitieSlices) {
|
||||||
@ -605,7 +609,7 @@ public class ForgeQueue_All extends NMSMappedFaweQueue<World, Chunk, ExtendedBlo
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasSky() {
|
public boolean hasSky() {
|
||||||
return nmsWorld.provider.hasNoSky;
|
return !nmsWorld.provider.hasNoSky;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -18,7 +18,6 @@ apply plugin: 'com.github.johnrengelman.shadow'
|
|||||||
dependencies {
|
dependencies {
|
||||||
compile project(':core')
|
compile project(':core')
|
||||||
compile 'org.spongepowered:spongeapi:4.+'
|
compile 'org.spongepowered:spongeapi:4.+'
|
||||||
compile 'org.mcstats.sponge:metrics:R8-SNAPSHOT'
|
|
||||||
compile 'com.sk89q.worldedit:worldedit-forge-mc1.8.9:6.1.1'
|
compile 'com.sk89q.worldedit:worldedit-forge-mc1.8.9:6.1.1'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,8 +6,8 @@ import com.boydti.fawe.IFawe;
|
|||||||
import com.boydti.fawe.forge.v0.ForgeQueue_All;
|
import com.boydti.fawe.forge.v0.ForgeQueue_All;
|
||||||
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.regions.FaweMaskManager;
|
|
||||||
import com.boydti.fawe.object.FaweQueue;
|
import com.boydti.fawe.object.FaweQueue;
|
||||||
|
import com.boydti.fawe.regions.FaweMaskManager;
|
||||||
import com.boydti.fawe.util.MainUtil;
|
import com.boydti.fawe.util.MainUtil;
|
||||||
import com.boydti.fawe.util.TaskManager;
|
import com.boydti.fawe.util.TaskManager;
|
||||||
import com.boydti.fawe.wrappers.WorldWrapper;
|
import com.boydti.fawe.wrappers.WorldWrapper;
|
||||||
@ -17,24 +17,29 @@ import com.sk89q.worldedit.world.World;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import javax.management.InstanceAlreadyExistsException;
|
import javax.management.InstanceAlreadyExistsException;
|
||||||
import net.minecraft.command.ServerCommandManager;
|
import net.minecraft.command.ServerCommandManager;
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
import net.minecraftforge.fml.common.FMLCommonHandler;
|
||||||
|
import net.minecraftforge.fml.common.ModMetadata;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
import org.primesoft.blockshub.IBlocksHubApi;
|
|
||||||
|
|
||||||
public class FaweForge implements IFawe {
|
public class FaweForge implements IFawe {
|
||||||
|
|
||||||
private final ForgeMain parent;
|
private final ForgeMain parent;
|
||||||
private final File directory;
|
private final File directory;
|
||||||
private final Logger logger;
|
private final Logger logger;
|
||||||
|
private final ModMetadata mod;
|
||||||
|
|
||||||
public FaweForge(ForgeMain plugin, Logger logger, File directory) {
|
public FaweForge(ForgeMain plugin, Logger logger, ModMetadata mod, File directory) {
|
||||||
this.parent = plugin;
|
this.parent = plugin;
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
this.directory = directory;
|
this.directory = directory;
|
||||||
|
this.mod = mod;
|
||||||
try {
|
try {
|
||||||
Fawe.set(this);
|
Fawe.set(this);
|
||||||
} catch (InstanceAlreadyExistsException e) {
|
} catch (InstanceAlreadyExistsException e) {
|
||||||
@ -52,16 +57,17 @@ public class FaweForge implements IFawe {
|
|||||||
return directory;
|
return directory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private HashMap<String, FaweCommand> commands = new HashMap<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setupCommand(String label, FaweCommand cmd) {
|
public void setupCommand(String label, FaweCommand cmd) {
|
||||||
if (TaskManager.IMP != null) {
|
this.commands.put(label, cmd);
|
||||||
TaskManager.IMP.task(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
ServerCommandManager scm = (ServerCommandManager) MinecraftServer.getServer().getCommandManager();
|
|
||||||
scm.registerCommand(new ForgeCommand(label, cmd));
|
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
public void insertCommands() {
|
||||||
|
for (Map.Entry<String, FaweCommand> entry : commands.entrySet()) {
|
||||||
|
ServerCommandManager scm = (ServerCommandManager) FMLCommonHandler.instance().getMinecraftServerInstance().getCommandManager();
|
||||||
|
scm.registerCommand(new ForgeCommand(entry.getKey(), entry.getValue()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,7 +102,7 @@ public class FaweForge implements IFawe {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int[] getVersion() {
|
public int[] getVersion() {
|
||||||
String[] version = MinecraftServer.getServer().getMinecraftVersion().split("\\.");
|
String[] version = this.mod.version.split("\\.");
|
||||||
return new int[] {Integer.parseInt(version[0]), Integer.parseInt(version[1]), Integer.parseInt(version[2])};
|
return new int[] {Integer.parseInt(version[0]), Integer.parseInt(version[1]), Integer.parseInt(version[2])};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@ import net.minecraftforge.event.entity.EntityJoinWorldEvent;
|
|||||||
import net.minecraftforge.fml.common.FMLCommonHandler;
|
import net.minecraftforge.fml.common.FMLCommonHandler;
|
||||||
import net.minecraftforge.fml.common.Mod;
|
import net.minecraftforge.fml.common.Mod;
|
||||||
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
|
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
|
||||||
|
import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
|
||||||
import net.minecraftforge.fml.common.event.FMLServerStoppingEvent;
|
import net.minecraftforge.fml.common.event.FMLServerStoppingEvent;
|
||||||
import net.minecraftforge.fml.common.eventhandler.EventPriority;
|
import net.minecraftforge.fml.common.eventhandler.EventPriority;
|
||||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||||
@ -30,7 +31,12 @@ public class ForgeMain {
|
|||||||
File directory = new File(event.getModConfigurationDirectory() + File.separator + "FastAsyncWorldEdit");
|
File directory = new File(event.getModConfigurationDirectory() + File.separator + "FastAsyncWorldEdit");
|
||||||
MinecraftForge.EVENT_BUS.register(this);
|
MinecraftForge.EVENT_BUS.register(this);
|
||||||
FMLCommonHandler.instance().bus().register(this);
|
FMLCommonHandler.instance().bus().register(this);
|
||||||
this.IMP = new com.boydti.fawe.forge.FaweForge(this, event.getModLog(), directory);
|
this.IMP = new FaweForge(this, event.getModLog(), event.getModMetadata(), directory);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Mod.EventHandler
|
||||||
|
public void serverLoad(FMLServerStartingEvent event) {
|
||||||
|
IMP.insertCommands();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent(priority = EventPriority.HIGHEST)
|
@SubscribeEvent(priority = EventPriority.HIGHEST)
|
||||||
|
@ -52,11 +52,12 @@ import net.minecraft.world.gen.ChunkProviderServer;
|
|||||||
|
|
||||||
public class ForgeQueue_All extends NMSMappedFaweQueue<World, Chunk, ExtendedBlockStorage[], char[]> {
|
public class ForgeQueue_All extends NMSMappedFaweQueue<World, Chunk, ExtendedBlockStorage[], char[]> {
|
||||||
|
|
||||||
private Method methodFromNative;
|
private static Method methodFromNative;
|
||||||
private Method methodToNative;
|
private static Method methodToNative;
|
||||||
|
|
||||||
public ForgeQueue_All(String world) {
|
public ForgeQueue_All(String world) {
|
||||||
super(world);
|
super(world);
|
||||||
|
if (methodFromNative == null) {
|
||||||
try {
|
try {
|
||||||
Class<?> converter = Class.forName("com.sk89q.worldedit.forge.NBTConverter");
|
Class<?> converter = Class.forName("com.sk89q.worldedit.forge.NBTConverter");
|
||||||
this.methodFromNative = converter.getDeclaredMethod("toNative", Tag.class);
|
this.methodFromNative = converter.getDeclaredMethod("toNative", Tag.class);
|
||||||
@ -67,6 +68,8 @@ public class ForgeQueue_All extends NMSMappedFaweQueue<World, Chunk, ExtendedBlo
|
|||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
getImpWorld();
|
||||||
|
}
|
||||||
|
|
||||||
private BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(0, 0, 0);
|
private BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(0, 0, 0);
|
||||||
|
|
||||||
@ -481,6 +484,7 @@ public class ForgeQueue_All extends NMSMappedFaweQueue<World, Chunk, ExtendedBlo
|
|||||||
if (field.getType() == IntHashMap.class) {
|
if (field.getType() == IntHashMap.class) {
|
||||||
field.setAccessible(true);
|
field.setAccessible(true);
|
||||||
entries = (IntHashMap<EntityTrackerEntry>) field.get(tracker);
|
entries = (IntHashMap<EntityTrackerEntry>) field.get(tracker);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (ClassInheritanceMultiMap<Entity> slice : entitieSlices) {
|
for (ClassInheritanceMultiMap<Entity> slice : entitieSlices) {
|
||||||
@ -567,7 +571,7 @@ public class ForgeQueue_All extends NMSMappedFaweQueue<World, Chunk, ExtendedBlo
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasSky() {
|
public boolean hasSky() {
|
||||||
return nmsWorld.provider.getHasNoSky();
|
return !nmsWorld.provider.getHasNoSky();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -18,7 +18,6 @@ apply plugin: 'com.github.johnrengelman.shadow'
|
|||||||
dependencies {
|
dependencies {
|
||||||
compile project(':core')
|
compile project(':core')
|
||||||
compile 'org.spongepowered:spongeapi:4.+'
|
compile 'org.spongepowered:spongeapi:4.+'
|
||||||
compile 'org.mcstats.sponge:metrics:R8-SNAPSHOT'
|
|
||||||
compile 'com.sk89q.worldedit:worldedit-forge-mc1.8.9:6.1.1'
|
compile 'com.sk89q.worldedit:worldedit-forge-mc1.8.9:6.1.1'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,12 +17,15 @@ import com.sk89q.worldedit.world.World;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import javax.management.InstanceAlreadyExistsException;
|
import javax.management.InstanceAlreadyExistsException;
|
||||||
import net.minecraft.command.ServerCommandManager;
|
import net.minecraft.command.ServerCommandManager;
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraftforge.fml.common.FMLCommonHandler;
|
import net.minecraftforge.fml.common.FMLCommonHandler;
|
||||||
|
import net.minecraftforge.fml.common.ModMetadata;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
public class FaweForge implements IFawe {
|
public class FaweForge implements IFawe {
|
||||||
@ -30,11 +33,13 @@ public class FaweForge implements IFawe {
|
|||||||
private final ForgeMain parent;
|
private final ForgeMain parent;
|
||||||
private final File directory;
|
private final File directory;
|
||||||
private final Logger logger;
|
private final Logger logger;
|
||||||
|
private final ModMetadata mod;
|
||||||
|
|
||||||
public FaweForge(ForgeMain plugin, Logger logger, File directory) {
|
public FaweForge(ForgeMain plugin, Logger logger, ModMetadata mod, File directory) {
|
||||||
this.parent = plugin;
|
this.parent = plugin;
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
this.directory = directory;
|
this.directory = directory;
|
||||||
|
this.mod = mod;
|
||||||
try {
|
try {
|
||||||
Fawe.set(this);
|
Fawe.set(this);
|
||||||
} catch (InstanceAlreadyExistsException e) {
|
} catch (InstanceAlreadyExistsException e) {
|
||||||
@ -52,16 +57,17 @@ public class FaweForge implements IFawe {
|
|||||||
return directory;
|
return directory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private HashMap<String, FaweCommand> commands = new HashMap<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setupCommand(String label, FaweCommand cmd) {
|
public void setupCommand(String label, FaweCommand cmd) {
|
||||||
if (TaskManager.IMP != null) {
|
this.commands.put(label, cmd);
|
||||||
TaskManager.IMP.task(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
ServerCommandManager scm = (ServerCommandManager) FMLCommonHandler.instance().getMinecraftServerInstance().getCommandManager();
|
|
||||||
scm.registerCommand(new ForgeCommand(label, cmd));
|
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
public void insertCommands() {
|
||||||
|
for (Map.Entry<String, FaweCommand> entry : commands.entrySet()) {
|
||||||
|
ServerCommandManager scm = (ServerCommandManager) FMLCommonHandler.instance().getMinecraftServerInstance().getCommandManager();
|
||||||
|
scm.registerCommand(new ForgeCommand(entry.getKey(), entry.getValue()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,7 +102,7 @@ public class FaweForge implements IFawe {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int[] getVersion() {
|
public int[] getVersion() {
|
||||||
String[] version = FMLCommonHandler.instance().getMinecraftServerInstance().getMinecraftVersion().split("\\.");
|
String[] version = this.mod.version.split("\\.");
|
||||||
return new int[] {Integer.parseInt(version[0]), Integer.parseInt(version[1]), Integer.parseInt(version[2])};
|
return new int[] {Integer.parseInt(version[0]), Integer.parseInt(version[1]), Integer.parseInt(version[2])};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ import net.minecraftforge.event.entity.EntityJoinWorldEvent;
|
|||||||
import net.minecraftforge.fml.common.FMLCommonHandler;
|
import net.minecraftforge.fml.common.FMLCommonHandler;
|
||||||
import net.minecraftforge.fml.common.Mod;
|
import net.minecraftforge.fml.common.Mod;
|
||||||
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
|
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
|
||||||
|
import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
|
||||||
import net.minecraftforge.fml.common.event.FMLServerStoppingEvent;
|
import net.minecraftforge.fml.common.event.FMLServerStoppingEvent;
|
||||||
import net.minecraftforge.fml.common.eventhandler.EventPriority;
|
import net.minecraftforge.fml.common.eventhandler.EventPriority;
|
||||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||||
@ -29,7 +30,12 @@ public class ForgeMain {
|
|||||||
File directory = new File(event.getModConfigurationDirectory() + File.separator + "FastAsyncWorldEdit");
|
File directory = new File(event.getModConfigurationDirectory() + File.separator + "FastAsyncWorldEdit");
|
||||||
MinecraftForge.EVENT_BUS.register(this);
|
MinecraftForge.EVENT_BUS.register(this);
|
||||||
FMLCommonHandler.instance().bus().register(this);
|
FMLCommonHandler.instance().bus().register(this);
|
||||||
this.IMP = new com.boydti.fawe.forge.FaweForge(this, event.getModLog(), directory);
|
this.IMP = new FaweForge(this, event.getModLog(), event.getModMetadata(), directory);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Mod.EventHandler
|
||||||
|
public void serverLoad(FMLServerStartingEvent event) {
|
||||||
|
IMP.insertCommands();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent(priority = EventPriority.HIGHEST)
|
@SubscribeEvent(priority = EventPriority.HIGHEST)
|
||||||
|
@ -42,7 +42,6 @@ import net.minecraft.network.play.server.SPacketDestroyEntities;
|
|||||||
import net.minecraft.server.management.PlayerChunkMap;
|
import net.minecraft.server.management.PlayerChunkMap;
|
||||||
import net.minecraft.server.management.PlayerChunkMapEntry;
|
import net.minecraft.server.management.PlayerChunkMapEntry;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.BitArray;
|
|
||||||
import net.minecraft.util.ClassInheritanceMultiMap;
|
import net.minecraft.util.ClassInheritanceMultiMap;
|
||||||
import net.minecraft.util.IntHashMap;
|
import net.minecraft.util.IntHashMap;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
@ -51,7 +50,6 @@ import net.minecraft.world.World;
|
|||||||
import net.minecraft.world.WorldServer;
|
import net.minecraft.world.WorldServer;
|
||||||
import net.minecraft.world.chunk.BlockStateContainer;
|
import net.minecraft.world.chunk.BlockStateContainer;
|
||||||
import net.minecraft.world.chunk.Chunk;
|
import net.minecraft.world.chunk.Chunk;
|
||||||
import net.minecraft.world.chunk.IBlockStatePalette;
|
|
||||||
import net.minecraft.world.chunk.IChunkGenerator;
|
import net.minecraft.world.chunk.IChunkGenerator;
|
||||||
import net.minecraft.world.chunk.IChunkProvider;
|
import net.minecraft.world.chunk.IChunkProvider;
|
||||||
import net.minecraft.world.chunk.NibbleArray;
|
import net.minecraft.world.chunk.NibbleArray;
|
||||||
@ -61,11 +59,12 @@ import net.minecraftforge.fml.common.FMLCommonHandler;
|
|||||||
|
|
||||||
public class ForgeQueue_All extends NMSMappedFaweQueue<World, Chunk, ExtendedBlockStorage[], BlockStateContainer> {
|
public class ForgeQueue_All extends NMSMappedFaweQueue<World, Chunk, ExtendedBlockStorage[], BlockStateContainer> {
|
||||||
|
|
||||||
private Method methodFromNative;
|
private static Method methodFromNative;
|
||||||
private Method methodToNative;
|
private static Method methodToNative;
|
||||||
|
|
||||||
public ForgeQueue_All(String world) {
|
public ForgeQueue_All(String world) {
|
||||||
super(world);
|
super(world);
|
||||||
|
if (methodFromNative == null) {
|
||||||
try {
|
try {
|
||||||
Class<?> converter = Class.forName("com.sk89q.worldedit.forge.NBTConverter");
|
Class<?> converter = Class.forName("com.sk89q.worldedit.forge.NBTConverter");
|
||||||
this.methodFromNative = converter.getDeclaredMethod("toNative", Tag.class);
|
this.methodFromNative = converter.getDeclaredMethod("toNative", Tag.class);
|
||||||
@ -76,6 +75,8 @@ public class ForgeQueue_All extends NMSMappedFaweQueue<World, Chunk, ExtendedBlo
|
|||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
getImpWorld();
|
||||||
|
}
|
||||||
|
|
||||||
private BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(0, 0, 0);
|
private BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(0, 0, 0);
|
||||||
|
|
||||||
@ -412,8 +413,9 @@ public class ForgeQueue_All extends NMSMappedFaweQueue<World, Chunk, ExtendedBlo
|
|||||||
section = sections[j] = new ExtendedBlockStorage(j << 4, flag);
|
section = sections[j] = new ExtendedBlockStorage(j << 4, flag);
|
||||||
setPalette(section, fs.sectionPalettes[j]);
|
setPalette(section, fs.sectionPalettes[j]);
|
||||||
setCount(0, count - fs.getAir(j), section);
|
setCount(0, count - fs.getAir(j), section);
|
||||||
|
continue;
|
||||||
} else {
|
} else {
|
||||||
sections[j] = new ExtendedBlockStorage(j << 4, flag);
|
sections[j] = section = new ExtendedBlockStorage(j << 4, flag);
|
||||||
}
|
}
|
||||||
} else if (count >= 4096) {
|
} else if (count >= 4096) {
|
||||||
if (fs.sectionPalettes != null && fs.sectionPalettes[j] != null) {
|
if (fs.sectionPalettes != null && fs.sectionPalettes[j] != null) {
|
||||||
@ -421,17 +423,10 @@ public class ForgeQueue_All extends NMSMappedFaweQueue<World, Chunk, ExtendedBlo
|
|||||||
setCount(0, count - fs.getAir(j), section);
|
setCount(0, count - fs.getAir(j), section);
|
||||||
continue;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
sections[j] = new ExtendedBlockStorage(j << 4, flag);
|
sections[j] = section = new ExtendedBlockStorage(j << 4, flag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BlockStateContainer nibble = section.getData();
|
BlockStateContainer nibble = section.getData();
|
||||||
Field fieldBits = BlockStateContainer.class.getDeclaredField("storage");
|
|
||||||
fieldBits.setAccessible(true);
|
|
||||||
BitArray bits = (BitArray) fieldBits.get(nibble);
|
|
||||||
|
|
||||||
Field fieldPalette = BlockStateContainer.class.getDeclaredField("palette");
|
|
||||||
fieldPalette.setAccessible(true);
|
|
||||||
IBlockStatePalette palette = (IBlockStatePalette) fieldPalette.get(nibble);
|
|
||||||
int nonEmptyBlockCount = 0;
|
int nonEmptyBlockCount = 0;
|
||||||
for (int y = 0; y < 16; y++) {
|
for (int y = 0; y < 16; y++) {
|
||||||
for (int z = 0; z < 16; z++) {
|
for (int z = 0; z < 16; z++) {
|
||||||
@ -550,6 +545,7 @@ public class ForgeQueue_All extends NMSMappedFaweQueue<World, Chunk, ExtendedBlo
|
|||||||
if (field.getType() == IntHashMap.class) {
|
if (field.getType() == IntHashMap.class) {
|
||||||
field.setAccessible(true);
|
field.setAccessible(true);
|
||||||
entries = (IntHashMap<EntityTrackerEntry>) field.get(tracker);
|
entries = (IntHashMap<EntityTrackerEntry>) field.get(tracker);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (ClassInheritanceMultiMap<Entity> slice : entitieSlices) {
|
for (ClassInheritanceMultiMap<Entity> slice : entitieSlices) {
|
||||||
@ -619,7 +615,7 @@ public class ForgeQueue_All extends NMSMappedFaweQueue<World, Chunk, ExtendedBlo
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasSky() {
|
public boolean hasSky() {
|
||||||
return nmsWorld.provider.getHasNoSky();
|
return !nmsWorld.provider.getHasNoSky();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -24,7 +24,6 @@ apply plugin: 'com.github.johnrengelman.shadow'
|
|||||||
dependencies {
|
dependencies {
|
||||||
compile project(':core')
|
compile project(':core')
|
||||||
compile 'org.spongepowered:spongeapi:4.+'
|
compile 'org.spongepowered:spongeapi:4.+'
|
||||||
compile 'org.mcstats.sponge:metrics:R8-SNAPSHOT'
|
|
||||||
compile 'com.sk89q.worldedit:worldedit-forge-mc1.8.9:6.1.1'
|
compile 'com.sk89q.worldedit:worldedit-forge-mc1.8.9:6.1.1'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user