From cc346e92bea15bbb33666032be9da88c5d577d82 Mon Sep 17 00:00:00 2001 From: Rundas <38040866+Rundas01@users.noreply.github.com> Date: Tue, 23 Apr 2024 20:30:11 +0200 Subject: [PATCH 1/2] Added MaterialMutationCondition --- .../mutation/MaterialMutationCondition.java | 64 +++++++++++++++++++ .../resources/assets/gregtech/lang/en_us.lang | 3 + 2 files changed, 67 insertions(+) create mode 100644 src/main/java/gregtech/integration/forestry/mutation/MaterialMutationCondition.java diff --git a/src/main/java/gregtech/integration/forestry/mutation/MaterialMutationCondition.java b/src/main/java/gregtech/integration/forestry/mutation/MaterialMutationCondition.java new file mode 100644 index 00000000000..15058e96cef --- /dev/null +++ b/src/main/java/gregtech/integration/forestry/mutation/MaterialMutationCondition.java @@ -0,0 +1,64 @@ +package gregtech.integration.forestry.mutation; + +import gregtech.api.unification.material.Material; + +import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.translation.I18n; +import net.minecraft.world.World; +import net.minecraftforge.oredict.OreDictionary; + +import forestry.api.apiculture.IBeeHousing; +import forestry.api.climate.IClimateProvider; +import forestry.api.genetics.IAllele; +import forestry.api.genetics.IGenome; +import forestry.api.genetics.IMutationCondition; +import forestry.core.tiles.TileUtil; +import forestry.core.utils.Translator; + +import java.util.HashSet; +import java.util.Set; + +import static org.apache.commons.lang3.StringUtils.capitalize; + +public class MaterialMutationCondition implements IMutationCondition { + + private final Set acceptedBlocks = new HashSet(); + private final String displayName; + + public MaterialMutationCondition(Material material) { + this.displayName = I18n.translateToLocal("gregtech.mutation.block_of") + " " + material.getLocalizedName(); + String oredictName = "block" + capitalize(material.getName()); + + for (ItemStack ore : OreDictionary.getOres(oredictName)) { + if (!ore.isEmpty()) { + Item oreItem = ore.getItem(); + Block oreBlock = Block.getBlockFromItem(oreItem); + if (oreBlock != Blocks.AIR) { + this.acceptedBlocks.addAll(oreBlock.getBlockState().getValidStates()); + } + } + } + } + + public float getChance(World world, BlockPos pos, IAllele allele0, IAllele allele1, IGenome genome0, + IGenome genome1, IClimateProvider climate) { + TileEntity tile; + do { + pos = pos.down(); + tile = TileUtil.getTile(world, pos); + } while (tile instanceof IBeeHousing); + + IBlockState blockState = world.getBlockState(pos); + return this.acceptedBlocks.contains(blockState) ? 1.0F : 0.0F; + } + + public String getDescription() { + return Translator.translateToLocalFormatted("for.mutation.condition.resource", this.displayName); + } +} diff --git a/src/main/resources/assets/gregtech/lang/en_us.lang b/src/main/resources/assets/gregtech/lang/en_us.lang index 78cbaeb9f2d..de4b4fc3ddc 100644 --- a/src/main/resources/assets/gregtech/lang/en_us.lang +++ b/src/main/resources/assets/gregtech/lang/en_us.lang @@ -6286,3 +6286,6 @@ gregtech.scanner.forestry.larvae=§oScanned Larvae gregtech.scanner.forestry.serum=§oScanned Serum gregtech.scanner.forestry.caterpillar=§oScanned Caterpillar gregtech.scanner.forestry.pollen=§oScanned Pollen + +# Mutation +gregtech.mutation.block_of=Block of From eee892d4d02f0265a54e851fe999f2ff7b9b530b Mon Sep 17 00:00:00 2001 From: Rundas <38040866+Rundas01@users.noreply.github.com> Date: Tue, 7 May 2024 20:51:33 +0200 Subject: [PATCH 2/2] implemented requested changes --- .../forestry/mutation/MaterialMutationCondition.java | 11 +++++------ src/main/resources/assets/gregtech/lang/en_us.lang | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/main/java/gregtech/integration/forestry/mutation/MaterialMutationCondition.java b/src/main/java/gregtech/integration/forestry/mutation/MaterialMutationCondition.java index 15058e96cef..a4ea54cdf23 100644 --- a/src/main/java/gregtech/integration/forestry/mutation/MaterialMutationCondition.java +++ b/src/main/java/gregtech/integration/forestry/mutation/MaterialMutationCondition.java @@ -1,6 +1,8 @@ package gregtech.integration.forestry.mutation; +import gregtech.api.unification.OreDictUnifier; import gregtech.api.unification.material.Material; +import gregtech.api.util.LocalizationUtils; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; @@ -9,9 +11,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.text.translation.I18n; import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; import forestry.api.apiculture.IBeeHousing; import forestry.api.climate.IClimateProvider; @@ -19,7 +19,6 @@ import forestry.api.genetics.IGenome; import forestry.api.genetics.IMutationCondition; import forestry.core.tiles.TileUtil; -import forestry.core.utils.Translator; import java.util.HashSet; import java.util.Set; @@ -32,10 +31,10 @@ public class MaterialMutationCondition implements IMutationCondition { private final String displayName; public MaterialMutationCondition(Material material) { - this.displayName = I18n.translateToLocal("gregtech.mutation.block_of") + " " + material.getLocalizedName(); + this.displayName = LocalizationUtils.format("gregtech.mutation.block_of", material.getLocalizedName()); String oredictName = "block" + capitalize(material.getName()); - for (ItemStack ore : OreDictionary.getOres(oredictName)) { + for (ItemStack ore : OreDictUnifier.getAllWithOreDictionaryName(oredictName)) { if (!ore.isEmpty()) { Item oreItem = ore.getItem(); Block oreBlock = Block.getBlockFromItem(oreItem); @@ -59,6 +58,6 @@ public float getChance(World world, BlockPos pos, IAllele allele0, IAllele allel } public String getDescription() { - return Translator.translateToLocalFormatted("for.mutation.condition.resource", this.displayName); + return LocalizationUtils.format("for.mutation.condition.resource", this.displayName); } } diff --git a/src/main/resources/assets/gregtech/lang/en_us.lang b/src/main/resources/assets/gregtech/lang/en_us.lang index de4b4fc3ddc..729c9210520 100644 --- a/src/main/resources/assets/gregtech/lang/en_us.lang +++ b/src/main/resources/assets/gregtech/lang/en_us.lang @@ -6288,4 +6288,4 @@ gregtech.scanner.forestry.caterpillar=§oScanned Caterpillar gregtech.scanner.forestry.pollen=§oScanned Pollen # Mutation -gregtech.mutation.block_of=Block of +gregtech.mutation.block_of=Block of %s