Skip to content

Commit

Permalink
add Ember Modifier, when Environmental Tech is loaded
Browse files Browse the repository at this point in the history
  • Loading branch information
MasterEnderman committed Oct 27, 2024
1 parent 86a59f3 commit e179e43
Show file tree
Hide file tree
Showing 23 changed files with 315 additions and 4 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,13 @@

A dwarven magic mod

## v1.25.0 - Environmental Tech Compatibility
### Changes
- added a new Modifier if Environmental Tech is installed
- the modifier allows all ET Void Miners to 'simulate' the behavior of an Ember Bore
- so each time a Void Miner finishes a cycle, it will also 'mine' something from the Ember Bore loot pool
- this comes with an increased power cost for the Void Miner, the amount of power is configurable

## v1.24.4 - Bugfixes
### Changes
- added a version check for the Emberforged mixins to disable them if someone uses the 2.0.0 version of Emberforged
Expand Down
18 changes: 17 additions & 1 deletion dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -193,17 +193,33 @@ dependencies {
runtimeOnly rfg.deobf("curse.maven:dynaores-1056043:5541366")
}

compileOnly rfg.deobf("curse.maven:ic2-classic-242942:5800761")
if (project.debug_ic2classic.toBoolean()) {
runtimeOnly rfg.deobf("curse.maven:ic2-classic-242942:5800761")
}

compileOnly rfg.deobf("curse.maven:simpledifficulty-360779:3613814")
compileOnly rfg.deobf("curse.maven:survival-tools-1120531:5807832")
if (project.debug_survivaltools.toBoolean()) {
runtimeOnly rfg.deobf("curse.maven:simpledifficulty-360779:3613814")
runtimeOnly rfg.deobf("curse.maven:survival-tools-1120531:5807832")
}

compileOnly rfg.deobf("curse.maven:valkyrielib-245480:2691542")
compileOnly rfg.deobf("curse.maven:valkyriecompat-289532:2691540")
compileOnly rfg.deobf("curse.maven:environmental-tech-245453:2691536")
if (project.debug_environmentaltech.toBoolean()) {
runtimeOnly rfg.deobf("curse.maven:valkyrielib-245480:2691542")
// runtimeOnly rfg.deobf("curse.maven:valkyriecompat-289532:2691540")
runtimeOnly rfg.deobf("curse.maven:environmental-tech-245453:2691536")
}

// Runtime dependencies
runtimeOnly rfg.deobf("curse.maven:the-one-probe-community-edition-885670:5171095")
runtimeOnly rfg.deobf("curse.maven:the-one-probe-community-edition-885670:5824252")
runtimeOnly rfg.deobf("curse.maven:topalldependents-1120632:5808089") // updated version of the one probe addons
runtimeOnly rfg.deobf("curse.maven:vintagefix-871198:5010926")
runtimeOnly rfg.deobf("curse.maven:startup-timer-782070:5001902")
runtimeOnly rfg.deobf("curse.maven:raw-mouse-input-blessed-edition-940930:5235456")

