Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions src/main/java/com/gregtechceu/gtceu/api/addon/IGTAddon.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,27 +34,44 @@ public interface IGTAddon {

/**
* Call init on your custom TagPrefix class(es) here
*
* @deprecated Subscribe to the {@code GTCEuAPI.RegisterEvent<ResourceLocation, TagPrefix>} register event instead
*/
@Deprecated(forRemoval = true, since = "8.0.0")
default void registerTagPrefixes() {}

/**
* Call init on your custom Element class(es) here
*
* @deprecated Subscribe to the {@code GTCEuAPI.RegisterEvent<ResourceLocation, Element>} register event instead
*/
@Deprecated(forRemoval = true, since = "8.0.0")
default void registerElements() {}

/**
* Call init on your custom Sound class(es) here
*
* @deprecated Subscribe to the {@code GTCEuAPI.RegisterEvent<ResourceLocation, SoundEntry>} register event instead
*/
@Deprecated(forRemoval = true, since = "8.0.0")
default void registerSounds() {}

/**
* Call init on your custom Cover class(es) here
*
* @deprecated Subscribe to the {@code GTCEuAPI.RegisterEvent<ResourceLocation, CoverDefinition>} register event
* instead
*/
@Deprecated(forRemoval = true, since = "8.0.0")
default void registerCovers() {}

/**
* Call init on your custom Recipe Capabilities here
*
* @deprecated Subscribe to the {@code GTCEuAPI.RegisterEvent<ResourceLocation, RecipeCapability>} register event
* instead
*/
@Deprecated(forRemoval = true, since = "8.0.0")
default void registerRecipeCapabilities() {}

/**
Expand Down Expand Up @@ -94,9 +111,16 @@ default void registerBedrockOreVeins() {}

/**
* Register Material -> Casing block mappings here
*
* @deprecated Subscribe to the {@link MaterialCasingCollectionEvent} directly.
*/
@Deprecated(forRemoval = true, since = "8.0.0")
default void collectMaterialCasings(MaterialCasingCollectionEvent event) {}

/**
* @deprecated Subscribe to the {@link KJSRecipeKeyEvent} directly.
*/
@Deprecated(forRemoval = true, since = "8.0.0")
default void registerRecipeKeys(KJSRecipeKeyEvent event) {}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,17 @@
import com.gregtechceu.gtceu.integration.kjs.recipe.components.ContentJS;
import com.gregtechceu.gtceu.integration.kjs.recipe.components.GTRecipeComponents;

import net.minecraftforge.eventbus.api.Event;
import net.minecraftforge.fml.event.IModBusEvent;

import com.mojang.datafixers.util.Pair;
import lombok.Getter;

import java.util.HashMap;
import java.util.Map;

@SuppressWarnings("unused")
public class KJSRecipeKeyEvent {
public class KJSRecipeKeyEvent extends Event implements IModBusEvent {

@Getter
private final Map<RecipeCapability<?>, Pair<ContentJS<?>, ContentJS<?>>> registeredKeys = new HashMap<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@
import com.gregtechceu.gtceu.api.data.chemical.material.Material;

import net.minecraft.world.level.block.Block;
import net.minecraftforge.eventbus.api.Event;
import net.minecraftforge.fml.event.IModBusEvent;

import com.google.common.collect.ImmutableMap;
import com.tterrag.registrate.util.entry.BlockEntry;

public class MaterialCasingCollectionEvent {
public class MaterialCasingCollectionEvent extends Event implements IModBusEvent {

private final ImmutableMap.Builder<Material, BlockEntry<Block>> builder;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,105 +1,158 @@
package com.gregtechceu.gtceu.api.data.chemical.material.info;

import com.gregtechceu.gtceu.GTCEu;
import com.gregtechceu.gtceu.api.GTCEuAPI;
import com.gregtechceu.gtceu.api.registry.GTRegistries;
import com.gregtechceu.gtceu.integration.kjs.GTRegistryInfo;

import com.google.common.base.Preconditions;
import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.fml.ModLoader;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

public class MaterialIconSet {

public static final Map<String, MaterialIconSet> ICON_SETS = new HashMap<>();
public static final MaterialIconSet DULL = new MaterialIconSet("dull", null, true);
public static final MaterialIconSet METALLIC = new MaterialIconSet("metallic");
public static final MaterialIconSet MAGNETIC = new MaterialIconSet("magnetic", METALLIC);
public static final MaterialIconSet SHINY = new MaterialIconSet("shiny", METALLIC);
public static final MaterialIconSet BRIGHT = new MaterialIconSet("bright", SHINY);
public static final MaterialIconSet DIAMOND = new MaterialIconSet("diamond", SHINY);
public static final MaterialIconSet EMERALD = new MaterialIconSet("emerald", DIAMOND);
public static final MaterialIconSet GEM_HORIZONTAL = new MaterialIconSet("gem_horizontal", EMERALD);
public static final MaterialIconSet GEM_VERTICAL = new MaterialIconSet("gem_vertical", EMERALD);
public static final MaterialIconSet RUBY = new MaterialIconSet("ruby", EMERALD);
public static final MaterialIconSet OPAL = new MaterialIconSet("opal", RUBY);
public static final MaterialIconSet GLASS = new MaterialIconSet("glass", RUBY);
public static final MaterialIconSet NETHERSTAR = new MaterialIconSet("netherstar", GLASS);
public static final MaterialIconSet FINE = new MaterialIconSet("fine");
public static final MaterialIconSet SAND = new MaterialIconSet("sand", FINE);
public static final MaterialIconSet WOOD = new MaterialIconSet("wood", FINE);
public static final MaterialIconSet ROUGH = new MaterialIconSet("rough", FINE);
public static final MaterialIconSet FLINT = new MaterialIconSet("flint", ROUGH);
public static final MaterialIconSet LIGNITE = new MaterialIconSet("lignite", ROUGH);
public static final MaterialIconSet QUARTZ = new MaterialIconSet("quartz", ROUGH);
public static final MaterialIconSet CERTUS = new MaterialIconSet("certus", QUARTZ);
public static final MaterialIconSet LAPIS = new MaterialIconSet("lapis", QUARTZ);
public static final MaterialIconSet FLUID = new MaterialIconSet("fluid");
public static final MaterialIconSet RADIOACTIVE = new MaterialIconSet("radioactive", METALLIC);
static {
GTRegistries.MATERIAL_ICON_SETS.unfreeze();
}

public static final MaterialIconSet DULL = new MaterialIconSet(GTCEu.id("dull"), null, true);
public static final MaterialIconSet METALLIC = new MaterialIconSet(GTCEu.id("metallic"));
public static final MaterialIconSet MAGNETIC = new MaterialIconSet(GTCEu.id("magnetic"), METALLIC);
public static final MaterialIconSet SHINY = new MaterialIconSet(GTCEu.id("shiny"), METALLIC);
public static final MaterialIconSet BRIGHT = new MaterialIconSet(GTCEu.id("bright"), SHINY);
public static final MaterialIconSet DIAMOND = new MaterialIconSet(GTCEu.id("diamond"), SHINY);
public static final MaterialIconSet EMERALD = new MaterialIconSet(GTCEu.id("emerald"), DIAMOND);
public static final MaterialIconSet GEM_HORIZONTAL = new MaterialIconSet(GTCEu.id("gem_horizontal"), EMERALD);
public static final MaterialIconSet GEM_VERTICAL = new MaterialIconSet(GTCEu.id("gem_vertical"), EMERALD);
public static final MaterialIconSet RUBY = new MaterialIconSet(GTCEu.id("ruby"), EMERALD);
public static final MaterialIconSet OPAL = new MaterialIconSet(GTCEu.id("opal"), RUBY);
public static final MaterialIconSet GLASS = new MaterialIconSet(GTCEu.id("glass"), RUBY);
public static final MaterialIconSet NETHERSTAR = new MaterialIconSet(GTCEu.id("netherstar"), GLASS);
public static final MaterialIconSet FINE = new MaterialIconSet(GTCEu.id("fine"));
public static final MaterialIconSet SAND = new MaterialIconSet(GTCEu.id("sand"), FINE);
public static final MaterialIconSet WOOD = new MaterialIconSet(GTCEu.id("wood"), FINE);
public static final MaterialIconSet ROUGH = new MaterialIconSet(GTCEu.id("rough"), FINE);
public static final MaterialIconSet FLINT = new MaterialIconSet(GTCEu.id("flint"), ROUGH);
public static final MaterialIconSet LIGNITE = new MaterialIconSet(GTCEu.id("lignite"), ROUGH);
public static final MaterialIconSet QUARTZ = new MaterialIconSet(GTCEu.id("quartz"), ROUGH);
public static final MaterialIconSet CERTUS = new MaterialIconSet(GTCEu.id("certus"), QUARTZ);
public static final MaterialIconSet LAPIS = new MaterialIconSet(GTCEu.id("lapis"), QUARTZ);
public static final MaterialIconSet FLUID = new MaterialIconSet(GTCEu.id("fluid"));
public static final MaterialIconSet RADIOACTIVE = new MaterialIconSet(GTCEu.id("radioactive"), METALLIC);

// Implementation -----------------------------------------------------------------------------------------------

private static int idCounter = 0;
public final ResourceLocation id;
public final String name;
public final int id;
public final boolean isRootIconset;

/**
* This can be null if {@link MaterialIconSet#isRootIconset} is true,
* otherwise it will be Nonnull
*/
@Nullable
public final MaterialIconSet parentIconset;

/**
* Create a new MaterialIconSet whose parent is {@link MaterialIconSet#DULL}
*
*
* @deprecated Use {@link MaterialIconSet#MaterialIconSet(ResourceLocation)} instead
* @param name the name of the iconset
*/
@Deprecated(since = "8.0.0")
public MaterialIconSet(@NotNull String name) {
this(name, MaterialIconSet.DULL);
}

/**
* Create a new MaterialIconSet whose parent is one of your choosing
*
*
* @deprecated Use {@link MaterialIconSet#MaterialIconSet(ResourceLocation, MaterialIconSet)} instead
* @param name the name of the iconset
* @param parentIconset the parent iconset
*/
@Deprecated(since = "8.0.0")
public MaterialIconSet(@NotNull String name, @NotNull MaterialIconSet parentIconset) {
this(name, parentIconset, false);
}

/**
* Create a new MaterialIconSet which is a root
*
* @deprecated Use {@link MaterialIconSet#MaterialIconSet(ResourceLocation, MaterialIconSet, boolean)} instead
* @param name the name of the iconset
* @param parentIconset the parent iconset, should be null if this should be a root iconset
* @param isRootIconset true if this should be a root iconset, otherwise false
*/
@Deprecated(since = "8.0.0")
public MaterialIconSet(@NotNull String name, @Nullable MaterialIconSet parentIconset, boolean isRootIconset) {
this.name = name.toLowerCase(Locale.ENGLISH);
Preconditions.checkArgument(!ICON_SETS.containsKey(this.name),
"MaterialIconSet " + this.name + " already registered!");
this.id = idCounter++;
this(GTCEu.id(name), parentIconset, isRootIconset);
}

/**
* Create a new MaterialIconSet whose parent is {@link MaterialIconSet#DULL}
*
* @param id the id of the iconset
*/
public MaterialIconSet(@NotNull ResourceLocation id) {
this(id, MaterialIconSet.DULL);
}

/**
* Create a new MaterialIconSet whose parent is one of your choosing
*
* @param id the id of the iconset
* @param parentIconset the parent iconset
*/
public MaterialIconSet(@NotNull ResourceLocation id, @NotNull MaterialIconSet parentIconset) {
this(id, parentIconset, false);
}

/**
* Create a new MaterialIconSet which is a root
*
* @param id the id of the iconset
* @param parentIconset the parent iconset, should be null if this should be a root iconset
* @param isRootIconset true if this should be a root iconset, otherwise false
*/
public MaterialIconSet(@NotNull ResourceLocation id, @Nullable MaterialIconSet parentIconset,
boolean isRootIconset) {
this.id = id;

if (id.getPath().contains("/"))
throw new IllegalArgumentException("MaterialIconSet id cannot have '/' %s".formatted(id));

this.name = id.getPath();
this.isRootIconset = isRootIconset;
this.parentIconset = parentIconset;
ICON_SETS.put(this.name, this);

GTRegistries.MATERIAL_ICON_SETS.register(this.id, this);
}

/**
* @deprecated Use {@code GTRegistries.MATERIAL_ICON_SETS.get()}
*/
@Deprecated(since = "8.0.0")
public static MaterialIconSet getByName(@NotNull String name) {
return ICON_SETS.get(name.toLowerCase(Locale.ENGLISH));
return GTRegistries.MATERIAL_ICON_SETS.get(GTCEu.id(name));
}

public String getName() {
return id.getPath();
}

@Override
public String toString() {
return name;
return id.toString();
}

public static void init() {
ModLoader.get().postEvent(new GTCEuAPI.RegisterEvent<>(GTRegistries.MATERIAL_ICON_SETS, MaterialIconSet.class));
if (GTCEu.Mods.isKubeJSLoaded()) {
GTRegistryInfo.registerFor(GTRegistryInfo.MATERIAL_ICON_SET.registryKey);
GTRegistryInfo.registerFor(GTRegistries.MATERIAL_ICON_SETS.getRegistryName());
}
GTRegistries.MATERIAL_ICON_SETS.freeze();
}
}
Loading
Loading