Skip to content

Commit b98fbe3

Browse files
committed
Cleaned-up the client side code and added new network packed logging the server-client config differences
1 parent 03ecd4e commit b98fbe3

10 files changed

Lines changed: 203 additions & 63 deletions

File tree

Lines changed: 10 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,19 @@
11
package io.github.mikip98.humilityafm;
22

3-
import io.github.mikip98.humilityafm.config.ModConfig;
4-
import io.github.mikip98.humilityafm.content.block_entity_renderers.LightStripBlockEntityRenderer;
5-
import io.github.mikip98.humilityafm.content.block_entity_renderers.cabinetBlock.CabinetBlockEntityRenderer;
6-
import io.github.mikip98.humilityafm.content.block_entity_renderers.cabinetBlock.FloorCabinetBlockEntityRenderer;
7-
import io.github.mikip98.humilityafm.content.block_entity_renderers.cabinetBlock.FloorIlluminatedCabinetBlockEntityRenderer;
8-
import io.github.mikip98.humilityafm.content.block_entity_renderers.cabinetBlock.IlluminatedCabinetBlockEntityRenderer;
9-
import io.github.mikip98.humilityafm.registries.BlockEntityRegistry;
10-
import io.github.mikip98.humilityafm.registries.BlockRegistry;
11-
import io.github.mikip98.humilityafm.util.mod_support.ModSupportManager;
12-
import io.github.mikip98.humilityafm.util.mod_support.SupportedMods;
3+
import io.github.mikip98.humilityafm.registries.*;
134
import net.fabricmc.api.ClientModInitializer;
14-
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
15-
import net.fabricmc.fabric.api.resource.ResourceManagerHelper;
16-
import net.fabricmc.fabric.api.resource.ResourcePackActivationType;
17-
import net.fabricmc.loader.api.FabricLoader;
18-
import net.minecraft.block.Block;
19-
import net.minecraft.client.render.RenderLayer;
20-
import net.minecraft.client.render.block.entity.BlockEntityRendererFactories;
21-
22-
import java.util.function.Consumer;
23-
24-
import static io.github.mikip98.humilityafm.HumilityAFM.MOD_ID;
25-
import static io.github.mikip98.humilityafm.HumilityAFM.getId;
265