runtimeOnly "com.cleanroommc:configanytime:3.0"
runtimeOnly rfg.deobf("curse.maven:red-core-873867:5618189")
Expand Down
2 changes: 2 additions & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,9 @@ debug_embersconstruct = false
debug_embersified = false
debug_embersifiedextended = true
debug_enderio = false
debug_environmentaltech = true
debug_gadgetry = false
debug_ic2classic = false
debug_inspirations = false
debug_immersiveengineering = false
debug_jaopca = false
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/teamroots/embers/Embers.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public class Embers {
public static final String CFG_FOLDER = "Embers/";
public static final String CFG_ADDONS_FOLDER = "Embers/addons/";
public static final String VERSIONS = "[1.12.2]";
public static final String DEPENDENCIES = "after:mysticalmechanics;after:mixinbooter@[9.1,);";
public static final String DEPENDENCIES = "after:mysticalmechanics;after:mixinbooter@[9.1,);after:environmentaltech";

public static final Logger LOG = LogManager.getLogger(Embers.MODNAME);

Expand Down
4 changes: 4 additions & 0 deletions src/main/java/teamroots/embers/compat/Util.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ public static boolean isEnderIOIntegrationEnabled() {
return ConfigCompat.enableEnderIOIntegration && Loader.isModLoaded("enderio");
}

public static boolean isEnvironmentalTechIntegrationEnabled() {
return ConfigCompat.enableEnvironmentalTechIntegration && Loader.isModLoaded("environmentaltech");
}

public static boolean isTinkersIntegrationEnabled() {
return ConfigCompat.enableTinkersIntegration && Loader.isModLoaded("tconstruct");
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package teamroots.embers.compat.environmentaltech;

import com.valkyrieofnight.et.api.m_multiblocks.m_components.m_modifiers.attribute.AttributeForgeEnergyMultiplier;
import com.valkyrieofnight.et.m_multiblocks.m_components.m_modifiers.block.BlockModifier;
import com.valkyrieofnight.um.api.attribute.IAttribute;
import com.valkyrieofnight.um.api.modifier.ModifierID;
import com.valkyrieofnight.vlib.core.util.client.LangUtil;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.common.config.ConfigCategory;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import teamroots.embers.Embers;
import teamroots.embers.config.ConfigCompat;

import java.util.List;

public class BlockModifierEmber extends BlockModifier {
public static final ModifierID EMBER = new ModifierID(Embers.MODID, "ember");

public BlockModifierEmber() {
super("ember", TileModifierEmber.class, new ConfigCategory(""));
}

@SideOnly(Side.CLIENT)
public boolean hasShiftTooltipInfo() {
return true;
}

@SideOnly(Side.CLIENT)
public void addShiftTooltipInfo(ItemStack stack, World worldIn, List<String> tooltip, ITooltipFlag flagIn) {
tooltip.add(LangUtil.toLoc("tooltip.embers.modifier_ember.info"));
}

@Override
public void addAttributes(List<IAttribute> list, ConfigCategory configCategory) {
list.add(EmbersAttributes.EM_EMBER);
list.add(new AttributeForgeEnergyMultiplier((float) ConfigCompat.ENVIRONMENTAL_TECH.energy_increase / 100.0F));
}

@Override
public ModifierID getModifierID() {
return EMBER;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package teamroots.embers.compat.environmentaltech;

import com.valkyrieofnight.um.api.attribute.AttributeID;
import com.valkyrieofnight.um.api.attribute.IAttribute;
import com.valkyrieofnight.um.api.base.attributes.generic.AttributeBoolean;

public class EmbersAttributes {
public static final AttributeID EM_EMBER_ID = new AttributeID("embers", "ember", AttributeBoolean.CALCULATOR_OR);
public static IAttribute EM_EMBER;

public EmbersAttributes() {
}

static {
EM_EMBER = new AttributeBoolean(EM_EMBER_ID, true);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package teamroots.embers.compat.environmentaltech;

import com.valkyrieofnight.et.ETMod;
import com.valkyrieofnight.et.m_multiblocks.m_components.m_modifiers.features.MBlocks;
import com.valkyrieofnight.et.m_multiblocks.m_voidminer.features.VMBlocks;
import com.valkyrieofnight.et.m_resources.features.ETRBlocks;
import com.valkyrieofnight.et.m_resources.features.ETRItems;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.oredict.ShapedOreRecipe;
import teamroots.embers.Embers;
import teamroots.embers.register.BlockRegister;
import teamroots.embers.register.ItemRegister;

import static teamroots.embers.recipe.RecipeRegistry.getRL;

public class EnvironmentalTechIntegration {
public static Block MODIFIER_EMBER = new BlockModifierEmber();

public static void registerAll() {
VMBlocks.getInstance().addBlock(MODIFIER_EMBER);
}

public static void registerRecipes(RegistryEvent.Register<IRecipe> event) {
event.getRegistry().register(new ShapedOreRecipe(new ResourceLocation(Embers.MODID, "modifier_ember"), new ItemStack(MODIFIER_EMBER, 1), true, new Object[]{
"ABA",
"CDC",
"EFE",
'A', ItemRegister.EMBER_CLUSTER,
'B', BlockRegister.EMBER_BORE,
'C', ETRBlocks.MICA,
'D', MBlocks.MODIFIER_NULL,
'E', "plateDawnstone",
'F', ETRItems.LONSDALEITE_CRYSTAL}).setMirrored(true).setRegistryName(getRL("modifier_ember")));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package teamroots.embers.compat.environmentaltech;

import com.valkyrieofnight.et.base.tile.ETTileSlave;

public class TileModifierEmber extends ETTileSlave {
public TileModifierEmber() {
}
}
17 changes: 16 additions & 1 deletion src/main/java/teamroots/embers/config/ConfigCompat.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import net.minecraftforge.common.config.Config;
import teamroots.embers.Embers;
import teamroots.embers.config.compat.EnvironmentalTechCategory;

@Config(modid = Embers.MODID, category = "compat", name = Embers.CFG_FOLDER + "compat")
@Config.LangKey("cfg.embers.compat")
Expand All @@ -26,6 +27,19 @@ public class ConfigCompat {
})
public static boolean enableEnderIOIntegration = true;

@Config.RequiresMcRestart
@Config.Name("Enable Environmental Tech Integration")
@Config.Comment({
"If true, Embers will register items, blocks and recipes providing Environmental Tech integration.",
"This enabled a new Modifier to allow any Void Miner to access the Ember Bore loot pool."
})
public static boolean enableEnvironmentalTechIntegration = true;

@Config.Name("Environmental Tech")
@Config.LangKey("cfg.embers.compat.environmental_tech")
@Config.Comment("Options about the Environmental Tech integration")
public static final EnvironmentalTechCategory ENVIRONMENTAL_TECH = new EnvironmentalTechCategory();

@Config.RequiresMcRestart
@Config.Name("Enable Mystical Mechanics Integration")
@Config.Comment("If true, Embers will register items, blocks and recipes providing Mystical Mechanics integration.")
Expand All @@ -35,7 +49,8 @@ public class ConfigCompat {
@Config.Name("Enable Tinkers' Construct Integration")
@Config.Comment({
"If true, Embers will register items, blocks and recipes providing Tinkers' Construct integration.",
"Right now this only adds grinding ball recipes if EnderIO is installed as well."
"Right now this only adds grinding ball recipes if EnderIO is installed as well",
"as it needs to be present to load the required fluids."
})
public static boolean enableTinkersIntegration = true;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package teamroots.embers.config.compat;

import net.minecraftforge.common.config.Config;

public class EnvironmentalTechCategory {
@Config.RequiresMcRestart
@Config.Name("Energy Increase")
@Config.RangeInt(min = 0)
@Config.Comment({
"How much more energy the modifier will consume",
"The value is entered as a percentage, so 20 is 20% more energy"
})
public int energy_increase = 20;
}
4 changes: 3 additions & 1 deletion src/main/java/teamroots/embers/mixin/LateMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ public class LateMixin implements ILateMixinLoader {
"embersconstruct",
"embersified",
"embersifiedextended",
"environmentaltech",
"jaopca",
"moreclimate",
"mystgears",
Expand All @@ -28,7 +29,8 @@ public class LateMixin implements ILateMixinLoader {
"polymancy",
"spartanweaponryarcana",
"survivaltools",
"thaumicperiphery"
"thaumicperiphery",
"valkyrielib"
);

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package teamroots.embers.mixin.environmentaltech;

import com.valkyrieofnight.et.base.tile.ETControllerEConsumer;
import com.valkyrieofnight.et.m_multiblocks.m_voidminer.tile.TileContVoidMinerBase;
import com.valkyrieofnight.vliblegacy.lib.inventory.VLItemHandler;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.WeightedRandom;
import net.minecraftforge.items.ItemHandlerHelper;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import teamroots.embers.compat.environmentaltech.EmbersAttributes;
import teamroots.embers.recipe.BoreOutput;
import teamroots.embers.recipe.RecipeRegistry;
import teamroots.embers.util.EmberGenUtil;
import teamroots.embers.util.WeightedItemStack;

import java.util.Random;

@Mixin(value = TileContVoidMinerBase.class, remap = false)
public abstract class TileContVoidMinerBaseMixin extends ETControllerEConsumer {
private TileContVoidMinerBaseMixin(int capacity) {
super(capacity);
}

@Shadow
private Random rand;

@Shadow
private BlockPos drillTip;

@Shadow
private VLItemHandler output;

@Inject(method = "onProcessComplete", at = @At("HEAD"))
private void checkEmber(CallbackInfo ci) {
Object modifierExists = this.modifierHandler.getAttributeFinalValue(EmbersAttributes.EM_EMBER.getAttributeID());
if (modifierExists != null) {
if (rand.nextFloat() < EmberGenUtil.getEmberDensity(this.getWorld().getSeed(), drillTip.getX(), drillTip.getZ())) {
BoreOutput possible_output = RecipeRegistry.getBoreOutput(this.getWorld(), drillTip);
if (possible_output != null) {
if (!possible_output.stacks.isEmpty()) {
WeightedItemStack picked = WeightedRandom.getRandomItem(rand, possible_output.stacks);
ItemHandlerHelper.insertItem(output, picked.getStack().copy(), false);
}
}
}
}

}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package teamroots.embers.mixin.valkyrielib;

import com.valkyrieofnight.vliblegacy.lib.block.adv.VLBlockStandard;
import net.minecraft.block.material.Material;
import net.minecraft.util.ResourceLocation;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.ModifyArg;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import teamroots.embers.Embers;

@Mixin(value = VLBlockStandard.class, remap = false)
public class VLBlockStandardMixin {
@Shadow
protected String blockName;

@ModifyArg(method = "<init>(Ljava/lang/String;Lnet/minecraft/block/material/Material;)V", at = @At(value = "INVOKE", target = "Lcom/valkyrieofnight/vliblegacy/lib/block/adv/VLBlockStandard;setRegistryName(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraftforge/registries/IForgeRegistryEntry;"), index = 0)
private String modifyRegistryName(String name) {
if (blockName.equals("modifier_ember")) {
return Embers.MODID;
}
return name;
}

@ModifyArg(method = "<init>(Ljava/lang/String;Lnet/minecraft/block/material/Material;)V", at = @At(value = "INVOKE", target = "Lcom/valkyrieofnight/vliblegacy/lib/block/adv/VLBlockStandard;setTranslationKey(Ljava/lang/String;)Lnet/minecraft/block/Block;"), index = 0)
private String modifyTranslationKey(String name) {
if (blockName.equals("modifier_ember")) {
return Embers.MODID + "." + blockName;
}
return name;
}

}
4 changes: 4 additions & 0 deletions src/main/java/teamroots/embers/recipe/RecipeRegistry.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import teamroots.embers.compat.EnderioIntegration;
import teamroots.embers.compat.MysticalMechanicsIntegration;
import teamroots.embers.compat.Util;
import teamroots.embers.compat.environmentaltech.EnvironmentalTechIntegration;
import teamroots.embers.config.ConfigMachine;
import teamroots.embers.config.ConfigMaterial;
import teamroots.embers.config.ConfigMisc;
Expand Down Expand Up @@ -1061,6 +1062,9 @@ public void init(RegistryEvent.Register<IRecipe> event) {
if (Util.isMysticalMechanicsIntegrationEnabled()) {
MysticalMechanicsIntegration.registerRecipes(event);
}
if (Util.isEnvironmentalTechIntegrationEnabled()) {
EnvironmentalTechIntegration.registerRecipes(event);
}
if (Util.isTinkersIntegrationEnabled() && Util.isEnderIOIntegrationEnabled()) {
EnderioIntegration.registerRecipes(event);
}
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/teamroots/embers/register/RegistryManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
import teamroots.embers.block.IModeledBlock;
import teamroots.embers.compat.BaublesIntegration;
import teamroots.embers.compat.MysticalMechanicsIntegration;
import teamroots.embers.compat.environmentaltech.EnvironmentalTechIntegration;
import teamroots.embers.compat.Util;
import teamroots.embers.config.ConfigMob;
import teamroots.embers.entity.EntityAncientGolem;
Expand Down Expand Up @@ -110,6 +111,8 @@ public static void registerAll() {
BaublesIntegration.registerAll();
if (Util.isMysticalMechanicsIntegrationEnabled())
MysticalMechanicsIntegration.registerAll();
if (Util.isEnvironmentalTechIntegrationEnabled())
EnvironmentalTechIntegration.registerAll();
}

private static void registerCapabilities() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"variants":{
"normal":{"model": "embers:modifier_ember"}
}
}
Loading

0 comments on commit e179e43

Please sign in to comment.