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 {
|
public interface INmsManager {
|
||||||
ConfigDefaults getConfigDefaults();
|
ConfigDefaults getConfigDefaults();
|
||||||
|
|
||||||
|
Material[] getExtraTransparentBlocks();
|
||||||
|
|
||||||
void setMaxLoadedCacheFiles(int value);
|
void setMaxLoadedCacheFiles(int value);
|
||||||
|
|
||||||
INBT createNBT();
|
INBT createNBT();
|
||||||
|
@ -52,7 +54,5 @@ public interface INmsManager {
|
||||||
|
|
||||||
Set<Integer> getMaterialIds(Material material);
|
Set<Integer> getMaterialIds(Material material);
|
||||||
|
|
||||||
int getTypeId(int combinedBlockId);
|
|
||||||
|
|
||||||
boolean sendBlockChange(Player player, Location blockLocation);
|
boolean sendBlockChange(Player player, Location blockLocation);
|
||||||
}
|
}
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
<groupId>com.lishid</groupId>
|
<groupId>com.lishid</groupId>
|
||||||
<artifactId>orebfuscator</artifactId>
|
<artifactId>orebfuscator</artifactId>
|
||||||
<version>4.4.0-SNAPSHOT</version>
|
<version>4.4.1-SNAPSHOT</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>Orebfuscator4</name>
|
<name>Orebfuscator4</name>
|
||||||
|
|
|
@ -9,7 +9,6 @@ import java.io.IOException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
import com.lishid.orebfuscator.NmsInstance;
|
import com.lishid.orebfuscator.NmsInstance;
|
||||||
import com.lishid.orebfuscator.utils.MaterialHelper;
|
|
||||||
|
|
||||||
public class ChunkMapManager {
|
public class ChunkMapManager {
|
||||||
private static final ThreadLocal<ChunkMapBuffer> _buffer = new ThreadLocal<ChunkMapBuffer>() {
|
private static final ThreadLocal<ChunkMapBuffer> _buffer = new ThreadLocal<ChunkMapBuffer>() {
|
||||||
|
|
|
@ -343,7 +343,8 @@ public class OrebfuscatorCommandExecutor {
|
||||||
private static void commandTransparentBlocks(CommandSender sender, String[] args) {
|
private static void commandTransparentBlocks(CommandSender sender, String[] args) {
|
||||||
Material[] materials = Material.values();
|
Material[] materials = Material.values();
|
||||||
|
|
||||||
List<String> blockNames = new ArrayList<>();
|
List<String> transparentBlockNames = new ArrayList<>();
|
||||||
|
List<String> nonTransparentBlockNames = new ArrayList<>();
|
||||||
|
|
||||||
for (Material material : materials) {
|
for (Material material : materials) {
|
||||||
if(material.isBlock()) {
|
if(material.isBlock()) {
|
||||||
|
@ -351,17 +352,26 @@ public class OrebfuscatorCommandExecutor {
|
||||||
boolean isTransparent = Orebfuscator.config.isBlockTransparent(blockId);
|
boolean isTransparent = Orebfuscator.config.isBlockTransparent(blockId);
|
||||||
|
|
||||||
if(isTransparent) {
|
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();
|
StringBuilder blocks = new StringBuilder();
|
||||||
blocks.append("Transparent blocks:");
|
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);
|
blocks.append("\n - " + blockName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@ import java.util.logging.Logger;
|
||||||
|
|
||||||
import com.lishid.orebfuscator.DeprecatedMethods;
|
import com.lishid.orebfuscator.DeprecatedMethods;
|
||||||
import com.lishid.orebfuscator.NmsInstance;
|
import com.lishid.orebfuscator.NmsInstance;
|
||||||
|
import com.lishid.orebfuscator.Orebfuscator;
|
||||||
import com.lishid.orebfuscator.utils.MaterialHelper;
|
import com.lishid.orebfuscator.utils.MaterialHelper;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
|
@ -262,7 +263,7 @@ public class ConfigManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
private byte[] generateTransparentBlocks(int engineMode) {
|
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();
|
Material[] allMaterials = Material.values();
|
||||||
|
|
||||||
|
@ -270,16 +271,32 @@ public class ConfigManager {
|
||||||
if(material.isBlock()) {
|
if(material.isBlock()) {
|
||||||
boolean isTransparent = DeprecatedMethods.isTransparent(material);
|
boolean isTransparent = DeprecatedMethods.isTransparent(material);
|
||||||
|
|
||||||
if(!isTransparent) {
|
if(isTransparent) {
|
||||||
Set<Integer> ids = NmsInstance.current.getMaterialIds(material);
|
Set<Integer> ids = NmsInstance.current.getMaterialIds(material);
|
||||||
|
|
||||||
for (int id : ids) {
|
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;
|
return transparentBlocks;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -5,11 +5,8 @@
|
||||||
|
|
||||||
package com.lishid.orebfuscator.config;
|
package com.lishid.orebfuscator.config;
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.lishid.orebfuscator.NmsInstance;
|
|
||||||
import com.lishid.orebfuscator.utils.Globals;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import com.lishid.orebfuscator.Orebfuscator;
|
import com.lishid.orebfuscator.Orebfuscator;
|
||||||
|
@ -257,8 +254,7 @@ public class OrebfuscatorConfig {
|
||||||
// Helper methods
|
// Helper methods
|
||||||
|
|
||||||
public boolean isBlockTransparent(int id) {
|
public boolean isBlockTransparent(int id) {
|
||||||
int blockTypeId = NmsInstance.current.getTypeId(id);
|
return this.transparentBlocks[id] == 1;
|
||||||
return this.transparentBlocks[blockTypeId] == 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean obfuscateForPlayer(Player player) {
|
public boolean obfuscateForPlayer(Player player) {
|
||||||
|
|
|
@ -24,8 +24,6 @@ import java.util.Random;
|
||||||
import com.lishid.orebfuscator.NmsInstance;
|
import com.lishid.orebfuscator.NmsInstance;
|
||||||
|
|
||||||
import com.lishid.orebfuscator.utils.Globals;
|
import com.lishid.orebfuscator.utils.Globals;
|
||||||
import com.lishid.orebfuscator.utils.MaterialHelper;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.entity.Player;
|
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() {
|
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() {
|
public IBlockData getBlockData() {
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
package com.lishid.orebfuscator.nms.v1_10_R1;
|
package com.lishid.orebfuscator.nms.v1_10_R1;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
import com.lishid.orebfuscator.types.ConfigDefaults;
|
import com.lishid.orebfuscator.types.ConfigDefaults;
|
||||||
import net.minecraft.server.v1_10_R1.Block;
|
import net.minecraft.server.v1_10_R1.Block;
|
||||||
import net.minecraft.server.v1_10_R1.BlockPosition;
|
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.nms.INmsManager;
|
||||||
import com.lishid.orebfuscator.types.BlockCoord;
|
import com.lishid.orebfuscator.types.BlockCoord;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class NmsManager implements INmsManager {
|
public class NmsManager implements INmsManager {
|
||||||
private ConfigDefaults configDefaults;
|
private ConfigDefaults configDefaults;
|
||||||
|
private Material[] extraTransparentBlocks;
|
||||||
private int maxLoadedCacheFiles;
|
private int maxLoadedCacheFiles;
|
||||||
|
|
||||||
public NmsManager() {
|
public NmsManager() {
|
||||||
|
@ -42,110 +45,199 @@ public class NmsManager implements INmsManager {
|
||||||
|
|
||||||
// Default World
|
// Default World
|
||||||
|
|
||||||
this.configDefaults.defaultProximityHiderBlockIds = new int[] {
|
this.configDefaults.defaultProximityHiderBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.DISPENSER),
|
Material.DISPENSER,
|
||||||
getMaterialId(Material.MOB_SPAWNER),
|
Material.MOB_SPAWNER,
|
||||||
getMaterialId(Material.CHEST),
|
Material.CHEST,
|
||||||
getMaterialId(Material.HOPPER),
|
Material.HOPPER,
|
||||||
getMaterialId(Material.WORKBENCH),
|
Material.WORKBENCH,
|
||||||
getMaterialId(Material.FURNACE),
|
Material.FURNACE,
|
||||||
getMaterialId(Material.BURNING_FURNACE),
|
Material.BURNING_FURNACE,
|
||||||
getMaterialId(Material.ENCHANTMENT_TABLE),
|
Material.ENCHANTMENT_TABLE,
|
||||||
getMaterialId(Material.EMERALD_ORE),
|
Material.EMERALD_ORE,
|
||||||
getMaterialId(Material.ENDER_CHEST),
|
Material.ENDER_CHEST,
|
||||||
getMaterialId(Material.ANVIL),
|
Material.ANVIL,
|
||||||
getMaterialId(Material.TRAPPED_CHEST),
|
Material.TRAPPED_CHEST,
|
||||||
getMaterialId(Material.DIAMOND_ORE)
|
Material.DIAMOND_ORE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.defaultDarknessBlockIds = new int[] {
|
this.configDefaults.defaultDarknessBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.MOB_SPAWNER),
|
Material.MOB_SPAWNER,
|
||||||
getMaterialId(Material.CHEST)
|
Material.CHEST
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.defaultMode1BlockId = getMaterialId(Material.STONE);
|
this.configDefaults.defaultMode1BlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||||
this.configDefaults.defaultProximityHiderSpecialBlockId = getMaterialId(Material.STONE);
|
this.configDefaults.defaultProximityHiderSpecialBlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||||
|
|
||||||
// The End
|
// The End
|
||||||
|
|
||||||
this.configDefaults.endWorldRandomBlockIds = new int[] {
|
this.configDefaults.endWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.BEDROCK),
|
Material.BEDROCK,
|
||||||
getMaterialId(Material.OBSIDIAN),
|
Material.OBSIDIAN,
|
||||||
getMaterialId(Material.ENDER_STONE),
|
Material.ENDER_STONE,
|
||||||
getMaterialId(Material.PURPUR_BLOCK),
|
Material.PURPUR_BLOCK,
|
||||||
getMaterialId(Material.END_BRICKS)
|
Material.END_BRICKS
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.endWorldObfuscateBlockIds = new int[] {
|
this.configDefaults.endWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.ENDER_STONE)
|
Material.ENDER_STONE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.endWorldMode1BlockId = getMaterialId(Material.ENDER_STONE);
|
this.configDefaults.endWorldMode1BlockId = getMaterialIds(Material.ENDER_STONE).iterator().next();
|
||||||
this.configDefaults.endWorldRequiredObfuscateBlockIds = new int[] { getMaterialId(Material.ENDER_STONE) };
|
this.configDefaults.endWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] { Material.ENDER_STONE });
|
||||||
|
|
||||||
// Nether World
|
// Nether World
|
||||||
|
|
||||||
this.configDefaults.netherWorldRandomBlockIds = new int[] {
|
this.configDefaults.netherWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.GRAVEL),
|
Material.GRAVEL,
|
||||||
getMaterialId(Material.NETHERRACK),
|
Material.NETHERRACK,
|
||||||
getMaterialId(Material.SOUL_SAND),
|
Material.SOUL_SAND,
|
||||||
getMaterialId(Material.NETHER_BRICK),
|
Material.NETHER_BRICK,
|
||||||
getMaterialId(Material.QUARTZ_ORE)
|
Material.QUARTZ_ORE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.netherWorldObfuscateBlockIds = new int[] {
|
this.configDefaults.netherWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.NETHERRACK),
|
Material.NETHERRACK,
|
||||||
getMaterialId(Material.QUARTZ_ORE)
|
Material.QUARTZ_ORE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.netherWorldMode1BlockId = getMaterialId(Material.NETHERRACK);
|
this.configDefaults.netherWorldMode1BlockId = getMaterialIds(Material.NETHERRACK).iterator().next();
|
||||||
|
|
||||||
this.configDefaults.netherWorldRequiredObfuscateBlockIds = new int[] {
|
this.configDefaults.netherWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.NETHERRACK)
|
Material.NETHERRACK
|
||||||
};
|
});
|
||||||
|
|
||||||
// Normal World
|
// Normal World
|
||||||
|
|
||||||
this.configDefaults.normalWorldRandomBlockIds = new int[] {
|
this.configDefaults.normalWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.STONE),
|
Material.STONE,
|
||||||
getMaterialId(Material.COBBLESTONE),
|
Material.COBBLESTONE,
|
||||||
getMaterialId(Material.WOOD),
|
Material.WOOD,
|
||||||
getMaterialId(Material.GOLD_ORE),
|
Material.GOLD_ORE,
|
||||||
getMaterialId(Material.IRON_ORE),
|
Material.IRON_ORE,
|
||||||
getMaterialId(Material.COAL_ORE),
|
Material.COAL_ORE,
|
||||||
getMaterialId(Material.LAPIS_ORE),
|
Material.LAPIS_ORE,
|
||||||
getMaterialId(Material.TNT),
|
Material.TNT,
|
||||||
getMaterialId(Material.MOSSY_COBBLESTONE),
|
Material.MOSSY_COBBLESTONE,
|
||||||
getMaterialId(Material.OBSIDIAN),
|
Material.OBSIDIAN,
|
||||||
getMaterialId(Material.DIAMOND_ORE),
|
Material.DIAMOND_ORE,
|
||||||
getMaterialId(Material.REDSTONE_ORE),
|
Material.REDSTONE_ORE,
|
||||||
getMaterialId(Material.CLAY),
|
Material.CLAY,
|
||||||
getMaterialId(Material.EMERALD_ORE)
|
Material.EMERALD_ORE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.normalWorldObfuscateBlockIds = new int[] {
|
this.configDefaults.normalWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.GOLD_ORE),
|
Material.GOLD_ORE,
|
||||||
getMaterialId(Material.IRON_ORE),
|
Material.IRON_ORE,
|
||||||
getMaterialId(Material.COAL_ORE),
|
Material.COAL_ORE,
|
||||||
getMaterialId(Material.LAPIS_ORE),
|
Material.LAPIS_ORE,
|
||||||
getMaterialId(Material.CHEST),
|
Material.CHEST,
|
||||||
getMaterialId(Material.DIAMOND_ORE),
|
Material.DIAMOND_ORE,
|
||||||
getMaterialId(Material.ENDER_CHEST),
|
Material.ENDER_CHEST,
|
||||||
getMaterialId(Material.REDSTONE_ORE),
|
Material.REDSTONE_ORE,
|
||||||
getMaterialId(Material.CLAY),
|
Material.CLAY,
|
||||||
getMaterialId(Material.EMERALD_ORE)
|
Material.EMERALD_ORE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.normalWorldMode1BlockId = getMaterialId(Material.STONE);
|
this.configDefaults.normalWorldMode1BlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||||
|
|
||||||
this.configDefaults.normalWorldRequiredObfuscateBlockIds = new int[] {
|
this.configDefaults.normalWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.STONE)
|
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() {
|
public ConfigDefaults getConfigDefaults() {
|
||||||
return this.configDefaults;
|
return this.configDefaults;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Material[] getExtraTransparentBlocks() {
|
||||||
|
return this.extraTransparentBlocks;
|
||||||
|
}
|
||||||
|
|
||||||
public void setMaxLoadedCacheFiles(int value) {
|
public void setMaxLoadedCacheFiles(int value) {
|
||||||
this.maxLoadedCacheFiles = value;
|
this.maxLoadedCacheFiles = value;
|
||||||
|
@ -218,9 +310,12 @@ public class NmsManager implements INmsManager {
|
||||||
|| item == Material.DIAMOND_HOE;
|
|| item == Material.DIAMOND_HOE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
public boolean isSign(int combinedBlockId) {
|
public boolean isSign(int combinedBlockId) {
|
||||||
return combinedBlockId == getMaterialId(Material.WALL_SIGN)
|
int typeId = combinedBlockId >> 4;
|
||||||
|| combinedBlockId == getMaterialId(Material.SIGN_POST);
|
|
||||||
|
return typeId == Material.WALL_SIGN.getId()
|
||||||
|
|| typeId == Material.SIGN_POST.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isAir(int combinedBlockId) {
|
public boolean isAir(int combinedBlockId) {
|
||||||
|
@ -249,16 +344,17 @@ public class NmsManager implements INmsManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
public int getMaterialId(Material material) {
|
|
||||||
return material.getId() << 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Set<Integer> getMaterialIds(Material material) {
|
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) {
|
for(IBlockData blockData : blockDataList) {
|
||||||
return combinedBlockId & ~(0x0F);
|
ids.add(blockId | block.toLegacyData(blockData));
|
||||||
|
}
|
||||||
|
|
||||||
|
return ids;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
|
@ -289,4 +385,27 @@ public class NmsManager implements INmsManager {
|
||||||
|
|
||||||
return chunk != null ? chunk.getBlockData(new BlockPosition(x, y, z)) : null;
|
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() {
|
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() {
|
public IBlockData getBlockData() {
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
package com.lishid.orebfuscator.nms.v1_11_R1;
|
package com.lishid.orebfuscator.nms.v1_11_R1;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
import com.lishid.orebfuscator.types.ConfigDefaults;
|
import com.lishid.orebfuscator.types.ConfigDefaults;
|
||||||
import net.minecraft.server.v1_11_R1.Block;
|
import net.minecraft.server.v1_11_R1.Block;
|
||||||
import net.minecraft.server.v1_11_R1.BlockPosition;
|
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.nms.INmsManager;
|
||||||
import com.lishid.orebfuscator.types.BlockCoord;
|
import com.lishid.orebfuscator.types.BlockCoord;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class NmsManager implements INmsManager {
|
public class NmsManager implements INmsManager {
|
||||||
private ConfigDefaults configDefaults;
|
private ConfigDefaults configDefaults;
|
||||||
|
private Material[] extraTransparentBlocks;
|
||||||
private int maxLoadedCacheFiles;
|
private int maxLoadedCacheFiles;
|
||||||
|
|
||||||
public NmsManager() {
|
public NmsManager() {
|
||||||
|
@ -42,110 +45,199 @@ public class NmsManager implements INmsManager {
|
||||||
|
|
||||||
// Default World
|
// Default World
|
||||||
|
|
||||||
this.configDefaults.defaultProximityHiderBlockIds = new int[] {
|
this.configDefaults.defaultProximityHiderBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.DISPENSER),
|
Material.DISPENSER,
|
||||||
getMaterialId(Material.MOB_SPAWNER),
|
Material.MOB_SPAWNER,
|
||||||
getMaterialId(Material.CHEST),
|
Material.CHEST,
|
||||||
getMaterialId(Material.HOPPER),
|
Material.HOPPER,
|
||||||
getMaterialId(Material.WORKBENCH),
|
Material.WORKBENCH,
|
||||||
getMaterialId(Material.FURNACE),
|
Material.FURNACE,
|
||||||
getMaterialId(Material.BURNING_FURNACE),
|
Material.BURNING_FURNACE,
|
||||||
getMaterialId(Material.ENCHANTMENT_TABLE),
|
Material.ENCHANTMENT_TABLE,
|
||||||
getMaterialId(Material.EMERALD_ORE),
|
Material.EMERALD_ORE,
|
||||||
getMaterialId(Material.ENDER_CHEST),
|
Material.ENDER_CHEST,
|
||||||
getMaterialId(Material.ANVIL),
|
Material.ANVIL,
|
||||||
getMaterialId(Material.TRAPPED_CHEST),
|
Material.TRAPPED_CHEST,
|
||||||
getMaterialId(Material.DIAMOND_ORE)
|
Material.DIAMOND_ORE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.defaultDarknessBlockIds = new int[] {
|
this.configDefaults.defaultDarknessBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.MOB_SPAWNER),
|
Material.MOB_SPAWNER,
|
||||||
getMaterialId(Material.CHEST)
|
Material.CHEST
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.defaultMode1BlockId = getMaterialId(Material.STONE);
|
this.configDefaults.defaultMode1BlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||||
this.configDefaults.defaultProximityHiderSpecialBlockId = getMaterialId(Material.STONE);
|
this.configDefaults.defaultProximityHiderSpecialBlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||||
|
|
||||||
// The End
|
// The End
|
||||||
|
|
||||||
this.configDefaults.endWorldRandomBlockIds = new int[] {
|
this.configDefaults.endWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.BEDROCK),
|
Material.BEDROCK,
|
||||||
getMaterialId(Material.OBSIDIAN),
|
Material.OBSIDIAN,
|
||||||
getMaterialId(Material.ENDER_STONE),
|
Material.ENDER_STONE,
|
||||||
getMaterialId(Material.PURPUR_BLOCK),
|
Material.PURPUR_BLOCK,
|
||||||
getMaterialId(Material.END_BRICKS)
|
Material.END_BRICKS
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.endWorldObfuscateBlockIds = new int[] {
|
this.configDefaults.endWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.ENDER_STONE)
|
Material.ENDER_STONE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.endWorldMode1BlockId = getMaterialId(Material.ENDER_STONE);
|
this.configDefaults.endWorldMode1BlockId = getMaterialIds(Material.ENDER_STONE).iterator().next();
|
||||||
this.configDefaults.endWorldRequiredObfuscateBlockIds = new int[] { getMaterialId(Material.ENDER_STONE) };
|
this.configDefaults.endWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] { Material.ENDER_STONE });
|
||||||
|
|
||||||
// Nether World
|
// Nether World
|
||||||
|
|
||||||
this.configDefaults.netherWorldRandomBlockIds = new int[] {
|
this.configDefaults.netherWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.GRAVEL),
|
Material.GRAVEL,
|
||||||
getMaterialId(Material.NETHERRACK),
|
Material.NETHERRACK,
|
||||||
getMaterialId(Material.SOUL_SAND),
|
Material.SOUL_SAND,
|
||||||
getMaterialId(Material.NETHER_BRICK),
|
Material.NETHER_BRICK,
|
||||||
getMaterialId(Material.QUARTZ_ORE)
|
Material.QUARTZ_ORE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.netherWorldObfuscateBlockIds = new int[] {
|
this.configDefaults.netherWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.NETHERRACK),
|
Material.NETHERRACK,
|
||||||
getMaterialId(Material.QUARTZ_ORE)
|
Material.QUARTZ_ORE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.netherWorldMode1BlockId = getMaterialId(Material.NETHERRACK);
|
this.configDefaults.netherWorldMode1BlockId = getMaterialIds(Material.NETHERRACK).iterator().next();
|
||||||
|
|
||||||
this.configDefaults.netherWorldRequiredObfuscateBlockIds = new int[] {
|
this.configDefaults.netherWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.NETHERRACK)
|
Material.NETHERRACK
|
||||||
};
|
});
|
||||||
|
|
||||||
// Normal World
|
// Normal World
|
||||||
|
|
||||||
this.configDefaults.normalWorldRandomBlockIds = new int[] {
|
this.configDefaults.normalWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.STONE),
|
Material.STONE,
|
||||||
getMaterialId(Material.COBBLESTONE),
|
Material.COBBLESTONE,
|
||||||
getMaterialId(Material.WOOD),
|
Material.WOOD,
|
||||||
getMaterialId(Material.GOLD_ORE),
|
Material.GOLD_ORE,
|
||||||
getMaterialId(Material.IRON_ORE),
|
Material.IRON_ORE,
|
||||||
getMaterialId(Material.COAL_ORE),
|
Material.COAL_ORE,
|
||||||
getMaterialId(Material.LAPIS_ORE),
|
Material.LAPIS_ORE,
|
||||||
getMaterialId(Material.TNT),
|
Material.TNT,
|
||||||
getMaterialId(Material.MOSSY_COBBLESTONE),
|
Material.MOSSY_COBBLESTONE,
|
||||||
getMaterialId(Material.OBSIDIAN),
|
Material.OBSIDIAN,
|
||||||
getMaterialId(Material.DIAMOND_ORE),
|
Material.DIAMOND_ORE,
|
||||||
getMaterialId(Material.REDSTONE_ORE),
|
Material.REDSTONE_ORE,
|
||||||
getMaterialId(Material.CLAY),
|
Material.CLAY,
|
||||||
getMaterialId(Material.EMERALD_ORE)
|
Material.EMERALD_ORE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.normalWorldObfuscateBlockIds = new int[] {
|
this.configDefaults.normalWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.GOLD_ORE),
|
Material.GOLD_ORE,
|
||||||
getMaterialId(Material.IRON_ORE),
|
Material.IRON_ORE,
|
||||||
getMaterialId(Material.COAL_ORE),
|
Material.COAL_ORE,
|
||||||
getMaterialId(Material.LAPIS_ORE),
|
Material.LAPIS_ORE,
|
||||||
getMaterialId(Material.CHEST),
|
Material.CHEST,
|
||||||
getMaterialId(Material.DIAMOND_ORE),
|
Material.DIAMOND_ORE,
|
||||||
getMaterialId(Material.ENDER_CHEST),
|
Material.ENDER_CHEST,
|
||||||
getMaterialId(Material.REDSTONE_ORE),
|
Material.REDSTONE_ORE,
|
||||||
getMaterialId(Material.CLAY),
|
Material.CLAY,
|
||||||
getMaterialId(Material.EMERALD_ORE)
|
Material.EMERALD_ORE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.normalWorldMode1BlockId = getMaterialId(Material.STONE);
|
this.configDefaults.normalWorldMode1BlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||||
|
|
||||||
this.configDefaults.normalWorldRequiredObfuscateBlockIds = new int[] {
|
this.configDefaults.normalWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.STONE)
|
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() {
|
public ConfigDefaults getConfigDefaults() {
|
||||||
return this.configDefaults;
|
return this.configDefaults;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Material[] getExtraTransparentBlocks() {
|
||||||
|
return this.extraTransparentBlocks;
|
||||||
|
}
|
||||||
|
|
||||||
public void setMaxLoadedCacheFiles(int value) {
|
public void setMaxLoadedCacheFiles(int value) {
|
||||||
this.maxLoadedCacheFiles = value;
|
this.maxLoadedCacheFiles = value;
|
||||||
|
@ -218,9 +310,12 @@ public class NmsManager implements INmsManager {
|
||||||
|| item == Material.DIAMOND_HOE;
|
|| item == Material.DIAMOND_HOE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
public boolean isSign(int combinedBlockId) {
|
public boolean isSign(int combinedBlockId) {
|
||||||
return combinedBlockId == getMaterialId(Material.WALL_SIGN)
|
int typeId = combinedBlockId >> 4;
|
||||||
|| combinedBlockId == getMaterialId(Material.SIGN_POST);
|
|
||||||
|
return typeId == Material.WALL_SIGN.getId()
|
||||||
|
|| typeId == Material.SIGN_POST.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isAir(int combinedBlockId) {
|
public boolean isAir(int combinedBlockId) {
|
||||||
|
@ -249,16 +344,17 @@ public class NmsManager implements INmsManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
public int getMaterialId(Material material) {
|
|
||||||
return material.getId() << 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Set<Integer> getMaterialIds(Material material) {
|
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) {
|
for(IBlockData blockData : blockDataList) {
|
||||||
return combinedBlockId & ~(0x0F);
|
ids.add(blockId | block.toLegacyData(blockData));
|
||||||
|
}
|
||||||
|
|
||||||
|
return ids;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
|
@ -289,4 +385,27 @@ public class NmsManager implements INmsManager {
|
||||||
|
|
||||||
return chunk != null ? chunk.getBlockData(new BlockPosition(x, y, z)) : null;
|
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() {
|
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() {
|
public IBlockData getBlockData() {
|
||||||
|
|
|
@ -6,16 +6,9 @@
|
||||||
|
|
||||||
package com.lishid.orebfuscator.nms.v1_12_R1;
|
package com.lishid.orebfuscator.nms.v1_12_R1;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
import com.lishid.orebfuscator.types.ConfigDefaults;
|
import com.lishid.orebfuscator.types.ConfigDefaults;
|
||||||
import net.minecraft.server.v1_12_R1.Block;
|
import net.minecraft.server.v1_12_R1.*;
|
||||||
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 org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
@ -31,10 +24,12 @@ import com.lishid.orebfuscator.nms.INBT;
|
||||||
import com.lishid.orebfuscator.nms.INmsManager;
|
import com.lishid.orebfuscator.nms.INmsManager;
|
||||||
import com.lishid.orebfuscator.types.BlockCoord;
|
import com.lishid.orebfuscator.types.BlockCoord;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class NmsManager implements INmsManager {
|
public class NmsManager implements INmsManager {
|
||||||
private ConfigDefaults configDefaults;
|
private ConfigDefaults configDefaults;
|
||||||
|
private Material[] extraTransparentBlocks;
|
||||||
private int maxLoadedCacheFiles;
|
private int maxLoadedCacheFiles;
|
||||||
|
|
||||||
public NmsManager() {
|
public NmsManager() {
|
||||||
|
@ -42,110 +37,199 @@ public class NmsManager implements INmsManager {
|
||||||
|
|
||||||
// Default World
|
// Default World
|
||||||
|
|
||||||
this.configDefaults.defaultProximityHiderBlockIds = new int[] {
|
this.configDefaults.defaultProximityHiderBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.DISPENSER),
|
Material.DISPENSER,
|
||||||
getMaterialId(Material.MOB_SPAWNER),
|
Material.MOB_SPAWNER,
|
||||||
getMaterialId(Material.CHEST),
|
Material.CHEST,
|
||||||
getMaterialId(Material.HOPPER),
|
Material.HOPPER,
|
||||||
getMaterialId(Material.WORKBENCH),
|
Material.WORKBENCH,
|
||||||
getMaterialId(Material.FURNACE),
|
Material.FURNACE,
|
||||||
getMaterialId(Material.BURNING_FURNACE),
|
Material.BURNING_FURNACE,
|
||||||
getMaterialId(Material.ENCHANTMENT_TABLE),
|
Material.ENCHANTMENT_TABLE,
|
||||||
getMaterialId(Material.EMERALD_ORE),
|
Material.EMERALD_ORE,
|
||||||
getMaterialId(Material.ENDER_CHEST),
|
Material.ENDER_CHEST,
|
||||||
getMaterialId(Material.ANVIL),
|
Material.ANVIL,
|
||||||
getMaterialId(Material.TRAPPED_CHEST),
|
Material.TRAPPED_CHEST,
|
||||||
getMaterialId(Material.DIAMOND_ORE)
|
Material.DIAMOND_ORE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.defaultDarknessBlockIds = new int[] {
|
this.configDefaults.defaultDarknessBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.MOB_SPAWNER),
|
Material.MOB_SPAWNER,
|
||||||
getMaterialId(Material.CHEST)
|
Material.CHEST
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.defaultMode1BlockId = getMaterialId(Material.STONE);
|
this.configDefaults.defaultMode1BlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||||
this.configDefaults.defaultProximityHiderSpecialBlockId = getMaterialId(Material.STONE);
|
this.configDefaults.defaultProximityHiderSpecialBlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||||
|
|
||||||
// The End
|
// The End
|
||||||
|
|
||||||
this.configDefaults.endWorldRandomBlockIds = new int[] {
|
this.configDefaults.endWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.BEDROCK),
|
Material.BEDROCK,
|
||||||
getMaterialId(Material.OBSIDIAN),
|
Material.OBSIDIAN,
|
||||||
getMaterialId(Material.ENDER_STONE),
|
Material.ENDER_STONE,
|
||||||
getMaterialId(Material.PURPUR_BLOCK),
|
Material.PURPUR_BLOCK,
|
||||||
getMaterialId(Material.END_BRICKS)
|
Material.END_BRICKS
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.endWorldObfuscateBlockIds = new int[] {
|
this.configDefaults.endWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.ENDER_STONE)
|
Material.ENDER_STONE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.endWorldMode1BlockId = getMaterialId(Material.ENDER_STONE);
|
this.configDefaults.endWorldMode1BlockId = getMaterialIds(Material.ENDER_STONE).iterator().next();
|
||||||
this.configDefaults.endWorldRequiredObfuscateBlockIds = new int[] { getMaterialId(Material.ENDER_STONE) };
|
this.configDefaults.endWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] { Material.ENDER_STONE });
|
||||||
|
|
||||||
// Nether World
|
// Nether World
|
||||||
|
|
||||||
this.configDefaults.netherWorldRandomBlockIds = new int[] {
|
this.configDefaults.netherWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.GRAVEL),
|
Material.GRAVEL,
|
||||||
getMaterialId(Material.NETHERRACK),
|
Material.NETHERRACK,
|
||||||
getMaterialId(Material.SOUL_SAND),
|
Material.SOUL_SAND,
|
||||||
getMaterialId(Material.NETHER_BRICK),
|
Material.NETHER_BRICK,
|
||||||
getMaterialId(Material.QUARTZ_ORE)
|
Material.QUARTZ_ORE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.netherWorldObfuscateBlockIds = new int[] {
|
this.configDefaults.netherWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.NETHERRACK),
|
Material.NETHERRACK,
|
||||||
getMaterialId(Material.QUARTZ_ORE)
|
Material.QUARTZ_ORE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.netherWorldMode1BlockId = getMaterialId(Material.NETHERRACK);
|
this.configDefaults.netherWorldMode1BlockId = getMaterialIds(Material.NETHERRACK).iterator().next();
|
||||||
|
|
||||||
this.configDefaults.netherWorldRequiredObfuscateBlockIds = new int[] {
|
this.configDefaults.netherWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.NETHERRACK)
|
Material.NETHERRACK
|
||||||
};
|
});
|
||||||
|
|
||||||
// Normal World
|
// Normal World
|
||||||
|
|
||||||
this.configDefaults.normalWorldRandomBlockIds = new int[] {
|
this.configDefaults.normalWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.STONE),
|
Material.STONE,
|
||||||
getMaterialId(Material.COBBLESTONE),
|
Material.COBBLESTONE,
|
||||||
getMaterialId(Material.WOOD),
|
Material.WOOD,
|
||||||
getMaterialId(Material.GOLD_ORE),
|
Material.GOLD_ORE,
|
||||||
getMaterialId(Material.IRON_ORE),
|
Material.IRON_ORE,
|
||||||
getMaterialId(Material.COAL_ORE),
|
Material.COAL_ORE,
|
||||||
getMaterialId(Material.LAPIS_ORE),
|
Material.LAPIS_ORE,
|
||||||
getMaterialId(Material.TNT),
|
Material.TNT,
|
||||||
getMaterialId(Material.MOSSY_COBBLESTONE),
|
Material.MOSSY_COBBLESTONE,
|
||||||
getMaterialId(Material.OBSIDIAN),
|
Material.OBSIDIAN,
|
||||||
getMaterialId(Material.DIAMOND_ORE),
|
Material.DIAMOND_ORE,
|
||||||
getMaterialId(Material.REDSTONE_ORE),
|
Material.REDSTONE_ORE,
|
||||||
getMaterialId(Material.CLAY),
|
Material.CLAY,
|
||||||
getMaterialId(Material.EMERALD_ORE)
|
Material.EMERALD_ORE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.normalWorldObfuscateBlockIds = new int[] {
|
this.configDefaults.normalWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.GOLD_ORE),
|
Material.GOLD_ORE,
|
||||||
getMaterialId(Material.IRON_ORE),
|
Material.IRON_ORE,
|
||||||
getMaterialId(Material.COAL_ORE),
|
Material.COAL_ORE,
|
||||||
getMaterialId(Material.LAPIS_ORE),
|
Material.LAPIS_ORE,
|
||||||
getMaterialId(Material.CHEST),
|
Material.CHEST,
|
||||||
getMaterialId(Material.DIAMOND_ORE),
|
Material.DIAMOND_ORE,
|
||||||
getMaterialId(Material.ENDER_CHEST),
|
Material.ENDER_CHEST,
|
||||||
getMaterialId(Material.REDSTONE_ORE),
|
Material.REDSTONE_ORE,
|
||||||
getMaterialId(Material.CLAY),
|
Material.CLAY,
|
||||||
getMaterialId(Material.EMERALD_ORE)
|
Material.EMERALD_ORE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.normalWorldMode1BlockId = getMaterialId(Material.STONE);
|
this.configDefaults.normalWorldMode1BlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||||
|
|
||||||
this.configDefaults.normalWorldRequiredObfuscateBlockIds = new int[] {
|
this.configDefaults.normalWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.STONE)
|
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() {
|
public ConfigDefaults getConfigDefaults() {
|
||||||
return this.configDefaults;
|
return this.configDefaults;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Material[] getExtraTransparentBlocks() {
|
||||||
|
return this.extraTransparentBlocks;
|
||||||
|
}
|
||||||
|
|
||||||
public void setMaxLoadedCacheFiles(int value) {
|
public void setMaxLoadedCacheFiles(int value) {
|
||||||
this.maxLoadedCacheFiles = value;
|
this.maxLoadedCacheFiles = value;
|
||||||
|
@ -218,9 +302,12 @@ public class NmsManager implements INmsManager {
|
||||||
|| item == Material.DIAMOND_HOE;
|
|| item == Material.DIAMOND_HOE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
public boolean isSign(int combinedBlockId) {
|
public boolean isSign(int combinedBlockId) {
|
||||||
return combinedBlockId == getMaterialId(Material.WALL_SIGN)
|
int typeId = combinedBlockId >> 4;
|
||||||
|| combinedBlockId == getMaterialId(Material.SIGN_POST);
|
|
||||||
|
return typeId == Material.WALL_SIGN.getId()
|
||||||
|
|| typeId == Material.SIGN_POST.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isAir(int combinedBlockId) {
|
public boolean isAir(int combinedBlockId) {
|
||||||
|
@ -249,16 +336,17 @@ public class NmsManager implements INmsManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
public int getMaterialId(Material material) {
|
|
||||||
return material.getId() << 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Set<Integer> getMaterialIds(Material material) {
|
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) {
|
for(IBlockData blockData : blockDataList) {
|
||||||
return combinedBlockId & ~(0x0F);
|
ids.add(blockId | block.toLegacyData(blockData));
|
||||||
|
}
|
||||||
|
|
||||||
|
return ids;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
|
@ -289,4 +377,27 @@ public class NmsManager implements INmsManager {
|
||||||
|
|
||||||
return chunk != null ? chunk.getBlockData(new BlockPosition(x, y, z)) : null;
|
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 Set<Integer> BLOCK_ID_SIGNS;
|
||||||
|
|
||||||
private ConfigDefaults configDefaults;
|
private ConfigDefaults configDefaults;
|
||||||
|
private Material[] extraTransparentBlocks;
|
||||||
private int maxLoadedCacheFiles;
|
private int maxLoadedCacheFiles;
|
||||||
private HashMap<Material, Set<Integer>> materialIds;
|
private HashMap<Material, Set<Integer>> materialIds;
|
||||||
|
|
||||||
|
@ -158,6 +159,233 @@ public class NmsManager implements INmsManager {
|
||||||
this.configDefaults.normalWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
this.configDefaults.normalWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
Material.STONE
|
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() {
|
private void initBlockIds() {
|
||||||
|
@ -184,6 +412,10 @@ public class NmsManager implements INmsManager {
|
||||||
return this.configDefaults;
|
return this.configDefaults;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Material[] getExtraTransparentBlocks() {
|
||||||
|
return this.extraTransparentBlocks;
|
||||||
|
}
|
||||||
|
|
||||||
public void setMaxLoadedCacheFiles(int value) {
|
public void setMaxLoadedCacheFiles(int value) {
|
||||||
this.maxLoadedCacheFiles = value;
|
this.maxLoadedCacheFiles = value;
|
||||||
}
|
}
|
||||||
|
@ -281,10 +513,6 @@ public class NmsManager implements INmsManager {
|
||||||
return this.materialIds.get(material);
|
return this.materialIds.get(material);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getTypeId(int combinedBlockId) {
|
|
||||||
return combinedBlockId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean sendBlockChange(Player player, Location blockLocation) {
|
public boolean sendBlockChange(Player player, Location blockLocation) {
|
||||||
IBlockData blockData = getBlockData(blockLocation.getWorld(), blockLocation.getBlockX(), blockLocation.getBlockY(), blockLocation.getBlockZ(), false);
|
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 ConfigDefaults configDefaults;
|
||||||
private int maxLoadedCacheFiles;
|
private int maxLoadedCacheFiles;
|
||||||
|
private Material[] extraTransparentBlocks;
|
||||||
private HashMap<Material, Set<Integer>> materialIds;
|
private HashMap<Material, Set<Integer>> materialIds;
|
||||||
|
|
||||||
public NmsManager() {
|
public NmsManager() {
|
||||||
|
@ -150,6 +151,238 @@ public class NmsManager implements INmsManager {
|
||||||
this.configDefaults.normalWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
this.configDefaults.normalWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
Material.STONE
|
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() {
|
private void initBlockIds() {
|
||||||
|
@ -172,6 +405,10 @@ public class NmsManager implements INmsManager {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Material[] getExtraTransparentBlocks() {
|
||||||
|
return this.extraTransparentBlocks;
|
||||||
|
}
|
||||||
|
|
||||||
public ConfigDefaults getConfigDefaults() {
|
public ConfigDefaults getConfigDefaults() {
|
||||||
return this.configDefaults;
|
return this.configDefaults;
|
||||||
}
|
}
|
||||||
|
@ -273,10 +510,6 @@ public class NmsManager implements INmsManager {
|
||||||
return this.materialIds.get(material);
|
return this.materialIds.get(material);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getTypeId(int combinedBlockId) {
|
|
||||||
return combinedBlockId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean sendBlockChange(Player player, Location blockLocation) {
|
public boolean sendBlockChange(Player player, Location blockLocation) {
|
||||||
IBlockData blockData = getBlockData(blockLocation.getWorld(), blockLocation.getBlockX(), blockLocation.getBlockY(), blockLocation.getBlockZ(), false);
|
IBlockData blockData = getBlockData(blockLocation.getWorld(), blockLocation.getBlockX(), blockLocation.getBlockY(), blockLocation.getBlockZ(), false);
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,8 @@ public class BlockInfo implements IBlockInfo {
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getCombinedId() {
|
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() {
|
public IBlockData getBlockData() {
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
package com.lishid.orebfuscator.nms.v1_9_R1;
|
package com.lishid.orebfuscator.nms.v1_9_R1;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
import com.lishid.orebfuscator.types.ConfigDefaults;
|
import com.lishid.orebfuscator.types.ConfigDefaults;
|
||||||
import net.minecraft.server.v1_9_R1.Block;
|
import net.minecraft.server.v1_9_R1.Block;
|
||||||
import net.minecraft.server.v1_9_R1.BlockPosition;
|
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.nms.INmsManager;
|
||||||
import com.lishid.orebfuscator.types.BlockCoord;
|
import com.lishid.orebfuscator.types.BlockCoord;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class NmsManager implements INmsManager {
|
public class NmsManager implements INmsManager {
|
||||||
private ConfigDefaults configDefaults;
|
private ConfigDefaults configDefaults;
|
||||||
|
private Material[] extraTransparentBlocks;
|
||||||
private int maxLoadedCacheFiles;
|
private int maxLoadedCacheFiles;
|
||||||
|
|
||||||
public NmsManager() {
|
public NmsManager() {
|
||||||
|
@ -42,104 +45,189 @@ public class NmsManager implements INmsManager {
|
||||||
|
|
||||||
// Default World
|
// Default World
|
||||||
|
|
||||||
this.configDefaults.defaultProximityHiderBlockIds = new int[] {
|
this.configDefaults.defaultProximityHiderBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.DISPENSER),
|
Material.DISPENSER,
|
||||||
getMaterialId(Material.MOB_SPAWNER),
|
Material.MOB_SPAWNER,
|
||||||
getMaterialId(Material.CHEST),
|
Material.CHEST,
|
||||||
getMaterialId(Material.HOPPER),
|
Material.HOPPER,
|
||||||
getMaterialId(Material.WORKBENCH),
|
Material.WORKBENCH,
|
||||||
getMaterialId(Material.FURNACE),
|
Material.FURNACE,
|
||||||
getMaterialId(Material.BURNING_FURNACE),
|
Material.BURNING_FURNACE,
|
||||||
getMaterialId(Material.ENCHANTMENT_TABLE),
|
Material.ENCHANTMENT_TABLE,
|
||||||
getMaterialId(Material.EMERALD_ORE),
|
Material.EMERALD_ORE,
|
||||||
getMaterialId(Material.ENDER_CHEST),
|
Material.ENDER_CHEST,
|
||||||
getMaterialId(Material.ANVIL),
|
Material.ANVIL,
|
||||||
getMaterialId(Material.TRAPPED_CHEST),
|
Material.TRAPPED_CHEST,
|
||||||
getMaterialId(Material.DIAMOND_ORE)
|
Material.DIAMOND_ORE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.defaultDarknessBlockIds = new int[] {
|
this.configDefaults.defaultDarknessBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.MOB_SPAWNER),
|
Material.MOB_SPAWNER,
|
||||||
getMaterialId(Material.CHEST)
|
Material.CHEST
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.defaultMode1BlockId = getMaterialId(Material.STONE);
|
this.configDefaults.defaultMode1BlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||||
this.configDefaults.defaultProximityHiderSpecialBlockId = getMaterialId(Material.STONE);
|
this.configDefaults.defaultProximityHiderSpecialBlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||||
|
|
||||||
// The End
|
// The End
|
||||||
|
|
||||||
this.configDefaults.endWorldRandomBlockIds = new int[] {
|
this.configDefaults.endWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.BEDROCK),
|
Material.BEDROCK,
|
||||||
getMaterialId(Material.OBSIDIAN),
|
Material.OBSIDIAN,
|
||||||
getMaterialId(Material.ENDER_STONE),
|
Material.ENDER_STONE,
|
||||||
getMaterialId(Material.PURPUR_BLOCK),
|
Material.PURPUR_BLOCK,
|
||||||
getMaterialId(Material.END_BRICKS)
|
Material.END_BRICKS
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.endWorldObfuscateBlockIds = new int[] {
|
this.configDefaults.endWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.ENDER_STONE)
|
Material.ENDER_STONE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.endWorldMode1BlockId = getMaterialId(Material.ENDER_STONE);
|
this.configDefaults.endWorldMode1BlockId = getMaterialIds(Material.ENDER_STONE).iterator().next();
|
||||||
this.configDefaults.endWorldRequiredObfuscateBlockIds = new int[] { getMaterialId(Material.ENDER_STONE) };
|
this.configDefaults.endWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] { Material.ENDER_STONE });
|
||||||
|
|
||||||
// Nether World
|
// Nether World
|
||||||
|
|
||||||
this.configDefaults.netherWorldRandomBlockIds = new int[] {
|
this.configDefaults.netherWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.GRAVEL),
|
Material.GRAVEL,
|
||||||
getMaterialId(Material.NETHERRACK),
|
Material.NETHERRACK,
|
||||||
getMaterialId(Material.SOUL_SAND),
|
Material.SOUL_SAND,
|
||||||
getMaterialId(Material.NETHER_BRICK),
|
Material.NETHER_BRICK,
|
||||||
getMaterialId(Material.QUARTZ_ORE)
|
Material.QUARTZ_ORE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.netherWorldObfuscateBlockIds = new int[] {
|
this.configDefaults.netherWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.NETHERRACK),
|
Material.NETHERRACK,
|
||||||
getMaterialId(Material.QUARTZ_ORE)
|
Material.QUARTZ_ORE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.netherWorldMode1BlockId = getMaterialId(Material.NETHERRACK);
|
this.configDefaults.netherWorldMode1BlockId = getMaterialIds(Material.NETHERRACK).iterator().next();
|
||||||
|
|
||||||
this.configDefaults.netherWorldRequiredObfuscateBlockIds = new int[] {
|
this.configDefaults.netherWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.NETHERRACK)
|
Material.NETHERRACK
|
||||||
};
|
});
|
||||||
|
|
||||||
// Normal World
|
// Normal World
|
||||||
|
|
||||||
this.configDefaults.normalWorldRandomBlockIds = new int[] {
|
this.configDefaults.normalWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.STONE),
|
Material.STONE,
|
||||||
getMaterialId(Material.COBBLESTONE),
|
Material.COBBLESTONE,
|
||||||
getMaterialId(Material.WOOD),
|
Material.WOOD,
|
||||||
getMaterialId(Material.GOLD_ORE),
|
Material.GOLD_ORE,
|
||||||
getMaterialId(Material.IRON_ORE),
|
Material.IRON_ORE,
|
||||||
getMaterialId(Material.COAL_ORE),
|
Material.COAL_ORE,
|
||||||
getMaterialId(Material.LAPIS_ORE),
|
Material.LAPIS_ORE,
|
||||||
getMaterialId(Material.TNT),
|
Material.TNT,
|
||||||
getMaterialId(Material.MOSSY_COBBLESTONE),
|
Material.MOSSY_COBBLESTONE,
|
||||||
getMaterialId(Material.OBSIDIAN),
|
Material.OBSIDIAN,
|
||||||
getMaterialId(Material.DIAMOND_ORE),
|
Material.DIAMOND_ORE,
|
||||||
getMaterialId(Material.REDSTONE_ORE),
|
Material.REDSTONE_ORE,
|
||||||
getMaterialId(Material.CLAY),
|
Material.CLAY,
|
||||||
getMaterialId(Material.EMERALD_ORE)
|
Material.EMERALD_ORE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.normalWorldObfuscateBlockIds = new int[] {
|
this.configDefaults.normalWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.GOLD_ORE),
|
Material.GOLD_ORE,
|
||||||
getMaterialId(Material.IRON_ORE),
|
Material.IRON_ORE,
|
||||||
getMaterialId(Material.COAL_ORE),
|
Material.COAL_ORE,
|
||||||
getMaterialId(Material.LAPIS_ORE),
|
Material.LAPIS_ORE,
|
||||||
getMaterialId(Material.CHEST),
|
Material.CHEST,
|
||||||
getMaterialId(Material.DIAMOND_ORE),
|
Material.DIAMOND_ORE,
|
||||||
getMaterialId(Material.ENDER_CHEST),
|
Material.ENDER_CHEST,
|
||||||
getMaterialId(Material.REDSTONE_ORE),
|
Material.REDSTONE_ORE,
|
||||||
getMaterialId(Material.CLAY),
|
Material.CLAY,
|
||||||
getMaterialId(Material.EMERALD_ORE)
|
Material.EMERALD_ORE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.normalWorldMode1BlockId = getMaterialId(Material.STONE);
|
this.configDefaults.normalWorldMode1BlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||||
|
|
||||||
this.configDefaults.normalWorldRequiredObfuscateBlockIds = new int[] {
|
this.configDefaults.normalWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.STONE)
|
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;
|
return this.configDefaults;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Material[] getExtraTransparentBlocks() {
|
||||||
|
return this.extraTransparentBlocks;
|
||||||
|
}
|
||||||
|
|
||||||
public void setMaxLoadedCacheFiles(int value) {
|
public void setMaxLoadedCacheFiles(int value) {
|
||||||
this.maxLoadedCacheFiles = value;
|
this.maxLoadedCacheFiles = value;
|
||||||
}
|
}
|
||||||
|
@ -211,9 +303,12 @@ public class NmsManager implements INmsManager {
|
||||||
|| item == Material.DIAMOND_HOE;
|
|| item == Material.DIAMOND_HOE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
public boolean isSign(int combinedBlockId) {
|
public boolean isSign(int combinedBlockId) {
|
||||||
return combinedBlockId == getMaterialId(Material.WALL_SIGN)
|
int typeId = combinedBlockId >> 4;
|
||||||
|| combinedBlockId == getMaterialId(Material.SIGN_POST);
|
|
||||||
|
return typeId == Material.WALL_SIGN.getId()
|
||||||
|
|| typeId == Material.SIGN_POST.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isAir(int combinedBlockId) {
|
public boolean isAir(int combinedBlockId) {
|
||||||
|
@ -242,16 +337,17 @@ public class NmsManager implements INmsManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
public int getMaterialId(Material material) {
|
|
||||||
return material.getId() << 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Set<Integer> getMaterialIds(Material material) {
|
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) {
|
for(IBlockData blockData : blockDataList) {
|
||||||
return combinedBlockId & ~(0x0F);
|
ids.add(blockId | block.toLegacyData(blockData));
|
||||||
|
}
|
||||||
|
|
||||||
|
return ids;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
|
@ -282,4 +378,27 @@ public class NmsManager implements INmsManager {
|
||||||
|
|
||||||
return chunk != null ? chunk.getBlockData(new BlockPosition(x, y, z)) : null;
|
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() {
|
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() {
|
public IBlockData getBlockData() {
|
||||||
return this.blockData;
|
return this.blockData;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
package com.lishid.orebfuscator.nms.v1_9_R2;
|
package com.lishid.orebfuscator.nms.v1_9_R2;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
import com.lishid.orebfuscator.types.ConfigDefaults;
|
import com.lishid.orebfuscator.types.ConfigDefaults;
|
||||||
import net.minecraft.server.v1_9_R2.Block;
|
import net.minecraft.server.v1_9_R2.Block;
|
||||||
import net.minecraft.server.v1_9_R2.BlockPosition;
|
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.nms.INmsManager;
|
||||||
import com.lishid.orebfuscator.types.BlockCoord;
|
import com.lishid.orebfuscator.types.BlockCoord;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class NmsManager implements INmsManager {
|
public class NmsManager implements INmsManager {
|
||||||
private ConfigDefaults configDefaults;
|
private ConfigDefaults configDefaults;
|
||||||
|
private Material[] extraTransparentBlocks;
|
||||||
private int maxLoadedCacheFiles;
|
private int maxLoadedCacheFiles;
|
||||||
|
|
||||||
public NmsManager() {
|
public NmsManager() {
|
||||||
|
@ -42,110 +45,199 @@ public class NmsManager implements INmsManager {
|
||||||
|
|
||||||
// Default World
|
// Default World
|
||||||
|
|
||||||
this.configDefaults.defaultProximityHiderBlockIds = new int[] {
|
this.configDefaults.defaultProximityHiderBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.DISPENSER),
|
Material.DISPENSER,
|
||||||
getMaterialId(Material.MOB_SPAWNER),
|
Material.MOB_SPAWNER,
|
||||||
getMaterialId(Material.CHEST),
|
Material.CHEST,
|
||||||
getMaterialId(Material.HOPPER),
|
Material.HOPPER,
|
||||||
getMaterialId(Material.WORKBENCH),
|
Material.WORKBENCH,
|
||||||
getMaterialId(Material.FURNACE),
|
Material.FURNACE,
|
||||||
getMaterialId(Material.BURNING_FURNACE),
|
Material.BURNING_FURNACE,
|
||||||
getMaterialId(Material.ENCHANTMENT_TABLE),
|
Material.ENCHANTMENT_TABLE,
|
||||||
getMaterialId(Material.EMERALD_ORE),
|
Material.EMERALD_ORE,
|
||||||
getMaterialId(Material.ENDER_CHEST),
|
Material.ENDER_CHEST,
|
||||||
getMaterialId(Material.ANVIL),
|
Material.ANVIL,
|
||||||
getMaterialId(Material.TRAPPED_CHEST),
|
Material.TRAPPED_CHEST,
|
||||||
getMaterialId(Material.DIAMOND_ORE)
|
Material.DIAMOND_ORE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.defaultDarknessBlockIds = new int[] {
|
this.configDefaults.defaultDarknessBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.MOB_SPAWNER),
|
Material.MOB_SPAWNER,
|
||||||
getMaterialId(Material.CHEST)
|
Material.CHEST
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.defaultMode1BlockId = getMaterialId(Material.STONE);
|
this.configDefaults.defaultMode1BlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||||
this.configDefaults.defaultProximityHiderSpecialBlockId = getMaterialId(Material.STONE);
|
this.configDefaults.defaultProximityHiderSpecialBlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||||
|
|
||||||
// The End
|
// The End
|
||||||
|
|
||||||
this.configDefaults.endWorldRandomBlockIds = new int[] {
|
this.configDefaults.endWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.BEDROCK),
|
Material.BEDROCK,
|
||||||
getMaterialId(Material.OBSIDIAN),
|
Material.OBSIDIAN,
|
||||||
getMaterialId(Material.ENDER_STONE),
|
Material.ENDER_STONE,
|
||||||
getMaterialId(Material.PURPUR_BLOCK),
|
Material.PURPUR_BLOCK,
|
||||||
getMaterialId(Material.END_BRICKS)
|
Material.END_BRICKS
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.endWorldObfuscateBlockIds = new int[] {
|
this.configDefaults.endWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.ENDER_STONE)
|
Material.ENDER_STONE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.endWorldMode1BlockId = getMaterialId(Material.ENDER_STONE);
|
this.configDefaults.endWorldMode1BlockId = getMaterialIds(Material.ENDER_STONE).iterator().next();
|
||||||
this.configDefaults.endWorldRequiredObfuscateBlockIds = new int[] { getMaterialId(Material.ENDER_STONE) };
|
this.configDefaults.endWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] { Material.ENDER_STONE });
|
||||||
|
|
||||||
// Nether World
|
// Nether World
|
||||||
|
|
||||||
this.configDefaults.netherWorldRandomBlockIds = new int[] {
|
this.configDefaults.netherWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.GRAVEL),
|
Material.GRAVEL,
|
||||||
getMaterialId(Material.NETHERRACK),
|
Material.NETHERRACK,
|
||||||
getMaterialId(Material.SOUL_SAND),
|
Material.SOUL_SAND,
|
||||||
getMaterialId(Material.NETHER_BRICK),
|
Material.NETHER_BRICK,
|
||||||
getMaterialId(Material.QUARTZ_ORE)
|
Material.QUARTZ_ORE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.netherWorldObfuscateBlockIds = new int[] {
|
this.configDefaults.netherWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.NETHERRACK),
|
Material.NETHERRACK,
|
||||||
getMaterialId(Material.QUARTZ_ORE)
|
Material.QUARTZ_ORE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.netherWorldMode1BlockId = getMaterialId(Material.NETHERRACK);
|
this.configDefaults.netherWorldMode1BlockId = getMaterialIds(Material.NETHERRACK).iterator().next();
|
||||||
|
|
||||||
this.configDefaults.netherWorldRequiredObfuscateBlockIds = new int[] {
|
this.configDefaults.netherWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.NETHERRACK)
|
Material.NETHERRACK
|
||||||
};
|
});
|
||||||
|
|
||||||
// Normal World
|
// Normal World
|
||||||
|
|
||||||
this.configDefaults.normalWorldRandomBlockIds = new int[] {
|
this.configDefaults.normalWorldRandomBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.STONE),
|
Material.STONE,
|
||||||
getMaterialId(Material.COBBLESTONE),
|
Material.COBBLESTONE,
|
||||||
getMaterialId(Material.WOOD),
|
Material.WOOD,
|
||||||
getMaterialId(Material.GOLD_ORE),
|
Material.GOLD_ORE,
|
||||||
getMaterialId(Material.IRON_ORE),
|
Material.IRON_ORE,
|
||||||
getMaterialId(Material.COAL_ORE),
|
Material.COAL_ORE,
|
||||||
getMaterialId(Material.LAPIS_ORE),
|
Material.LAPIS_ORE,
|
||||||
getMaterialId(Material.TNT),
|
Material.TNT,
|
||||||
getMaterialId(Material.MOSSY_COBBLESTONE),
|
Material.MOSSY_COBBLESTONE,
|
||||||
getMaterialId(Material.OBSIDIAN),
|
Material.OBSIDIAN,
|
||||||
getMaterialId(Material.DIAMOND_ORE),
|
Material.DIAMOND_ORE,
|
||||||
getMaterialId(Material.REDSTONE_ORE),
|
Material.REDSTONE_ORE,
|
||||||
getMaterialId(Material.CLAY),
|
Material.CLAY,
|
||||||
getMaterialId(Material.EMERALD_ORE)
|
Material.EMERALD_ORE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.normalWorldObfuscateBlockIds = new int[] {
|
this.configDefaults.normalWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.GOLD_ORE),
|
Material.GOLD_ORE,
|
||||||
getMaterialId(Material.IRON_ORE),
|
Material.IRON_ORE,
|
||||||
getMaterialId(Material.COAL_ORE),
|
Material.COAL_ORE,
|
||||||
getMaterialId(Material.LAPIS_ORE),
|
Material.LAPIS_ORE,
|
||||||
getMaterialId(Material.CHEST),
|
Material.CHEST,
|
||||||
getMaterialId(Material.DIAMOND_ORE),
|
Material.DIAMOND_ORE,
|
||||||
getMaterialId(Material.ENDER_CHEST),
|
Material.ENDER_CHEST,
|
||||||
getMaterialId(Material.REDSTONE_ORE),
|
Material.REDSTONE_ORE,
|
||||||
getMaterialId(Material.CLAY),
|
Material.CLAY,
|
||||||
getMaterialId(Material.EMERALD_ORE)
|
Material.EMERALD_ORE
|
||||||
};
|
});
|
||||||
|
|
||||||
this.configDefaults.normalWorldMode1BlockId = getMaterialId(Material.STONE);
|
this.configDefaults.normalWorldMode1BlockId = getMaterialIds(Material.STONE).iterator().next();
|
||||||
|
|
||||||
this.configDefaults.normalWorldRequiredObfuscateBlockIds = new int[] {
|
this.configDefaults.normalWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] {
|
||||||
getMaterialId(Material.STONE)
|
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() {
|
public ConfigDefaults getConfigDefaults() {
|
||||||
return this.configDefaults;
|
return this.configDefaults;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Material[] getExtraTransparentBlocks() {
|
||||||
|
return this.extraTransparentBlocks;
|
||||||
|
}
|
||||||
|
|
||||||
public void setMaxLoadedCacheFiles(int value) {
|
public void setMaxLoadedCacheFiles(int value) {
|
||||||
this.maxLoadedCacheFiles = value;
|
this.maxLoadedCacheFiles = value;
|
||||||
|
@ -211,9 +303,12 @@ public class NmsManager implements INmsManager {
|
||||||
|| item == Material.DIAMOND_HOE;
|
|| item == Material.DIAMOND_HOE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
public boolean isSign(int combinedBlockId) {
|
public boolean isSign(int combinedBlockId) {
|
||||||
return combinedBlockId == getMaterialId(Material.WALL_SIGN)
|
int typeId = combinedBlockId >> 4;
|
||||||
|| combinedBlockId == getMaterialId(Material.SIGN_POST);
|
|
||||||
|
return typeId == Material.WALL_SIGN.getId()
|
||||||
|
|| typeId == Material.SIGN_POST.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isAir(int combinedBlockId) {
|
public boolean isAir(int combinedBlockId) {
|
||||||
|
@ -242,16 +337,17 @@ public class NmsManager implements INmsManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
public int getMaterialId(Material material) {
|
|
||||||
return material.getId() << 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Set<Integer> getMaterialIds(Material material) {
|
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) {
|
for(IBlockData blockData : blockDataList) {
|
||||||
return combinedBlockId & ~(0x0F);
|
ids.add(blockId | block.toLegacyData(blockData));
|
||||||
|
}
|
||||||
|
|
||||||
|
return ids;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
|
@ -282,4 +378,27 @@ public class NmsManager implements INmsManager {
|
||||||
|
|
||||||
return chunk != null ? chunk.getBlockData(new BlockPosition(x, y, z)) : null;
|
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