mirror of
https://github.com/plexusorg/Plex-FAWE.git
synced 2024-12-22 17:27:38 +00:00
[Forge] Add creative use mode and cheat mode and fix config overwrite.
This commit is contained in:
parent
3bee2d4c02
commit
052addbc05
@ -224,7 +224,7 @@ public final class CommandManager {
|
|||||||
try {
|
try {
|
||||||
dispatcher.call(Joiner.on(" ").join(split), locals, new String[0]);
|
dispatcher.call(Joiner.on(" ").join(split), locals, new String[0]);
|
||||||
} catch (CommandPermissionsException e) {
|
} catch (CommandPermissionsException e) {
|
||||||
actor.printError("You don't have permission to do this.");
|
actor.printError("You are not permitted to do that. Are you in the right mode?");
|
||||||
} catch (InvalidUsageException e) {
|
} catch (InvalidUsageException e) {
|
||||||
if (e.isFullHelpSuggested()) {
|
if (e.isFullHelpSuggested()) {
|
||||||
actor.printRaw(ColorCodeBuilder.asColorCodes(new CommandUsageBox(e.getCommand(), e.getCommandUsed("/", ""), locals)));
|
actor.printRaw(ColorCodeBuilder.asColorCodes(new CommandUsageBox(e.getCommand(), e.getCommandUsed("/", ""), locals)));
|
||||||
|
@ -79,6 +79,8 @@ public class PropertiesConfiguration extends LocalConfiguration {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
loadExtra();
|
||||||
|
|
||||||
profile = getBool("profile", profile);
|
profile = getBool("profile", profile);
|
||||||
disallowedBlocks = getIntSet("disallowed-blocks", defaultDisallowedBlocks);
|
disallowedBlocks = getIntSet("disallowed-blocks", defaultDisallowedBlocks);
|
||||||
defaultChangeLimit = getInt("default-max-changed-blocks", defaultChangeLimit);
|
defaultChangeLimit = getInt("default-max-changed-blocks", defaultChangeLimit);
|
||||||
@ -137,6 +139,12 @@ public class PropertiesConfiguration extends LocalConfiguration {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called to load extra configuration.
|
||||||
|
*/
|
||||||
|
protected void loadExtra() {
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a string value.
|
* Get a string value.
|
||||||
*
|
*
|
||||||
|
@ -25,10 +25,19 @@ import java.io.File;
|
|||||||
|
|
||||||
public class ForgeConfiguration extends PropertiesConfiguration {
|
public class ForgeConfiguration extends PropertiesConfiguration {
|
||||||
|
|
||||||
|
public boolean creativeEnable = false;
|
||||||
|
public boolean cheatMode = false;
|
||||||
|
|
||||||
public ForgeConfiguration(ForgeWorldEdit mod) {
|
public ForgeConfiguration(ForgeWorldEdit mod) {
|
||||||
super(new File(mod.getWorkingDir() + File.separator + "worldedit.properties"));
|
super(new File(mod.getWorkingDir() + File.separator + "worldedit.properties"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void loadExtra() {
|
||||||
|
creativeEnable = getBool("use-in-creative", false);
|
||||||
|
cheatMode = getBool("cheat-mode", false);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public File getWorkingDirectory() {
|
public File getWorkingDirectory() {
|
||||||
return ForgeWorldEdit.inst.getWorkingDir();
|
return ForgeWorldEdit.inst.getWorkingDir();
|
||||||
|
@ -19,7 +19,6 @@
|
|||||||
|
|
||||||
package com.sk89q.worldedit.forge;
|
package com.sk89q.worldedit.forge;
|
||||||
|
|
||||||
import com.sk89q.worldedit.LocalConfiguration;
|
|
||||||
import com.sk89q.worldedit.entity.Player;
|
import com.sk89q.worldedit.entity.Player;
|
||||||
import com.sk89q.worldedit.extension.platform.AbstractPlatform;
|
import com.sk89q.worldedit.extension.platform.AbstractPlatform;
|
||||||
import com.sk89q.worldedit.extension.platform.Actor;
|
import com.sk89q.worldedit.extension.platform.Actor;
|
||||||
@ -126,7 +125,7 @@ class ForgePlatform extends AbstractPlatform implements MultiUserPlatform {
|
|||||||
return player;
|
return player;
|
||||||
} else {
|
} else {
|
||||||
EntityPlayerMP entity = server.getConfigurationManager().func_152612_a(player.getName());
|
EntityPlayerMP entity = server.getConfigurationManager().func_152612_a(player.getName());
|
||||||
return entity != null ? new ForgePlayer(entity) : null;
|
return entity != null ? new ForgePlayer(this, entity) : null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -172,6 +171,16 @@ class ForgePlatform extends AbstractPlatform implements MultiUserPlatform {
|
|||||||
return "/" + command.getPrimaryAlias() + " " + description.getUsage();
|
return "/" + command.getPrimaryAlias() + " " + description.getUsage();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRequiredPermissionLevel() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canCommandSenderUseCommand(ICommandSender sender) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compareTo(@Nullable Object o) {
|
public int compareTo(@Nullable Object o) {
|
||||||
if (o == null) {
|
if (o == null) {
|
||||||
@ -193,7 +202,7 @@ class ForgePlatform extends AbstractPlatform implements MultiUserPlatform {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LocalConfiguration getConfiguration() {
|
public ForgeConfiguration getConfiguration() {
|
||||||
return mod.getConfig();
|
return mod.getConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -231,7 +240,7 @@ class ForgePlatform extends AbstractPlatform implements MultiUserPlatform {
|
|||||||
for (String name : scm.getAllUsernames()) {
|
for (String name : scm.getAllUsernames()) {
|
||||||
EntityPlayerMP entity = scm.func_152612_a(name);
|
EntityPlayerMP entity = scm.func_152612_a(name);
|
||||||
if (entity != null) {
|
if (entity != null) {
|
||||||
users.add(new ForgePlayer(entity));
|
users.add(new ForgePlayer(this, entity));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return users;
|
return users;
|
||||||
|
@ -42,9 +42,11 @@ import java.util.UUID;
|
|||||||
|
|
||||||
public class ForgePlayer extends AbstractPlayerActor {
|
public class ForgePlayer extends AbstractPlayerActor {
|
||||||
|
|
||||||
private EntityPlayerMP player;
|
private final ForgePlatform platform;
|
||||||
|
private final EntityPlayerMP player;
|
||||||
|
|
||||||
protected ForgePlayer(EntityPlayerMP player) {
|
protected ForgePlayer(ForgePlatform platform, EntityPlayerMP player) {
|
||||||
|
this.platform = platform;
|
||||||
this.player = player;
|
this.player = player;
|
||||||
ThreadSafeCache.getInstance().getOnlineIds().add(getUniqueId());
|
ThreadSafeCache.getInstance().getOnlineIds().add(getUniqueId());
|
||||||
}
|
}
|
||||||
@ -161,7 +163,7 @@ public class ForgePlayer extends AbstractPlayerActor {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasPermission(String perm) {
|
public boolean hasPermission(String perm) {
|
||||||
return ForgeUtil.hasPermission(this.player, perm);
|
return ForgeUtil.hasPermission(platform, this.player, perm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
|
@ -24,6 +24,7 @@ import cpw.mods.fml.common.FMLCommonHandler;
|
|||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.world.WorldSettings.GameType;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -32,9 +33,12 @@ public final class ForgeUtil {
|
|||||||
private ForgeUtil() {
|
private ForgeUtil() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean hasPermission(EntityPlayerMP player, String perm) {
|
public static boolean hasPermission(ForgePlatform platform, EntityPlayerMP player, String perm) {
|
||||||
// TODO fix WEPIF
|
// TODO fix WEPIF
|
||||||
return FMLCommonHandler.instance().getMinecraftServerInstance().getConfigurationManager().func_152596_g(player.getGameProfile());
|
ForgeConfiguration configuration = platform.getConfiguration();
|
||||||
|
return configuration.cheatMode ||
|
||||||
|
FMLCommonHandler.instance().getMinecraftServerInstance().getConfigurationManager().func_152596_g(player.getGameProfile()) ||
|
||||||
|
(configuration.creativeEnable && player.theItemInWorldManager.getGameType() == GameType.CREATIVE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ItemStack toForgeItemStack(BaseItemStack item) {
|
public static ItemStack toForgeItemStack(BaseItemStack item) {
|
||||||
|
@ -28,7 +28,6 @@ import com.sk89q.worldedit.WorldVector;
|
|||||||
import com.sk89q.worldedit.event.platform.PlatformReadyEvent;
|
import com.sk89q.worldedit.event.platform.PlatformReadyEvent;
|
||||||
import com.sk89q.worldedit.extension.platform.Platform;
|
import com.sk89q.worldedit.extension.platform.Platform;
|
||||||
import com.sk89q.worldedit.internal.LocalWorldAdapter;
|
import com.sk89q.worldedit.internal.LocalWorldAdapter;
|
||||||
|
|
||||||
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.Mod.EventHandler;
|
import cpw.mods.fml.common.Mod.EventHandler;
|
||||||
@ -46,14 +45,14 @@ import net.minecraft.world.World;
|
|||||||
import net.minecraftforge.common.MinecraftForge;
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
import net.minecraftforge.event.CommandEvent;
|
import net.minecraftforge.event.CommandEvent;
|
||||||
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
|
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
|
||||||
|
import org.apache.logging.log4j.Level;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import org.apache.logging.log4j.Level;
|
|
||||||
import org.apache.logging.log4j.Logger;
|
|
||||||
|
|
||||||
import static com.google.common.base.Preconditions.checkNotNull;
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
import static net.minecraftforge.event.entity.player.PlayerInteractEvent.Action;
|
import static net.minecraftforge.event.entity.player.PlayerInteractEvent.Action;
|
||||||
@ -81,9 +80,6 @@ public class ForgeWorldEdit {
|
|||||||
workingDir = new File(event.getModConfigurationDirectory() + File.separator + "worldedit");
|
workingDir = new File(event.getModConfigurationDirectory() + File.separator + "worldedit");
|
||||||
workingDir.mkdir();
|
workingDir.mkdir();
|
||||||
|
|
||||||
// Create default configuration
|
|
||||||
createDefaultConfiguration(event.getSourceFile(), "worldedit.properties");
|
|
||||||
|
|
||||||
config = new ForgeConfiguration(this);
|
config = new ForgeConfiguration(this);
|
||||||
config.load();
|
config.load();
|
||||||
|
|
||||||
@ -206,7 +202,7 @@ public class ForgeWorldEdit {
|
|||||||
*/
|
*/
|
||||||
public ForgePlayer wrap(EntityPlayerMP player) {
|
public ForgePlayer wrap(EntityPlayerMP player) {
|
||||||
checkNotNull(player);
|
checkNotNull(player);
|
||||||
return new ForgePlayer(player);
|
return new ForgePlayer(platform, player);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -249,39 +245,6 @@ public class ForgeWorldEdit {
|
|||||||
return this.workingDir;
|
return this.workingDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Create the default configuration.
|
|
||||||
*
|
|
||||||
* @param jar the jar
|
|
||||||
* @param name the name
|
|
||||||
*/
|
|
||||||
private void createDefaultConfiguration(File jar, String name) {
|
|
||||||
checkNotNull(jar);
|
|
||||||
checkNotNull(name);
|
|
||||||
|
|
||||||
String path = "/defaults/" + name;
|
|
||||||
File targetFile = new File(getWorkingDir(), name);
|
|
||||||
Closer closer = Closer.create();
|
|
||||||
|
|
||||||
try {
|
|
||||||
@Nullable InputStream inputStream = getClass().getResourceAsStream(path);
|
|
||||||
if (inputStream == null) {
|
|
||||||
throw new IOException("Failed to get resource '" + path + "' from .class");
|
|
||||||
}
|
|
||||||
closer.register(inputStream);
|
|
||||||
FileOutputStream outputStream = new FileOutputStream(targetFile);
|
|
||||||
ByteStreams.copy(inputStream, outputStream);
|
|
||||||
logger.info("Default configuration file written: " + name);
|
|
||||||
} catch (IOException e) {
|
|
||||||
logger.log(Level.WARN, "Failed to extract defaults", e);
|
|
||||||
} finally {
|
|
||||||
try {
|
|
||||||
closer.close();
|
|
||||||
} catch (IOException ignored) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the version of the WorldEdit-for-Forge implementation.
|
* Get the version of the WorldEdit-for-Forge implementation.
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user