Skip to content

Commit

Permalink
entrypoint invoker
Browse files Browse the repository at this point in the history
  • Loading branch information
KrLite committed Mar 12, 2024
1 parent a2f355d commit 4e152e5
Show file tree
Hide file tree
Showing 15 changed files with 162 additions and 56 deletions.
55 changes: 26 additions & 29 deletions src/main/java/net/krlite/knowledges/KnowledgesClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,18 @@
import me.shedaniel.autoconfig.serializer.Toml4jConfigSerializer;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback;
import net.fabricmc.fabric.api.networking.v1.PacketByteBufs;
import net.fabricmc.loader.api.FabricLoader;
import net.fabricmc.loader.api.ModContainer;
import net.krlite.knowledges.api.entrypoint.ComponentProvider;
import net.krlite.knowledges.api.entrypoint.DataProvider;
import net.krlite.knowledges.api.representable.PacketByteBufWritable;
import net.krlite.knowledges.config.KnowledgesClientConfig;
import net.krlite.knowledges.impl.component.base.InfoComponent;
import net.krlite.knowledges.manager.ComponentManager;
import net.krlite.knowledges.manager.DataManager;
import net.krlite.knowledges.manager.base.EntrypointInvoker;
import net.krlite.knowledges.manager.base.Manager;
import net.krlite.knowledges.networking.ClientNetworking;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
import net.minecraft.util.ActionResult;
Expand All @@ -31,7 +28,7 @@
import static net.krlite.knowledges.api.core.localization.Localizable.Separator.KEY;

public class KnowledgesClient implements ClientModInitializer {
public static final Logger LOGGER = LoggerFactory.getLogger(KnowledgesCommon.ID + ":client");
public static final Logger LOGGER = LoggerFactory.getLogger(KnowledgesCommon.ID + "-client");

public static final ConfigHolder<KnowledgesClientConfig> CONFIG;
public static final KnowledgesClientConfig DEFAULT_CONFIG = new KnowledgesClientConfig();
Expand All @@ -41,8 +38,8 @@ public class KnowledgesClient implements ClientModInitializer {
CONFIG = AutoConfig.getConfigHolder(KnowledgesClientConfig.class);

CONFIG.registerLoadListener((configHolder, knowledgesClientConfig) -> {
Manager.fixKeysAndSort(knowledgesClientConfig.components.enabled);
Manager.fixKeysAndSort(knowledgesClientConfig.data.enabled);
Manager.fixKeysAndSort(knowledgesClientConfig.components.available);
Manager.fixKeysAndSort(knowledgesClientConfig.data.available);

return ActionResult.PASS;
});
Expand All @@ -53,29 +50,18 @@ public class KnowledgesClient implements ClientModInitializer {

public static final KnowledgesHud HUD = new KnowledgesHud();

public static Identifier identifier(String path) {
return new Identifier(KnowledgesCommon.ID, path);
}

public static String localizationKey(String category, String... paths) {
return category + KEY + KnowledgesCommon.ID + KEY + String.join(KEY.toString(), paths);
}

public static MutableText localize(String category, String... paths) {
return Text.translatable(localizationKey(category, paths));
}

@Override
public void onInitializeClient() {
Manager.fixKeysAndSort(CONFIG.get().components.enabled);
Manager.fixKeysAndSort(CONFIG.get().data.enabled);
Manager.fixKeysAndSort(CONFIG.get().components.available);
Manager.fixKeysAndSort(CONFIG.get().data.available);

InfoComponent.Animation.registerEvents();
new ClientNetworking().register();

/*
// Components
FabricLoader.getInstance().getEntrypointContainers(KnowledgesCommon.ID, ComponentProvider.class).forEach(entrypoint -> {
ComponentProvider provider = entrypoint.getEntrypoint();
ComponentProvider<?> provider = entrypoint.getEntrypoint();
var classes = provider.provide();
if (classes.isEmpty()) return;
Expand Down Expand Up @@ -106,7 +92,7 @@ public void onInitializeClient() {
// Data
FabricLoader.getInstance().getEntrypointContainers(KnowledgesCommon.ID + ":data", DataProvider.class).forEach(entrypoint -> {
DataProvider provider = entrypoint.getEntrypoint();
DataProvider<?> provider = entrypoint.getEntrypoint();
var classes = provider.provide();
if (classes.isEmpty()) return;
Expand Down Expand Up @@ -135,6 +121,11 @@ public void onInitializeClient() {
.forEach(data -> DATA.register(namespace, data));
});
*/

EntrypointInvoker.COMPONENT.invoke(COMPONENTS::register);
EntrypointInvoker.DATA.invoke(DATA::register);

tidyUpConfig();
CONFIG.save();

Expand Down Expand Up @@ -162,16 +153,22 @@ public void onInitializeClient() {
}));
}

public static Identifier identifier(String path) {
return new Identifier(KnowledgesCommon.ID, path);
}

public static String localizationKey(String category, String... paths) {
return category + KEY + KnowledgesCommon.ID + KEY + String.join(KEY.toString(), paths);
}

public static MutableText localize(String category, String... paths) {
return Text.translatable(localizationKey(category, paths));
}

public static void tidyUpConfig() {
if (CONFIG.get().components.autoTidiesUp)
COMPONENTS.tidyUp();
if (CONFIG.get().data.autoTidiesUp)
DATA.tidyUp();
}

public static void requestDataFor(PacketByteBufWritable writable, Identifier channel) {
PacketByteBuf buf = PacketByteBufs.create();
writable.writeToBuf(buf);
ClientPlayNetworking.send(channel, buf);
}
}
22 changes: 14 additions & 8 deletions src/main/java/net/krlite/knowledges/KnowledgesCommon.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import net.krlite.knowledges.api.entrypoint.ContractProvider;
import net.krlite.knowledges.config.KnowledgesCommonConfig;
import net.krlite.knowledges.config.modmenu.cache.UsernameCache;
import net.krlite.knowledges.manager.base.EntrypointInvoker;
import net.krlite.knowledges.manager.base.Manager;
import net.krlite.knowledges.manager.ContractManager;
import net.krlite.knowledges.networking.ServerNetworking;
Expand All @@ -19,7 +20,7 @@