276
public class HumilityAFMClient implements ClientModInitializer {
287
@Override
298
public void onInitializeClient() {
30-
BlockEntityRendererFactories.register(BlockEntityRegistry.CABINET_BLOCK_ENTITY, CabinetBlockEntityRenderer::new);
31-
BlockEntityRendererFactories.register(BlockEntityRegistry.ILLUMINATED_CABINET_BLOCK_ENTITY, IlluminatedCabinetBlockEntityRenderer::new);
32-
BlockEntityRendererFactories.register(BlockEntityRegistry.FLOOR_CABINET_BLOCK_ENTITY, FloorCabinetBlockEntityRenderer::new);
33-
BlockEntityRendererFactories.register(BlockEntityRegistry.FLOOR_ILLUMINATED_CABINET_BLOCK_ENTITY, FloorIlluminatedCabinetBlockEntityRenderer::new);
34-
35-
RenderLayer renderLayer = ModConfig.transparentCabinetBlocks ? RenderLayer.getTranslucent() : RenderLayer.getCutout();
36-
37-
BlockRenderLayerMap.INSTANCE.putBlock(BlockRegistry.CABINET_BLOCK, renderLayer);
38-
BlockRenderLayerMap.INSTANCE.putBlock(BlockRegistry.ILLUMINATED_CABINET_BLOCK, renderLayer);
39-
BlockRenderLayerMap.INSTANCE.putBlock(BlockRegistry.FLOOR_CABINET_BLOCK, renderLayer);
40-
BlockRenderLayerMap.INSTANCE.putBlock(BlockRegistry.FLOOR_ILLUMINATED_CABINET_BLOCK, renderLayer);
41-
42-
Consumer<Block[]> applyCabinetRenderLayer = (blocks) -> BlockRenderLayerMap.INSTANCE.putBlocks(renderLayer, blocks);
43-
applyCabinetRenderLayer.accept(BlockRegistry.WALL_CABINET_BLOCK_VARIANTS);
44-
applyCabinetRenderLayer.accept(BlockRegistry.WALL_ILLUMINATED_CABINET_BLOCK_VARIANTS);
45-
applyCabinetRenderLayer.accept(BlockRegistry.FLOOR_CABINET_BLOCK_VARIANTS);
46-
applyCabinetRenderLayer.accept(BlockRegistry.FLOOR_ILLUMINATED_CABINET_BLOCK_VARIANTS);
47-
48-
// Light Strip variants
49-
if (ModConfig.getEnableColouredFeatureSetBeta()) {
50-
BlockEntityRendererFactories.register(BlockEntityRegistry.LIGHT_STRIP_BLOCK_ENTITY, LightStripBlockEntityRenderer::new);
51-
if (ModConfig.enableLightStripBrightening && !ModSupportManager.isModLoaded(SupportedMods.SHIMMER))
52-
LightStripBlockEntityRenderer.enableBrightening();
53-
}
54-
55-
FabricLoader.getInstance().getModContainer(MOD_ID).ifPresent(container -> {
56-
// RESOURCE PACKS
57-
ResourceManagerHelper.registerBuiltinResourcePack(getId("3d_cabinet"), container, ResourcePackActivationType.NORMAL);
58-
ResourceManagerHelper.registerBuiltinResourcePack(getId("3d_cabinet_plus_vanilla_rp_compat"), container, ResourcePackActivationType.NORMAL);
59-
ResourceManagerHelper.registerBuiltinResourcePack(getId("cabinet_vanilla_rp_compat"), container, ResourcePackActivationType.NORMAL);
60-
ResourceManagerHelper.registerBuiltinResourcePack(getId("low_quality_cabinet"), container, ResourcePackActivationType.NORMAL);
61-
// DATA PACKS
62-
ResourceManagerHelper.registerBuiltinResourcePack(getId("alternate_wooden_mosaic_recipies"), container, ResourcePackActivationType.NORMAL);
63-
});
9+
// ------------------------------------ REGISTRATION --------------------------------------
10+
// ............ Block Entity Renderers ............
11+
BlockEntityRendererRegistry.register();
12+
// ............ Resource Packs & Data Packs ............
13+
ResourcepackRegistry.register();
14+
// ............ Network ............
15+
ClientNetworkRegistry.register();
16+
// ............ Render Layers ............
17+
RenderLayerRegistry.register();
6418
}
6519
}

src/client/java/io/github/mikip98/humilityafm/content/block_entity_renderers/cabinetBlock/rendering/RenderSelfBrightening.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package io.github.mikip98.humilityafm.content.block_entity_renderers.cabinetBlock.rendering;
22

3-
import io.github.mikip98.humilityafm.content.block_entity_renderers.util.LightManipulation;
3+
import io.github.mikip98.humilityafm.content.block_entity_renderers.rendering_utils.LightManipulation;
44
import net.minecraft.block.BlockState;
55
import net.minecraft.client.MinecraftClient;
66
import net.minecraft.client.render.VertexConsumerProvider;

src/client/java/io/github/mikip98/humilityafm/content/block_entity_renderers/util/LightManipulation.java renamed to src/client/java/io/github/mikip98/humilityafm/content/block_entity_renderers/rendering_utils/LightManipulation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.github.mikip98.humilityafm.content.block_entity_renderers.util;
1+
package io.github.mikip98.humilityafm.content.block_entity_renderers.rendering_utils;
22

