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
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# 2.6.2
- Re: Fix DEDA JEI display [#346](https://github.com/GTModpackTeam/GTExpert-Core/pull/346)

* * *

# 2.6.1
- Fix DEDA JEI display [#345](https://github.com/GTModpackTeam/GTExpert-Core/pull/345)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,5 +52,13 @@ public enum DraconicTier {
DraconicTier(int voltageOffset) {
this.voltageOffset = voltageOffset;
}

/**
* Returns true if this tier requires the Awakened Draconium Fusion Crafter (Tier II).
* CHAOTIC tier requires UV voltage which is only available on the Awakened Crafter.
*/
public boolean requiresAwakenedCrafter() {
return this == CHAOTIC;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,10 @@
import com.github.gtexpert.core.api.util.GTELog;
import com.github.gtexpert.core.integration.deda.DEDAConfigHolder;
import com.github.gtexpert.core.integration.deda.recipemaps.tierup.TierUpRecipeBuilder;
import com.github.gtexpert.core.integration.deda.recipemaps.tierup.TierUpRecipeInfo;
import com.github.gtexpert.core.integration.deda.recipemaps.tierup.TierUpRecipeProperty;
import com.github.gtexpert.core.integration.deda.recipemaps.upgrade.UpgradeRecipeBuilder;
import com.github.gtexpert.core.integration.deda.recipemaps.upgrade.UpgradeRecipeInfo;
import com.github.gtexpert.core.integration.deda.recipemaps.upgrade.UpgradeRecipeProperty;

import cofh.redstoneflux.api.IEnergyContainerItem;
Expand Down Expand Up @@ -63,17 +65,17 @@ public Recipe findRecipe(long voltage, List<ItemStack> inputs, List<FluidStack>

Recipe tierUpRecipe = tierUpRecipeMap.findRecipe(voltage, inputs, fluidInputs, exactVoltage);
if (tierUpRecipe != null) {
return setupOutput(tierUpRecipe, inputs,
tierUpRecipe.getProperty(TierUpRecipeProperty.getInstance(), null));
TierUpRecipeInfo tierUpInfo = tierUpRecipe.getProperty(TierUpRecipeProperty.getInstance(), null);
return setupOutput(tierUpRecipe, inputs, tierUpInfo != null ? tierUpInfo.recipe() : null);
}

// Use cached lookup for upgrade recipes if enabled
// This improves performance from O(n) to O(m) where m is the number of recipes
// for the specific catalyst item type, instead of all upgrade recipes
Recipe upgradeRecipe = findUpgradeRecipe(voltage, inputs, fluidInputs);
if (upgradeRecipe != null) {
return setupOutput(upgradeRecipe, inputs,
upgradeRecipe.getProperty(UpgradeRecipeProperty.getInstance(), null));
UpgradeRecipeInfo upgradeInfo = upgradeRecipe.getProperty(UpgradeRecipeProperty.getInstance(), null);
return setupOutput(upgradeRecipe, inputs, upgradeInfo != null ? upgradeInfo.recipe() : null);
}

return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,19 @@
import gregtech.api.util.ValidationResult;

import com.github.gtexpert.core.api.util.GTELog;
import com.github.gtexpert.core.integration.deda.DEDAConstants.DraconicTier;

public class TierUpRecipeBuilder extends RecipeBuilder<TierUpRecipeBuilder> {

private GTRecipeInput catalyst;
private ItemStack result;
private boolean requiresAwakenedCrafter;

public TierUpRecipeBuilder() {}

public TierUpRecipeBuilder(TierUpRecipeBuilder recipeBuilder) {
super(recipeBuilder);
this.requiresAwakenedCrafter = recipeBuilder.requiresAwakenedCrafter;
}

@Override
Expand All @@ -42,8 +45,8 @@ public boolean applyProperty(@NotNull String key, @Nullable Object value) {
if (!key.equals(TierUpRecipeProperty.KEY)) {
return super.applyProperty(key, value);
}
if (!(value instanceof ToolUpgradeRecipe)) {
GTELog.logger.error("Property for draconic upgrade must be an instance of ToolUpgradeRecipe!",
if (!(value instanceof TierUpRecipeInfo)) {
GTELog.logger.error("Property for draconic upgrade must be an instance of TierUpRecipeInfo!",
new Throwable());
}
this.applyProperty(TierUpRecipeProperty.getInstance(), value);
Expand Down Expand Up @@ -85,13 +88,14 @@ public ValidationResult<Recipe> build() {
}

private void setFusionProperties() {
setFusionRecipe(new ToolUpgradeRecipe(
ToolUpgradeRecipe toolRecipe = new ToolUpgradeRecipe(
result,
catalyst.getInputStacks()[0],
0,
0,
new ItemStack(Blocks.DIRT) // fake item to avoid crash
));
);
setFusionRecipe(new TierUpRecipeInfo(toolRecipe, requiresAwakenedCrafter));
inputs.add(0, catalyst);
outputs.add(result);
}
Expand All @@ -114,8 +118,13 @@ public TierUpRecipeBuilder result(ItemStack result) {
return this;
}

public void setFusionRecipe(ToolUpgradeRecipe fusionRecipe) {
applyProperty(TierUpRecipeProperty.getInstance(), fusionRecipe);
public TierUpRecipeBuilder tier(DraconicTier tier) {
this.requiresAwakenedCrafter = tier.requiresAwakenedCrafter();
return this;
}

public void setFusionRecipe(TierUpRecipeInfo recipeInfo) {
applyProperty(TierUpRecipeProperty.getInstance(), recipeInfo);
}

public GTRecipeInput getCatalyst() {
Expand All @@ -126,7 +135,7 @@ public ItemStack getResult() {
return result;
}

public ToolUpgradeRecipe getFusionRecipe() {
public TierUpRecipeInfo getFusionRecipe() {
return this.recipePropertyStorage == null ? null :
this.recipePropertyStorage.getRecipePropertyValue(TierUpRecipeProperty.getInstance(), null);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.github.gtexpert.core.integration.deda.recipemaps.tierup;

import com.brandon3055.draconicevolution.lib.ToolUpgradeRecipe;
import com.github.bsideup.jabel.Desugar;

/**
* Wrapper for tier-up recipe info including the original Draconic Evolution recipe
* and machine tier requirement.
*/
@Desugar
public record TierUpRecipeInfo(ToolUpgradeRecipe recipe, boolean requiresAwakenedCrafter) {}
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,15 @@
import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.I18n;

import com.brandon3055.draconicevolution.lib.ToolUpgradeRecipe;

import gregtech.api.recipes.recipeproperties.RecipeProperty;

public class TierUpRecipeProperty extends RecipeProperty<ToolUpgradeRecipe> {
public class TierUpRecipeProperty extends RecipeProperty<TierUpRecipeInfo> {

public static final String KEY = "draconic_fusion_tier_up";
private static TierUpRecipeProperty INSTANCE;

private TierUpRecipeProperty() {
super(KEY, ToolUpgradeRecipe.class);
super(KEY, TierUpRecipeInfo.class);
}

public static TierUpRecipeProperty getInstance() {
Expand All @@ -25,13 +23,20 @@ public static TierUpRecipeProperty getInstance() {

@Override
public void drawInfo(Minecraft minecraft, int x, int y, int color, Object value) {
TierUpRecipeInfo info = castValue(value);
String crafterKey = info.requiresAwakenedCrafter() ?
"recipemap.draconic_fusion.crafter.awakened" :
"recipemap.draconic_fusion.crafter.draconium";
// Draw 3 lines: crafter tier, property line 1, property line 2
// Compensate for getInfoHeight=30 by drawing at y-20, y-10, y
minecraft.fontRenderer.drawString(I18n.format(crafterKey), x, y - 20, color);
minecraft.fontRenderer.drawString(I18n.format("recipemap.draconic_fusion_tier_up.property.1"), x, y - 10,
color);
minecraft.fontRenderer.drawString(I18n.format("recipemap.draconic_fusion_tier_up.property.2"), x, y, color);
}

@Override
public int getInfoHeight(Object value) {
return 20;
return 30;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,14 @@
import gregtech.api.util.ValidationResult;

import com.github.gtexpert.core.api.util.GTELog;
import com.github.gtexpert.core.integration.deda.DEDAConstants.DraconicTier;

public class UpgradeRecipeBuilder extends RecipeBuilder<UpgradeRecipeBuilder> {

private ItemStack catalyst;
private String upgradeName;
private int currentLevel = -1;
private boolean requiresAwakenedCrafter;

public UpgradeRecipeBuilder() {}

Expand All @@ -37,6 +39,7 @@ public UpgradeRecipeBuilder(UpgradeRecipeBuilder recipeBuilder) {
this.catalyst = recipeBuilder.catalyst;
this.upgradeName = recipeBuilder.upgradeName;
this.currentLevel = recipeBuilder.currentLevel;
this.requiresAwakenedCrafter = recipeBuilder.requiresAwakenedCrafter;
}

@Override
Expand All @@ -49,8 +52,8 @@ public boolean applyProperty(@NotNull String key, @Nullable Object value) {
if (!key.equals(UpgradeRecipeProperty.KEY)) {
return super.applyProperty(key, value);
}
if (!(value instanceof FusionUpgradeRecipe)) {
GTELog.logger.error("Property for draconic upgrade must be an instance of FusionUpgradeRecipe!",
if (!(value instanceof UpgradeRecipeInfo)) {
GTELog.logger.error("Property for draconic upgrade must be an instance of UpgradeRecipeInfo!",
new Throwable());
}
this.applyProperty(UpgradeRecipeProperty.getInstance(), value);
Expand Down Expand Up @@ -123,13 +126,14 @@ private void setFusionProperties() {
outputs.add(output);

ItemStack upgradeKey = new ItemStack(DEFeatures.toolUpgrade, 1, ToolUpgrade.NAME_TO_ID.get(upgradeName));
setFusionRecipe(new FusionUpgradeRecipe(
FusionUpgradeRecipe fusionRecipe = new FusionUpgradeRecipe(
upgradeName,
upgradeKey,
0,
currentLevel,
upgradeLevel,
input));
input);
setFusionRecipe(new UpgradeRecipeInfo(fusionRecipe, requiresAwakenedCrafter));
inputs.add(1, new GTRecipeItemInput(upgradeKey, upgradeKey.getCount()).setNonConsumable());
}

Expand All @@ -148,8 +152,13 @@ public UpgradeRecipeBuilder level(int level) {
return this;
}

public void setFusionRecipe(FusionUpgradeRecipe fusionRecipe) {
applyProperty(UpgradeRecipeProperty.getInstance(), fusionRecipe);
public UpgradeRecipeBuilder tier(DraconicTier tier) {
this.requiresAwakenedCrafter = tier.requiresAwakenedCrafter();
return this;
}

public void setFusionRecipe(UpgradeRecipeInfo recipeInfo) {
applyProperty(UpgradeRecipeProperty.getInstance(), recipeInfo);
}

public ItemStack getCatalyst() {
Expand All @@ -164,7 +173,7 @@ public int getCurrentLevel() {
return currentLevel;
}

public FusionUpgradeRecipe getFusionRecipe() {
public UpgradeRecipeInfo getFusionRecipe() {
return this.recipePropertyStorage == null ? null :
this.recipePropertyStorage.getRecipePropertyValue(UpgradeRecipeProperty.getInstance(), null);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.github.gtexpert.core.integration.deda.recipemaps.upgrade;

import com.brandon3055.draconicevolution.api.itemupgrade.FusionUpgradeRecipe;
import com.github.bsideup.jabel.Desugar;

/**
* Wrapper for upgrade recipe info including the original Draconic Evolution recipe
* and machine tier requirement.
*/
@Desugar
public record UpgradeRecipeInfo(FusionUpgradeRecipe recipe, boolean requiresAwakenedCrafter) {}
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,15 @@
import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.I18n;

import com.brandon3055.draconicevolution.api.itemupgrade.FusionUpgradeRecipe;

import gregtech.api.recipes.recipeproperties.RecipeProperty;

public class UpgradeRecipeProperty extends RecipeProperty<FusionUpgradeRecipe> {
public class UpgradeRecipeProperty extends RecipeProperty<UpgradeRecipeInfo> {

public static final String KEY = "draconic_fusion_upgrade";
private static UpgradeRecipeProperty INSTANCE;

private UpgradeRecipeProperty() {
super(KEY, FusionUpgradeRecipe.class);
super(KEY, UpgradeRecipeInfo.class);
}

public static UpgradeRecipeProperty getInstance() {
Expand All @@ -25,13 +23,20 @@ public static UpgradeRecipeProperty getInstance() {

@Override
public void drawInfo(Minecraft minecraft, int x, int y, int color, Object value) {
UpgradeRecipeInfo info = castValue(value);
String crafterKey = info.requiresAwakenedCrafter() ?
"recipemap.draconic_fusion.crafter.awakened" :
"recipemap.draconic_fusion.crafter.draconium";
// Draw 3 lines: crafter tier, property line 1, property line 2
// Compensate for getInfoHeight=30 by drawing at y-20, y-10, y
minecraft.fontRenderer.drawString(I18n.format(crafterKey), x, y - 20, color);
minecraft.fontRenderer.drawString(I18n.format("recipemap.draconic_fusion_upgrade.property.1"), x, y - 10,
color);
minecraft.fontRenderer.drawString(I18n.format("recipemap.draconic_fusion_upgrade.property.2"), x, y, color);
}

@Override
public int getInfoHeight(Object value) {
return 20;
return 30;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,7 @@ public static void init() {
GTEDraconicRecipeMaps.DRACONIC_FUSION_TIER_UP_RECIPES.recipeBuilder()
.catalyst(DEDARecipeHelper.inputWithAnyNBT(new ItemStack(DEFeatures.draconicPick)))
.result(new ItemStack(DEFeatures.draconicStaffOfPower))
.tier(DraconicTier.DRACONIC)
.input(plate, GTEMaterials.Draconium, 6)
.inputNBT(DEFeatures.draconicAxe, NBTMatcher.ANY, NBTCondition.ANY)
.inputNBT(DEFeatures.draconicShovel, NBTMatcher.ANY, NBTCondition.ANY)
Expand Down Expand Up @@ -228,7 +229,7 @@ private static void addTierUpRecipe(ItemStack catalyst, ItemStack result, Dracon

private static void addTierUpRecipe(GTRecipeInput catalyst, ItemStack result, DraconicTier tier, int plateAmount) {
TierUpRecipeBuilder recipeBuilder = GTEDraconicRecipeMaps.DRACONIC_FUSION_TIER_UP_RECIPES.recipeBuilder();
recipeBuilder.catalyst(catalyst).result(result);
recipeBuilder.catalyst(catalyst).result(result).tier(tier);

switch (tier) {
case WYVERN -> recipeBuilder
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import com.github.gtexpert.core.api.GTEValues;
import com.github.gtexpert.core.api.unification.material.GTEMaterials;
import com.github.gtexpert.core.api.util.GTELog;
import com.github.gtexpert.core.integration.deda.DEDAConstants.DraconicTier;
import com.github.gtexpert.core.integration.deda.recipemaps.GTEDraconicRecipeMaps;
import com.github.gtexpert.core.integration.deda.recipemaps.upgrade.UpgradeRecipeBuilder;

Expand Down Expand Up @@ -71,6 +72,7 @@ public static void init() {

switch (currentLevel) {
case 0 -> recipeBuilder
.tier(DraconicTier.WYVERN)
.input(Items.GOLDEN_APPLE, 2)
.input(OrePrefix.gem, Materials.Diamond, 2)
.input(OrePrefix.gem, Materials.EnderEye, 2)
Expand All @@ -79,6 +81,7 @@ public static void init() {
.fluidOutputs(GTEMaterials.Pyrotheum.getFluid(GCYMFluidStorageKeys.MOLTEN, 2000))
.duration(100).EUt(VA[GTEValues.dedaVoltageTier - 1]);
case 1 -> recipeBuilder
.tier(DraconicTier.WYVERN)
.input(OrePrefix.gem, Materials.NetherStar, 2)
.input(DEFeatures.wyvernCore, 2)
.input(OrePrefix.gem, Materials.Emerald, 2)
Expand All @@ -87,6 +90,7 @@ public static void init() {
.fluidOutputs(GTEMaterials.Pyrotheum.getFluid(GCYMFluidStorageKeys.MOLTEN, 4000))
.duration(200).EUt(VA[GTEValues.dedaVoltageTier]);
case 2 -> recipeBuilder
.tier(DraconicTier.DRACONIC)
.input(OrePrefix.gem, Materials.NetherStar, 2)
.input(DEFeatures.draconicCore, 2)
.input(OrePrefix.block, Materials.Emerald, 2)
Expand All @@ -95,6 +99,7 @@ public static void init() {
.fluidOutputs(GTEMaterials.Pyrotheum.getFluid(GCYMFluidStorageKeys.MOLTEN, 8000))
.duration(400).EUt(VA[GTEValues.dedaVoltageTier + 1]);
case 3 -> recipeBuilder
.tier(DraconicTier.CHAOTIC)
.input(DEFeatures.draconicCore, 2)
.input(DEFeatures.awakenedCore, 2)
.input(Blocks.DRAGON_EGG, 2)
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/assets/gtexpert/lang/en_us.lang
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,8 @@ recipemap.draconic_fusion_upgrade.name=Draconic Equipment Upgrades
recipemap.awakened_draconic_fusion_upgrade.name=Draconic Equipment Upgrades
recipemap.draconic_fusion_upgrade.property.1=Preserves upgrade info
recipemap.draconic_fusion_upgrade.property.2= and stored energy
recipemap.draconic_fusion.crafter.draconium=Requires: Fusion Crafter I
recipemap.draconic_fusion.crafter.awakened=Requires: Fusion Crafter II
recipemap.advanced_chemical_plant.name=Advanced Chemical Plant
recipemap.large_gas_collector.name=Large Gas Collector
recipemap.steam_mixer.name=Steam Mixer
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/assets/gtexpert/lang/ja_jp.lang
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,8 @@ recipemap.draconic_fusion_upgrade.name=ドラコニック装備のアップグ
recipemap.awakened_draconic_fusion_upgrade.name=ドラコニック装備のアップグレード
recipemap.draconic_fusion_upgrade.property.1=アップグレードの状態と蓄電量は
recipemap.draconic_fusion_upgrade.property.2= 保持されます
recipemap.draconic_fusion.crafter.draconium=要求: ドラコニック融合機 I
recipemap.draconic_fusion.crafter.awakened=要求: ドラコニック融合機 II
recipemap.advanced_chemical_plant.name=発展型化学プラント
recipemap.large_gas_collector.name=大型ガス収集機
recipemap.steam_mixer.name=蒸気式ミキサー
Expand Down