public class KnowledgesCommon implements ModInitializer {
public static final String NAME = "Knowledges", ID = "knowledges";
public static final Logger LOGGER = LoggerFactory.getLogger(ID + ":common");
public static final Logger LOGGER = LoggerFactory.getLogger(ID);


public static final ConfigHolder<KnowledgesCommonConfig> CONFIG;
Expand All @@ -30,27 +31,28 @@ public class KnowledgesCommon implements ModInitializer {
CONFIG = AutoConfig.getConfigHolder(KnowledgesCommonConfig.class);

CONFIG.registerLoadListener((configHolder, knowledgesCommonConfig) -> {
Manager.fixKeysAndSort(knowledgesCommonConfig.tags.enabled);
Manager.fixKeysAndSort(knowledgesCommonConfig.contracts.available);

return ActionResult.PASS;
});
}

public static final ContractManager TAGS = new ContractManager();
public static final ContractManager CONTRACTS = new ContractManager();

public static final UsernameCache CACHE_USERNAME = new UsernameCache();

@Override
public void onInitialize() {
CACHE_USERNAME.load();

Manager.fixKeysAndSort(CONFIG.get().tags.enabled);
Manager.fixKeysAndSort(CONFIG.get().contracts.available);

new ServerNetworking().register();

/*
// Tags
FabricLoader.getInstance().getEntrypointContainers(ID + ":tags", ContractProvider.class).forEach(entrypoint -> {
ContractProvider provider = entrypoint.getEntrypoint();
ContractProvider<?> provider = entrypoint.getEntrypoint();
var classes = provider.provide();
if (classes.isEmpty()) return;
Expand All @@ -60,7 +62,7 @@ public void onInitialize() {
LOGGER.info(String.format(
"Registering %d %s for %s...",
classes.size(),
classes.size() <= 1 ? "tag" : "tags",
classes.size() <= 1 ? "contract" : "contracts",
name
));
Expand All @@ -76,14 +78,18 @@ public void onInitialize() {
), throwable);
}
})
.forEach(tag -> TAGS.register(namespace, tag));
.forEach(tag -> CONTRACTS.register(namespace, tag));
});
*/

EntrypointInvoker.CONTRACT.invoke(CONTRACTS::register);

tidyUpConfig();
CONFIG.save();
}

public static void tidyUpConfig() {
TAGS.tidyUp();
CONTRACTS.tidyUp();
}
}
3 changes: 2 additions & 1 deletion src/main/java/net/krlite/knowledges/KnowledgesHud.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import net.krlite.knowledges.api.representable.impl.BlockRepresentableImpl;
import net.krlite.knowledges.api.representable.impl.EntityRepresentableImpl;
import net.krlite.knowledges.mixin.client.InGameHudInvoker;
import net.krlite.knowledges.networking.ClientNetworking;
import net.krlite.knowledges.networking.base.KnowledgesNetworking;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
Expand Down Expand Up @@ -123,7 +124,7 @@ public void tick(MinecraftClient client) {
}

