Skip to content

Commit

Permalink
separators
Browse files Browse the repository at this point in the history
  • Loading branch information
KrLite committed Mar 12, 2024
1 parent c300271 commit 6366d0d
Show file tree
Hide file tree
Showing 33 changed files with 322 additions and 389 deletions.
90 changes: 11 additions & 79 deletions src/main/java/net/krlite/knowledges/KnowledgesClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,7 @@
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback;
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.config.KnowledgesClientConfig;
import net.krlite.knowledges.config.ClientConfig;
import net.krlite.knowledges.impl.component.base.InfoComponent;
import net.krlite.knowledges.manager.ComponentManager;
import net.krlite.knowledges.manager.DataManager;
Expand All @@ -30,26 +26,27 @@
public class KnowledgesClient implements ClientModInitializer {
public static final Logger LOGGER = LoggerFactory.getLogger(KnowledgesCommon.ID + "-client");

public static final ConfigHolder<KnowledgesClientConfig> CONFIG;
public static final KnowledgesClientConfig DEFAULT_CONFIG = new KnowledgesClientConfig();
public static final ConfigHolder<ClientConfig> CONFIG;
public static final ClientConfig DEFAULT_CONFIG = new ClientConfig();

static {
AutoConfig.register(KnowledgesClientConfig.class, PartitioningSerializer.wrap(Toml4jConfigSerializer::new));
CONFIG = AutoConfig.getConfigHolder(KnowledgesClientConfig.class);
AutoConfig.register(ClientConfig.class, PartitioningSerializer.wrap(Toml4jConfigSerializer::new));
CONFIG = AutoConfig.getConfigHolder(ClientConfig.class);

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

return ActionResult.PASS;
});
}

public static final KnowledgesHud HUD = new KnowledgesHud();

// Managers
public static final ComponentManager COMPONENTS = new ComponentManager();
public static final DataManager DATA = new DataManager();

public static final KnowledgesHud HUD = new KnowledgesHud();

