Minor tweaks and added example config file with enabled worlds

master
Aleksey-Terzi 2017-08-05 16:46:24 +03:00
parent b4e5850ca8
commit 73e79ce866
5 changed files with 171 additions and 29 deletions

View File

@ -4,7 +4,7 @@
<groupId>com.lishid</groupId>
<artifactId>orebfuscator</artifactId>
<version>4.3.2-SNAPSHOT</version>
<version>4.3.3-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Orebfuscator4</name>

View File

@ -16,7 +16,7 @@
package com.lishid.orebfuscator;
import java.io.IOException;
import java.io.*;
import java.util.logging.Logger;
import org.bukkit.ChatColor;
@ -69,6 +69,8 @@ public class Orebfuscator extends JavaPlugin {
// Load configurations
loadOrebfuscatorConfig();
makeConfigExample();
this.isProtocolLibFound = pm.getPlugin("ProtocolLib") != null;
@ -108,6 +110,28 @@ public class Orebfuscator extends JavaPlugin {
e.printStackTrace();
}
}
private void makeConfigExample() {
File outputFile = new File(getDataFolder(), "config.example_enabledworlds.yml");
if(outputFile.exists()) return;
InputStream configStream = Orebfuscator.class.getResourceAsStream("/resources/config.example_enabledworlds.yml");
StringBuilder content = new StringBuilder();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(configStream));
PrintWriter writer = new PrintWriter(outputFile)
)
{
String line;
while ((line = reader.readLine()) != null) {
writer.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void reloadOrebfuscatorConfig() {
reloadConfig();

View File

@ -48,23 +48,35 @@ public class ProtocolLibHook {
this.manager.addPacketListener(new PacketAdapter(plugin, PacketType.Play.Server.MAP_CHUNK) {
@Override
public void onPacketSending(PacketEvent event) {
PacketContainer packet = event.getPacket();
StructureModifier<Integer> ints = packet.getIntegers();
StructureModifier<byte[]> byteArray = packet.getByteArrays();
StructureModifier<Boolean> bools = packet.getBooleans();
ChunkData chunkData = new ChunkData();
chunkData.chunkX = ints.read(0);
chunkData.chunkZ = ints.read(1);
chunkData.groundUpContinuous = bools.read(0);
chunkData.primaryBitMask = ints.read(2);
chunkData.data = byteArray.read(0);
chunkData.isOverworld = event.getPlayer().getWorld().getEnvironment() == World.Environment.NORMAL;
chunkData.blockEntities = getBlockEntities(packet, event.getPlayer());
try {
byte[] newData = Calculations.obfuscateOrUseCache(chunkData, event.getPlayer());
Player player = event.getPlayer();
if (!Orebfuscator.config.isEnabled() || !Orebfuscator.config.obfuscateForPlayer(player)) {
return;
}
WorldConfig worldConfig = Orebfuscator.configManager.getWorld(player.getWorld());
if(!worldConfig.isEnabled()) {
return;
}
PacketContainer packet = event.getPacket();
StructureModifier<Integer> ints = packet.getIntegers();
StructureModifier<byte[]> byteArray = packet.getByteArrays();
StructureModifier<Boolean> bools = packet.getBooleans();
ChunkData chunkData = new ChunkData();
chunkData.chunkX = ints.read(0);
chunkData.chunkZ = ints.read(1);
chunkData.groundUpContinuous = bools.read(0);
chunkData.primaryBitMask = ints.read(2);
chunkData.data = byteArray.read(0);
chunkData.isOverworld = event.getPlayer().getWorld().getEnvironment() == World.Environment.NORMAL;
chunkData.blockEntities = getBlockEntities(packet, event.getPlayer());
byte[] newData = Calculations.obfuscateOrUseCache(chunkData, player, worldConfig);
if(newData != null) {
byteArray.write(0, newData);

View File

@ -42,19 +42,9 @@ import com.lishid.orebfuscator.types.BlockState;
public class Calculations {
private static Random random = new Random();
public static byte[] obfuscateOrUseCache(ChunkData chunkData, Player player) throws IOException {
public static byte[] obfuscateOrUseCache(ChunkData chunkData, Player player, WorldConfig worldConfig) throws IOException {
if(chunkData.primaryBitMask == 0) return null;
if (!Orebfuscator.config.isEnabled() || !Orebfuscator.config.obfuscateForPlayer(player)) {
return null;
}
WorldConfig worldConfig = Orebfuscator.configManager.getWorld(player.getWorld());
if(!worldConfig.isEnabled()) {
return null;
}
byte[] output;
ObfuscatedCachedChunk cache = tryUseCache(chunkData, player);

View File

@ -0,0 +1,116 @@
ConfigVersion: 13
Booleans:
UseCache: true
Enabled: true
UpdateOnDamage: true
NoObfuscationForMetadata: true
NoObfuscationForOps: false
NoObfuscationForPermission: false
LoginNotification: true
Integers:
MaxLoadedCacheFiles: 64
DeleteCacheFilesAfterDays: 0
EngineMode: 2
InitialRadius: 1
UpdateRadius: 2
Strings:
CacheLocation: orebfuscator_cache
NoObfuscationForMetadataTagName: NPC
Lists:
TransparentBlocks: []
NonTransparentBlocks: []
Worlds:
Default:
Types:
- DEFAULT
Enabled: false
AntiTexturePackAndFreecam: true
AirGeneratorMaxChance: 43
DarknessHideBlocks: false
BypassObfuscationForSignsWithText: false
DarknessBlocks:
- MOB_SPAWNER
- CHEST
Mode1Block: STONE
RandomBlocks: []
ObfuscateBlocks: []
ProximityHider:
Enabled: true
Distance: 8
SpecialBlock: STONE
Y: 255
UseSpecialBlock: true
ObfuscateAboveY: false
ProximityHiderBlocks:
- DISPENSER
- MOB_SPAWNER
- CHEST
- DIAMOND_ORE
- WORKBENCH
- FURNACE
- BURNING_FURNACE
- ENCHANTMENT_TABLE
- EMERALD_ORE
- ENDER_CHEST
- ANVIL
- TRAPPED_CHEST
UseFastGazeCheck: true
Normal:
Types:
- NORMAL
Mode1Block: STONE
RandomBlocks:
- STONE
- COBBLESTONE
- WOOD
- GOLD_ORE
- IRON_ORE
- COAL_ORE
- LAPIS_ORE
- TNT
- MOSSY_COBBLESTONE
- OBSIDIAN
- DIAMOND_ORE
- REDSTONE_ORE
- CLAY
- EMERALD_ORE
ObfuscateBlocks:
- GOLD_ORE
- IRON_ORE
- COAL_ORE
- LAPIS_ORE
- CHEST
- DIAMOND_ORE
- REDSTONE_ORE
- GLOWING_REDSTONE_ORE
- EMERALD_ORE
- ENDER_CHEST
TheEnd:
Types:
- THE_END
Mode1Block: ENDER_STONE
RandomBlocks:
- BEDROCK
- OBSIDIAN
- ENDER_STONE
- PURPUR_BLOCK
- END_BRICKS
ObfuscateBlocks:
- ENDER_STONE
Nether:
Types:
- NETHER
Mode1Block: NETHERRACK
RandomBlocks:
- GRAVEL
- NETHERRACK
- SOUL_SAND
- NETHER_BRICK
- QUARTZ_ORE
ObfuscateBlocks:
- NETHERRACK
- QUARTZ_ORE
EnabledWorlds:
Names:
- world
Enabled: true