Added support for pre-1.13 MC, adjusted list of transparency blocks
parent
9fa505a079
commit
972286af6c
|
@ -18,6 +18,8 @@ import java.util.Set;
|
|||
public interface INmsManager {
|
||||
ConfigDefaults getConfigDefaults();
|
||||
|
||||
Material[] getExtraTransparentBlocks();
|
||||
|
||||
void setMaxLoadedCacheFiles(int value);
|
||||
|
||||
INBT createNBT();
|
||||
|
@ -52,7 +54,5 @@ public interface INmsManager {
|
|||
|
||||
Set<Integer> getMaterialIds(Material material);
|
||||
|
||||
int getTypeId(int combinedBlockId);
|
||||
|
||||
boolean sendBlockChange(Player player, Location blockLocation);
|
||||
}
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
<groupId>com.lishid</groupId>
|
||||
<artifactId>orebfuscator</artifactId>
|
||||
<version>4.4.0-SNAPSHOT</version>
|
||||
<version>4.4.1-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>Orebfuscator4</name>
|
||||
|
|
|
@ -9,7 +9,6 @@ import java.io.IOException;
|
|||
import java.util.Arrays;
|
||||
|
||||
import com.lishid.orebfuscator.NmsInstance;
|
||||
import com.lishid.orebfuscator.utils.MaterialHelper;
|
||||
|
||||
public class ChunkMapManager {
|
||||
private static final ThreadLocal<ChunkMapBuffer> _buffer = new ThreadLocal<ChunkMapBuffer>() {
|
||||
|
|
|
@ -343,7 +343,8 @@ public class OrebfuscatorCommandExecutor {
|
|||
private static void commandTransparentBlocks(CommandSender sender, String[] args) {
|
||||
Material[] materials = Material.values();
|
||||
|
||||
List<String> blockNames = new ArrayList<>();
|
||||
List<String> transparentBlockNames = new ArrayList<>();
|
||||
List<String> nonTransparentBlockNames = new ArrayList<>();
|
||||
|
||||
for (Material material : materials) {
|
||||
if(material.isBlock()) {
|
||||
|
@ -351,17 +352,26 @@ public class OrebfuscatorCommandExecutor {
|
|||
boolean isTransparent = Orebfuscator.config.isBlockTransparent(blockId);
|
||||
|
||||
if(isTransparent) {
|
||||
blockNames.add(material.name());
|
||||
transparentBlockNames.add(material.name());
|
||||
} else {
|
||||
nonTransparentBlockNames.add(material.name());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Collections.sort(blockNames);
|
||||
Collections.sort(transparentBlockNames);
|
||||
Collections.sort(nonTransparentBlockNames);
|
||||
|
||||
StringBuilder blocks = new StringBuilder();
|
||||
blocks.append("Transparent blocks:");
|
||||
|
||||
for (String blockName : blockNames) {
|
||||
for (String blockName : transparentBlockNames) {
|
||||
blocks.append("\n - " + blockName);
|
||||
}
|
||||
|
||||
blocks.append("\nNon-Transparent blocks:");
|
||||
|
||||
for (String blockName : nonTransparentBlockNames) {
|
||||
blocks.append("\n - " + blockName);
|
||||
}
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ import java.util.logging.Logger;
|
|||
|
||||
import com.lishid.orebfuscator.DeprecatedMethods;
|
||||
import com.lishid.orebfuscator.NmsInstance;
|
||||
import com.lishid.orebfuscator.Orebfuscator;
|
||||
import com.lishid.orebfuscator.utils.MaterialHelper;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
|
@ -262,7 +263,7 @@ public class ConfigManager {
|
|||
}
|
||||
|
||||
private byte[] generateTransparentBlocks(int engineMode) {
|
||||
byte[] transparentBlocks = new byte[NmsInstance.current.getTypeId(MaterialHelper.getMaxId() + 1)];
|
||||
byte[] transparentBlocks = new byte[MaterialHelper.getMaxId() + 1];
|
||||
|
||||
Material[] allMaterials = Material.values();
|
||||
|
||||
|
@ -270,16 +271,32 @@ public class ConfigManager {
|
|||
if(material.isBlock()) {
|
||||
boolean isTransparent = DeprecatedMethods.isTransparent(material);
|
||||
|
||||
if(!isTransparent) {
|
||||
if(isTransparent) {
|
||||
Set<Integer> ids = NmsInstance.current.getMaterialIds(material);
|
||||
|
||||
for (int id : ids) {
|
||||
transparentBlocks[NmsInstance.current.getTypeId(id)] = 1;
|
||||
transparentBlocks[id] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Material[] extraTransparentBlocks = NmsInstance.current.getExtraTransparentBlocks();
|
||||
|
||||
for(Material material : extraTransparentBlocks) {
|
||||
Set<Integer> ids = NmsInstance.current.getMaterialIds(material);
|
||||
|
||||
for (int id : ids) {
|
||||
transparentBlocks[id] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
Set<Integer> lavaIds = NmsInstance.current.getMaterialIds(Material.LAVA);
|
||||
|
||||
for (int id : lavaIds) {
|
||||
transparentBlocks[id] = (byte)(engineMode == 1 ? 0 : 1);
|
||||
}
|
||||
|
||||
return transparentBlocks;
|
||||
}
|
||||
}
|
|
@ -5,11 +5,8 @@
|
|||
|
||||
package com.lishid.orebfuscator.config;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
|
||||
import com.lishid.orebfuscator.NmsInstance;
|
||||
import com.lishid.orebfuscator.utils.Globals;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.lishid.orebfuscator.Orebfuscator;
|
||||
|
@ -257,8 +254,7 @@ public class OrebfuscatorConfig {
|
|||
// Helper methods
|
||||
|
||||
public boolean isBlockTransparent(int id) {
|
||||
int blockTypeId = NmsInstance.current.getTypeId(id);
|
||||
return this.transparentBlocks[blockTypeId] == 0;
|
||||
return this.transparentBlocks[id] == 1;
|
||||
}
|
||||
|
||||
public boolean obfuscateForPlayer(Player player) {
|
||||
|
|
|
@ -24,8 +24,6 @@ import java.util.Random;
|
|||
import com.lishid.orebfuscator.NmsInstance;
|
||||
|
||||
import com.lishid.orebfuscator.utils.Globals;
|
||||
import com.lishid.orebfuscator.utils.MaterialHelper;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
|
|
|
@ -1,219 +0,0 @@
|
|||
0:true //minecraft:air
|
||||
1:false //minecraft:stone
|
||||
2:false //minecraft:grass
|
||||
3:false //minecraft:dirt
|
||||
4:false //minecraft:cobblestone
|
||||
5:false //minecraft:planks
|
||||
6:true //minecraft:sapling
|
||||
7:false //minecraft:bedrock
|
||||
8:true //minecraft:flowing_water
|
||||
9:true //minecraft:water
|
||||
10:true //minecraft:flowing_lava
|
||||
11:true //minecraft:lava
|
||||
12:false //minecraft:sand
|
||||
13:false //minecraft:gravel
|
||||
14:false //minecraft:gold_ore
|
||||
15:false //minecraft:iron_ore
|
||||
16:false //minecraft:coal_ore
|
||||
17:false //minecraft:log
|
||||
18:true //minecraft:leaves
|
||||
19:false //minecraft:sponge
|
||||
20:true //minecraft:glass
|
||||
21:false //minecraft:lapis_ore
|
||||
22:false //minecraft:lapis_block
|
||||
23:false //minecraft:dispenser
|
||||
24:false //minecraft:sandstone
|
||||
25:false //minecraft:noteblock
|
||||
26:true //minecraft:bed
|
||||
27:true //minecraft:golden_rail
|
||||
28:true //minecraft:detector_rail
|
||||
29:false //minecraft:sticky_piston
|
||||
30:true //minecraft:web
|
||||
31:true //minecraft:tallgrass
|
||||
32:true //minecraft:deadbush
|
||||
33:false //minecraft:piston
|
||||
34:true //minecraft:piston_head
|
||||
35:false //minecraft:wool
|
||||
36:true //minecraft:piston_extension
|
||||
37:true //minecraft:yellow_flower
|
||||
38:true //minecraft:red_flower
|
||||
39:true //minecraft:brown_mushroom
|
||||
40:true //minecraft:red_mushroom
|
||||
41:false //minecraft:gold_block
|
||||
42:false //minecraft:iron_block
|
||||
43:false //minecraft:double_stone_slab
|
||||
44:true //minecraft:stone_slab
|
||||
45:false //minecraft:brick_block
|
||||
46:false //minecraft:tnt
|
||||
47:false //minecraft:bookshelf
|
||||
48:false //minecraft:mossy_cobblestone
|
||||
49:false //minecraft:obsidian
|
||||
50:true //minecraft:torch
|
||||
51:true //minecraft:fire
|
||||
52:true //minecraft:mob_spawner
|
||||
53:true //minecraft:oak_stairs
|
||||
54:true //minecraft:chest
|
||||
55:true //minecraft:redstone_wire
|
||||
56:false //minecraft:diamond_ore
|
||||
57:false //minecraft:diamond_block
|
||||
58:false //minecraft:crafting_table
|
||||
59:true //minecraft:wheat
|
||||
60:false //minecraft:farmland
|
||||
61:false //minecraft:furnace
|
||||
62:false //minecraft:lit_furnace
|
||||
63:true //minecraft:standing_sign
|
||||
64:true //minecraft:wooden_door
|
||||
65:true //minecraft:ladder
|
||||
66:true //minecraft:rail
|
||||
67:true //minecraft:stone_stairs
|
||||
68:true //minecraft:wall_sign
|
||||
69:true //minecraft:lever
|
||||
70:true //minecraft:stone_pressure_plate
|
||||
71:true //minecraft:iron_door
|
||||
72:true //minecraft:wooden_pressure_plate
|
||||
73:false //minecraft:redstone_ore
|
||||
74:false //minecraft:lit_redstone_ore
|
||||
75:true //minecraft:unlit_redstone_torch
|
||||
76:true //minecraft:redstone_torch
|
||||
77:true //minecraft:stone_button
|
||||
78:true //minecraft:snow_layer
|
||||
79:true //minecraft:ice
|
||||
80:false //minecraft:snow
|
||||
81:true //minecraft:cactus
|
||||
82:false //minecraft:clay
|
||||
83:true //minecraft:reeds
|
||||
84:false //minecraft:jukebox
|
||||
85:true //minecraft:fence
|
||||
86:false //minecraft:pumpkin
|
||||
87:false //minecraft:netherrack
|
||||
88:false //minecraft:soul_sand
|
||||
89:false //minecraft:glowstone
|
||||
90:true //minecraft:portal
|
||||
91:false //minecraft:lit_pumpkin
|
||||
92:true //minecraft:cake
|
||||
93:true //minecraft:unpowered_repeater
|
||||
94:true //minecraft:powered_repeater
|
||||
95:true //minecraft:stained_glass
|
||||
96:true //minecraft:trapdoor
|
||||
97:false //minecraft:monster_egg
|
||||
98:false //minecraft:stonebrick
|
||||
99:false //minecraft:brown_mushroom_block
|
||||
100:false //minecraft:red_mushroom_block
|
||||
101:true //minecraft:iron_bars
|
||||
102:true //minecraft:glass_pane
|
||||
103:false //minecraft:melon_block
|
||||
104:true //minecraft:pumpkin_stem
|
||||
105:true //minecraft:melon_stem
|
||||
106:true //minecraft:vine
|
||||
107:true //minecraft:fence_gate
|
||||
108:true //minecraft:brick_stairs
|
||||
109:true //minecraft:stone_brick_stairs
|
||||
110:false //minecraft:mycelium
|
||||
111:true //minecraft:waterlily
|
||||
112:false //minecraft:nether_brick
|
||||
113:true //minecraft:nether_brick_fence
|
||||
114:true //minecraft:nether_brick_stairs
|
||||
115:true //minecraft:nether_wart
|
||||
116:false //minecraft:enchanting_table
|
||||
117:true //minecraft:brewing_stand
|
||||
118:true //minecraft:cauldron
|
||||
119:true //minecraft:end_portal
|
||||
120:true //minecraft:end_portal_frame
|
||||
121:false //minecraft:end_stone
|
||||
122:true //minecraft:dragon_egg
|
||||
123:false //minecraft:redstone_lamp
|
||||
124:false //minecraft:lit_redstone_lamp
|
||||
125:false //minecraft:double_wooden_slab
|
||||
126:true //minecraft:wooden_slab
|
||||
127:true //minecraft:cocoa
|
||||
128:true //minecraft:sandstone_stairs
|
||||
129:false //minecraft:emerald_ore
|
||||
130:true //minecraft:ender_chest
|
||||
131:true //minecraft:tripwire_hook
|
||||
132:true //minecraft:tripwire
|
||||
133:false //minecraft:emerald_block
|
||||
134:true //minecraft:spruce_stairs
|
||||
135:true //minecraft:birch_stairs
|
||||
136:true //minecraft:jungle_stairs
|
||||
137:false //minecraft:command_block
|
||||
138:true //minecraft:beacon
|
||||
139:true //minecraft:cobblestone_wall
|
||||
140:true //minecraft:flower_pot
|
||||
141:true //minecraft:carrots
|
||||
142:true //minecraft:potatoes
|
||||
143:true //minecraft:wooden_button
|
||||
144:true //minecraft:skull
|
||||
145:true //minecraft:anvil
|
||||
146:true //minecraft:trapped_chest
|
||||
147:true //minecraft:light_weighted_pressure_plate
|
||||
148:true //minecraft:heavy_weighted_pressure_plate
|
||||
149:true //minecraft:unpowered_comparator
|
||||
150:true //minecraft:powered_comparator
|
||||
151:true //minecraft:daylight_detector
|
||||
152:false //minecraft:redstone_block
|
||||
153:false //minecraft:quartz_ore
|
||||
154:true //minecraft:hopper
|
||||
155:false //minecraft:quartz_block
|
||||
156:true //minecraft:quartz_stairs
|
||||
157:true //minecraft:activator_rail
|
||||
158:false //minecraft:dropper
|
||||
159:false //minecraft:stained_hardened_clay
|
||||
160:true //minecraft:stained_glass_pane
|
||||
161:true //minecraft:leaves2
|
||||
162:false //minecraft:log2
|
||||
163:true //minecraft:acacia_stairs
|
||||
164:true //minecraft:dark_oak_stairs
|
||||
165:true //minecraft:slime
|
||||
166:true //minecraft:barrier
|
||||
167:true //minecraft:iron_trapdoor
|
||||
168:false //minecraft:prismarine
|
||||
169:false //minecraft:sea_lantern
|
||||
170:false //minecraft:hay_block
|
||||
171:true //minecraft:carpet
|
||||
172:false //minecraft:hardened_clay
|
||||
173:false //minecraft:coal_block
|
||||
174:true //minecraft:packed_ice
|
||||
175:true //minecraft:double_plant
|
||||
176:true //minecraft:standing_banner
|
||||
177:true //minecraft:wall_banner
|
||||
178:true //minecraft:daylight_detector_inverted
|
||||
179:false //minecraft:red_sandstone
|
||||
180:true //minecraft:red_sandstone_stairs
|
||||
181:false //minecraft:double_stone_slab2
|
||||
182:true //minecraft:stone_slab2
|
||||
183:true //minecraft:spruce_fence_gate
|
||||
184:true //minecraft:birch_fence_gate
|
||||
185:true //minecraft:jungle_fence_gate
|
||||
186:true //minecraft:dark_oak_fence_gate
|
||||
187:true //minecraft:acacia_fence_gate
|
||||
188:true //minecraft:spruce_fence
|
||||
189:true //minecraft:birch_fence
|
||||
190:true //minecraft:jungle_fence
|
||||
191:true //minecraft:dark_oak_fence
|
||||
192:true //minecraft:acacia_fence
|
||||
193:true //minecraft:spruce_door
|
||||
194:true //minecraft:birch_door
|
||||
195:true //minecraft:jungle_door
|
||||
196:true //minecraft:acacia_door
|
||||
197:true //minecraft:dark_oak_door
|
||||
198:true //minecraft:end_rod
|
||||
199:true //minecraft:chorus_plant
|
||||
200:true //minecraft:chorus_flower
|
||||
201:false //minecraft:purpur_block
|
||||
202:false //minecraft:purpur_pillar
|
||||
203:true //minecraft:purpur_stairs
|
||||
204:false //minecraft:purpur_double_slab
|
||||
205:true //minecraft:purpur_slab
|
||||
206:false //minecraft:end_bricks
|
||||
207:true //minecraft:beetroots
|
||||
208:true //minecraft:grass_path
|
||||
209:true //minecraft:end_gateway
|
||||
210:false //minecraft:repeating_command_block
|
||||
211:false //minecraft:chain_command_block
|
||||
212:true //minecraft:frosted_ice
|
||||
213:false //minecraft:magma_block
|
||||
214:false //minecraft:nether_wart_block
|
||||
215:false //minecraft:red_nether_brick
|
||||
216:false //minecraft:bone_block
|
||||
217:true //minecraft:structure_void
|
||||
255:false //minecraft:structure_block
|
|
@ -1 +0,0 @@
|
|||
11:false //minecraft:lava
|
|
@ -36,7 +36,8 @@ public class BlockInfo implements IBlockInfo {
|
|||
}
|
||||
|
||||
public int getCombinedId() {
|
||||
return Block.getCombinedId(this.blockData);
|
||||
Block block = this.blockData.getBlock();
|
||||
return (Block.getId(block) << 4) | block.toLegacyData(this.blockData);
|
||||
}
|
||||
|
||||
public IBlockData getBlockData() {
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
package com.lishid.orebfuscator.nms.v1_10_R1;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.lishid.orebfuscator.types.ConfigDefaults;
|
||||
import net.minecraft.server.v1_10_R1.Block;
|
||||
import net.minecraft.server.v1_10_R1.BlockPosition;
|
||||
|
@ -31,10 +32,12 @@ import com.lishid.orebfuscator.nms.INBT;
|
|||
import com.lishid.orebfuscator.nms.INmsManager;
|
||||
import com.lishid.orebfuscator.types.BlockCoord;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class NmsManager implements INmsManager {
|
||||
private ConfigDefaults configDefaults;
|
||||
private Material[] extraTransparentBlocks;
|
||||
private int maxLoadedCacheFiles;
|
||||
|
||||
public NmsManager() {
|
||||
|
@ -42,110 +45,199 @@ public class NmsManager implements INmsManager {
|
|||
|
||||
// Default World
|
||||
|
||||
this.configDefaults.defaultProximityHiderBlockIds = new int[] {
|
||||
getMaterialId(Material.DISPENSER),
|
||||
getMaterialId(Material.MOB_SPAWNER),
|
||||
getMaterialId(Material.CHEST),
|
||||
getMaterialId(Material.HOPPER),
|
||||
getMaterialId(Material.WORKBENCH),
|
||||
getMaterialId(Material.FURNACE),
|
||||
getMaterialId(Material.BURNING_FURNACE),
|
||||
getMaterialId(Material.ENCHANTMENT_TABLE),
|
||||
getMaterialId(Material.EMERALD_ORE),
|
||||
getMaterialId(Material.ENDER_CHEST),
|
||||
getMaterialId(Material.ANVIL),
|
||||
getMaterialId(Material.TRAPPED_CHEST),
|
||||
getMaterialId(Material.DIAMOND_ORE)
|
||||
};
|
||||
this.configDefaults.defaultProximityHiderBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.DISPENSER,
|
||||
Material.MOB_SPAWNER,
|
||||
Material.CHEST,
|
||||
Material.HOPPER,
|
||||
Material.WORKBENCH,
|
||||
Material.FURNACE,
|
||||
Material.BURNING_FURNACE,
|
||||
Material.ENCHANTMENT_TABLE,
|
||||
Material.EMERALD_ORE,
|
||||
Material.ENDER_CHEST,
|
||||
Material.ANVIL,
|
||||
Material.TRAPPED_CHEST,
|
||||
Material.DIAMOND_ORE
|
||||
});
|
||||
|
||||
this.configDefaults.defaultDarknessBlockIds = new int[] {
|
||||
getMaterialId(Material.MOB_SPAWNER),
|
||||
getMaterialId(Material.CHEST)
|
||||
};
|
||||
this.configDefaults.defaultDarknessBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.MOB_SPAWNER,
|
||||
Material.CHEST
|
||||
});
|
||||
|
||||
this.configDefaults.defaultMode1BlockId = getMaterialId(Material.STONE);
|
||||
this.configDefaults.defaultProximityHiderSpecialBlockId = getMaterialId(Material.STONE);
|
||||
this.configDefaults.defaultMode1BlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||
this.configDefaults.defaultProximityHiderSpecialBlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||
|
||||
// The End
|
||||
|
||||
this.configDefaults.endWorldRandomBlockIds = new int[] {
|
||||
getMaterialId(Material.BEDROCK),
|
||||
getMaterialId(Material.OBSIDIAN),
|
||||
getMaterialId(Material.ENDER_STONE),
|
||||
getMaterialId(Material.PURPUR_BLOCK),
|
||||
getMaterialId(Material.END_BRICKS)
|
||||
};
|
||||
this.configDefaults.endWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.BEDROCK,
|
||||
Material.OBSIDIAN,
|
||||
Material.ENDER_STONE,
|
||||
Material.PURPUR_BLOCK,
|
||||
Material.END_BRICKS
|
||||
});
|
||||
|
||||
this.configDefaults.endWorldObfuscateBlockIds = new int[] {
|
||||
getMaterialId(Material.ENDER_STONE)
|
||||
};
|
||||
this.configDefaults.endWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.ENDER_STONE
|
||||
});
|
||||
|
||||
this.configDefaults.endWorldMode1BlockId = getMaterialId(Material.ENDER_STONE);
|
||||
this.configDefaults.endWorldRequiredObfuscateBlockIds = new int[] { getMaterialId(Material.ENDER_STONE) };
|
||||
this.configDefaults.endWorldMode1BlockId = getMaterialIds(Material.ENDER_STONE).iterator().next();
|
||||
this.configDefaults.endWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] { Material.ENDER_STONE });
|
||||
|
||||
// Nether World
|
||||
|
||||
this.configDefaults.netherWorldRandomBlockIds = new int[] {
|
||||
getMaterialId(Material.GRAVEL),
|
||||
getMaterialId(Material.NETHERRACK),
|
||||
getMaterialId(Material.SOUL_SAND),
|
||||
getMaterialId(Material.NETHER_BRICK),
|
||||
getMaterialId(Material.QUARTZ_ORE)
|
||||
};
|
||||
this.configDefaults.netherWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.GRAVEL,
|
||||
Material.NETHERRACK,
|
||||
Material.SOUL_SAND,
|
||||
Material.NETHER_BRICK,
|
||||
Material.QUARTZ_ORE
|
||||
});
|
||||
|
||||
this.configDefaults.netherWorldObfuscateBlockIds = new int[] {
|
||||
getMaterialId(Material.NETHERRACK),
|
||||
getMaterialId(Material.QUARTZ_ORE)
|
||||
};
|
||||
this.configDefaults.netherWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.NETHERRACK,
|
||||
Material.QUARTZ_ORE
|
||||
});
|
||||
|
||||
this.configDefaults.netherWorldMode1BlockId = getMaterialId(Material.NETHERRACK);
|
||||
this.configDefaults.netherWorldMode1BlockId = getMaterialIds(Material.NETHERRACK).iterator().next();
|
||||
|
||||
this.configDefaults.netherWorldRequiredObfuscateBlockIds = new int[] {
|
||||
getMaterialId(Material.NETHERRACK)
|
||||
};
|
||||
this.configDefaults.netherWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.NETHERRACK
|
||||
});
|
||||
|
||||
// Normal World
|
||||
|
||||
this.configDefaults.normalWorldRandomBlockIds = new int[] {
|
||||
getMaterialId(Material.STONE),
|
||||
getMaterialId(Material.COBBLESTONE),
|
||||
getMaterialId(Material.WOOD),
|
||||
getMaterialId(Material.GOLD_ORE),
|
||||
getMaterialId(Material.IRON_ORE),
|
||||
getMaterialId(Material.COAL_ORE),
|
||||
getMaterialId(Material.LAPIS_ORE),
|
||||
getMaterialId(Material.TNT),
|
||||
getMaterialId(Material.MOSSY_COBBLESTONE),
|
||||
getMaterialId(Material.OBSIDIAN),
|
||||
getMaterialId(Material.DIAMOND_ORE),
|
||||
getMaterialId(Material.REDSTONE_ORE),
|
||||
getMaterialId(Material.CLAY),
|
||||
getMaterialId(Material.EMERALD_ORE)
|
||||
};
|
||||
this.configDefaults.normalWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.STONE,
|
||||
Material.COBBLESTONE,
|
||||
Material.WOOD,
|
||||
Material.GOLD_ORE,
|
||||
Material.IRON_ORE,
|
||||
Material.COAL_ORE,
|
||||
Material.LAPIS_ORE,
|
||||
Material.TNT,
|
||||
Material.MOSSY_COBBLESTONE,
|
||||
Material.OBSIDIAN,
|
||||
Material.DIAMOND_ORE,
|
||||
Material.REDSTONE_ORE,
|
||||
Material.CLAY,
|
||||
Material.EMERALD_ORE
|
||||
});
|
||||
|
||||
this.configDefaults.normalWorldObfuscateBlockIds = new int[] {
|
||||
getMaterialId(Material.GOLD_ORE),
|
||||
getMaterialId(Material.IRON_ORE),
|
||||
getMaterialId(Material.COAL_ORE),
|
||||
getMaterialId(Material.LAPIS_ORE),
|
||||
getMaterialId(Material.CHEST),
|
||||
getMaterialId(Material.DIAMOND_ORE),
|
||||
getMaterialId(Material.ENDER_CHEST),
|
||||
getMaterialId(Material.REDSTONE_ORE),
|
||||
getMaterialId(Material.CLAY),
|
||||
getMaterialId(Material.EMERALD_ORE)
|
||||
};
|
||||
this.configDefaults.normalWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.GOLD_ORE,
|
||||
Material.IRON_ORE,
|
||||
Material.COAL_ORE,
|
||||
Material.LAPIS_ORE,
|
||||
Material.CHEST,
|
||||
Material.DIAMOND_ORE,
|
||||
Material.ENDER_CHEST,
|
||||
Material.REDSTONE_ORE,
|
||||
Material.CLAY,
|
||||
Material.EMERALD_ORE
|
||||
});
|
||||
|
||||
this.configDefaults.normalWorldMode1BlockId = getMaterialId(Material.STONE);
|
||||
this.configDefaults.normalWorldMode1BlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||
|
||||
this.configDefaults.normalWorldRequiredObfuscateBlockIds = new int[] {
|
||||
getMaterialId(Material.STONE)
|
||||
this.configDefaults.normalWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.STONE
|
||||
});
|
||||
|
||||
// Extra transparent blocks
|
||||
|
||||
this.extraTransparentBlocks = new Material[] {
|
||||
Material.ACACIA_DOOR,
|
||||
Material.ACACIA_FENCE,
|
||||
Material.ACACIA_FENCE_GATE,
|
||||
Material.ACACIA_STAIRS,
|
||||
Material.ANVIL,
|
||||
Material.BEACON,
|
||||
Material.BED_BLOCK,
|
||||
Material.BIRCH_DOOR,
|
||||
Material.BIRCH_FENCE,
|
||||
Material.BIRCH_FENCE_GATE,
|
||||
Material.BIRCH_WOOD_STAIRS,
|
||||
Material.BREWING_STAND,
|
||||
Material.BRICK_STAIRS,
|
||||
Material.CACTUS,
|
||||
Material.CAKE_BLOCK,
|
||||
Material.CAULDRON,
|
||||
Material.COBBLESTONE_STAIRS,
|
||||
Material.COBBLE_WALL,
|
||||
Material.DARK_OAK_DOOR,
|
||||
Material.DARK_OAK_FENCE,
|
||||
Material.DARK_OAK_FENCE_GATE,
|
||||
Material.DARK_OAK_STAIRS,
|
||||
Material.DAYLIGHT_DETECTOR,
|
||||
Material.DAYLIGHT_DETECTOR_INVERTED,
|
||||
Material.DRAGON_EGG,
|
||||
Material.ENCHANTMENT_TABLE,
|
||||
Material.FENCE,
|
||||
Material.FENCE_GATE,
|
||||
Material.GLASS,
|
||||
Material.HOPPER,
|
||||
Material.ICE,
|
||||
Material.IRON_DOOR_BLOCK,
|
||||
Material.IRON_FENCE,
|
||||
Material.IRON_PLATE,
|
||||
Material.IRON_TRAPDOOR,
|
||||
Material.JUNGLE_DOOR,
|
||||
Material.JUNGLE_FENCE,
|
||||
Material.JUNGLE_FENCE_GATE,
|
||||
Material.JUNGLE_WOOD_STAIRS,
|
||||
Material.LAVA,
|
||||
Material.LEAVES,
|
||||
Material.LEAVES_2,
|
||||
Material.MOB_SPAWNER,
|
||||
Material.NETHER_BRICK_STAIRS,
|
||||
Material.NETHER_FENCE,
|
||||
Material.PACKED_ICE,
|
||||
Material.PISTON_BASE,
|
||||
Material.PISTON_EXTENSION,
|
||||
Material.PISTON_MOVING_PIECE,
|
||||
Material.PISTON_STICKY_BASE,
|
||||
Material.PURPUR_SLAB,
|
||||
Material.PURPUR_STAIRS,
|
||||
Material.QUARTZ_STAIRS,
|
||||
Material.RED_SANDSTONE_STAIRS,
|
||||
Material.SANDSTONE_STAIRS,
|
||||
Material.SIGN_POST,
|
||||
Material.SLIME_BLOCK,
|
||||
Material.SMOOTH_STAIRS,
|
||||
Material.SPRUCE_DOOR,
|
||||
Material.SPRUCE_FENCE,
|
||||
Material.SPRUCE_FENCE_GATE,
|
||||
Material.SPRUCE_WOOD_STAIRS,
|
||||
Material.STAINED_GLASS,
|
||||
Material.STAINED_GLASS_PANE,
|
||||
Material.STANDING_BANNER,
|
||||
Material.STATIONARY_LAVA,
|
||||
Material.STATIONARY_WATER,
|
||||
Material.STEP,
|
||||
Material.STONE_PLATE,
|
||||
Material.STONE_SLAB2,
|
||||
Material.THIN_GLASS,
|
||||
Material.TRAP_DOOR,
|
||||
Material.WALL_BANNER,
|
||||
Material.WALL_SIGN,
|
||||
Material.WATER,
|
||||
Material.WEB,
|
||||
Material.WOODEN_DOOR,
|
||||
Material.WOOD_PLATE,
|
||||
Material.WOOD_STAIRS,
|
||||
Material.WOOD_STEP
|
||||
};
|
||||
}
|
||||
|
||||
public ConfigDefaults getConfigDefaults() {
|
||||
return this.configDefaults;
|
||||
}
|
||||
|
||||
public Material[] getExtraTransparentBlocks() {
|
||||
return this.extraTransparentBlocks;
|
||||
}
|
||||
|
||||
public void setMaxLoadedCacheFiles(int value) {
|
||||
this.maxLoadedCacheFiles = value;
|
||||
|
@ -218,9 +310,12 @@ public class NmsManager implements INmsManager {
|
|||
|| item == Material.DIAMOND_HOE;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public boolean isSign(int combinedBlockId) {
|
||||
return combinedBlockId == getMaterialId(Material.WALL_SIGN)
|
||||
|| combinedBlockId == getMaterialId(Material.SIGN_POST);
|
||||
int typeId = combinedBlockId >> 4;
|
||||
|
||||
return typeId == Material.WALL_SIGN.getId()
|
||||
|| typeId == Material.SIGN_POST.getId();
|
||||
}
|
||||
|
||||
public boolean isAir(int combinedBlockId) {
|
||||
|
@ -249,16 +344,17 @@ public class NmsManager implements INmsManager {
|
|||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public int getMaterialId(Material material) {
|
||||
return material.getId() << 4;
|
||||
}
|
||||
|
||||
public Set<Integer> getMaterialIds(Material material) {
|
||||
return null;
|
||||
}
|
||||
Set<Integer> ids = new HashSet<>();
|
||||
int blockId = material.getId() << 4;
|
||||
Block block = Block.getById(material.getId());
|
||||
ImmutableList<IBlockData> blockDataList = block.t().a();
|
||||
|
||||
public int getTypeId(int combinedBlockId) {
|
||||
return combinedBlockId & ~(0x0F);
|
||||
for(IBlockData blockData : blockDataList) {
|
||||
ids.add(blockId | block.toLegacyData(blockData));
|
||||
}
|
||||
|
||||
return ids;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
|
@ -289,4 +385,27 @@ public class NmsManager implements INmsManager {
|
|||
|
||||
return chunk != null ? chunk.getBlockData(new BlockPosition(x, y, z)) : null;
|
||||
}
|
||||
|
||||
private Set<Integer> convertMaterialsToSet(Material[] materials) {
|
||||
Set<Integer> ids = new HashSet<>();
|
||||
|
||||
for(Material material : materials) {
|
||||
ids.addAll(getMaterialIds(material));
|
||||
}
|
||||
|
||||
return ids;
|
||||
}
|
||||
|
||||
private int[] convertMaterialsToIds(Material[] materials) {
|
||||
Set<Integer> ids = convertMaterialsToSet(materials);
|
||||
|
||||
int[] result = new int[ids.size()];
|
||||
int index = 0;
|
||||
|
||||
for(int id : ids) {
|
||||
result[index++] = id;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,7 +36,8 @@ public class BlockInfo implements IBlockInfo {
|
|||
}
|
||||
|
||||
public int getCombinedId() {
|
||||
return Block.getCombinedId(this.blockData);
|
||||
Block block = this.blockData.getBlock();
|
||||
return (Block.getId(block) << 4) | block.toLegacyData(this.blockData);
|
||||
}
|
||||
|
||||
public IBlockData getBlockData() {
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
package com.lishid.orebfuscator.nms.v1_11_R1;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.lishid.orebfuscator.types.ConfigDefaults;
|
||||
import net.minecraft.server.v1_11_R1.Block;
|
||||
import net.minecraft.server.v1_11_R1.BlockPosition;
|
||||
|
@ -31,10 +32,12 @@ import com.lishid.orebfuscator.nms.INBT;
|
|||
import com.lishid.orebfuscator.nms.INmsManager;
|
||||
import com.lishid.orebfuscator.types.BlockCoord;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class NmsManager implements INmsManager {
|
||||
private ConfigDefaults configDefaults;
|
||||
private Material[] extraTransparentBlocks;
|
||||
private int maxLoadedCacheFiles;
|
||||
|
||||
public NmsManager() {
|
||||
|
@ -42,110 +45,199 @@ public class NmsManager implements INmsManager {
|
|||
|
||||
// Default World
|
||||
|
||||
this.configDefaults.defaultProximityHiderBlockIds = new int[] {
|
||||
getMaterialId(Material.DISPENSER),
|
||||
getMaterialId(Material.MOB_SPAWNER),
|
||||
getMaterialId(Material.CHEST),
|
||||
getMaterialId(Material.HOPPER),
|
||||
getMaterialId(Material.WORKBENCH),
|
||||
getMaterialId(Material.FURNACE),
|
||||
getMaterialId(Material.BURNING_FURNACE),
|
||||
getMaterialId(Material.ENCHANTMENT_TABLE),
|
||||
getMaterialId(Material.EMERALD_ORE),
|
||||
getMaterialId(Material.ENDER_CHEST),
|
||||
getMaterialId(Material.ANVIL),
|
||||
getMaterialId(Material.TRAPPED_CHEST),
|
||||
getMaterialId(Material.DIAMOND_ORE)
|
||||
};
|
||||
this.configDefaults.defaultProximityHiderBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.DISPENSER,
|
||||
Material.MOB_SPAWNER,
|
||||
Material.CHEST,
|
||||
Material.HOPPER,
|
||||
Material.WORKBENCH,
|
||||
Material.FURNACE,
|
||||
Material.BURNING_FURNACE,
|
||||
Material.ENCHANTMENT_TABLE,
|
||||
Material.EMERALD_ORE,
|
||||
Material.ENDER_CHEST,
|
||||
Material.ANVIL,
|
||||
Material.TRAPPED_CHEST,
|
||||
Material.DIAMOND_ORE
|
||||
});
|
||||
|
||||
this.configDefaults.defaultDarknessBlockIds = new int[] {
|
||||
getMaterialId(Material.MOB_SPAWNER),
|
||||
getMaterialId(Material.CHEST)
|
||||
};
|
||||
this.configDefaults.defaultDarknessBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.MOB_SPAWNER,
|
||||
Material.CHEST
|
||||
});
|
||||
|
||||
this.configDefaults.defaultMode1BlockId = getMaterialId(Material.STONE);
|
||||
this.configDefaults.defaultProximityHiderSpecialBlockId = getMaterialId(Material.STONE);
|
||||
this.configDefaults.defaultMode1BlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||
this.configDefaults.defaultProximityHiderSpecialBlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||
|
||||
// The End
|
||||
|
||||
this.configDefaults.endWorldRandomBlockIds = new int[] {
|
||||
getMaterialId(Material.BEDROCK),
|
||||
getMaterialId(Material.OBSIDIAN),
|
||||
getMaterialId(Material.ENDER_STONE),
|
||||
getMaterialId(Material.PURPUR_BLOCK),
|
||||
getMaterialId(Material.END_BRICKS)
|
||||
};
|
||||
this.configDefaults.endWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.BEDROCK,
|
||||
Material.OBSIDIAN,
|
||||
Material.ENDER_STONE,
|
||||
Material.PURPUR_BLOCK,
|
||||
Material.END_BRICKS
|
||||
});
|
||||
|
||||
this.configDefaults.endWorldObfuscateBlockIds = new int[] {
|
||||
getMaterialId(Material.ENDER_STONE)
|
||||
};
|
||||
this.configDefaults.endWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.ENDER_STONE
|
||||
});
|
||||
|
||||
this.configDefaults.endWorldMode1BlockId = getMaterialId(Material.ENDER_STONE);
|
||||
this.configDefaults.endWorldRequiredObfuscateBlockIds = new int[] { getMaterialId(Material.ENDER_STONE) };
|
||||
this.configDefaults.endWorldMode1BlockId = getMaterialIds(Material.ENDER_STONE).iterator().next();
|
||||
this.configDefaults.endWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] { Material.ENDER_STONE });
|
||||
|
||||
// Nether World
|
||||
|
||||
this.configDefaults.netherWorldRandomBlockIds = new int[] {
|
||||
getMaterialId(Material.GRAVEL),
|
||||
getMaterialId(Material.NETHERRACK),
|
||||
getMaterialId(Material.SOUL_SAND),
|
||||
getMaterialId(Material.NETHER_BRICK),
|
||||
getMaterialId(Material.QUARTZ_ORE)
|
||||
};
|
||||
this.configDefaults.netherWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.GRAVEL,
|
||||
Material.NETHERRACK,
|
||||
Material.SOUL_SAND,
|
||||
Material.NETHER_BRICK,
|
||||
Material.QUARTZ_ORE
|
||||
});
|
||||
|
||||
this.configDefaults.netherWorldObfuscateBlockIds = new int[] {
|
||||
getMaterialId(Material.NETHERRACK),
|
||||
getMaterialId(Material.QUARTZ_ORE)
|
||||
};
|
||||
this.configDefaults.netherWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.NETHERRACK,
|
||||
Material.QUARTZ_ORE
|
||||
});
|
||||
|
||||
this.configDefaults.netherWorldMode1BlockId = getMaterialId(Material.NETHERRACK);
|
||||
this.configDefaults.netherWorldMode1BlockId = getMaterialIds(Material.NETHERRACK).iterator().next();
|
||||
|
||||
this.configDefaults.netherWorldRequiredObfuscateBlockIds = new int[] {
|
||||
getMaterialId(Material.NETHERRACK)
|
||||
};
|
||||
this.configDefaults.netherWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.NETHERRACK
|
||||
});
|
||||
|
||||
// Normal World
|
||||
|
||||
this.configDefaults.normalWorldRandomBlockIds = new int[] {
|
||||
getMaterialId(Material.STONE),
|
||||
getMaterialId(Material.COBBLESTONE),
|
||||
getMaterialId(Material.WOOD),
|
||||
getMaterialId(Material.GOLD_ORE),
|
||||
getMaterialId(Material.IRON_ORE),
|
||||
getMaterialId(Material.COAL_ORE),
|
||||
getMaterialId(Material.LAPIS_ORE),
|
||||
getMaterialId(Material.TNT),
|
||||
getMaterialId(Material.MOSSY_COBBLESTONE),
|
||||
getMaterialId(Material.OBSIDIAN),
|
||||
getMaterialId(Material.DIAMOND_ORE),
|
||||
getMaterialId(Material.REDSTONE_ORE),
|
||||
getMaterialId(Material.CLAY),
|
||||
getMaterialId(Material.EMERALD_ORE)
|
||||
};
|
||||
this.configDefaults.normalWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.STONE,
|
||||
Material.COBBLESTONE,
|
||||
Material.WOOD,
|
||||
Material.GOLD_ORE,
|
||||
Material.IRON_ORE,
|
||||
Material.COAL_ORE,
|
||||
Material.LAPIS_ORE,
|
||||
Material.TNT,
|
||||
Material.MOSSY_COBBLESTONE,
|
||||
Material.OBSIDIAN,
|
||||
Material.DIAMOND_ORE,
|
||||
Material.REDSTONE_ORE,
|
||||
Material.CLAY,
|
||||
Material.EMERALD_ORE
|
||||
});
|
||||
|
||||
this.configDefaults.normalWorldObfuscateBlockIds = new int[] {
|
||||
getMaterialId(Material.GOLD_ORE),
|
||||
getMaterialId(Material.IRON_ORE),
|
||||
getMaterialId(Material.COAL_ORE),
|
||||
getMaterialId(Material.LAPIS_ORE),
|
||||
getMaterialId(Material.CHEST),
|
||||
getMaterialId(Material.DIAMOND_ORE),
|
||||
getMaterialId(Material.ENDER_CHEST),
|
||||
getMaterialId(Material.REDSTONE_ORE),
|
||||
getMaterialId(Material.CLAY),
|
||||
getMaterialId(Material.EMERALD_ORE)
|
||||
};
|
||||
this.configDefaults.normalWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.GOLD_ORE,
|
||||
Material.IRON_ORE,
|
||||
Material.COAL_ORE,
|
||||
Material.LAPIS_ORE,
|
||||
Material.CHEST,
|
||||
Material.DIAMOND_ORE,
|
||||
Material.ENDER_CHEST,
|
||||
Material.REDSTONE_ORE,
|
||||
Material.CLAY,
|
||||
Material.EMERALD_ORE
|
||||
});
|
||||
|
||||
this.configDefaults.normalWorldMode1BlockId = getMaterialId(Material.STONE);
|
||||
this.configDefaults.normalWorldMode1BlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||
|
||||
this.configDefaults.normalWorldRequiredObfuscateBlockIds = new int[] {
|
||||
getMaterialId(Material.STONE)
|
||||
this.configDefaults.normalWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.STONE
|
||||
});
|
||||
|
||||
// Extra transparent blocks
|
||||
|
||||
this.extraTransparentBlocks = new Material[] {
|
||||
Material.ACACIA_DOOR,
|
||||
Material.ACACIA_FENCE,
|
||||
Material.ACACIA_FENCE_GATE,
|
||||
Material.ACACIA_STAIRS,
|
||||
Material.ANVIL,
|
||||
Material.BEACON,
|
||||
Material.BED_BLOCK,
|
||||
Material.BIRCH_DOOR,
|
||||
Material.BIRCH_FENCE,
|
||||
Material.BIRCH_FENCE_GATE,
|
||||
Material.BIRCH_WOOD_STAIRS,
|
||||
Material.BREWING_STAND,
|
||||
Material.BRICK_STAIRS,
|
||||
Material.CACTUS,
|
||||
Material.CAKE_BLOCK,
|
||||
Material.CAULDRON,
|
||||
Material.COBBLESTONE_STAIRS,
|
||||
Material.COBBLE_WALL,
|
||||
Material.DARK_OAK_DOOR,
|
||||
Material.DARK_OAK_FENCE,
|
||||
Material.DARK_OAK_FENCE_GATE,
|
||||
Material.DARK_OAK_STAIRS,
|
||||
Material.DAYLIGHT_DETECTOR,
|
||||
Material.DAYLIGHT_DETECTOR_INVERTED,
|
||||
Material.DRAGON_EGG,
|
||||
Material.ENCHANTMENT_TABLE,
|
||||
Material.FENCE,
|
||||
Material.FENCE_GATE,
|
||||
Material.GLASS,
|
||||
Material.HOPPER,
|
||||
Material.ICE,
|
||||
Material.IRON_DOOR_BLOCK,
|
||||
Material.IRON_FENCE,
|
||||
Material.IRON_PLATE,
|
||||
Material.IRON_TRAPDOOR,
|
||||
Material.JUNGLE_DOOR,
|
||||
Material.JUNGLE_FENCE,
|
||||
Material.JUNGLE_FENCE_GATE,
|
||||
Material.JUNGLE_WOOD_STAIRS,
|
||||
Material.LAVA,
|
||||
Material.LEAVES,
|
||||
Material.LEAVES_2,
|
||||
Material.MOB_SPAWNER,
|
||||
Material.NETHER_BRICK_STAIRS,
|
||||
Material.NETHER_FENCE,
|
||||
Material.PACKED_ICE,
|
||||
Material.PISTON_BASE,
|
||||
Material.PISTON_EXTENSION,
|
||||
Material.PISTON_MOVING_PIECE,
|
||||
Material.PISTON_STICKY_BASE,
|
||||
Material.PURPUR_SLAB,
|
||||
Material.PURPUR_STAIRS,
|
||||
Material.QUARTZ_STAIRS,
|
||||
Material.RED_SANDSTONE_STAIRS,
|
||||
Material.SANDSTONE_STAIRS,
|
||||
Material.SIGN_POST,
|
||||
Material.SLIME_BLOCK,
|
||||
Material.SMOOTH_STAIRS,
|
||||
Material.SPRUCE_DOOR,
|
||||
Material.SPRUCE_FENCE,
|
||||
Material.SPRUCE_FENCE_GATE,
|
||||
Material.SPRUCE_WOOD_STAIRS,
|
||||
Material.STAINED_GLASS,
|
||||
Material.STAINED_GLASS_PANE,
|
||||
Material.STANDING_BANNER,
|
||||
Material.STATIONARY_LAVA,
|
||||
Material.STATIONARY_WATER,
|
||||
Material.STEP,
|
||||
Material.STONE_PLATE,
|
||||
Material.STONE_SLAB2,
|
||||
Material.THIN_GLASS,
|
||||
Material.TRAP_DOOR,
|
||||
Material.WALL_BANNER,
|
||||
Material.WALL_SIGN,
|
||||
Material.WATER,
|
||||
Material.WEB,
|
||||
Material.WOODEN_DOOR,
|
||||
Material.WOOD_PLATE,
|
||||
Material.WOOD_STAIRS,
|
||||
Material.WOOD_STEP
|
||||
};
|
||||
}
|
||||
|
||||
public ConfigDefaults getConfigDefaults() {
|
||||
return this.configDefaults;
|
||||
}
|
||||
|
||||
public Material[] getExtraTransparentBlocks() {
|
||||
return this.extraTransparentBlocks;
|
||||
}
|
||||
|
||||
public void setMaxLoadedCacheFiles(int value) {
|
||||
this.maxLoadedCacheFiles = value;
|
||||
|
@ -218,9 +310,12 @@ public class NmsManager implements INmsManager {
|
|||
|| item == Material.DIAMOND_HOE;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public boolean isSign(int combinedBlockId) {
|
||||
return combinedBlockId == getMaterialId(Material.WALL_SIGN)
|
||||
|| combinedBlockId == getMaterialId(Material.SIGN_POST);
|
||||
int typeId = combinedBlockId >> 4;
|
||||
|
||||
return typeId == Material.WALL_SIGN.getId()
|
||||
|| typeId == Material.SIGN_POST.getId();
|
||||
}
|
||||
|
||||
public boolean isAir(int combinedBlockId) {
|
||||
|
@ -249,16 +344,17 @@ public class NmsManager implements INmsManager {
|
|||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public int getMaterialId(Material material) {
|
||||
return material.getId() << 4;
|
||||
}
|
||||
|
||||
public Set<Integer> getMaterialIds(Material material) {
|
||||
return null;
|
||||
}
|
||||
Set<Integer> ids = new HashSet<>();
|
||||
int blockId = material.getId() << 4;
|
||||
Block block = Block.getById(material.getId());
|
||||
ImmutableList<IBlockData> blockDataList = block.s().a();
|
||||
|
||||
public int getTypeId(int combinedBlockId) {
|
||||
return combinedBlockId & ~(0x0F);
|
||||
for(IBlockData blockData : blockDataList) {
|
||||
ids.add(blockId | block.toLegacyData(blockData));
|
||||
}
|
||||
|
||||
return ids;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
|
@ -289,4 +385,27 @@ public class NmsManager implements INmsManager {
|
|||
|
||||
return chunk != null ? chunk.getBlockData(new BlockPosition(x, y, z)) : null;
|
||||
}
|
||||
|
||||
private Set<Integer> convertMaterialsToSet(Material[] materials) {
|
||||
Set<Integer> ids = new HashSet<>();
|
||||
|
||||
for(Material material : materials) {
|
||||
ids.addAll(getMaterialIds(material));
|
||||
}
|
||||
|
||||
return ids;
|
||||
}
|
||||
|
||||
private int[] convertMaterialsToIds(Material[] materials) {
|
||||
Set<Integer> ids = convertMaterialsToSet(materials);
|
||||
|
||||
int[] result = new int[ids.size()];
|
||||
int index = 0;
|
||||
|
||||
for(int id : ids) {
|
||||
result[index++] = id;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,7 +36,8 @@ public class BlockInfo implements IBlockInfo {
|
|||
}
|
||||
|
||||
public int getCombinedId() {
|
||||
return Block.getCombinedId(this.blockData);
|
||||
Block block = this.blockData.getBlock();
|
||||
return (Block.getId(block) << 4) | block.toLegacyData(this.blockData);
|
||||
}
|
||||
|
||||
public IBlockData getBlockData() {
|
||||
|
|
|
@ -6,16 +6,9 @@
|
|||
|
||||
package com.lishid.orebfuscator.nms.v1_12_R1;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.lishid.orebfuscator.types.ConfigDefaults;
|
||||
import net.minecraft.server.v1_12_R1.Block;
|
||||
import net.minecraft.server.v1_12_R1.BlockPosition;
|
||||
import net.minecraft.server.v1_12_R1.Chunk;
|
||||
import net.minecraft.server.v1_12_R1.ChunkProviderServer;
|
||||
import net.minecraft.server.v1_12_R1.IBlockData;
|
||||
import net.minecraft.server.v1_12_R1.IChatBaseComponent;
|
||||
import net.minecraft.server.v1_12_R1.Packet;
|
||||
import net.minecraft.server.v1_12_R1.TileEntity;
|
||||
import net.minecraft.server.v1_12_R1.WorldServer;
|
||||
import net.minecraft.server.v1_12_R1.*;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
|
@ -31,10 +24,12 @@ import com.lishid.orebfuscator.nms.INBT;
|
|||
import com.lishid.orebfuscator.nms.INmsManager;
|
||||
import com.lishid.orebfuscator.types.BlockCoord;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class NmsManager implements INmsManager {
|
||||
private ConfigDefaults configDefaults;
|
||||
private Material[] extraTransparentBlocks;
|
||||
private int maxLoadedCacheFiles;
|
||||
|
||||
public NmsManager() {
|
||||
|
@ -42,110 +37,199 @@ public class NmsManager implements INmsManager {
|
|||
|
||||
// Default World
|
||||
|
||||
this.configDefaults.defaultProximityHiderBlockIds = new int[] {
|
||||
getMaterialId(Material.DISPENSER),
|
||||
getMaterialId(Material.MOB_SPAWNER),
|
||||
getMaterialId(Material.CHEST),
|
||||
getMaterialId(Material.HOPPER),
|
||||
getMaterialId(Material.WORKBENCH),
|
||||
getMaterialId(Material.FURNACE),
|
||||
getMaterialId(Material.BURNING_FURNACE),
|
||||
getMaterialId(Material.ENCHANTMENT_TABLE),
|
||||
getMaterialId(Material.EMERALD_ORE),
|
||||
getMaterialId(Material.ENDER_CHEST),
|
||||
getMaterialId(Material.ANVIL),
|
||||
getMaterialId(Material.TRAPPED_CHEST),
|
||||
getMaterialId(Material.DIAMOND_ORE)
|
||||
};
|
||||
this.configDefaults.defaultProximityHiderBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.DISPENSER,
|
||||
Material.MOB_SPAWNER,
|
||||
Material.CHEST,
|
||||
Material.HOPPER,
|
||||
Material.WORKBENCH,
|
||||
Material.FURNACE,
|
||||
Material.BURNING_FURNACE,
|
||||
Material.ENCHANTMENT_TABLE,
|
||||
Material.EMERALD_ORE,
|
||||
Material.ENDER_CHEST,
|
||||
Material.ANVIL,
|
||||
Material.TRAPPED_CHEST,
|
||||
Material.DIAMOND_ORE
|
||||
});
|
||||
|
||||
this.configDefaults.defaultDarknessBlockIds = new int[] {
|
||||
getMaterialId(Material.MOB_SPAWNER),
|
||||
getMaterialId(Material.CHEST)
|
||||
};
|
||||
this.configDefaults.defaultDarknessBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.MOB_SPAWNER,
|
||||
Material.CHEST
|
||||
});
|
||||
|
||||
this.configDefaults.defaultMode1BlockId = getMaterialId(Material.STONE);
|
||||
this.configDefaults.defaultProximityHiderSpecialBlockId = getMaterialId(Material.STONE);
|
||||
this.configDefaults.defaultMode1BlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||
this.configDefaults.defaultProximityHiderSpecialBlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||
|
||||
// The End
|
||||
|
||||
this.configDefaults.endWorldRandomBlockIds = new int[] {
|
||||
getMaterialId(Material.BEDROCK),
|
||||
getMaterialId(Material.OBSIDIAN),
|
||||
getMaterialId(Material.ENDER_STONE),
|
||||
getMaterialId(Material.PURPUR_BLOCK),
|
||||
getMaterialId(Material.END_BRICKS)
|
||||
};
|
||||
this.configDefaults.endWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.BEDROCK,
|
||||
Material.OBSIDIAN,
|
||||
Material.ENDER_STONE,
|
||||
Material.PURPUR_BLOCK,
|
||||
Material.END_BRICKS
|
||||
});
|
||||
|
||||
this.configDefaults.endWorldObfuscateBlockIds = new int[] {
|
||||
getMaterialId(Material.ENDER_STONE)
|
||||
};
|
||||
this.configDefaults.endWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.ENDER_STONE
|
||||
});
|
||||
|
||||
this.configDefaults.endWorldMode1BlockId = getMaterialId(Material.ENDER_STONE);
|
||||
this.configDefaults.endWorldRequiredObfuscateBlockIds = new int[] { getMaterialId(Material.ENDER_STONE) };
|
||||
this.configDefaults.endWorldMode1BlockId = getMaterialIds(Material.ENDER_STONE).iterator().next();
|
||||
this.configDefaults.endWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] { Material.ENDER_STONE });
|
||||
|
||||
// Nether World
|
||||
|
||||
this.configDefaults.netherWorldRandomBlockIds = new int[] {
|
||||
getMaterialId(Material.GRAVEL),
|
||||
getMaterialId(Material.NETHERRACK),
|
||||
getMaterialId(Material.SOUL_SAND),
|
||||
getMaterialId(Material.NETHER_BRICK),
|
||||
getMaterialId(Material.QUARTZ_ORE)
|
||||
};
|
||||
this.configDefaults.netherWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.GRAVEL,
|
||||
Material.NETHERRACK,
|
||||
Material.SOUL_SAND,
|
||||
Material.NETHER_BRICK,
|
||||
Material.QUARTZ_ORE
|
||||
});
|
||||
|
||||
this.configDefaults.netherWorldObfuscateBlockIds = new int[] {
|
||||
getMaterialId(Material.NETHERRACK),
|
||||
getMaterialId(Material.QUARTZ_ORE)
|
||||
};
|
||||
this.configDefaults.netherWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.NETHERRACK,
|
||||
Material.QUARTZ_ORE
|
||||
});
|
||||
|
||||
this.configDefaults.netherWorldMode1BlockId = getMaterialId(Material.NETHERRACK);
|
||||
this.configDefaults.netherWorldMode1BlockId = getMaterialIds(Material.NETHERRACK).iterator().next();
|
||||
|
||||
this.configDefaults.netherWorldRequiredObfuscateBlockIds = new int[] {
|
||||
getMaterialId(Material.NETHERRACK)
|
||||
};
|
||||
this.configDefaults.netherWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.NETHERRACK
|
||||
});
|
||||
|
||||
// Normal World
|
||||
|
||||
this.configDefaults.normalWorldRandomBlockIds = new int[] {
|
||||
getMaterialId(Material.STONE),
|
||||
getMaterialId(Material.COBBLESTONE),
|
||||
getMaterialId(Material.WOOD),
|
||||
getMaterialId(Material.GOLD_ORE),
|
||||
getMaterialId(Material.IRON_ORE),
|
||||
getMaterialId(Material.COAL_ORE),
|
||||
getMaterialId(Material.LAPIS_ORE),
|
||||
getMaterialId(Material.TNT),
|
||||
getMaterialId(Material.MOSSY_COBBLESTONE),
|
||||
getMaterialId(Material.OBSIDIAN),
|
||||
getMaterialId(Material.DIAMOND_ORE),
|
||||
getMaterialId(Material.REDSTONE_ORE),
|
||||
getMaterialId(Material.CLAY),
|
||||
getMaterialId(Material.EMERALD_ORE)
|
||||
};
|
||||
this.configDefaults.normalWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.STONE,
|
||||
Material.COBBLESTONE,
|
||||
Material.WOOD,
|
||||
Material.GOLD_ORE,
|
||||
Material.IRON_ORE,
|
||||
Material.COAL_ORE,
|
||||
Material.LAPIS_ORE,
|
||||
Material.TNT,
|
||||
Material.MOSSY_COBBLESTONE,
|
||||
Material.OBSIDIAN,
|
||||
Material.DIAMOND_ORE,
|
||||
Material.REDSTONE_ORE,
|
||||
Material.CLAY,
|
||||
Material.EMERALD_ORE
|
||||
});
|
||||
|
||||
this.configDefaults.normalWorldObfuscateBlockIds = new int[] {
|
||||
getMaterialId(Material.GOLD_ORE),
|
||||
getMaterialId(Material.IRON_ORE),
|
||||
getMaterialId(Material.COAL_ORE),
|
||||
getMaterialId(Material.LAPIS_ORE),
|
||||
getMaterialId(Material.CHEST),
|
||||
getMaterialId(Material.DIAMOND_ORE),
|
||||
getMaterialId(Material.ENDER_CHEST),
|
||||
getMaterialId(Material.REDSTONE_ORE),
|
||||
getMaterialId(Material.CLAY),
|
||||
getMaterialId(Material.EMERALD_ORE)
|
||||
};
|
||||
this.configDefaults.normalWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.GOLD_ORE,
|
||||
Material.IRON_ORE,
|
||||
Material.COAL_ORE,
|
||||
Material.LAPIS_ORE,
|
||||
Material.CHEST,
|
||||
Material.DIAMOND_ORE,
|
||||
Material.ENDER_CHEST,
|
||||
Material.REDSTONE_ORE,
|
||||
Material.CLAY,
|
||||
Material.EMERALD_ORE
|
||||
});
|
||||
|
||||
this.configDefaults.normalWorldMode1BlockId = getMaterialId(Material.STONE);
|
||||
this.configDefaults.normalWorldMode1BlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||
|
||||
this.configDefaults.normalWorldRequiredObfuscateBlockIds = new int[] {
|
||||
getMaterialId(Material.STONE)
|
||||
this.configDefaults.normalWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.STONE
|
||||
});
|
||||
|
||||
// Extra transparent blocks
|
||||
|
||||
this.extraTransparentBlocks = new Material[] {
|
||||
Material.ACACIA_DOOR,
|
||||
Material.ACACIA_FENCE,
|
||||
Material.ACACIA_FENCE_GATE,
|
||||
Material.ACACIA_STAIRS,
|
||||
Material.ANVIL,
|
||||
Material.BEACON,
|
||||
Material.BED_BLOCK,
|
||||
Material.BIRCH_DOOR,
|
||||
Material.BIRCH_FENCE,
|
||||
Material.BIRCH_FENCE_GATE,
|
||||
Material.BIRCH_WOOD_STAIRS,
|
||||
Material.BREWING_STAND,
|
||||
Material.BRICK_STAIRS,
|
||||
Material.CACTUS,
|
||||
Material.CAKE_BLOCK,
|
||||
Material.CAULDRON,
|
||||
Material.COBBLESTONE_STAIRS,
|
||||
Material.COBBLE_WALL,
|
||||
Material.DARK_OAK_DOOR,
|
||||
Material.DARK_OAK_FENCE,
|
||||
Material.DARK_OAK_FENCE_GATE,
|
||||
Material.DARK_OAK_STAIRS,
|
||||
Material.DAYLIGHT_DETECTOR,
|
||||
Material.DAYLIGHT_DETECTOR_INVERTED,
|
||||
Material.DRAGON_EGG,
|
||||
Material.ENCHANTMENT_TABLE,
|
||||
Material.FENCE,
|
||||
Material.FENCE_GATE,
|
||||
Material.GLASS,
|
||||
Material.HOPPER,
|
||||
Material.ICE,
|
||||
Material.IRON_DOOR_BLOCK,
|
||||
Material.IRON_FENCE,
|
||||
Material.IRON_PLATE,
|
||||
Material.IRON_TRAPDOOR,
|
||||
Material.JUNGLE_DOOR,
|
||||
Material.JUNGLE_FENCE,
|
||||
Material.JUNGLE_FENCE_GATE,
|
||||
Material.JUNGLE_WOOD_STAIRS,
|
||||
Material.LAVA,
|
||||
Material.LEAVES,
|
||||
Material.LEAVES_2,
|
||||
Material.MOB_SPAWNER,
|
||||
Material.NETHER_BRICK_STAIRS,
|
||||
Material.NETHER_FENCE,
|
||||
Material.PACKED_ICE,
|
||||
Material.PISTON_BASE,
|
||||
Material.PISTON_EXTENSION,
|
||||
Material.PISTON_MOVING_PIECE,
|
||||
Material.PISTON_STICKY_BASE,
|
||||
Material.PURPUR_SLAB,
|
||||
Material.PURPUR_STAIRS,
|
||||
Material.QUARTZ_STAIRS,
|
||||
Material.RED_SANDSTONE_STAIRS,
|
||||
Material.SANDSTONE_STAIRS,
|
||||
Material.SIGN_POST,
|
||||
Material.SLIME_BLOCK,
|
||||
Material.SMOOTH_STAIRS,
|
||||
Material.SPRUCE_DOOR,
|
||||
Material.SPRUCE_FENCE,
|
||||
Material.SPRUCE_FENCE_GATE,
|
||||
Material.SPRUCE_WOOD_STAIRS,
|
||||
Material.STAINED_GLASS,
|
||||
Material.STAINED_GLASS_PANE,
|
||||
Material.STANDING_BANNER,
|
||||
Material.STATIONARY_LAVA,
|
||||
Material.STATIONARY_WATER,
|
||||
Material.STEP,
|
||||
Material.STONE_PLATE,
|
||||
Material.STONE_SLAB2,
|
||||
Material.THIN_GLASS,
|
||||
Material.TRAP_DOOR,
|
||||
Material.WALL_BANNER,
|
||||
Material.WALL_SIGN,
|
||||
Material.WATER,
|
||||
Material.WEB,
|
||||
Material.WOODEN_DOOR,
|
||||
Material.WOOD_PLATE,
|
||||
Material.WOOD_STAIRS,
|
||||
Material.WOOD_STEP
|
||||
};
|
||||
}
|
||||
|
||||
public ConfigDefaults getConfigDefaults() {
|
||||
return this.configDefaults;
|
||||
}
|
||||
|
||||
public Material[] getExtraTransparentBlocks() {
|
||||
return this.extraTransparentBlocks;
|
||||
}
|
||||
|
||||
public void setMaxLoadedCacheFiles(int value) {
|
||||
this.maxLoadedCacheFiles = value;
|
||||
|
@ -218,9 +302,12 @@ public class NmsManager implements INmsManager {
|
|||
|| item == Material.DIAMOND_HOE;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public boolean isSign(int combinedBlockId) {
|
||||
return combinedBlockId == getMaterialId(Material.WALL_SIGN)
|
||||
|| combinedBlockId == getMaterialId(Material.SIGN_POST);
|
||||
int typeId = combinedBlockId >> 4;
|
||||
|
||||
return typeId == Material.WALL_SIGN.getId()
|
||||
|| typeId == Material.SIGN_POST.getId();
|
||||
}
|
||||
|
||||
public boolean isAir(int combinedBlockId) {
|
||||
|
@ -249,16 +336,17 @@ public class NmsManager implements INmsManager {
|
|||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public int getMaterialId(Material material) {
|
||||
return material.getId() << 4;
|
||||
}
|
||||
|
||||
public Set<Integer> getMaterialIds(Material material) {
|
||||
return null;
|
||||
}
|
||||
Set<Integer> ids = new HashSet<>();
|
||||
int blockId = material.getId() << 4;
|
||||
Block block = Block.getById(material.getId());
|
||||
ImmutableList<IBlockData> blockDataList = block.s().a();
|
||||
|
||||
public int getTypeId(int combinedBlockId) {
|
||||
return combinedBlockId & ~(0x0F);
|
||||
for(IBlockData blockData : blockDataList) {
|
||||
ids.add(blockId | block.toLegacyData(blockData));
|
||||
}
|
||||
|
||||
return ids;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
|
@ -289,4 +377,27 @@ public class NmsManager implements INmsManager {
|
|||
|
||||
return chunk != null ? chunk.getBlockData(new BlockPosition(x, y, z)) : null;
|
||||
}
|
||||
|
||||
private Set<Integer> convertMaterialsToSet(Material[] materials) {
|
||||
Set<Integer> ids = new HashSet<>();
|
||||
|
||||
for(Material material : materials) {
|
||||
ids.addAll(getMaterialIds(material));
|
||||
}
|
||||
|
||||
return ids;
|
||||
}
|
||||
|
||||
private int[] convertMaterialsToIds(Material[] materials) {
|
||||
Set<Integer> ids = convertMaterialsToSet(materials);
|
||||
|
||||
int[] result = new int[ids.size()];
|
||||
int index = 0;
|
||||
|
||||
for(int id : ids) {
|
||||
result[index++] = id;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -44,6 +44,7 @@ public class NmsManager implements INmsManager {
|
|||
private Set<Integer> BLOCK_ID_SIGNS;
|
||||
|
||||
private ConfigDefaults configDefaults;
|
||||
private Material[] extraTransparentBlocks;
|
||||
private int maxLoadedCacheFiles;
|
||||
private HashMap<Material, Set<Integer>> materialIds;
|
||||
|
||||
|
@ -158,6 +159,233 @@ public class NmsManager implements INmsManager {
|
|||
this.configDefaults.normalWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.STONE
|
||||
});
|
||||
|
||||
// Extra transparent blocks
|
||||
|
||||
this.extraTransparentBlocks = new Material[] {
|
||||
Material.ACACIA_DOOR,
|
||||
Material.ACACIA_FENCE,
|
||||
Material.ACACIA_FENCE_GATE,
|
||||
Material.ACACIA_LEAVES,
|
||||
Material.ACACIA_PRESSURE_PLATE,
|
||||
Material.ACACIA_SLAB,
|
||||
Material.ACACIA_STAIRS,
|
||||
Material.ACACIA_TRAPDOOR,
|
||||
Material.ANVIL,
|
||||
Material.BEACON,
|
||||
Material.BIRCH_DOOR,
|
||||
Material.BIRCH_FENCE,
|
||||
Material.BIRCH_FENCE_GATE,
|
||||
Material.BIRCH_LEAVES,
|
||||
Material.BIRCH_PRESSURE_PLATE,
|
||||
Material.BIRCH_SLAB,
|
||||
Material.BIRCH_STAIRS,
|
||||
Material.BIRCH_TRAPDOOR,
|
||||
Material.BLACK_BANNER,
|
||||
Material.BLACK_BED,
|
||||
Material.BLACK_STAINED_GLASS,
|
||||
Material.BLACK_STAINED_GLASS_PANE,
|
||||
Material.BLACK_WALL_BANNER,
|
||||
Material.BLUE_BANNER,
|
||||
Material.BLUE_BED,
|
||||
Material.BLUE_ICE,
|
||||
Material.BLUE_STAINED_GLASS,
|
||||
Material.BLUE_STAINED_GLASS_PANE,
|
||||
Material.BLUE_WALL_BANNER,
|
||||
Material.BREWING_STAND,
|
||||
Material.BRICK_SLAB,
|
||||
Material.BRICK_STAIRS,
|
||||
Material.BRAIN_CORAL,
|
||||
Material.BRAIN_CORAL_FAN,
|
||||
Material.BRAIN_CORAL_WALL_FAN,
|
||||
Material.BROWN_BANNER,
|
||||
Material.BROWN_BED,
|
||||
Material.BROWN_STAINED_GLASS,
|
||||
Material.BROWN_STAINED_GLASS_PANE,
|
||||
Material.BROWN_WALL_BANNER,
|
||||
Material.BUBBLE_COLUMN,
|
||||
Material.BUBBLE_CORAL,
|
||||
Material.BUBBLE_CORAL_FAN,
|
||||
Material.BUBBLE_CORAL_WALL_FAN,
|
||||
Material.CACTUS,
|
||||
Material.CAKE,
|
||||
Material.CAULDRON,
|
||||
Material.CHIPPED_ANVIL,
|
||||
Material.COBBLESTONE_SLAB,
|
||||
Material.COBBLESTONE_STAIRS,
|
||||
Material.COBBLESTONE_WALL,
|
||||
Material.COBWEB,
|
||||
Material.CONDUIT,
|
||||
Material.CYAN_BANNER,
|
||||
Material.CYAN_BED,
|
||||
Material.CYAN_STAINED_GLASS,
|
||||
Material.CYAN_STAINED_GLASS_PANE,
|
||||
Material.CYAN_WALL_BANNER,
|
||||
Material.DAMAGED_ANVIL,
|
||||
Material.DARK_OAK_DOOR,
|
||||
Material.DARK_OAK_FENCE,
|
||||
Material.DARK_OAK_FENCE_GATE,
|
||||
Material.DARK_OAK_LEAVES,
|
||||
Material.DARK_OAK_PRESSURE_PLATE,
|
||||
Material.DARK_OAK_SLAB,
|
||||
Material.DARK_OAK_STAIRS,
|
||||
Material.DARK_OAK_TRAPDOOR,
|
||||
Material.DARK_PRISMARINE_SLAB,
|
||||
Material.DARK_PRISMARINE_STAIRS,
|
||||
Material.DAYLIGHT_DETECTOR,
|
||||
Material.DEAD_BRAIN_CORAL_FAN,
|
||||
Material.DEAD_BRAIN_CORAL_WALL_FAN,
|
||||
Material.DEAD_BUBBLE_CORAL_FAN,
|
||||
Material.DEAD_BUBBLE_CORAL_WALL_FAN,
|
||||
Material.DEAD_FIRE_CORAL_FAN,
|
||||
Material.DEAD_FIRE_CORAL_WALL_FAN,
|
||||
Material.DEAD_HORN_CORAL_FAN,
|
||||
Material.DEAD_HORN_CORAL_WALL_FAN,
|
||||
Material.DEAD_TUBE_CORAL_FAN,
|
||||
Material.DEAD_TUBE_CORAL_WALL_FAN,
|
||||
Material.DRAGON_EGG,
|
||||
Material.FARMLAND,
|
||||
Material.FIRE_CORAL,
|
||||
Material.FIRE_CORAL_FAN,
|
||||
Material.FIRE_CORAL_WALL_FAN,
|
||||
Material.FROSTED_ICE,
|
||||
Material.GLASS,
|
||||
Material.GLASS_PANE,
|
||||
Material.GRAY_BANNER,
|
||||
Material.GRAY_BED,
|
||||
Material.GRAY_STAINED_GLASS,
|
||||
Material.GRAY_STAINED_GLASS_PANE,
|
||||
Material.GRAY_WALL_BANNER,
|
||||
Material.GREEN_BANNER,
|
||||
Material.GREEN_BED,
|
||||
Material.GREEN_STAINED_GLASS,
|
||||
Material.GREEN_STAINED_GLASS_PANE,
|
||||
Material.GREEN_WALL_BANNER,
|
||||
Material.HEAVY_WEIGHTED_PRESSURE_PLATE,
|
||||
Material.HOPPER,
|
||||
Material.HORN_CORAL,
|
||||
Material.HORN_CORAL_FAN,
|
||||
Material.HORN_CORAL_WALL_FAN,
|
||||
Material.ICE,
|
||||
Material.IRON_BARS,
|
||||
Material.IRON_DOOR,
|
||||
Material.IRON_TRAPDOOR,
|
||||
Material.JUNGLE_DOOR,
|
||||
Material.JUNGLE_FENCE,
|
||||
Material.JUNGLE_FENCE_GATE,
|
||||
Material.JUNGLE_LEAVES,
|
||||
Material.JUNGLE_PRESSURE_PLATE,
|
||||
Material.JUNGLE_SLAB,
|
||||
Material.JUNGLE_STAIRS,
|
||||
Material.JUNGLE_TRAPDOOR,
|
||||
Material.KELP,
|
||||
Material.KELP_PLANT,
|
||||
Material.LIGHT_BLUE_BANNER,
|
||||
Material.LIGHT_BLUE_BED,
|
||||
Material.LIGHT_BLUE_STAINED_GLASS,
|
||||
Material.LIGHT_BLUE_STAINED_GLASS_PANE,
|
||||
Material.LIGHT_BLUE_WALL_BANNER,
|
||||
Material.LIGHT_GRAY_BANNER,
|
||||
Material.LIGHT_GRAY_BED,
|
||||
Material.LIGHT_GRAY_STAINED_GLASS,
|
||||
Material.LIGHT_GRAY_STAINED_GLASS_PANE,
|
||||
Material.LIGHT_GRAY_WALL_BANNER,
|
||||
Material.LIGHT_WEIGHTED_PRESSURE_PLATE,
|
||||
Material.LIME_BANNER,
|
||||
Material.LIME_BED,
|
||||
Material.LIME_STAINED_GLASS,
|
||||
Material.LIME_STAINED_GLASS_PANE,
|
||||
Material.LIME_WALL_BANNER,
|
||||
Material.MAGENTA_BANNER,
|
||||
Material.MAGENTA_BED,
|
||||
Material.MAGENTA_STAINED_GLASS,
|
||||
Material.MAGENTA_STAINED_GLASS_PANE,
|
||||
Material.MAGENTA_WALL_BANNER,
|
||||
Material.MOSSY_COBBLESTONE_WALL,
|
||||
Material.MOVING_PISTON,
|
||||
Material.NETHER_BRICK_FENCE,
|
||||
Material.NETHER_BRICK_SLAB,
|
||||
Material.NETHER_BRICK_STAIRS,
|
||||
Material.OAK_DOOR,
|
||||
Material.OAK_FENCE,
|
||||
Material.OAK_FENCE_GATE,
|
||||
Material.OAK_LEAVES,
|
||||
Material.OAK_PRESSURE_PLATE,
|
||||
Material.OAK_SLAB,
|
||||
Material.OAK_STAIRS,
|
||||
Material.OAK_TRAPDOOR,
|
||||
Material.ORANGE_BANNER,
|
||||
Material.ORANGE_BED,
|
||||
Material.ORANGE_STAINED_GLASS,
|
||||
Material.ORANGE_STAINED_GLASS_PANE,
|
||||
Material.ORANGE_WALL_BANNER,
|
||||
Material.PACKED_ICE,
|
||||
Material.PETRIFIED_OAK_SLAB,
|
||||
Material.PINK_BANNER,
|
||||
Material.PINK_BED,
|
||||
Material.PINK_STAINED_GLASS,
|
||||
Material.PINK_STAINED_GLASS_PANE,
|
||||
Material.PINK_WALL_BANNER,
|
||||
Material.PISTON,
|
||||
Material.PISTON_HEAD,
|
||||
Material.PRISMARINE_BRICK_SLAB,
|
||||
Material.PRISMARINE_BRICK_STAIRS,
|
||||
Material.PRISMARINE_SLAB,
|
||||
Material.PRISMARINE_STAIRS,
|
||||
Material.PURPLE_BANNER,
|
||||
Material.PURPLE_BED,
|
||||
Material.PURPLE_STAINED_GLASS,
|
||||
Material.PURPLE_STAINED_GLASS_PANE,
|
||||
Material.PURPLE_WALL_BANNER,
|
||||
Material.PURPUR_SLAB,
|
||||
Material.PURPUR_STAIRS,
|
||||
Material.QUARTZ_SLAB,
|
||||
Material.QUARTZ_STAIRS,
|
||||
Material.RED_BANNER,
|
||||
Material.RED_BED,
|
||||
Material.RED_SANDSTONE_SLAB,
|
||||
Material.RED_SANDSTONE_STAIRS,
|
||||
Material.RED_STAINED_GLASS,
|
||||
Material.RED_STAINED_GLASS_PANE,
|
||||
Material.RED_WALL_BANNER,
|
||||
Material.SANDSTONE_SLAB,
|
||||
Material.SANDSTONE_STAIRS,
|
||||
Material.SEAGRASS,
|
||||
Material.SEA_PICKLE,
|
||||
Material.SIGN,
|
||||
Material.SLIME_BLOCK,
|
||||
Material.SPAWNER,
|
||||
Material.SPRUCE_DOOR,
|
||||
Material.SPRUCE_FENCE,
|
||||
Material.SPRUCE_FENCE_GATE,
|
||||
Material.SPRUCE_LEAVES,
|
||||
Material.SPRUCE_PRESSURE_PLATE,
|
||||
Material.SPRUCE_SLAB,
|
||||
Material.SPRUCE_STAIRS,
|
||||
Material.SPRUCE_TRAPDOOR,
|
||||
Material.STICKY_PISTON,
|
||||
Material.STONE_BRICK_SLAB,
|
||||
Material.STONE_BRICK_STAIRS,
|
||||
Material.STONE_PRESSURE_PLATE,
|
||||
Material.STONE_SLAB,
|
||||
Material.TALL_SEAGRASS,
|
||||
Material.TUBE_CORAL,
|
||||
Material.TUBE_CORAL_FAN,
|
||||
Material.TUBE_CORAL_WALL_FAN,
|
||||
Material.TURTLE_EGG,
|
||||
Material.WALL_SIGN,
|
||||
Material.WATER,
|
||||
Material.WHITE_BANNER,
|
||||
Material.WHITE_BED,
|
||||
Material.WHITE_STAINED_GLASS,
|
||||
Material.WHITE_STAINED_GLASS_PANE,
|
||||
Material.WHITE_WALL_BANNER,
|
||||
Material.YELLOW_BANNER,
|
||||
Material.YELLOW_BED,
|
||||
Material.YELLOW_STAINED_GLASS,
|
||||
Material.YELLOW_STAINED_GLASS_PANE,
|
||||
Material.YELLOW_WALL_BANNER
|
||||
};
|
||||
}
|
||||
|
||||
private void initBlockIds() {
|
||||
|
@ -184,6 +412,10 @@ public class NmsManager implements INmsManager {
|
|||
return this.configDefaults;
|
||||
}
|
||||
|
||||
public Material[] getExtraTransparentBlocks() {
|
||||
return this.extraTransparentBlocks;
|
||||
}
|
||||
|
||||
public void setMaxLoadedCacheFiles(int value) {
|
||||
this.maxLoadedCacheFiles = value;
|
||||
}
|
||||
|
@ -281,10 +513,6 @@ public class NmsManager implements INmsManager {
|
|||
return this.materialIds.get(material);
|
||||
}
|
||||
|
||||
public int getTypeId(int combinedBlockId) {
|
||||
return combinedBlockId;
|
||||
}
|
||||
|
||||
public boolean sendBlockChange(Player player, Location blockLocation) {
|
||||
IBlockData blockData = getBlockData(blockLocation.getWorld(), blockLocation.getBlockX(), blockLocation.getBlockY(), blockLocation.getBlockZ(), false);
|
||||
|
||||
|
|
|
@ -37,6 +37,7 @@ public class NmsManager implements INmsManager {
|
|||
|
||||
private ConfigDefaults configDefaults;
|
||||
private int maxLoadedCacheFiles;
|
||||
private Material[] extraTransparentBlocks;
|
||||
private HashMap<Material, Set<Integer>> materialIds;
|
||||
|
||||
public NmsManager() {
|
||||
|
@ -150,6 +151,238 @@ public class NmsManager implements INmsManager {
|
|||
this.configDefaults.normalWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.STONE
|
||||
});
|
||||
|
||||
// Extra transparent blocks
|
||||
|
||||
this.extraTransparentBlocks = new Material[] {
|
||||
Material.ACACIA_DOOR,
|
||||
Material.ACACIA_FENCE,
|
||||
Material.ACACIA_FENCE_GATE,
|
||||
Material.ACACIA_LEAVES,
|
||||
Material.ACACIA_PRESSURE_PLATE,
|
||||
Material.ACACIA_SLAB,
|
||||
Material.ACACIA_STAIRS,
|
||||
Material.ACACIA_TRAPDOOR,
|
||||
Material.ANVIL,
|
||||
Material.BEACON,
|
||||
Material.BIRCH_DOOR,
|
||||
Material.BIRCH_FENCE,
|
||||
Material.BIRCH_FENCE_GATE,
|
||||
Material.BIRCH_LEAVES,
|
||||
Material.BIRCH_PRESSURE_PLATE,
|
||||
Material.BIRCH_SLAB,
|
||||
Material.BIRCH_STAIRS,
|
||||
Material.BIRCH_TRAPDOOR,
|
||||
Material.BLACK_BANNER,
|
||||
Material.BLACK_BED,
|
||||
Material.BLACK_STAINED_GLASS,
|
||||
Material.BLACK_STAINED_GLASS_PANE,
|
||||
Material.BLACK_WALL_BANNER,
|
||||
Material.BLUE_BANNER,
|
||||
Material.BLUE_BED,
|
||||
Material.BLUE_ICE,
|
||||
Material.BLUE_STAINED_GLASS,
|
||||
Material.BLUE_STAINED_GLASS_PANE,
|
||||
Material.BLUE_WALL_BANNER,
|
||||
Material.BREWING_STAND,
|
||||
Material.BRICK_SLAB,
|
||||
Material.BRICK_STAIRS,
|
||||
Material.BRAIN_CORAL,
|
||||
Material.BRAIN_CORAL_FAN,
|
||||
Material.BRAIN_CORAL_WALL_FAN,
|
||||
Material.BROWN_BANNER,
|
||||
Material.BROWN_BED,
|
||||
Material.BROWN_STAINED_GLASS,
|
||||
Material.BROWN_STAINED_GLASS_PANE,
|
||||
Material.BROWN_WALL_BANNER,
|
||||
Material.BUBBLE_COLUMN,
|
||||
Material.BUBBLE_CORAL,
|
||||
Material.BUBBLE_CORAL_FAN,
|
||||
Material.BUBBLE_CORAL_WALL_FAN,
|
||||
Material.CACTUS,
|
||||
Material.CAKE,
|
||||
Material.CAULDRON,
|
||||
Material.CHIPPED_ANVIL,
|
||||
Material.COBBLESTONE_SLAB,
|
||||
Material.COBBLESTONE_STAIRS,
|
||||
Material.COBBLESTONE_WALL,
|
||||
Material.COBWEB,
|
||||
Material.CONDUIT,
|
||||
Material.CYAN_BANNER,
|
||||
Material.CYAN_BED,
|
||||
Material.CYAN_STAINED_GLASS,
|
||||
Material.CYAN_STAINED_GLASS_PANE,
|
||||
Material.CYAN_WALL_BANNER,
|
||||
Material.DAMAGED_ANVIL,
|
||||
Material.DARK_OAK_DOOR,
|
||||
Material.DARK_OAK_FENCE,
|
||||
Material.DARK_OAK_FENCE_GATE,
|
||||
Material.DARK_OAK_LEAVES,
|
||||
Material.DARK_OAK_PRESSURE_PLATE,
|
||||
Material.DARK_OAK_SLAB,
|
||||
Material.DARK_OAK_STAIRS,
|
||||
Material.DARK_OAK_TRAPDOOR,
|
||||
Material.DARK_PRISMARINE_SLAB,
|
||||
Material.DARK_PRISMARINE_STAIRS,
|
||||
Material.DAYLIGHT_DETECTOR,
|
||||
Material.DEAD_BRAIN_CORAL,
|
||||
Material.DEAD_BRAIN_CORAL_FAN,
|
||||
Material.DEAD_BRAIN_CORAL_WALL_FAN,
|
||||
Material.DEAD_BUBBLE_CORAL,
|
||||
Material.DEAD_BUBBLE_CORAL_FAN,
|
||||
Material.DEAD_BUBBLE_CORAL_WALL_FAN,
|
||||
Material.DEAD_FIRE_CORAL,
|
||||
Material.DEAD_FIRE_CORAL_FAN,
|
||||
Material.DEAD_FIRE_CORAL_WALL_FAN,
|
||||
Material.DEAD_HORN_CORAL,
|
||||
Material.DEAD_HORN_CORAL_FAN,
|
||||
Material.DEAD_HORN_CORAL_WALL_FAN,
|
||||
Material.DEAD_TUBE_CORAL,
|
||||
Material.DEAD_TUBE_CORAL_FAN,
|
||||
Material.DEAD_TUBE_CORAL_WALL_FAN,
|
||||
Material.DRAGON_EGG,
|
||||
Material.FARMLAND,
|
||||
Material.FIRE_CORAL,
|
||||
Material.FIRE_CORAL_FAN,
|
||||
Material.FIRE_CORAL_WALL_FAN,
|
||||
Material.FROSTED_ICE,
|
||||
Material.GLASS,
|
||||
Material.GLASS_PANE,
|
||||
Material.GRAY_BANNER,
|
||||
Material.GRAY_BED,
|
||||
Material.GRAY_STAINED_GLASS,
|
||||
Material.GRAY_STAINED_GLASS_PANE,
|
||||
Material.GRAY_WALL_BANNER,
|
||||
Material.GREEN_BANNER,
|
||||
Material.GREEN_BED,
|
||||
Material.GREEN_STAINED_GLASS,
|
||||
Material.GREEN_STAINED_GLASS_PANE,
|
||||
Material.GREEN_WALL_BANNER,
|
||||
Material.HEAVY_WEIGHTED_PRESSURE_PLATE,
|
||||
Material.HOPPER,
|
||||
Material.HORN_CORAL,
|
||||
Material.HORN_CORAL_FAN,
|
||||
Material.HORN_CORAL_WALL_FAN,
|
||||
Material.ICE,
|
||||
Material.IRON_BARS,
|
||||
Material.IRON_DOOR,
|
||||
Material.IRON_TRAPDOOR,
|
||||
Material.JUNGLE_DOOR,
|
||||
Material.JUNGLE_FENCE,
|
||||
Material.JUNGLE_FENCE_GATE,
|
||||
Material.JUNGLE_LEAVES,
|
||||
Material.JUNGLE_PRESSURE_PLATE,
|
||||
Material.JUNGLE_SLAB,
|
||||
Material.JUNGLE_STAIRS,
|
||||
Material.JUNGLE_TRAPDOOR,
|
||||
Material.KELP,
|
||||
Material.KELP_PLANT,
|
||||
Material.LIGHT_BLUE_BANNER,
|
||||
Material.LIGHT_BLUE_BED,
|
||||
Material.LIGHT_BLUE_STAINED_GLASS,
|
||||
Material.LIGHT_BLUE_STAINED_GLASS_PANE,
|
||||
Material.LIGHT_BLUE_WALL_BANNER,
|
||||
Material.LIGHT_GRAY_BANNER,
|
||||
Material.LIGHT_GRAY_BED,
|
||||
Material.LIGHT_GRAY_STAINED_GLASS,
|
||||
Material.LIGHT_GRAY_STAINED_GLASS_PANE,
|
||||
Material.LIGHT_GRAY_WALL_BANNER,
|
||||
Material.LIGHT_WEIGHTED_PRESSURE_PLATE,
|
||||
Material.LIME_BANNER,
|
||||
Material.LIME_BED,
|
||||
Material.LIME_STAINED_GLASS,
|
||||
Material.LIME_STAINED_GLASS_PANE,
|
||||
Material.LIME_WALL_BANNER,
|
||||
Material.MAGENTA_BANNER,
|
||||
Material.MAGENTA_BED,
|
||||
Material.MAGENTA_STAINED_GLASS,
|
||||
Material.MAGENTA_STAINED_GLASS_PANE,
|
||||
Material.MAGENTA_WALL_BANNER,
|
||||
Material.MOSSY_COBBLESTONE_WALL,
|
||||
Material.MOVING_PISTON,
|
||||
Material.NETHER_BRICK_FENCE,
|
||||
Material.NETHER_BRICK_SLAB,
|
||||
Material.NETHER_BRICK_STAIRS,
|
||||
Material.OAK_DOOR,
|
||||
Material.OAK_FENCE,
|
||||
Material.OAK_FENCE_GATE,
|
||||
Material.OAK_LEAVES,
|
||||
Material.OAK_PRESSURE_PLATE,
|
||||
Material.OAK_SLAB,
|
||||
Material.OAK_STAIRS,
|
||||
Material.OAK_TRAPDOOR,
|
||||
Material.ORANGE_BANNER,
|
||||
Material.ORANGE_BED,
|
||||
Material.ORANGE_STAINED_GLASS,
|
||||
Material.ORANGE_STAINED_GLASS_PANE,
|
||||
Material.ORANGE_WALL_BANNER,
|
||||
Material.PACKED_ICE,
|
||||
Material.PETRIFIED_OAK_SLAB,
|
||||
Material.PINK_BANNER,
|
||||
Material.PINK_BED,
|
||||
Material.PINK_STAINED_GLASS,
|
||||
Material.PINK_STAINED_GLASS_PANE,
|
||||
Material.PINK_WALL_BANNER,
|
||||
Material.PISTON,
|
||||
Material.PISTON_HEAD,
|
||||
Material.PRISMARINE_BRICK_SLAB,
|
||||
Material.PRISMARINE_BRICK_STAIRS,
|
||||
Material.PRISMARINE_SLAB,
|
||||
Material.PRISMARINE_STAIRS,
|
||||
Material.PURPLE_BANNER,
|
||||
Material.PURPLE_BED,
|
||||
Material.PURPLE_STAINED_GLASS,
|
||||
Material.PURPLE_STAINED_GLASS_PANE,
|
||||
Material.PURPLE_WALL_BANNER,
|
||||
Material.PURPUR_SLAB,
|
||||
Material.PURPUR_STAIRS,
|
||||
Material.QUARTZ_SLAB,
|
||||
Material.QUARTZ_STAIRS,
|
||||
Material.RED_BANNER,
|
||||
Material.RED_BED,
|
||||
Material.RED_SANDSTONE_SLAB,
|
||||
Material.RED_SANDSTONE_STAIRS,
|
||||
Material.RED_STAINED_GLASS,
|
||||
Material.RED_STAINED_GLASS_PANE,
|
||||
Material.RED_WALL_BANNER,
|
||||
Material.SANDSTONE_SLAB,
|
||||
Material.SANDSTONE_STAIRS,
|
||||
Material.SEAGRASS,
|
||||
Material.SEA_PICKLE,
|
||||
Material.SIGN,
|
||||
Material.SLIME_BLOCK,
|
||||
Material.SPAWNER,
|
||||
Material.SPRUCE_DOOR,
|
||||
Material.SPRUCE_FENCE,
|
||||
Material.SPRUCE_FENCE_GATE,
|
||||
Material.SPRUCE_LEAVES,
|
||||
Material.SPRUCE_PRESSURE_PLATE,
|
||||
Material.SPRUCE_SLAB,
|
||||
Material.SPRUCE_STAIRS,
|
||||
Material.SPRUCE_TRAPDOOR,
|
||||
Material.STICKY_PISTON,
|
||||
Material.STONE_BRICK_SLAB,
|
||||
Material.STONE_BRICK_STAIRS,
|
||||
Material.STONE_PRESSURE_PLATE,
|
||||
Material.STONE_SLAB,
|
||||
Material.TALL_SEAGRASS,
|
||||
Material.TUBE_CORAL,
|
||||
Material.TUBE_CORAL_FAN,
|
||||
Material.TUBE_CORAL_WALL_FAN,
|
||||
Material.TURTLE_EGG,
|
||||
Material.WALL_SIGN,
|
||||
Material.WATER,
|
||||
Material.WHITE_BANNER,
|
||||
Material.WHITE_BED,
|
||||
Material.WHITE_STAINED_GLASS,
|
||||
Material.WHITE_STAINED_GLASS_PANE,
|
||||
Material.WHITE_WALL_BANNER,
|
||||
Material.YELLOW_BANNER,
|
||||
Material.YELLOW_BED,
|
||||
Material.YELLOW_STAINED_GLASS,
|
||||
Material.YELLOW_STAINED_GLASS_PANE,
|
||||
Material.YELLOW_WALL_BANNER
|
||||
};
|
||||
}
|
||||
|
||||
private void initBlockIds() {
|
||||
|
@ -172,6 +405,10 @@ public class NmsManager implements INmsManager {
|
|||
});
|
||||
}
|
||||
|
||||
public Material[] getExtraTransparentBlocks() {
|
||||
return this.extraTransparentBlocks;
|
||||
}
|
||||
|
||||
public ConfigDefaults getConfigDefaults() {
|
||||
return this.configDefaults;
|
||||
}
|
||||
|
@ -273,10 +510,6 @@ public class NmsManager implements INmsManager {
|
|||
return this.materialIds.get(material);
|
||||
}
|
||||
|
||||
public int getTypeId(int combinedBlockId) {
|
||||
return combinedBlockId;
|
||||
}
|
||||
|
||||
public boolean sendBlockChange(Player player, Location blockLocation) {
|
||||
IBlockData blockData = getBlockData(blockLocation.getWorld(), blockLocation.getBlockX(), blockLocation.getBlockY(), blockLocation.getBlockZ(), false);
|
||||
|
||||
|
|
|
@ -36,7 +36,8 @@ public class BlockInfo implements IBlockInfo {
|
|||
}
|
||||
|
||||
public int getCombinedId() {
|
||||
return Block.getCombinedId(this.blockData);
|
||||
Block block = this.blockData.getBlock();
|
||||
return (Block.getId(block) << 4) | block.toLegacyData(this.blockData);
|
||||
}
|
||||
|
||||
public IBlockData getBlockData() {
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
package com.lishid.orebfuscator.nms.v1_9_R1;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.lishid.orebfuscator.types.ConfigDefaults;
|
||||
import net.minecraft.server.v1_9_R1.Block;
|
||||
import net.minecraft.server.v1_9_R1.BlockPosition;
|
||||
|
@ -31,10 +32,12 @@ import com.lishid.orebfuscator.nms.INBT;
|
|||
import com.lishid.orebfuscator.nms.INmsManager;
|
||||
import com.lishid.orebfuscator.types.BlockCoord;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class NmsManager implements INmsManager {
|
||||
private ConfigDefaults configDefaults;
|
||||
private Material[] extraTransparentBlocks;
|
||||
private int maxLoadedCacheFiles;
|
||||
|
||||
public NmsManager() {
|
||||
|
@ -42,104 +45,189 @@ public class NmsManager implements INmsManager {
|
|||
|
||||
// Default World
|
||||
|
||||
this.configDefaults.defaultProximityHiderBlockIds = new int[] {
|
||||
getMaterialId(Material.DISPENSER),
|
||||
getMaterialId(Material.MOB_SPAWNER),
|
||||
getMaterialId(Material.CHEST),
|
||||
getMaterialId(Material.HOPPER),
|
||||
getMaterialId(Material.WORKBENCH),
|
||||
getMaterialId(Material.FURNACE),
|
||||
getMaterialId(Material.BURNING_FURNACE),
|
||||
getMaterialId(Material.ENCHANTMENT_TABLE),
|
||||
getMaterialId(Material.EMERALD_ORE),
|
||||
getMaterialId(Material.ENDER_CHEST),
|
||||
getMaterialId(Material.ANVIL),
|
||||
getMaterialId(Material.TRAPPED_CHEST),
|
||||
getMaterialId(Material.DIAMOND_ORE)
|
||||
};
|
||||
this.configDefaults.defaultProximityHiderBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.DISPENSER,
|
||||
Material.MOB_SPAWNER,
|
||||
Material.CHEST,
|
||||
Material.HOPPER,
|
||||
Material.WORKBENCH,
|
||||
Material.FURNACE,
|
||||
Material.BURNING_FURNACE,
|
||||
Material.ENCHANTMENT_TABLE,
|
||||
Material.EMERALD_ORE,
|
||||
Material.ENDER_CHEST,
|
||||
Material.ANVIL,
|
||||
Material.TRAPPED_CHEST,
|
||||
Material.DIAMOND_ORE
|
||||
});
|
||||
|
||||
this.configDefaults.defaultDarknessBlockIds = new int[] {
|
||||
getMaterialId(Material.MOB_SPAWNER),
|
||||
getMaterialId(Material.CHEST)
|
||||
};
|
||||
this.configDefaults.defaultDarknessBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.MOB_SPAWNER,
|
||||
Material.CHEST
|
||||
});
|
||||
|
||||
this.configDefaults.defaultMode1BlockId = getMaterialId(Material.STONE);
|
||||
this.configDefaults.defaultProximityHiderSpecialBlockId = getMaterialId(Material.STONE);
|
||||
this.configDefaults.defaultMode1BlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||
this.configDefaults.defaultProximityHiderSpecialBlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||
|
||||
// The End
|
||||
|
||||
this.configDefaults.endWorldRandomBlockIds = new int[] {
|
||||
getMaterialId(Material.BEDROCK),
|
||||
getMaterialId(Material.OBSIDIAN),
|
||||
getMaterialId(Material.ENDER_STONE),
|
||||
getMaterialId(Material.PURPUR_BLOCK),
|
||||
getMaterialId(Material.END_BRICKS)
|
||||
};
|
||||
this.configDefaults.endWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.BEDROCK,
|
||||
Material.OBSIDIAN,
|
||||
Material.ENDER_STONE,
|
||||
Material.PURPUR_BLOCK,
|
||||
Material.END_BRICKS
|
||||
});
|
||||
|
||||
this.configDefaults.endWorldObfuscateBlockIds = new int[] {
|
||||
getMaterialId(Material.ENDER_STONE)
|
||||
};
|
||||
this.configDefaults.endWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.ENDER_STONE
|
||||
});
|
||||
|
||||
this.configDefaults.endWorldMode1BlockId = getMaterialId(Material.ENDER_STONE);
|
||||
this.configDefaults.endWorldRequiredObfuscateBlockIds = new int[] { getMaterialId(Material.ENDER_STONE) };
|
||||
this.configDefaults.endWorldMode1BlockId = getMaterialIds(Material.ENDER_STONE).iterator().next();
|
||||
this.configDefaults.endWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] { Material.ENDER_STONE });
|
||||
|
||||
// Nether World
|
||||
|
||||
this.configDefaults.netherWorldRandomBlockIds = new int[] {
|
||||
getMaterialId(Material.GRAVEL),
|
||||
getMaterialId(Material.NETHERRACK),
|
||||
getMaterialId(Material.SOUL_SAND),
|
||||
getMaterialId(Material.NETHER_BRICK),
|
||||
getMaterialId(Material.QUARTZ_ORE)
|
||||
};
|
||||
this.configDefaults.netherWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.GRAVEL,
|
||||
Material.NETHERRACK,
|
||||
Material.SOUL_SAND,
|
||||
Material.NETHER_BRICK,
|
||||
Material.QUARTZ_ORE
|
||||
});
|
||||
|
||||
this.configDefaults.netherWorldObfuscateBlockIds = new int[] {
|
||||
getMaterialId(Material.NETHERRACK),
|
||||
getMaterialId(Material.QUARTZ_ORE)
|
||||
};
|
||||
this.configDefaults.netherWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.NETHERRACK,
|
||||
Material.QUARTZ_ORE
|
||||
});
|
||||
|
||||
this.configDefaults.netherWorldMode1BlockId = getMaterialId(Material.NETHERRACK);
|
||||
this.configDefaults.netherWorldMode1BlockId = getMaterialIds(Material.NETHERRACK).iterator().next();
|
||||
|
||||
this.configDefaults.netherWorldRequiredObfuscateBlockIds = new int[] {
|
||||
getMaterialId(Material.NETHERRACK)
|
||||
};
|
||||
this.configDefaults.netherWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.NETHERRACK
|
||||
});
|
||||
|
||||
// Normal World
|
||||
|
||||
this.configDefaults.normalWorldRandomBlockIds = new int[] {
|
||||
getMaterialId(Material.STONE),
|
||||
getMaterialId(Material.COBBLESTONE),
|
||||
getMaterialId(Material.WOOD),
|
||||
getMaterialId(Material.GOLD_ORE),
|
||||
getMaterialId(Material.IRON_ORE),
|
||||
getMaterialId(Material.COAL_ORE),
|
||||
getMaterialId(Material.LAPIS_ORE),
|
||||
getMaterialId(Material.TNT),
|
||||
getMaterialId(Material.MOSSY_COBBLESTONE),
|
||||
getMaterialId(Material.OBSIDIAN),
|
||||
getMaterialId(Material.DIAMOND_ORE),
|
||||
getMaterialId(Material.REDSTONE_ORE),
|
||||
getMaterialId(Material.CLAY),
|
||||
getMaterialId(Material.EMERALD_ORE)
|
||||
};
|
||||
this.configDefaults.normalWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.STONE,
|
||||
Material.COBBLESTONE,
|
||||
Material.WOOD,
|
||||
Material.GOLD_ORE,
|
||||
Material.IRON_ORE,
|
||||
Material.COAL_ORE,
|
||||
Material.LAPIS_ORE,
|
||||
Material.TNT,
|
||||
Material.MOSSY_COBBLESTONE,
|
||||
Material.OBSIDIAN,
|
||||
Material.DIAMOND_ORE,
|
||||
Material.REDSTONE_ORE,
|
||||
Material.CLAY,
|
||||
Material.EMERALD_ORE
|
||||
});
|
||||
|
||||
this.configDefaults.normalWorldObfuscateBlockIds = new int[] {
|
||||
getMaterialId(Material.GOLD_ORE),
|
||||
getMaterialId(Material.IRON_ORE),
|
||||
getMaterialId(Material.COAL_ORE),
|
||||
getMaterialId(Material.LAPIS_ORE),
|
||||
getMaterialId(Material.CHEST),
|
||||
getMaterialId(Material.DIAMOND_ORE),
|
||||
getMaterialId(Material.ENDER_CHEST),
|
||||
getMaterialId(Material.REDSTONE_ORE),
|
||||
getMaterialId(Material.CLAY),
|
||||
getMaterialId(Material.EMERALD_ORE)
|
||||
};
|
||||
this.configDefaults.normalWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.GOLD_ORE,
|
||||
Material.IRON_ORE,
|
||||
Material.COAL_ORE,
|
||||
Material.LAPIS_ORE,
|
||||
Material.CHEST,
|
||||
Material.DIAMOND_ORE,
|
||||
Material.ENDER_CHEST,
|
||||
Material.REDSTONE_ORE,
|
||||
Material.CLAY,
|
||||
Material.EMERALD_ORE
|
||||
});
|
||||
|
||||
this.configDefaults.normalWorldMode1BlockId = getMaterialId(Material.STONE);
|
||||
this.configDefaults.normalWorldMode1BlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||
|
||||
this.configDefaults.normalWorldRequiredObfuscateBlockIds = new int[] {
|
||||
getMaterialId(Material.STONE)
|
||||
this.configDefaults.normalWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.STONE
|
||||
});
|
||||
|
||||
// Extra transparent blocks
|
||||
|
||||
this.extraTransparentBlocks = new Material[] {
|
||||
Material.ACACIA_DOOR,
|
||||
Material.ACACIA_FENCE,
|
||||
Material.ACACIA_FENCE_GATE,
|
||||
Material.ACACIA_STAIRS,
|
||||
Material.ANVIL,
|
||||
Material.BEACON,
|
||||
Material.BED_BLOCK,
|
||||
Material.BIRCH_DOOR,
|
||||
Material.BIRCH_FENCE,
|
||||
Material.BIRCH_FENCE_GATE,
|
||||
Material.BIRCH_WOOD_STAIRS,
|
||||
Material.BREWING_STAND,
|
||||
Material.BRICK_STAIRS,
|
||||
Material.CACTUS,
|
||||
Material.CAKE_BLOCK,
|
||||
Material.CAULDRON,
|
||||
Material.COBBLESTONE_STAIRS,
|
||||
Material.COBBLE_WALL,
|
||||
Material.DARK_OAK_DOOR,
|
||||
Material.DARK_OAK_FENCE,
|
||||
Material.DARK_OAK_FENCE_GATE,
|
||||
Material.DARK_OAK_STAIRS,
|
||||
Material.DAYLIGHT_DETECTOR,
|
||||
Material.DAYLIGHT_DETECTOR_INVERTED,
|
||||
Material.DRAGON_EGG,
|
||||
Material.ENCHANTMENT_TABLE,
|
||||
Material.FENCE,
|
||||
Material.FENCE_GATE,
|
||||
Material.GLASS,
|
||||
Material.HOPPER,
|
||||
Material.ICE,
|
||||
Material.IRON_DOOR_BLOCK,
|
||||
Material.IRON_FENCE,
|
||||
Material.IRON_PLATE,
|
||||
Material.IRON_TRAPDOOR,
|
||||
Material.JUNGLE_DOOR,
|
||||
Material.JUNGLE_FENCE,
|
||||
Material.JUNGLE_FENCE_GATE,
|
||||
Material.JUNGLE_WOOD_STAIRS,
|
||||
Material.LAVA,
|
||||
Material.LEAVES,
|
||||
Material.LEAVES_2,
|
||||
Material.MOB_SPAWNER,
|
||||
Material.NETHER_BRICK_STAIRS,
|
||||
Material.NETHER_FENCE,
|
||||
Material.PACKED_ICE,
|
||||
Material.PISTON_BASE,
|
||||
Material.PISTON_EXTENSION,
|
||||
Material.PISTON_MOVING_PIECE,
|
||||
Material.PISTON_STICKY_BASE,
|
||||
Material.PURPUR_SLAB,
|
||||
Material.PURPUR_STAIRS,
|
||||
Material.QUARTZ_STAIRS,
|
||||
Material.RED_SANDSTONE_STAIRS,
|
||||
Material.SANDSTONE_STAIRS,
|
||||
Material.SIGN_POST,
|
||||
Material.SLIME_BLOCK,
|
||||
Material.SMOOTH_STAIRS,
|
||||
Material.SPRUCE_DOOR,
|
||||
Material.SPRUCE_FENCE,
|
||||
Material.SPRUCE_FENCE_GATE,
|
||||
Material.SPRUCE_WOOD_STAIRS,
|
||||
Material.STAINED_GLASS,
|
||||
Material.STAINED_GLASS_PANE,
|
||||
Material.STANDING_BANNER,
|
||||
Material.STATIONARY_LAVA,
|
||||
Material.STATIONARY_WATER,
|
||||
Material.STEP,
|
||||
Material.STONE_PLATE,
|
||||
Material.STONE_SLAB2,
|
||||
Material.THIN_GLASS,
|
||||
Material.TRAP_DOOR,
|
||||
Material.WALL_BANNER,
|
||||
Material.WALL_SIGN,
|
||||
Material.WATER,
|
||||
Material.WEB,
|
||||
Material.WOODEN_DOOR,
|
||||
Material.WOOD_PLATE,
|
||||
Material.WOOD_STAIRS,
|
||||
Material.WOOD_STEP
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -147,6 +235,10 @@ public class NmsManager implements INmsManager {
|
|||
return this.configDefaults;
|
||||
}
|
||||
|
||||
public Material[] getExtraTransparentBlocks() {
|
||||
return this.extraTransparentBlocks;
|
||||
}
|
||||
|
||||
public void setMaxLoadedCacheFiles(int value) {
|
||||
this.maxLoadedCacheFiles = value;
|
||||
}
|
||||
|
@ -211,9 +303,12 @@ public class NmsManager implements INmsManager {
|
|||
|| item == Material.DIAMOND_HOE;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public boolean isSign(int combinedBlockId) {
|
||||
return combinedBlockId == getMaterialId(Material.WALL_SIGN)
|
||||
|| combinedBlockId == getMaterialId(Material.SIGN_POST);
|
||||
int typeId = combinedBlockId >> 4;
|
||||
|
||||
return typeId == Material.WALL_SIGN.getId()
|
||||
|| typeId == Material.SIGN_POST.getId();
|
||||
}
|
||||
|
||||
public boolean isAir(int combinedBlockId) {
|
||||
|
@ -242,16 +337,17 @@ public class NmsManager implements INmsManager {
|
|||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public int getMaterialId(Material material) {
|
||||
return material.getId() << 4;
|
||||
}
|
||||
|
||||
public Set<Integer> getMaterialIds(Material material) {
|
||||
return null;
|
||||
}
|
||||
Set<Integer> ids = new HashSet<>();
|
||||
int blockId = material.getId() << 4;
|
||||
Block block = Block.getById(material.getId());
|
||||
ImmutableList<IBlockData> blockDataList = block.t().a();
|
||||
|
||||
public int getTypeId(int combinedBlockId) {
|
||||
return combinedBlockId & ~(0x0F);
|
||||
for(IBlockData blockData : blockDataList) {
|
||||
ids.add(blockId | block.toLegacyData(blockData));
|
||||
}
|
||||
|
||||
return ids;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
|
@ -282,4 +378,27 @@ public class NmsManager implements INmsManager {
|
|||
|
||||
return chunk != null ? chunk.getBlockData(new BlockPosition(x, y, z)) : null;
|
||||
}
|
||||
|
||||
private Set<Integer> convertMaterialsToSet(Material[] materials) {
|
||||
Set<Integer> ids = new HashSet<>();
|
||||
|
||||
for(Material material : materials) {
|
||||
ids.addAll(getMaterialIds(material));
|
||||
}
|
||||
|
||||
return ids;
|
||||
}
|
||||
|
||||
private int[] convertMaterialsToIds(Material[] materials) {
|
||||
Set<Integer> ids = convertMaterialsToSet(materials);
|
||||
|
||||
int[] result = new int[ids.size()];
|
||||
int index = 0;
|
||||
|
||||
for(int id : ids) {
|
||||
result[index++] = id;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
|
@ -36,9 +36,10 @@ public class BlockInfo implements IBlockInfo {
|
|||
}
|
||||
|
||||
public int getCombinedId() {
|
||||
return Block.getCombinedId(this.blockData);
|
||||
Block block = this.blockData.getBlock();
|
||||
return (Block.getId(block) << 4) | block.toLegacyData(this.blockData);
|
||||
}
|
||||
|
||||
|
||||
public IBlockData getBlockData() {
|
||||
return this.blockData;
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
package com.lishid.orebfuscator.nms.v1_9_R2;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.lishid.orebfuscator.types.ConfigDefaults;
|
||||
import net.minecraft.server.v1_9_R2.Block;
|
||||
import net.minecraft.server.v1_9_R2.BlockPosition;
|
||||
|
@ -31,10 +32,12 @@ import com.lishid.orebfuscator.nms.INBT;
|
|||
import com.lishid.orebfuscator.nms.INmsManager;
|
||||
import com.lishid.orebfuscator.types.BlockCoord;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class NmsManager implements INmsManager {
|
||||
private ConfigDefaults configDefaults;
|
||||
private Material[] extraTransparentBlocks;
|
||||
private int maxLoadedCacheFiles;
|
||||
|
||||
public NmsManager() {
|
||||
|
@ -42,110 +45,199 @@ public class NmsManager implements INmsManager {
|
|||
|
||||
// Default World
|
||||
|
||||
this.configDefaults.defaultProximityHiderBlockIds = new int[] {
|
||||
getMaterialId(Material.DISPENSER),
|
||||
getMaterialId(Material.MOB_SPAWNER),
|
||||
getMaterialId(Material.CHEST),
|
||||
getMaterialId(Material.HOPPER),
|
||||
getMaterialId(Material.WORKBENCH),
|
||||
getMaterialId(Material.FURNACE),
|
||||
getMaterialId(Material.BURNING_FURNACE),
|
||||
getMaterialId(Material.ENCHANTMENT_TABLE),
|
||||
getMaterialId(Material.EMERALD_ORE),
|
||||
getMaterialId(Material.ENDER_CHEST),
|
||||
getMaterialId(Material.ANVIL),
|
||||
getMaterialId(Material.TRAPPED_CHEST),
|
||||
getMaterialId(Material.DIAMOND_ORE)
|
||||
};
|
||||
this.configDefaults.defaultProximityHiderBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.DISPENSER,
|
||||
Material.MOB_SPAWNER,
|
||||
Material.CHEST,
|
||||
Material.HOPPER,
|
||||
Material.WORKBENCH,
|
||||
Material.FURNACE,
|
||||
Material.BURNING_FURNACE,
|
||||
Material.ENCHANTMENT_TABLE,
|
||||
Material.EMERALD_ORE,
|
||||
Material.ENDER_CHEST,
|
||||
Material.ANVIL,
|
||||
Material.TRAPPED_CHEST,
|
||||
Material.DIAMOND_ORE
|
||||
});
|
||||
|
||||
this.configDefaults.defaultDarknessBlockIds = new int[] {
|
||||
getMaterialId(Material.MOB_SPAWNER),
|
||||
getMaterialId(Material.CHEST)
|
||||
};
|
||||
this.configDefaults.defaultDarknessBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.MOB_SPAWNER,
|
||||
Material.CHEST
|
||||
});
|
||||
|
||||
this.configDefaults.defaultMode1BlockId = getMaterialId(Material.STONE);
|
||||
this.configDefaults.defaultProximityHiderSpecialBlockId = getMaterialId(Material.STONE);
|
||||
this.configDefaults.defaultMode1BlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||
this.configDefaults.defaultProximityHiderSpecialBlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||
|
||||
// The End
|
||||
|
||||
this.configDefaults.endWorldRandomBlockIds = new int[] {
|
||||
getMaterialId(Material.BEDROCK),
|
||||
getMaterialId(Material.OBSIDIAN),
|
||||
getMaterialId(Material.ENDER_STONE),
|
||||
getMaterialId(Material.PURPUR_BLOCK),
|
||||
getMaterialId(Material.END_BRICKS)
|
||||
};
|
||||
this.configDefaults.endWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.BEDROCK,
|
||||
Material.OBSIDIAN,
|
||||
Material.ENDER_STONE,
|
||||
Material.PURPUR_BLOCK,
|
||||
Material.END_BRICKS
|
||||
});
|
||||
|
||||
this.configDefaults.endWorldObfuscateBlockIds = new int[] {
|
||||
getMaterialId(Material.ENDER_STONE)
|
||||
};
|
||||
this.configDefaults.endWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.ENDER_STONE
|
||||
});
|
||||
|
||||
this.configDefaults.endWorldMode1BlockId = getMaterialId(Material.ENDER_STONE);
|
||||
this.configDefaults.endWorldRequiredObfuscateBlockIds = new int[] { getMaterialId(Material.ENDER_STONE) };
|
||||
this.configDefaults.endWorldMode1BlockId = getMaterialIds(Material.ENDER_STONE).iterator().next();
|
||||
this.configDefaults.endWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] { Material.ENDER_STONE });
|
||||
|
||||
// Nether World
|
||||
|
||||
this.configDefaults.netherWorldRandomBlockIds = new int[] {
|
||||
getMaterialId(Material.GRAVEL),
|
||||
getMaterialId(Material.NETHERRACK),
|
||||
getMaterialId(Material.SOUL_SAND),
|
||||
getMaterialId(Material.NETHER_BRICK),
|
||||
getMaterialId(Material.QUARTZ_ORE)
|
||||
};
|
||||
this.configDefaults.netherWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.GRAVEL,
|
||||
Material.NETHERRACK,
|
||||
Material.SOUL_SAND,
|
||||
Material.NETHER_BRICK,
|
||||
Material.QUARTZ_ORE
|
||||
});
|
||||
|
||||
this.configDefaults.netherWorldObfuscateBlockIds = new int[] {
|
||||
getMaterialId(Material.NETHERRACK),
|
||||
getMaterialId(Material.QUARTZ_ORE)
|
||||
};
|
||||
this.configDefaults.netherWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.NETHERRACK,
|
||||
Material.QUARTZ_ORE
|
||||
});
|
||||
|
||||
this.configDefaults.netherWorldMode1BlockId = getMaterialId(Material.NETHERRACK);
|
||||
this.configDefaults.netherWorldMode1BlockId = getMaterialIds(Material.NETHERRACK).iterator().next();
|
||||
|
||||
this.configDefaults.netherWorldRequiredObfuscateBlockIds = new int[] {
|
||||
getMaterialId(Material.NETHERRACK)
|
||||
};
|
||||
this.configDefaults.netherWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.NETHERRACK
|
||||
});
|
||||
|
||||
// Normal World
|
||||
|
||||
this.configDefaults.normalWorldRandomBlockIds = new int[] {
|
||||
getMaterialId(Material.STONE),
|
||||
getMaterialId(Material.COBBLESTONE),
|
||||
getMaterialId(Material.WOOD),
|
||||
getMaterialId(Material.GOLD_ORE),
|
||||
getMaterialId(Material.IRON_ORE),
|
||||
getMaterialId(Material.COAL_ORE),
|
||||
getMaterialId(Material.LAPIS_ORE),
|
||||
getMaterialId(Material.TNT),
|
||||
getMaterialId(Material.MOSSY_COBBLESTONE),
|
||||
getMaterialId(Material.OBSIDIAN),
|
||||
getMaterialId(Material.DIAMOND_ORE),
|
||||
getMaterialId(Material.REDSTONE_ORE),
|
||||
getMaterialId(Material.CLAY),
|
||||
getMaterialId(Material.EMERALD_ORE)
|
||||
};
|
||||
this.configDefaults.normalWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.STONE,
|
||||
Material.COBBLESTONE,
|
||||
Material.WOOD,
|
||||
Material.GOLD_ORE,
|
||||
Material.IRON_ORE,
|
||||
Material.COAL_ORE,
|
||||
Material.LAPIS_ORE,
|
||||
Material.TNT,
|
||||
Material.MOSSY_COBBLESTONE,
|
||||
Material.OBSIDIAN,
|
||||
Material.DIAMOND_ORE,
|
||||
Material.REDSTONE_ORE,
|
||||
Material.CLAY,
|
||||
Material.EMERALD_ORE
|
||||
});
|
||||
|
||||
this.configDefaults.normalWorldObfuscateBlockIds = new int[] {
|
||||
getMaterialId(Material.GOLD_ORE),
|
||||
getMaterialId(Material.IRON_ORE),
|
||||
getMaterialId(Material.COAL_ORE),
|
||||
getMaterialId(Material.LAPIS_ORE),
|
||||
getMaterialId(Material.CHEST),
|
||||
getMaterialId(Material.DIAMOND_ORE),
|
||||
getMaterialId(Material.ENDER_CHEST),
|
||||
getMaterialId(Material.REDSTONE_ORE),
|
||||
getMaterialId(Material.CLAY),
|
||||
getMaterialId(Material.EMERALD_ORE)
|
||||
};
|
||||
this.configDefaults.normalWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.GOLD_ORE,
|
||||
Material.IRON_ORE,
|
||||
Material.COAL_ORE,
|
||||
Material.LAPIS_ORE,
|
||||
Material.CHEST,
|
||||
Material.DIAMOND_ORE,
|
||||
Material.ENDER_CHEST,
|
||||
Material.REDSTONE_ORE,
|
||||
Material.CLAY,
|
||||
Material.EMERALD_ORE
|
||||
});
|
||||
|
||||
this.configDefaults.normalWorldMode1BlockId = getMaterialId(Material.STONE);
|
||||
this.configDefaults.normalWorldMode1BlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||
|
||||
this.configDefaults.normalWorldRequiredObfuscateBlockIds = new int[] {
|
||||
getMaterialId(Material.STONE)
|
||||
this.configDefaults.normalWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||
Material.STONE
|
||||
});
|
||||
|
||||
// Extra transparent blocks
|
||||
|
||||
this.extraTransparentBlocks = new Material[] {
|
||||
Material.ACACIA_DOOR,
|
||||
Material.ACACIA_FENCE,
|
||||
Material.ACACIA_FENCE_GATE,
|
||||
Material.ACACIA_STAIRS,
|
||||
Material.ANVIL,
|
||||
Material.BEACON,
|
||||
Material.BED_BLOCK,
|
||||
Material.BIRCH_DOOR,
|
||||
Material.BIRCH_FENCE,
|
||||
Material.BIRCH_FENCE_GATE,
|
||||
Material.BIRCH_WOOD_STAIRS,
|
||||
Material.BREWING_STAND,
|
||||
Material.BRICK_STAIRS,
|
||||
Material.CACTUS,
|
||||
Material.CAKE_BLOCK,
|
||||
Material.CAULDRON,
|
||||
Material.COBBLESTONE_STAIRS,
|
||||
Material.COBBLE_WALL,
|
||||
Material.DARK_OAK_DOOR,
|
||||
Material.DARK_OAK_FENCE,
|
||||
Material.DARK_OAK_FENCE_GATE,
|
||||
Material.DARK_OAK_STAIRS,
|
||||
Material.DAYLIGHT_DETECTOR,
|
||||
Material.DAYLIGHT_DETECTOR_INVERTED,
|
||||
Material.DRAGON_EGG,
|
||||
Material.ENCHANTMENT_TABLE,
|
||||
Material.FENCE,
|
||||
Material.FENCE_GATE,
|
||||
Material.GLASS,
|
||||
Material.HOPPER,
|
||||
Material.ICE,
|
||||
Material.IRON_DOOR_BLOCK,
|
||||
Material.IRON_FENCE,
|
||||
Material.IRON_PLATE,
|
||||
Material.IRON_TRAPDOOR,
|
||||
Material.JUNGLE_DOOR,
|
||||
Material.JUNGLE_FENCE,
|
||||
Material.JUNGLE_FENCE_GATE,
|
||||
Material.JUNGLE_WOOD_STAIRS,
|
||||
Material.LAVA,
|
||||
Material.LEAVES,
|
||||
Material.LEAVES_2,
|
||||
Material.MOB_SPAWNER,
|
||||
Material.NETHER_BRICK_STAIRS,
|
||||
Material.NETHER_FENCE,
|
||||
Material.PACKED_ICE,
|
||||
Material.PISTON_BASE,
|
||||
Material.PISTON_EXTENSION,
|
||||
Material.PISTON_MOVING_PIECE,
|
||||
Material.PISTON_STICKY_BASE,
|
||||
Material.PURPUR_SLAB,
|
||||
Material.PURPUR_STAIRS,
|
||||
Material.QUARTZ_STAIRS,
|
||||
Material.RED_SANDSTONE_STAIRS,
|
||||
Material.SANDSTONE_STAIRS,
|
||||
Material.SIGN_POST,
|
||||
Material.SLIME_BLOCK,
|
||||
Material.SMOOTH_STAIRS,
|
||||
Material.SPRUCE_DOOR,
|
||||
Material.SPRUCE_FENCE,
|
||||
Material.SPRUCE_FENCE_GATE,
|
||||
Material.SPRUCE_WOOD_STAIRS,
|
||||
Material.STAINED_GLASS,
|
||||
Material.STAINED_GLASS_PANE,
|
||||
Material.STANDING_BANNER,
|
||||
Material.STATIONARY_LAVA,
|
||||
Material.STATIONARY_WATER,
|
||||
Material.STEP,
|
||||
Material.STONE_PLATE,
|
||||
Material.STONE_SLAB2,
|
||||
Material.THIN_GLASS,
|
||||
Material.TRAP_DOOR,
|
||||
Material.WALL_BANNER,
|
||||
Material.WALL_SIGN,
|
||||
Material.WATER,
|
||||
Material.WEB,
|
||||
Material.WOODEN_DOOR,
|
||||
Material.WOOD_PLATE,
|
||||
Material.WOOD_STAIRS,
|
||||
Material.WOOD_STEP
|
||||
};
|
||||
}
|
||||
|
||||
public ConfigDefaults getConfigDefaults() {
|
||||
return this.configDefaults;
|
||||
}
|
||||
|
||||
public Material[] getExtraTransparentBlocks() {
|
||||
return this.extraTransparentBlocks;
|
||||
}
|
||||
|
||||
public void setMaxLoadedCacheFiles(int value) {
|
||||
this.maxLoadedCacheFiles = value;
|
||||
|
@ -211,9 +303,12 @@ public class NmsManager implements INmsManager {
|
|||
|| item == Material.DIAMOND_HOE;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public boolean isSign(int combinedBlockId) {
|
||||
return combinedBlockId == getMaterialId(Material.WALL_SIGN)
|
||||
|| combinedBlockId == getMaterialId(Material.SIGN_POST);
|
||||
int typeId = combinedBlockId >> 4;
|
||||
|
||||
return typeId == Material.WALL_SIGN.getId()
|
||||
|| typeId == Material.SIGN_POST.getId();
|
||||
}
|
||||
|
||||
public boolean isAir(int combinedBlockId) {
|
||||
|
@ -242,16 +337,17 @@ public class NmsManager implements INmsManager {
|
|||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public int getMaterialId(Material material) {
|
||||
return material.getId() << 4;
|
||||
}
|
||||
|
||||
public Set<Integer> getMaterialIds(Material material) {
|
||||
return null;
|
||||
}
|
||||
Set<Integer> ids = new HashSet<>();
|
||||
int blockId = material.getId() << 4;
|
||||
Block block = Block.getById(material.getId());
|
||||
ImmutableList<IBlockData> blockDataList = block.t().a();
|
||||
|
||||
public int getTypeId(int combinedBlockId) {
|
||||
return combinedBlockId & ~(0x0F);
|
||||
for(IBlockData blockData : blockDataList) {
|
||||
ids.add(blockId | block.toLegacyData(blockData));
|
||||
}
|
||||
|
||||
return ids;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
|
@ -282,4 +378,27 @@ public class NmsManager implements INmsManager {
|
|||
|
||||
return chunk != null ? chunk.getBlockData(new BlockPosition(x, y, z)) : null;
|
||||
}
|
||||
|
||||
private Set<Integer> convertMaterialsToSet(Material[] materials) {
|
||||
Set<Integer> ids = new HashSet<>();
|
||||
|
||||
for(Material material : materials) {
|
||||
ids.addAll(getMaterialIds(material));
|
||||
}
|
||||
|
||||
return ids;
|
||||
}
|
||||
|
||||
private int[] convertMaterialsToIds(Material[] materials) {
|
||||
Set<Integer> ids = convertMaterialsToSet(materials);
|
||||
|
||||
int[] result = new int[ids.size()];
|
||||
int index = 0;
|
||||
|
||||
for(int id : ids) {
|
||||
result[index++] = id;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue