11package it .feargames .tileculling ;
22
33import com .comphenix .protocol .ProtocolLibrary ;
4- import com .destroystokyo .paper .MaterialTags ;
54import it .feargames .tileculling .adapter .Adapter_1_16_R3 ;
65import it .feargames .tileculling .adapter .IAdapter ;
7- import it .feargames .tileculling .protocol .MapChunkPacketListener ;
6+ import it .feargames .tileculling .protocol .ChunkPacketListener ;
87import org .bukkit .Material ;
9- import org .bukkit .block .BlockState ;
108import org .bukkit .entity .Player ;
119import org .bukkit .plugin .java .JavaPlugin ;
1210
13- import java .util .ArrayList ;
14- import java .util .Arrays ;
15- import java .util .List ;
16-
1711public class CullingPlugin extends JavaPlugin {
1812
19- private IAdapter adapter ;
13+ private SettingsHolder settings ;
14+ private HiddenTileRegistry hiddenTileRegistry ;
2015
16+ private IAdapter adapter ;
2117 private ChunkTileVisibilityManager chunkTileVisibilityManager ;
2218 private PlayerChunkTracker playerChunkTracker ;
2319 private ChunkCache chunkCache ;
2420 private VisibilityCache visibilityCache ;
25- private MapChunkPacketListener mapChunkPacketListener ;
21+ private ChunkPacketListener chunkPacketListener ;
2622
2723 private VisibilityUpdateThread visibilityUpdateThread ;
2824
2925 @ Override
3026 public void onEnable () {
27+ saveDefaultConfig ();
28+
29+ settings = new SettingsHolder ();
30+ settings .load (getConfig ().getConfigurationSection ("settings" ));
31+ hiddenTileRegistry = new HiddenTileRegistry (getLogger ());
32+ hiddenTileRegistry .load (getConfig ().getConfigurationSection ("hiddenTiles" ));
33+
3134 adapter = new Adapter_1_16_R3 ();
3235 playerChunkTracker = new PlayerChunkTracker (this );
3336 visibilityCache = new VisibilityCache ();
34- chunkCache = new ChunkCache (this );
35- chunkTileVisibilityManager = new ChunkTileVisibilityManager (adapter , playerChunkTracker , visibilityCache , chunkCache );
37+ chunkCache = new ChunkCache (this , hiddenTileRegistry );
38+ chunkTileVisibilityManager = new ChunkTileVisibilityManager (settings , adapter , playerChunkTracker , visibilityCache , chunkCache );
3639
3740 getServer ().getPluginManager ().registerEvents (playerChunkTracker , this );
3841 getServer ().getPluginManager ().registerEvents (chunkCache , this );
3942 getServer ().getPluginManager ().registerEvents (visibilityCache , this );
4043
41- mapChunkPacketListener = new MapChunkPacketListener (this , adapter , playerChunkTracker );
42- ProtocolLibrary .getProtocolManager ().addPacketListener (mapChunkPacketListener );
44+ chunkPacketListener = new ChunkPacketListener (this , hiddenTileRegistry , adapter , playerChunkTracker );
45+ ProtocolLibrary .getProtocolManager ().addPacketListener (chunkPacketListener );
4346
4447 visibilityUpdateThread = new VisibilityUpdateThread (chunkTileVisibilityManager );
4548 visibilityUpdateThread .start ();
@@ -63,63 +66,13 @@ public void onDisable() {
6366 }
6467 }
6568
66- // TODO: create a registry
67-
68- private static final Material [] hiddenMaterials ;
69- private static final String [] hiddenNamespaces ;
70-
71- static {
72- List <Material > materials = new ArrayList <>(Arrays .asList (
73- Material .CHEST ,
74- Material .TRAPPED_CHEST ,
75- Material .ENDER_CHEST ,
76- Material .FURNACE ,
77- Material .DISPENSER ,
78- Material .DROPPER ,
79- Material .HOPPER ,
80- Material .BREWING_STAND ,
81- Material .BARREL ,
82- Material .SPAWNER ,
83- Material .ENCHANTING_TABLE
84-
85- ));
86- materials .addAll (MaterialTags .SHULKER_BOXES .getValues ());
87- materials .addAll (MaterialTags .SKULLS .getValues ());
88- materials .addAll (MaterialTags .SIGNS .getValues ());
89- // Cache values
90- hiddenMaterials = materials .toArray (new Material [0 ]);
91- hiddenNamespaces = materials .stream ().map (material -> material .getKey ().toString ()).toArray (String []::new );
92- }
93-
94- public static boolean shouldHide (String namespacedKey ) {
95- for (String current : hiddenNamespaces ) {
96- if (current .equals (namespacedKey )) {
97- return true ;
98- }
99- }
100- return true ;
101- }
102-
103- public static boolean shouldHide (Material material ) {
104- for (Material current : hiddenMaterials ) {
105- if (current == material ) {
106- return true ;
107- }
108- }
109- return true ;
110- }
111-
112- public static boolean shouldHide (BlockState state ) {
113- return shouldHide (state .getType ());
114- }
115-
69+ // TODO: registry
11670 public static boolean isOccluding (Material material ) {
11771 switch (material ) {
11872 case BARRIER :
11973 case SPAWNER :
12074 return false ;
12175 }
122- // TODO: are we sure we want to use this?
12376 return material .isOccluding ();
12477 }
12578}
0 commit comments