if (channel != null) {
KnowledgesClient.requestDataFor(representable, channel);
ClientNetworking.requestDataFor(representable, channel);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public static void onRequest(PacketByteBuf buf, ServerPlayerEntity player, Consu
Optional<BlockEntity> blockEntity = representable.blockEntity();
if (blockEntity.isEmpty()) return;

var tags = KnowledgesCommon.TAGS.byBlock(representable.block());
var tags = KnowledgesCommon.CONTRACTS.byBlock(representable.block());
if (tags.isEmpty()) return;

NbtCompound compound = representable.data();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public static void onRequest(PacketByteBuf buf, ServerPlayerEntity player, Consu
Entity entity = representable.entity();
if (entity == null) return;

var tags = KnowledgesCommon.TAGS.byEntity(representable.entity());
var tags = KnowledgesCommon.CONTRACTS.byEntity(representable.entity());
if (tags.isEmpty()) return;

NbtCompound compound = representable.data();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ public static class InfoFluid {
public boolean ignoresOtherFluids = false;
}

public Map<String, Boolean> enabled = new TreeMap<>();
public Map<String, Boolean> available = new TreeMap<>();
}

@Config(name = "data")
Expand All @@ -104,6 +104,6 @@ public static class NoteBlockInformation {
public NoteBlockInformationData.MusicalAlphabet musicalAlphabet = NoteBlockInformationData.MusicalAlphabet.ENGLISH;
}

public Map<String, Boolean> enabled = new TreeMap<>();
public Map<String, Boolean> available = new TreeMap<>();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@

@Config(name = "knowledges")
public class KnowledgesCommonConfig extends PartitioningSerializer.GlobalData{
public Tags tags = new Tags();
public Tags contracts = new Tags();

@Config(name = "tags")
@Config(name = "contracts")
public static class Tags implements ConfigData {
public boolean autoTidiesUp = false;

public Map<String, Boolean> enabled = new TreeMap<>();
public Map<String, Boolean> available = new TreeMap<>();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

import java.util.List;

public class ContractProviderImpl implements BlockContract.Provider {
public class BlockContractProviderImpl implements BlockContract.Provider {
@Override
public @NotNull List<Class<? extends BlockContract>> provide() {
return List.of(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package net.krlite.knowledges.impl.entrypoint.contract;

import net.krlite.knowledges.api.contract.AdditionalEntityTag;
import net.krlite.knowledges.api.contract.EntityContract;
import net.krlite.knowledges.impl.contract.entity.AnimalOwnerContract;
import net.krlite.knowledges.impl.contract.entity.ChickenEggContract;
import org.jetbrains.annotations.NotNull;

import java.util.List;

public class AdditionalEntityTagProviderImpl implements AdditionalEntityTag.Provider {
public class EntityContractProviderImpl implements EntityContract.Provider {
@Override
public @NotNull List<Class<? extends AdditionalEntityTag>> provide() {
public @NotNull List<Class<? extends EntityContract>> provide() {
return List.of(
AnimalOwnerContract.class,
ChickenEggContract.class
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

public class ComponentManager extends Manager<Knowledge> {
public ComponentManager() {
super(() -> KnowledgesClient.CONFIG.get().components.enabled);
super(() -> KnowledgesClient.CONFIG.get().components.available);
}

public void render(RenderProxy renderProxy, Representable<?> representable) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

public class ContractManager extends Manager<Contract<?, ?>> {
public ContractManager() {
super(() -> KnowledgesCommon.CONFIG.get().tags.enabled);
super(() -> KnowledgesCommon.CONFIG.get().contracts.available);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

public class DataManager extends Manager<Data<?>> {
public DataManager() {
super(() -> KnowledgesClient.CONFIG.get().data.enabled);
super(() -> KnowledgesClient.CONFIG.get().data.available);
}

@Override
Expand Down
Loading

0 comments on commit 4e152e5

Please sign in to comment.