@Override
public void onInitializeClient() {
Manager.fixKeysAndSort(CONFIG.get().components.available);
Expand All @@ -58,71 +55,6 @@ public void onInitializeClient() {
InfoComponent.Animation.registerEvents();
new ClientNetworking().register();

/*
// Components
FabricLoader.getInstance().getEntrypointContainers(KnowledgesCommon.ID, ComponentProvider.class).forEach(entrypoint -> {
ComponentProvider<?> provider = entrypoint.getEntrypoint();
var classes = provider.provide();
if (classes.isEmpty()) return;
ModContainer mod = entrypoint.getProvider();
String namespace = mod.getMetadata().getId(), name = mod.getMetadata().getName();
LOGGER.info(String.format(
"Registering %d %s for %s...",
classes.size(),
classes.size() <= 1 ? "knowledge" : "knowledges",
name
));
classes.stream()
.distinct()
.map(clazz -> {
try {
return clazz.getDeclaredConstructor().newInstance();
} catch (Throwable throwable) {
throw new RuntimeException(String.format(
"Failed to register knowledge for %s: constructor not found",
clazz.getName()
), throwable);
}
})
.forEach(knowledge -> COMPONENTS.register(namespace, knowledge));
});
// Data
FabricLoader.getInstance().getEntrypointContainers(KnowledgesCommon.ID + ":data", DataProvider.class).forEach(entrypoint -> {
DataProvider<?> provider = entrypoint.getEntrypoint();
var classes = provider.provide();
if (classes.isEmpty()) return;
ModContainer mod = entrypoint.getProvider();
String namespace = mod.getMetadata().getId(), name = mod.getMetadata().getName();
LOGGER.info(String.format(
"Registering %d %s for %s...",
classes.size(),
"data",
name
));
classes.stream()
.distinct()
.map(clazz -> {
try {
return clazz.getDeclaredConstructor().newInstance();
} catch (Throwable throwable) {
throw new RuntimeException(String.format(
"Failed to register knowledge data for %s: constructor not found",
clazz.getName()
), throwable);
}
})
.forEach(data -> DATA.register(namespace, data));
});
*/

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

Expand Down
59 changes: 11 additions & 48 deletions src/main/java/net/krlite/knowledges/KnowledgesCommon.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,11 @@
import me.shedaniel.autoconfig.serializer.PartitioningSerializer;
import me.shedaniel.autoconfig.serializer.Toml4jConfigSerializer;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.loader.api.FabricLoader;
import net.fabricmc.loader.api.ModContainer;
import net.krlite.knowledges.api.entrypoint.ContractProvider;
import net.krlite.knowledges.config.KnowledgesCommonConfig;
import net.krlite.knowledges.config.CommonConfig;
import net.krlite.knowledges.config.modmenu.cache.UsernameCache;
import net.krlite.knowledges.manager.ContractManager;
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;
import net.minecraft.util.ActionResult;
import org.slf4j.Logger;
Expand All @@ -23,66 +20,32 @@ public class KnowledgesCommon implements ModInitializer {
public static final Logger LOGGER = LoggerFactory.getLogger(ID);


public static final ConfigHolder<KnowledgesCommonConfig> CONFIG;
public static final KnowledgesCommonConfig DEFAULT_CONFIG = new KnowledgesCommonConfig();
public static final ConfigHolder<CommonConfig> CONFIG;
public static final CommonConfig DEFAULT_CONFIG = new CommonConfig();

static {
AutoConfig.register(KnowledgesCommonConfig.class, PartitioningSerializer.wrap(Toml4jConfigSerializer::new));
CONFIG = AutoConfig.getConfigHolder(KnowledgesCommonConfig.class);
AutoConfig.register(CommonConfig.class, PartitioningSerializer.wrap(Toml4jConfigSerializer::new));
CONFIG = AutoConfig.getConfigHolder(CommonConfig.class);

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

return ActionResult.PASS;
});
}

public static final ContractManager CONTRACTS = new ContractManager();

public static final UsernameCache CACHE_USERNAME = new UsernameCache();

// Managers
public static final ContractManager CONTRACTS = new ContractManager();

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

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

new ServerNetworking().register();

/*
// Tags
FabricLoader.getInstance().getEntrypointContainers(ID + ":tags", ContractProvider.class).forEach(entrypoint -> {
ContractProvider<?> provider = entrypoint.getEntrypoint();
var classes = provider.provide();
if (classes.isEmpty()) return;
ModContainer mod = entrypoint.getProvider();
String namespace = mod.getMetadata().getId(), name = mod.getMetadata().getName();
LOGGER.info(String.format(
"Registering %d %s for %s...",
classes.size(),
classes.size() <= 1 ? "contract" : "contracts",
name
));
classes.stream()
.distinct()
.map(clazz -> {
try {
return clazz.getDeclaredConstructor().newInstance();
} catch (Throwable throwable) {
throw new RuntimeException(String.format(
"Failed to register tag for %s: constructor not found",
clazz.getName()
), throwable);
}
})
.forEach(tag -> CONTRACTS.register(namespace, tag));
});
*/

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

tidyUpConfig();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import me.shedaniel.clothconfig2.api.ConfigEntryBuilder;
import me.shedaniel.clothconfig2.impl.builders.AbstractFieldBuilder;
import me.shedaniel.clothconfig2.impl.builders.FieldBuilder;

import java.util.ArrayList;
import java.util.List;
Expand All @@ -12,7 +13,7 @@ default boolean requestsConfigPage() {
return false;
}

default Function<ConfigEntryBuilder, List<AbstractFieldBuilder<?, ?, ?>>> buildConfigEntries() {
default Function<ConfigEntryBuilder, List<FieldBuilder<?, ?, ?>>> buildConfigEntries() {
return configEntryBuilder -> new ArrayList<>();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import net.minecraft.client.MinecraftClient;
import net.minecraft.entity.decoration.painting.PaintingEntity;
import net.minecraft.entity.decoration.painting.PaintingVariant;
import net.minecraft.fluid.EmptyFluid;
import net.minecraft.fluid.Fluid;
import net.minecraft.fluid.FluidState;
import net.minecraft.fluid.Fluids;
Expand All @@ -31,9 +30,9 @@

import java.util.Optional;

public class KnowledgeProxy {
public class ModProxy {
public static boolean hitResultNotAir(HitResult hitResult) {
return hitResult != null && (hitResult.getType() != HitResult.Type.MISS || KnowledgeProxy.getFluidStateNonEmpty(hitResult).isPresent());
return hitResult != null && (hitResult.getType() != HitResult.Type.MISS || getFluidStateNonEmpty(hitResult).isPresent());
}

public static Identifier getId(Block block) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.google.common.base.Suppliers;
import net.krlite.knowledges.KnowledgesCommon;
import net.krlite.knowledges.api.proxy.KnowledgeProxy;
import net.krlite.knowledges.api.proxy.ModProxy;
import net.krlite.knowledges.api.representable.BlockRepresentable;
import net.krlite.knowledges.api.representable.impl.base.RepresentableImpl;
import net.minecraft.block.Block;
Expand Down Expand Up @@ -77,7 +77,7 @@ public static void onRequest(PacketByteBuf buf, ServerPlayerEntity player, Consu
compound.putInt("x", pos.getX());
compound.putInt("y", pos.getY());
compound.putInt("z", pos.getZ());
compound.putString("id", KnowledgeProxy.getId(blockEntity.get().getType()).toString());
compound.putString("id", ModProxy.getId(blockEntity.get().getType()).toString());

responseSender.accept(compound);
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@
import me.shedaniel.autoconfig.annotation.Config;
import me.shedaniel.autoconfig.serializer.PartitioningSerializer;
import net.krlite.equator.math.algebra.Theory;
import net.krlite.knowledges.KnowledgesCommon;
import net.krlite.knowledges.impl.component.CrosshairComponent;
import net.krlite.knowledges.impl.data.info.block.blockinformation.NoteBlockInformationData;

import java.util.Map;
import java.util.TreeMap;

@Config(name = "knowledges")
public class KnowledgesClientConfig extends PartitioningSerializer.GlobalData {
@Config(name = KnowledgesCommon.ID)
public class ClientConfig extends PartitioningSerializer.GlobalData {
public General general = new General();

public Components components = new Components();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,17 @@
import me.shedaniel.autoconfig.ConfigData;
import me.shedaniel.autoconfig.annotation.Config;
import me.shedaniel.autoconfig.serializer.PartitioningSerializer;
import net.krlite.knowledges.KnowledgesCommon;

import java.util.Map;
import java.util.TreeMap;

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

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

public Map<String, Boolean> available = new TreeMap<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,13 @@
import me.shedaniel.clothconfig2.gui.entries.BooleanListEntry;
import me.shedaniel.clothconfig2.impl.builders.AbstractFieldBuilder;
import me.shedaniel.clothconfig2.impl.builders.BooleanToggleBuilder;
import me.shedaniel.clothconfig2.impl.builders.FieldBuilder;
import me.shedaniel.clothconfig2.impl.builders.TextDescriptionBuilder;
import net.krlite.knowledges.KnowledgesClient;
import net.krlite.knowledges.KnowledgesCommon;
import net.krlite.knowledges.api.data.Data;
import net.krlite.knowledges.api.component.Knowledge;
import net.krlite.knowledges.api.proxy.KnowledgeProxy;
import net.krlite.knowledges.api.proxy.ModProxy;
import net.krlite.knowledges.config.modmenu.impl.KnowledgesConfigBuilder;
import net.krlite.knowledges.api.core.config.WithIndependentConfigPage;
import net.krlite.knowledges.api.core.localization.Localizable;
Expand Down Expand Up @@ -114,6 +116,10 @@ public static MutableText localizeTooltip(String... paths) {
return localize(ArrayUtils.add(paths, "tooltip"));
}

public static TextDescriptionBuilder separatorBuilder() {
return new TextDescriptionBuilder(Text.empty(), Text.empty(), Text.literal(" "));
}

public Screen build() {
return configBuilder.build();
}
Expand Down Expand Up @@ -150,6 +156,8 @@ private void initGeneralEntries() {
.build()
);

category.addEntry(separatorBuilder().build());

category.addEntry(
entryBuilder.startBooleanToggle(
localize("general", "visible_in_debug_hud"),
Expand Down Expand Up @@ -199,9 +207,9 @@ private void initComponentEntries() {

if (!KnowledgesClient.COMPONENTS.asMap().isEmpty()) {
KnowledgesClient.COMPONENTS.asMap().forEach((namespace, components) -> {
MutableText name = KnowledgeProxy.getModName(namespace);
MutableText name = ModProxy.getModName(namespace);
boolean isInDefaultNamespace = namespace.equals(KnowledgesCommon.ID);
if (isInDefaultNamespace) name.append(localize("components", "suffix", "default"));
if (isInDefaultNamespace) name = localize("components", "default");

category.addEntry(entryBuilder.startSubCategory(
name,
Expand All @@ -223,9 +231,9 @@ private void initDataEntries() {

if (!KnowledgesClient.DATA.asNamespaceKnowledgeClassifiedMap().isEmpty()) {
KnowledgesClient.DATA.asNamespaceKnowledgeClassifiedMap().forEach((namespace, map) -> {
MutableText name = KnowledgeProxy.getModName(namespace);
MutableText name = ModProxy.getModName(namespace);
boolean isInDefaultNamespace = namespace.equals(KnowledgesCommon.ID);
if (isInDefaultNamespace) name.append(localize("data", "suffix", "default"));
if (isInDefaultNamespace) name = localize("data", "default");

ArrayList<AbstractConfigListEntry> entries = new ArrayList<>();

Expand Down Expand Up @@ -287,7 +295,7 @@ private <T extends WithPath & WithIndependentConfigPage & Localizable.WithName>
);

t.buildConfigEntries().apply(entryBuilder).stream()
.map(AbstractFieldBuilder::build)
.map(FieldBuilder::build)
.forEach(category::addEntry);
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@
import com.terraformersmc.modmenu.api.ConfigScreenFactory;
import com.terraformersmc.modmenu.api.ModMenuApi;
import net.krlite.knowledges.KnowledgesClient;
import net.minecraft.client.MinecraftClient;

public class KnowledgesModMenuImpl implements ModMenuApi {
public class KnowledgesModMenuIntegration implements ModMenuApi {
@Override
public ConfigScreenFactory<?> getModConfigScreenFactory() {
return parent -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.mojang.authlib.GameProfile;
import com.mojang.authlib.yggdrasil.ProfileResult;
import net.krlite.knowledges.config.modmenu.cache.base.Cache;
import net.minecraft.client.MinecraftClient;
import net.minecraft.entity.player.PlayerEntity;

Expand Down
Loading

0 comments on commit 6366d0d

Please sign in to comment.