33
public class LightManipulation {
44
// Max block light (15) and max skylight (15)
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package io.github.mikip98.humilityafm.registries;
2+
3+
import io.github.mikip98.humilityafm.config.ModConfig;
4+
import io.github.mikip98.humilityafm.content.block_entity_renderers.LightStripBlockEntityRenderer;
5+
import io.github.mikip98.humilityafm.content.block_entity_renderers.cabinetBlock.CabinetBlockEntityRenderer;
6+
import io.github.mikip98.humilityafm.content.block_entity_renderers.cabinetBlock.FloorCabinetBlockEntityRenderer;
7+
import io.github.mikip98.humilityafm.content.block_entity_renderers.cabinetBlock.FloorIlluminatedCabinetBlockEntityRenderer;
8+
import io.github.mikip98.humilityafm.content.block_entity_renderers.cabinetBlock.IlluminatedCabinetBlockEntityRenderer;
9+
import io.github.mikip98.humilityafm.util.mod_support.ModSupportManager;
10+
import io.github.mikip98.humilityafm.util.mod_support.SupportedMods;
11+
import net.minecraft.block.entity.BlockEntity;
12+
import net.minecraft.block.entity.BlockEntityType;
13+
import net.minecraft.client.render.block.entity.BlockEntityRendererFactories;
14+
import net.minecraft.client.render.block.entity.BlockEntityRendererFactory;
15+
16+
public class BlockEntityRendererRegistry {
17+
public static void register() {
18+
register(BlockEntityRegistry.CABINET_BLOCK_ENTITY, CabinetBlockEntityRenderer::new);
19+
register(BlockEntityRegistry.ILLUMINATED_CABINET_BLOCK_ENTITY, IlluminatedCabinetBlockEntityRenderer::new);
20+
register(BlockEntityRegistry.FLOOR_CABINET_BLOCK_ENTITY, FloorCabinetBlockEntityRenderer::new);
21+
register(BlockEntityRegistry.FLOOR_ILLUMINATED_CABINET_BLOCK_ENTITY, FloorIlluminatedCabinetBlockEntityRenderer::new);
22+
23+
if (ModConfig.getEnableColouredFeatureSetBeta()) {
24+
register(BlockEntityRegistry.LIGHT_STRIP_BLOCK_ENTITY, LightStripBlockEntityRenderer::new);
25+
26+
if (ModConfig.enableLightStripBrightening && !ModSupportManager.isModLoaded(SupportedMods.SHIMMER))
27+
LightStripBlockEntityRenderer.enableBrightening();
28+
}
29+
}
30+
protected static <T extends BlockEntity> void register(BlockEntityType<T> blockEntityType, BlockEntityRendererFactory<T> factory) {
31+
BlockEntityRendererFactories.register(blockEntityType, factory);
32+
}
33+
}
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package io.github.mikip98.humilityafm.registries;
2+
3+
import io.github.mikip98.humilityafm.config.ModConfig;
4+
import io.github.mikip98.humilityafm.config.ModSupport;
5+
import io.github.mikip98.humilityafm.util.mod_support.SupportedMods;
6+
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
7+
import net.minecraft.entity.player.PlayerEntity;
8+
9+
import java.util.ArrayList;
10+
import java.util.EnumMap;
11+
import java.util.Map;
12+
13+
import static io.github.mikip98.humilityafm.HumilityAFM.LOGGER;
14+
15+
public class ClientNetworkRegistry {
16+
public static void register() {
17+
ClientPlayNetworking.registerGlobalReceiver(NetworkRegistry.CONFIG_SYNC, (client, handler, buf, responseSender) -> {
18+
boolean serverConfigEnableCandlestickBeta = buf.readBoolean();
19+
boolean serverConfigEnableColouredFeatureSetBeta = buf.readBoolean();
20+
Map<SupportedMods, ModSupport> serverConfigModSupport = new EnumMap<>(SupportedMods.class);
21+
for (SupportedMods mod : SupportedMods.values()) {
22+
if (mod == SupportedMods.SHIMMER) continue;
23+
serverConfigModSupport.put(mod, ModSupport.values()[buf.readByte()]);
24+
}
25+
26+
DiffList differences = new DiffList();
27+
if (ModConfig.getEnableCandlestickBeta() != serverConfigEnableCandlestickBeta)
28+
differences.add(
29+
"Candlestick BETA",
30+
serverConfigEnableCandlestickBeta,
31+
ModConfig.getEnableCandlestickBeta()
32+
);
33+
if (ModConfig.getEnableCandlestickBeta() != serverConfigEnableColouredFeatureSetBeta)
34+
differences.add(
35+
"Coloured Feature Set BETA",
36+
serverConfigEnableColouredFeatureSetBeta,
37+
ModConfig.getEnableColouredFeatureSetBeta()
38+
);
39+
for (SupportedMods mod : SupportedMods.values()) {
40+
ModSupport serverModSupportSetting = serverConfigModSupport.get(mod);
41+
ModSupport clientModSupportSetting = ModConfig.modSupport.get(mod);
42+
if (clientModSupportSetting != serverModSupportSetting)
43+
differences.add(
44+
"Support for mod '" + mod.modName + " (" + mod.modId + ")'",
45+
serverModSupportSetting,
46+
clientModSupportSetting
47+
);
48+
}
49+
50+
// Log the differences
51+
if (!differences.isEmpty()) {
52+
client.execute(() -> {
53+
PlayerEntity player = client.player;
54+
assert player != null;
55+
LOGGER.error("Humility AFM mod detected server-client config mismatch!");
56+
LOGGER.error("Your client config of Humility AFM differs from the server config!");
57+
LOGGER.error("You should match the configs for optimal multiplayer experience");
58+
LOGGER.error("Detected differences:");
59+
differences.forEach((msg) -> LOGGER.error(" - {}", msg));
60+
LOGGER.error("BE CAREFUL TO NOT BREAK YOUR SINGLE PLAYER WORLDS BY JOINING THEM WITH BLOCKS THAT WERE PREVIOUSLY ENABLED, NOW DISABLED!!!");
61+
});
62+
}
63+
});
64+
}
65+
static class DiffList extends ArrayList<String> {
66+
void add(String name, Enum<?> server, Enum<?> client) {
67+
add(name, server.name(), client.name());
68+
}
69+
void add(String name, boolean server, boolean client) {
70+
add(name, String.valueOf(server), String.valueOf(client));
71+
}
72+
void add(String name, String server, String client) {
73+
super.add(name + " -> server: " + server + " (yours: " + client + ")");
74+
}
75+
}
76+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package io.github.mikip98.humilityafm.registries;
2+
3+
import io.github.mikip98.humilityafm.config.ModConfig;
4+
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
5+
import net.minecraft.block.Block;
6+
import net.minecraft.client.render.RenderLayer;
7+
8+
public class RenderLayerRegistry {
9+
protected static final RenderLayer cabinetRenderLayer = ModConfig.transparentCabinetBlocks ? RenderLayer.getTranslucent() : RenderLayer.getCutout();
10+
public static void register() {
11+
applyCabinetRenderLayer(BlockRegistry.CABINET_BLOCK);
12+
applyCabinetRenderLayer(BlockRegistry.ILLUMINATED_CABINET_BLOCK);
13+
applyCabinetRenderLayer(BlockRegistry.FLOOR_CABINET_BLOCK);
14+
applyCabinetRenderLayer(BlockRegistry.FLOOR_ILLUMINATED_CABINET_BLOCK);
15+
applyCabinetRenderLayer(BlockRegistry.WALL_CABINET_BLOCK_VARIANTS);
16+
applyCabinetRenderLayer(BlockRegistry.WALL_ILLUMINATED_CABINET_BLOCK_VARIANTS);
17+
applyCabinetRenderLayer(BlockRegistry.FLOOR_CABINET_BLOCK_VARIANTS);
18+
applyCabinetRenderLayer(BlockRegistry.FLOOR_ILLUMINATED_CABINET_BLOCK_VARIANTS);
19+
}
20+
protected static void applyCabinetRenderLayer(Block... blocks) {
21+
applyRenderLayer(cabinetRenderLayer, blocks);
22+
}
23+
protected static void applyRenderLayer(RenderLayer renderLayer, Block... blocks) {
24+
BlockRenderLayerMap.INSTANCE.putBlocks(renderLayer, blocks);
25+
}
26+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package io.github.mikip98.humilityafm.registries;
2+
3+
import net.fabricmc.fabric.api.resource.ResourceManagerHelper;
4+
import net.fabricmc.fabric.api.resource.ResourcePackActivationType;
5+
import net.fabricmc.loader.api.FabricLoader;
6+
7+
import static io.github.mikip98.humilityafm.HumilityAFM.MOD_ID;
8+
import static io.github.mikip98.humilityafm.HumilityAFM.getId;
9+
10+
public class ResourcepackRegistry {
11+
public static void register() {
12+
FabricLoader.getInstance().getModContainer(MOD_ID).ifPresent(container -> {
13+
// RESOURCE PACKS
14+
ResourceManagerHelper.registerBuiltinResourcePack(getId("3d_cabinet"), container, ResourcePackActivationType.NORMAL);
15+
ResourceManagerHelper.registerBuiltinResourcePack(getId("3d_cabinet_plus_vanilla_rp_compat"), container, ResourcePackActivationType.NORMAL);
16+
ResourceManagerHelper.registerBuiltinResourcePack(getId("cabinet_vanilla_rp_compat"), container, ResourcePackActivationType.NORMAL);
17+
ResourceManagerHelper.registerBuiltinResourcePack(getId("low_quality_cabinet"), container, ResourcePackActivationType.NORMAL);
18+
// DATA PACKS
19+
ResourceManagerHelper.registerBuiltinResourcePack(getId("alternate_wooden_mosaic_recipies"), container, ResourcePackActivationType.NORMAL);
20+
});
21+
}
22+
}

src/main/java/io/github/mikip98/humilityafm/HumilityAFM.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
package io.github.mikip98.humilityafm;
22

33
import io.github.mikip98.humilityafm.config.ConfigJSON;
4-
import io.github.mikip98.humilityafm.registries.BlockEntityRegistry;
5-
import io.github.mikip98.humilityafm.registries.BlockRegistry;
6-
import io.github.mikip98.humilityafm.registries.ItemGroupRegistry;
7-
import io.github.mikip98.humilityafm.registries.ItemRegistry;
4+
import io.github.mikip98.humilityafm.registries.*;
85
import io.github.mikip98.humilityafm.util.generation_data.ActiveGenerationData;
96
import io.github.mikip98.humilityafm.util.mod_support.ModSupportManager;
107
import net.fabricmc.api.ModInitializer;
@@ -47,12 +44,16 @@ public void onInitialize() {
4744
ItemRegistry.register();
4845
// ............ ITEM GROUPS ............
4946
ItemGroupRegistry.registerItemGroups();
47+
// ............ NETWORK ............
48+
NetworkRegistry.registerNetworkServerMessage();
5049

5150

5251
// ------------------------------------ CLEANUP -------------------------------------------
5352
ActiveGenerationData.clear();
5453
}
5554

55+
56+
5657
/**
5758
* Returns a new identifier for the given name, in this mod's namespace
5859
*/

src/main/java/io/github/mikip98/humilityafm/config/ConfigJSON.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
// TODO: Move to TOML
1818
public class ConfigJSON {
19-
2019
// Save the configuration to a JSON file in the Minecraft configuration folder
2120
public static void saveConfigToFile() {
2221
Gson gson = new GsonBuilder().setPrettyPrinting().create();
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package io.github.mikip98.humilityafm.registries;
2+
3+
import io.github.mikip98.humilityafm.config.ModConfig;
4+
import io.github.mikip98.humilityafm.util.mod_support.SupportedMods;
5+
import net.fabricmc.fabric.api.networking.v1.PacketByteBufs;
6+
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
7+
import net.minecraft.network.PacketByteBuf;
8+
import net.minecraft.util.Identifier;
9+
10+
import static io.github.mikip98.humilityafm.HumilityAFM.getId;
11+
12+
public class NetworkRegistry {
13+
public static final Identifier CONFIG_SYNC = getId("config_sync");
14+
15+
public static void registerNetworkServerMessage() {
16+
ServerPlayConnectionEvents.JOIN.register((handler, sender, server) -> {
17+
PacketByteBuf buf = PacketByteBufs.create();
18+
19+
buf.writeBoolean(ModConfig.getEnableCandlestickBeta());
20+
buf.writeBoolean(ModConfig.getEnableColouredFeatureSetBeta());
21+
for (SupportedMods mod : SupportedMods.values()) {
22+
if (mod == SupportedMods.SHIMMER) continue;
23+
buf.writeByte(ModConfig.modSupport.get(mod).ordinal());
24+
}
25+
26+
sender.sendPacket(CONFIG_SYNC, buf);
27+
});
28+
}
29+
}

0 commit comments

Comments
 (0)