Minor tweaks and added example config file with enabled worlds
parent
b4e5850ca8
commit
73e79ce866
|
@ -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>
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
Loading…
Reference in New Issue