geforkt von Mirrors/FastAsyncWorldEdit
Revert "Using trove collections for most internal stuff, using array access in BlockType and ItemType"
This reverts commit 410ac65c6a
.
This has been causing compatibility issues with Spout. I haven't been ble to reproduce, but until somebody figures out why, this gets to go
Dieser Commit ist enthalten in:
Ursprung
2aba54a30f
Commit
9830d9d326
10
pom.xml
10
pom.xml
@ -90,14 +90,6 @@
|
|||||||
<artifactId>spoutapi</artifactId>
|
<artifactId>spoutapi</artifactId>
|
||||||
<version>dev-SNAPSHOT</version>
|
<version>dev-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>net.sf.trove4j</groupId>
|
|
||||||
<artifactId>trove4j</artifactId>
|
|
||||||
<version>3.0.2</version>
|
|
||||||
<type>jar</type>
|
|
||||||
<scope>compile</scope>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
@ -181,10 +173,8 @@
|
|||||||
<!-- We want to bundle in the modified jchronic library -->
|
<!-- We want to bundle in the modified jchronic library -->
|
||||||
<includes>
|
<includes>
|
||||||
<include>com.sk89q:jchronic</include>
|
<include>com.sk89q:jchronic</include>
|
||||||
<include>net.sf.trove4j:trove4j</include>
|
|
||||||
</includes>
|
</includes>
|
||||||
</artifactSet>
|
</artifactSet>
|
||||||
<minimizeJar>true</minimizeJar>
|
|
||||||
</configuration>
|
</configuration>
|
||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
|
@ -39,8 +39,6 @@ import com.sk89q.worldedit.expression.ExpressionException;
|
|||||||
import com.sk89q.worldedit.expression.runtime.RValue;
|
import com.sk89q.worldedit.expression.runtime.RValue;
|
||||||
import com.sk89q.worldedit.masks.Mask;
|
import com.sk89q.worldedit.masks.Mask;
|
||||||
import com.sk89q.worldedit.patterns.*;
|
import com.sk89q.worldedit.patterns.*;
|
||||||
import gnu.trove.set.TIntSet;
|
|
||||||
import gnu.trove.set.hash.TIntHashSet;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class can wrap all block editing operations into one "edit session" that
|
* This class can wrap all block editing operations into one "edit session" that
|
||||||
@ -120,7 +118,7 @@ public class EditSession {
|
|||||||
/**
|
/**
|
||||||
* List of missing blocks;
|
* List of missing blocks;
|
||||||
*/
|
*/
|
||||||
private TIntSet missingBlocks = new TIntHashSet();
|
private Set<Integer> missingBlocks = new HashSet<Integer>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mask to cover operations.
|
* Mask to cover operations.
|
||||||
@ -662,9 +660,9 @@ public class EditSession {
|
|||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public TIntSet popMissingBlocks() {
|
public Set<Integer> popMissingBlocks() {
|
||||||
TIntSet missingBlocks = this.missingBlocks;
|
Set<Integer> missingBlocks = this.missingBlocks;
|
||||||
this.missingBlocks = new TIntHashSet();
|
this.missingBlocks = new HashSet<Integer>();
|
||||||
return missingBlocks;
|
return missingBlocks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,7 +49,6 @@ import com.sk89q.worldedit.scripting.*;
|
|||||||
import com.sk89q.worldedit.tools.*;
|
import com.sk89q.worldedit.tools.*;
|
||||||
import com.sk89q.worldedit.masks.*;
|
import com.sk89q.worldedit.masks.*;
|
||||||
import com.sk89q.worldedit.patterns.*;
|
import com.sk89q.worldedit.patterns.*;
|
||||||
import gnu.trove.set.TIntSet;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is the main entry point for WorldEdit. All events are routed
|
* This class is the main entry point for WorldEdit. All events are routed
|
||||||
@ -975,7 +974,7 @@ public class WorldEdit {
|
|||||||
blockBag.flushChanges();
|
blockBag.flushChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
TIntSet missingBlocks = editSession.popMissingBlocks();
|
Set<Integer> missingBlocks = editSession.popMissingBlocks();
|
||||||
|
|
||||||
if (missingBlocks.size() > 0) {
|
if (missingBlocks.size() > 0) {
|
||||||
StringBuilder str = new StringBuilder();
|
StringBuilder str = new StringBuilder();
|
||||||
@ -983,12 +982,12 @@ public class WorldEdit {
|
|||||||
int size = missingBlocks.size();
|
int size = missingBlocks.size();
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
for (int id : missingBlocks.toArray()) {
|
for (Integer id : missingBlocks) {
|
||||||
BlockType type = BlockType.fromID(id);
|
BlockType type = BlockType.fromID(id);
|
||||||
|
|
||||||
str.append(type != null
|
str.append(type != null
|
||||||
? type.getName() + " (" + id + ")"
|
? type.getName() + " (" + id + ")"
|
||||||
: id);
|
: id.toString());
|
||||||
|
|
||||||
++i;
|
++i;
|
||||||
|
|
||||||
|
@ -19,8 +19,8 @@
|
|||||||
|
|
||||||
package com.sk89q.worldedit.blocks;
|
package com.sk89q.worldedit.blocks;
|
||||||
|
|
||||||
import gnu.trove.map.TIntIntMap;
|
import java.util.HashMap;
|
||||||
import gnu.trove.map.hash.TIntIntHashMap;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents an item.
|
* Represents an item.
|
||||||
@ -37,7 +37,7 @@ public class BaseItem {
|
|||||||
*/
|
*/
|
||||||
private short damage;
|
private short damage;
|
||||||
|
|
||||||
private TIntIntMap enchantments = new TIntIntHashMap();
|
private Map<Integer, Integer> enchantments = new HashMap<Integer, Integer>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct the object.
|
* Construct the object.
|
||||||
@ -88,7 +88,7 @@ public class BaseItem {
|
|||||||
this.damage = damage;
|
this.damage = damage;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TIntIntMap getEnchantments() {
|
public Map<Integer, Integer> getEnchantments() {
|
||||||
return enchantments;
|
return enchantments;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,15 +19,13 @@
|
|||||||
|
|
||||||
package com.sk89q.worldedit.blocks;
|
package com.sk89q.worldedit.blocks;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.HashSet;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import gnu.trove.map.TIntObjectMap;
|
import java.util.Set;
|
||||||
import gnu.trove.map.hash.TIntObjectHashMap;
|
|
||||||
import gnu.trove.set.TIntSet;
|
|
||||||
import gnu.trove.set.hash.TIntHashSet;
|
|
||||||
|
|
||||||
import com.sk89q.util.StringUtil;
|
import com.sk89q.util.StringUtil;
|
||||||
import com.sk89q.worldedit.PlayerDirection;
|
import com.sk89q.worldedit.PlayerDirection;
|
||||||
@ -165,7 +163,7 @@ public enum BlockType {
|
|||||||
/**
|
/**
|
||||||
* Stores a map of the IDs for fast access.
|
* Stores a map of the IDs for fast access.
|
||||||
*/
|
*/
|
||||||
private static BlockType[] ids = new BlockType[256];
|
private static final Map<Integer, BlockType> ids = new HashMap<Integer, BlockType>();
|
||||||
/**
|
/**
|
||||||
* Stores a map of the names for fast access.
|
* Stores a map of the names for fast access.
|
||||||
*/
|
*/
|
||||||
@ -176,13 +174,8 @@ public enum BlockType {
|
|||||||
private final String[] lookupKeys;
|
private final String[] lookupKeys;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
for (BlockType type : values()) {
|
for (BlockType type : EnumSet.allOf(BlockType.class)) {
|
||||||
if (ids.length > type.id) {
|
ids.put(type.id, type);
|
||||||
ids[type.id] = type;
|
|
||||||
} else {
|
|
||||||
ids = Arrays.copyOf(ids, type.id + 10);
|
|
||||||
ids[type.id] = type;
|
|
||||||
}
|
|
||||||
for (String key : type.lookupKeys) {
|
for (String key : type.lookupKeys) {
|
||||||
lookup.put(key, type);
|
lookup.put(key, type);
|
||||||
}
|
}
|
||||||
@ -221,11 +214,7 @@ public enum BlockType {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static BlockType fromID(int id) {
|
public static BlockType fromID(int id) {
|
||||||
if (id < 0 || id >= ids.length) {
|
return ids.get(id);
|
||||||
return null;
|
|
||||||
} else {
|
|
||||||
return ids[id];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -298,7 +287,7 @@ public enum BlockType {
|
|||||||
/**
|
/**
|
||||||
* HashSet for shouldPlaceLast.
|
* HashSet for shouldPlaceLast.
|
||||||
*/
|
*/
|
||||||
private static final TIntSet shouldPlaceLast = new TIntHashSet();
|
private static final Set<Integer> shouldPlaceLast = new HashSet<Integer>();
|
||||||
static {
|
static {
|
||||||
shouldPlaceLast.add(BlockID.SAPLING);
|
shouldPlaceLast.add(BlockID.SAPLING);
|
||||||
shouldPlaceLast.add(BlockID.BED);
|
shouldPlaceLast.add(BlockID.BED);
|
||||||
@ -359,7 +348,7 @@ public enum BlockType {
|
|||||||
/**
|
/**
|
||||||
* HashSet for shouldPlaceLast.
|
* HashSet for shouldPlaceLast.
|
||||||
*/
|
*/
|
||||||
private static final TIntSet shouldPlaceFinal = new TIntHashSet();
|
private static final Set<Integer> shouldPlaceFinal = new HashSet<Integer>();
|
||||||
static {
|
static {
|
||||||
shouldPlaceFinal.add(BlockID.SIGN_POST);
|
shouldPlaceFinal.add(BlockID.SIGN_POST);
|
||||||
shouldPlaceFinal.add(BlockID.WOODEN_DOOR);
|
shouldPlaceFinal.add(BlockID.WOODEN_DOOR);
|
||||||
@ -387,7 +376,7 @@ public enum BlockType {
|
|||||||
/**
|
/**
|
||||||
* HashSet for canPassThrough.
|
* HashSet for canPassThrough.
|
||||||
*/
|
*/
|
||||||
private static final TIntSet canPassThrough = new TIntHashSet();
|
private static final Set<Integer> canPassThrough = new HashSet<Integer>();
|
||||||
static {
|
static {
|
||||||
canPassThrough.add(BlockID.AIR);
|
canPassThrough.add(BlockID.AIR);
|
||||||
canPassThrough.add(BlockID.WATER);
|
canPassThrough.add(BlockID.WATER);
|
||||||
@ -451,7 +440,7 @@ public enum BlockType {
|
|||||||
/**
|
/**
|
||||||
* HashSet for usesData.
|
* HashSet for usesData.
|
||||||
*/
|
*/
|
||||||
private static final TIntSet usesData = new TIntHashSet();
|
private static final Set<Integer> usesData = new HashSet<Integer>();
|
||||||
static {
|
static {
|
||||||
usesData.add(BlockID.SAPLING);
|
usesData.add(BlockID.SAPLING);
|
||||||
usesData.add(BlockID.WATER);
|
usesData.add(BlockID.WATER);
|
||||||
@ -543,7 +532,7 @@ public enum BlockType {
|
|||||||
/**
|
/**
|
||||||
* HashSet for isContainerBlock.
|
* HashSet for isContainerBlock.
|
||||||
*/
|
*/
|
||||||
private static final TIntSet isContainerBlock = new TIntHashSet();
|
private static final Set<Integer> isContainerBlock = new HashSet<Integer>();
|
||||||
static {
|
static {
|
||||||
isContainerBlock.add(BlockID.DISPENSER);
|
isContainerBlock.add(BlockID.DISPENSER);
|
||||||
isContainerBlock.add(BlockID.FURNACE);
|
isContainerBlock.add(BlockID.FURNACE);
|
||||||
@ -574,7 +563,7 @@ public enum BlockType {
|
|||||||
/**
|
/**
|
||||||
* HashSet for isRedstoneBlock.
|
* HashSet for isRedstoneBlock.
|
||||||
*/
|
*/
|
||||||
private static final TIntSet isRedstoneBlock = new TIntHashSet();
|
private static final Set<Integer> isRedstoneBlock = new HashSet<Integer>();
|
||||||
static {
|
static {
|
||||||
isRedstoneBlock.add(BlockID.POWERED_RAIL);
|
isRedstoneBlock.add(BlockID.POWERED_RAIL);
|
||||||
isRedstoneBlock.add(BlockID.DETECTOR_RAIL);
|
isRedstoneBlock.add(BlockID.DETECTOR_RAIL);
|
||||||
@ -618,7 +607,7 @@ public enum BlockType {
|
|||||||
/**
|
/**
|
||||||
* HashSet for canTransferRedstone.
|
* HashSet for canTransferRedstone.
|
||||||
*/
|
*/
|
||||||
private static final TIntSet canTransferRedstone = new TIntHashSet();
|
private static final Set<Integer> canTransferRedstone = new HashSet<Integer>();
|
||||||
static {
|
static {
|
||||||
canTransferRedstone.add(BlockID.REDSTONE_TORCH_OFF);
|
canTransferRedstone.add(BlockID.REDSTONE_TORCH_OFF);
|
||||||
canTransferRedstone.add(BlockID.REDSTONE_TORCH_ON);
|
canTransferRedstone.add(BlockID.REDSTONE_TORCH_ON);
|
||||||
@ -651,7 +640,7 @@ public enum BlockType {
|
|||||||
/**
|
/**
|
||||||
* HashSet for isRedstoneSource.
|
* HashSet for isRedstoneSource.
|
||||||
*/
|
*/
|
||||||
private static final TIntSet isRedstoneSource = new TIntHashSet();
|
private static final Set<Integer> isRedstoneSource = new HashSet<Integer>();
|
||||||
static {
|
static {
|
||||||
isRedstoneSource.add(BlockID.DETECTOR_RAIL);
|
isRedstoneSource.add(BlockID.DETECTOR_RAIL);
|
||||||
isRedstoneSource.add(BlockID.REDSTONE_TORCH_OFF);
|
isRedstoneSource.add(BlockID.REDSTONE_TORCH_OFF);
|
||||||
@ -684,7 +673,7 @@ public enum BlockType {
|
|||||||
/**
|
/**
|
||||||
* HashSet for isRailBlock.
|
* HashSet for isRailBlock.
|
||||||
*/
|
*/
|
||||||
private static final TIntSet isRailBlock = new TIntHashSet();
|
private static final Set<Integer> isRailBlock = new HashSet<Integer>();
|
||||||
static {
|
static {
|
||||||
isRailBlock.add(BlockID.POWERED_RAIL);
|
isRailBlock.add(BlockID.POWERED_RAIL);
|
||||||
isRailBlock.add(BlockID.DETECTOR_RAIL);
|
isRailBlock.add(BlockID.DETECTOR_RAIL);
|
||||||
@ -713,7 +702,7 @@ public enum BlockType {
|
|||||||
/**
|
/**
|
||||||
* HashSet for isNaturalBlock.
|
* HashSet for isNaturalBlock.
|
||||||
*/
|
*/
|
||||||
private static final TIntSet isNaturalTerrainBlock = new TIntHashSet();
|
private static final Set<Integer> isNaturalTerrainBlock = new HashSet<Integer>();
|
||||||
static {
|
static {
|
||||||
isNaturalTerrainBlock.add(BlockID.STONE);
|
isNaturalTerrainBlock.add(BlockID.STONE);
|
||||||
isNaturalTerrainBlock.add(BlockID.GRASS);
|
isNaturalTerrainBlock.add(BlockID.GRASS);
|
||||||
@ -762,7 +751,7 @@ public enum BlockType {
|
|||||||
/**
|
/**
|
||||||
* HashSet for emitsLight.
|
* HashSet for emitsLight.
|
||||||
*/
|
*/
|
||||||
private static final TIntSet emitsLight = new TIntHashSet();
|
private static final Set<Integer> emitsLight = new HashSet<Integer>();
|
||||||
static {
|
static {
|
||||||
emitsLight.add(BlockID.LAVA);
|
emitsLight.add(BlockID.LAVA);
|
||||||
emitsLight.add(BlockID.STATIONARY_LAVA);
|
emitsLight.add(BlockID.STATIONARY_LAVA);
|
||||||
@ -796,7 +785,7 @@ public enum BlockType {
|
|||||||
/**
|
/**
|
||||||
* HashSet for isTranslucent.
|
* HashSet for isTranslucent.
|
||||||
*/
|
*/
|
||||||
private static final TIntSet isTranslucent = new TIntHashSet();
|
private static final Set<Integer> isTranslucent = new HashSet<Integer>();
|
||||||
static {
|
static {
|
||||||
isTranslucent.add(BlockID.AIR);
|
isTranslucent.add(BlockID.AIR);
|
||||||
isTranslucent.add(BlockID.SAPLING);
|
isTranslucent.add(BlockID.SAPLING);
|
||||||
@ -1255,8 +1244,8 @@ public enum BlockType {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final TIntObjectMap<PlayerDirection> dataAttachments = new TIntObjectHashMap<PlayerDirection>();
|
private static final Map<Integer, PlayerDirection> dataAttachments = new HashMap<Integer, PlayerDirection>();
|
||||||
private static final TIntObjectMap<PlayerDirection> nonDataAttachments = new TIntObjectHashMap<PlayerDirection>();
|
private static final Map<Integer, PlayerDirection> nonDataAttachments = new HashMap<Integer, PlayerDirection>();
|
||||||
static {
|
static {
|
||||||
nonDataAttachments.put(BlockID.SAPLING, PlayerDirection.DOWN);
|
nonDataAttachments.put(BlockID.SAPLING, PlayerDirection.DOWN);
|
||||||
nonDataAttachments.put(BlockID.POWERED_RAIL, PlayerDirection.DOWN);
|
nonDataAttachments.put(BlockID.POWERED_RAIL, PlayerDirection.DOWN);
|
||||||
|
@ -19,14 +19,15 @@
|
|||||||
|
|
||||||
package com.sk89q.worldedit.blocks;
|
package com.sk89q.worldedit.blocks;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.HashSet;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import com.sk89q.util.StringUtil;
|
import com.sk89q.util.StringUtil;
|
||||||
import gnu.trove.set.TIntSet;
|
|
||||||
import gnu.trove.set.hash.TIntHashSet;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ItemType types.
|
* ItemType types.
|
||||||
@ -307,7 +308,7 @@ public enum ItemType {
|
|||||||
/**
|
/**
|
||||||
* Stores a map of the IDs for fast access.
|
* Stores a map of the IDs for fast access.
|
||||||
*/
|
*/
|
||||||
private static ItemType[] ids = new ItemType[3200];
|
private static final Map<Integer, ItemType> ids = new HashMap<Integer, ItemType>();
|
||||||
/**
|
/**
|
||||||
* Stores a map of the names for fast access.
|
* Stores a map of the names for fast access.
|
||||||
*/
|
*/
|
||||||
@ -318,13 +319,8 @@ public enum ItemType {
|
|||||||
private final String[] lookupKeys;
|
private final String[] lookupKeys;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
for (ItemType type : values()) {
|
for (ItemType type : EnumSet.allOf(ItemType.class)) {
|
||||||
if (ids.length > type.id) {
|
ids.put(type.id, type);
|
||||||
ids[type.id] = type;
|
|
||||||
} else {
|
|
||||||
ids = Arrays.copyOf(ids, type.id + 10);
|
|
||||||
ids[type.id] = type;
|
|
||||||
}
|
|
||||||
for (String key : type.lookupKeys) {
|
for (String key : type.lookupKeys) {
|
||||||
lookup.put(key, type);
|
lookup.put(key, type);
|
||||||
}
|
}
|
||||||
@ -363,11 +359,7 @@ public enum ItemType {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static ItemType fromID(int id) {
|
public static ItemType fromID(int id) {
|
||||||
if (id < 0 || id >= ids.length) {
|
return ids.get(id);
|
||||||
return null;
|
|
||||||
} else {
|
|
||||||
return ids[id];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -377,7 +369,7 @@ public enum ItemType {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static String toName(int id) {
|
public static String toName(int id) {
|
||||||
ItemType type = fromID(id);
|
ItemType type = ids.get(id);
|
||||||
if (type != null) {
|
if (type != null) {
|
||||||
return type.getName();
|
return type.getName();
|
||||||
} else {
|
} else {
|
||||||
@ -395,7 +387,7 @@ public enum ItemType {
|
|||||||
if (id == 0) {
|
if (id == 0) {
|
||||||
return "Hand";
|
return "Hand";
|
||||||
}
|
}
|
||||||
ItemType type = fromID(id);
|
ItemType type = ids.get(id);
|
||||||
if (type != null) {
|
if (type != null) {
|
||||||
return type.getName();
|
return type.getName();
|
||||||
} else {
|
} else {
|
||||||
@ -478,7 +470,7 @@ public enum ItemType {
|
|||||||
return lookupKeys;
|
return lookupKeys;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final TIntSet shouldNotStack = new TIntHashSet();
|
private static final Set<Integer> shouldNotStack = new HashSet<Integer>();
|
||||||
static {
|
static {
|
||||||
shouldNotStack.add(ItemID.IRON_SHOVEL);
|
shouldNotStack.add(ItemID.IRON_SHOVEL);
|
||||||
shouldNotStack.add(ItemID.IRON_PICK);
|
shouldNotStack.add(ItemID.IRON_PICK);
|
||||||
@ -568,7 +560,7 @@ public enum ItemType {
|
|||||||
return shouldNotStack.contains(id);
|
return shouldNotStack.contains(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final TIntSet usesDamageValue = new TIntHashSet();
|
private static final Set<Integer> usesDamageValue = new HashSet<Integer>();
|
||||||
static {
|
static {
|
||||||
usesDamageValue.add(BlockID.SAPLING);
|
usesDamageValue.add(BlockID.SAPLING);
|
||||||
//usesDamageValue.add(BlockID.WATER);
|
//usesDamageValue.add(BlockID.WATER);
|
||||||
|
@ -22,7 +22,6 @@ package com.sk89q.worldedit.bukkit;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import gnu.trove.procedure.TIntIntProcedure;
|
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.BlockState;
|
import org.bukkit.block.BlockState;
|
||||||
import org.bukkit.block.Furnace;
|
import org.bukkit.block.Furnace;
|
||||||
@ -684,20 +683,13 @@ public class BukkitWorld extends LocalWorld {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (contents[i] != null) {
|
if (contents[i] != null) {
|
||||||
final ItemStack toAdd = new ItemStack(contents[i].getType(),
|
ItemStack toAdd = new ItemStack(contents[i].getType(),
|
||||||
contents[i].getAmount(),
|
contents[i].getAmount(),
|
||||||
contents[i].getDamage());
|
contents[i].getDamage());
|
||||||
try {
|
try {
|
||||||
contents[i].getEnchantments().forEachEntry(new TIntIntProcedure() {
|
for (Map.Entry<Integer, Integer> entry : contents[i].getEnchantments().entrySet()) {
|
||||||
@Override
|
toAdd.addEnchantment(Enchantment.getById(entry.getKey()), entry.getValue());
|
||||||
public boolean execute(int key, int value) {
|
}
|
||||||
Enchantment ench = Enchantment.getById(key);
|
|
||||||
if (ench != null) {
|
|
||||||
toAdd.addEnchantment(ench, value);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} catch (Throwable ignore) {}
|
} catch (Throwable ignore) {}
|
||||||
inven.setItem(i, toAdd);
|
inven.setItem(i, toAdd);
|
||||||
} else {
|
} else {
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren