1
0
mirror of https://github.com/essentials/Essentials.git synced 2025-08-15 02:59:06 +02:00

[trunk] Renamed infinite to unlimited

Please change your permissions and config if you have used this.

New Command: /unlimited [item] <player>
Allows a player to enable unlimited placing for one item. Can be used on other players.
The permission essentials.unlimited.placing still enables it for all items.

git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1108 e251c2fe-e539-e718-e476-b85c1f46cddb
This commit is contained in:
snowleo
2011-04-03 20:21:20 +00:00
parent 9eec83bfb3
commit 6f14379740
6 changed files with 151 additions and 65 deletions

View File

@@ -165,47 +165,48 @@ public class EssentialsBlockListener extends BlockListener
return; return;
} }
} }
if (Essentials.getSettings().isInfinitePlacingEnabled()) { if (Essentials.getSettings().isUnlimitedPlacingEnabled()) {
final User user = User.get(event.getPlayer()); final User user = User.get(event.getPlayer());
if (user.isAuthorized("essentials.infinite.placing")) { final ItemStack is = event.getItemInHand();
final ItemStack is = event.getItemInHand(); if (is.getType() == Material.AIR) {
if (is.getType() == Material.AIR) { is.setType(event.getBlockPlaced().getType());
is.setType(event.getBlockPlaced().getType()); }
} switch(is.getType()) {
switch(is.getType()) { case WOODEN_DOOR:
case WOODEN_DOOR: is.setType(Material.WOOD_DOOR);
is.setType(Material.WOOD_DOOR); break;
break; case IRON_DOOR_BLOCK:
case IRON_DOOR_BLOCK: is.setType(Material.IRON_DOOR);
is.setType(Material.IRON_DOOR); break;
break; case SIGN_POST:
case SIGN_POST: case WALL_SIGN:
case WALL_SIGN: is.setType(Material.SIGN);
is.setType(Material.SIGN); break;
break; case CROPS:
case CROPS: is.setType(Material.SEEDS);
is.setType(Material.SEEDS); break;
break; case CAKE_BLOCK:
case CAKE_BLOCK: is.setType(Material.CAKE);
is.setType(Material.CAKE); break;
break; case BED_BLOCK:
case BED_BLOCK: is.setType(Material.BED);
is.setType(Material.BED); break;
break; case REDSTONE_WIRE:
case REDSTONE_WIRE: is.setType(Material.REDSTONE);
is.setType(Material.REDSTONE); break;
break; case REDSTONE_TORCH_OFF:
case REDSTONE_TORCH_OFF: is.setType(Material.REDSTONE_TORCH_ON);
is.setType(Material.REDSTONE_TORCH_ON); break;
break; case DIODE_BLOCK_OFF:
case DIODE_BLOCK_OFF: case DIODE_BLOCK_ON:
case DIODE_BLOCK_ON: is.setType(Material.DIODE);
is.setType(Material.DIODE); break;
break; }
} boolean unlimitedForUser = user.hasUnlimited(is);
List<Integer> whitelist = Essentials.getSettings().getInfiniteWhitelist(); if (user.isAuthorized("essentials.unlimited.placing") || unlimitedForUser) {
List<Integer> whitelist = Essentials.getSettings().getUnlimitedWhitelist();
if (whitelist.isEmpty() || whitelist.contains(is.getTypeId()) || if (whitelist.isEmpty() || whitelist.contains(is.getTypeId()) ||
user.isAuthorized("essentials.infinite.whitelist.override")) { user.isAuthorized("essentials.unlimited.whitelist.override") || unlimitedForUser) {
is.setAmount(1); is.setAmount(1);
Essentials.getStatic().getScheduler().scheduleSyncDelayedTask(Essentials.getStatic(), Essentials.getStatic().getScheduler().scheduleSyncDelayedTask(Essentials.getStatic(),
new Runnable() { new Runnable() {

View File

@@ -397,10 +397,11 @@ public class EssentialsPlayerListener extends PlayerListener
@Override @Override
public void onPlayerEggThrow(PlayerEggThrowEvent event) { public void onPlayerEggThrow(PlayerEggThrowEvent event) {
if (Essentials.getSettings().isInfiniteEggThrowEnabled()) { if (Essentials.getSettings().isUnlimitedEggThrowEnabled()) {
User user = User.get(event.getPlayer()); User user = User.get(event.getPlayer());
if (user.isAuthorized("essentials.infinite.eggthrow")) { ItemStack is = new ItemStack(Material.EGG, 1);
user.getInventory().addItem(new ItemStack(Material.EGG, 1)); if (user.isAuthorized("essentials.unlimited.eggthrow") || user.hasUnlimited(is)) {
user.getInventory().addItem(is);
user.updateInventory(); user.updateInventory();
} }
} }
@@ -408,12 +409,14 @@ public class EssentialsPlayerListener extends PlayerListener
@Override @Override
public void onPlayerBucketEmpty(PlayerBucketEmptyEvent event) { public void onPlayerBucketEmpty(PlayerBucketEmptyEvent event) {
if (Essentials.getSettings().isInfiniteBucketsEnabled()) { if (Essentials.getSettings().isUnlimitedBucketsEnabled()) {
final User user = User.get(event.getPlayer()); final User user = User.get(event.getPlayer());
if (user.isAuthorized("essentials.infinite.buckets")) { boolean unlimitedForUser = user.hasUnlimited(new ItemStack(event.getBucket()));
List<Integer> whitelist = Essentials.getSettings().getInfiniteWhitelist(); if (user.isAuthorized("essentials.unlimited.buckets") || unlimitedForUser) {
List<Integer> whitelist = Essentials.getSettings().getUnlimitedWhitelist();
if (whitelist.isEmpty() || whitelist.contains(event.getBucket().getId()) || if (whitelist.isEmpty() || whitelist.contains(event.getBucket().getId()) ||
user.isAuthorized("essentials.infinite.whitelist.override")) { user.isAuthorized("essentials.unlimited.whitelist.override") ||
unlimitedForUser) {
event.getItemStack().setType(event.getBucket()); event.getItemStack().setType(event.getBucket());
Essentials.getStatic().getScheduler().scheduleSyncDelayedTask(Essentials.getStatic(), Essentials.getStatic().getScheduler().scheduleSyncDelayedTask(Essentials.getStatic(),
new Runnable() { new Runnable() {

View File

@@ -434,22 +434,22 @@ public class Settings implements IConf
return epBreakList; return epBreakList;
} }
boolean isInfinitePlacingEnabled() { boolean isUnlimitedPlacingEnabled() {
return config.getBoolean("infinite.placing",false); return config.getBoolean("unlimited.placing",false);
} }
boolean isInfiniteEggThrowEnabled() { boolean isUnlimitedEggThrowEnabled() {
return config.getBoolean("infinite.eggthrow",false); return config.getBoolean("unlimited.eggthrow",false);
} }
boolean isInfiniteBucketsEnabled() { boolean isUnlimitedBucketsEnabled() {
return config.getBoolean("infinite.buckets",false); return config.getBoolean("unlimited.buckets",false);
} }
public ArrayList<Integer> getInfiniteWhitelist() public ArrayList<Integer> getUnlimitedWhitelist()
{ {
ArrayList<Integer> infiniteWhitelist = new ArrayList<Integer>(); ArrayList<Integer> unlimitedWhitelist = new ArrayList<Integer>();
for (String itemName : config.getString("infinite.whitelist", "").split(",")) { for (String itemName : config.getString("unlimited.whitelist", "").split(",")) {
itemName = itemName.trim(); itemName = itemName.trim();
if (itemName.isEmpty()) { if (itemName.isEmpty()) {
continue; continue;
@@ -457,11 +457,11 @@ public class Settings implements IConf
ItemStack is; ItemStack is;
try { try {
is = ItemDb.get(itemName); is = ItemDb.get(itemName);
infiniteWhitelist.add(is.getTypeId()); unlimitedWhitelist.add(is.getTypeId());
} catch (Exception ex) { } catch (Exception ex) {
logger.log(Level.SEVERE, "Unknown item " + itemName + " in infinite whitelist."); logger.log(Level.SEVERE, "Unknown item " + itemName + " in unlimited whitelist.");
} }
} }
return infiniteWhitelist; return unlimitedWhitelist;
} }
} }

View File

@@ -8,6 +8,7 @@ import com.earth2me.essentials.commands.IEssentialsCommand;
import net.minecraft.server.EntityHuman; import net.minecraft.server.EntityHuman;
import org.bukkit.craftbukkit.inventory.CraftItemStack; import org.bukkit.craftbukkit.inventory.CraftItemStack;
import org.bukkit.entity.*; import org.bukkit.entity.*;
import org.bukkit.inventory.ItemStack;
import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.SafeConstructor; import org.yaml.snakeyaml.constructor.SafeConstructor;
import org.yaml.snakeyaml.reader.UnicodeReader; import org.yaml.snakeyaml.reader.UnicodeReader;
@@ -696,4 +697,27 @@ public class User extends PlayerExtension implements Comparable<User>
{ {
return !Essentials.getSettings().itemSpawnBlacklist().contains(itemId); return !Essentials.getSettings().itemSpawnBlacklist().contains(itemId);
} }
public boolean hasUnlimited(ItemStack stack) {
if (!data.containsKey("unlimited")) {
return false;
}
@SuppressWarnings("unchecked")
List<Integer> items = (List<Integer>)data.get("unlimited");
return items.contains(stack.getTypeId());
}
@SuppressWarnings("unchecked")
public void setUnlimited(ItemStack stack, boolean b) {
List<Integer> items = new ArrayList<Integer>();
if (data.containsKey("unlimited")) {
items = (List<Integer>)data.get("unlimited");
}
items.remove(stack.getTypeId());
if (b) {
items.add(stack.getTypeId());
}
data.put("unlimited", items);
flush();
}
} }

View File

@@ -0,0 +1,58 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.Essentials;
import com.earth2me.essentials.ItemDb;
import com.earth2me.essentials.User;
import org.bukkit.ChatColor;
import org.bukkit.Server;
import org.bukkit.inventory.ItemStack;
public class Commandunlimited extends EssentialsCommand
{
public Commandunlimited()
{
super("unlimited");
}
@Override
public void run(Server server, Essentials parent, User user, String commandLabel, String[] args) throws Exception
{
if (args.length < 1)
{
user.sendMessage("§cUsage: /" + commandLabel + " [item] <player>");
return;
}
ItemStack stack = ItemDb.get(args[0]);
if(!user.isAuthorized("essentials.infinite.whitelist.override") &&
Essentials.getSettings().getUnlimitedWhitelist().contains(stack.getTypeId()))
{
user.sendMessage(ChatColor.RED + "You are not allowed to spawn that item");
return;
}
User target = user;
if (args.length > 1 && user.isAuthorized("essentials.unlimited.others")) {
target = getPlayer(server, args, 1);
}
String itemName = stack.getType().name().toLowerCase().replace('_', ' ');
if (target.hasUnlimited(stack)) {
if (user != target) {
user.sendMessage("§7Disable unlimited placing of " + itemName + " for " + user.getDisplayName() + ".");
}
target.sendMessage("§7Disable unlimited placing of " + itemName + " for " + user.getDisplayName() + ".");
target.setUnlimited(stack, false);
return;
}
user.charge(this);
if (user != target) {
user.sendMessage("§7Giving unlimited amount of " + itemName + " to " + user.getDisplayName() + ".");
}
target.sendMessage("§7Giving unlimited amount of " + itemName + " to " + user.getDisplayName() + ".");
target.getInventory().addItem(stack);
target.setUnlimited(stack, true);
}
}

View File

@@ -155,16 +155,16 @@ per-warp-permission: false
# Sort output of /list command by groups # Sort output of /list command by groups
sort-list-by-groups: false sort-list-by-groups: false
# Infinite placement of blocks, throwing of eggs, using of buckets # Unlimited placement of blocks, throwing of eggs, using of buckets
infinite: unlimited:
# Players need also permission essentials.infinite.placing # Players need also permission essentials.unlimited.placing
placing: false placing: false
# permission essentials.infinite.eggthrow # permission essentials.unlimited.eggthrow
eggthrow: false eggthrow: false
# permission essentials.infinite.buckets # permission essentials.unlimited.buckets
buckets: false buckets: false
# Use this whitelist to restrict the use of infinite placing and buckets # Use this whitelist to restrict the use of unlimited placing and buckets
# Permission essentials.infinite.whitelist.override let players ignore this list # Permission essentials.unlimited.whitelist.override let players ignore this list
whitelist: whitelist:
# example: (You can use ids or names from items.csv) # example: (You can use ids or names from items.csv)
# whitelist: cobblestone, dirt, waterbucket # whitelist: cobblestone, dirt, waterbucket