diff --git a/src/main/java/gregtech/api/util/GTUtility.java b/src/main/java/gregtech/api/util/GTUtility.java index 5268ca94cff..aae9717f33c 100644 --- a/src/main/java/gregtech/api/util/GTUtility.java +++ b/src/main/java/gregtech/api/util/GTUtility.java @@ -1880,12 +1880,15 @@ public static ItemStack fillFluidContainer(FluidStack aFluid, ItemStack aStack, } return null; } - if (aCheckIFluidContainerItems && aStack.getItem() instanceof IFluidContainerItem - && ((IFluidContainerItem) aStack.getItem()).getFluid(aStack) == null - && ((IFluidContainerItem) aStack.getItem()).getCapacity(aStack) <= aFluid.amount) { - if (aRemoveFluidDirectly) aFluid.amount -= ((IFluidContainerItem) aStack.getItem()) - .fill(aStack = copyAmount(1, aStack), aFluid, true); - else((IFluidContainerItem) aStack.getItem()).fill(aStack = copyAmount(1, aStack), aFluid, true); + if (aCheckIFluidContainerItems && aStack.getItem() instanceof IFluidContainerItem fluidContainerItem + && fluidContainerItem.getFluid(aStack) == null + && fluidContainerItem.getCapacity(aStack) > 0 + && fluidContainerItem.getCapacity(aStack) <= aFluid.amount) { + if (aRemoveFluidDirectly) { + aFluid.amount -= fluidContainerItem.fill(aStack = copyAmount(1, aStack), aFluid, true); + } else { + fluidContainerItem.fill(aStack = copyAmount(1, aStack), aFluid, true); + } return aStack; } Map tFluidToContainer = sEmptyContainerToFluidToData.get(new GTItemStack(aStack)); diff --git a/src/main/java/gregtech/api/util/JubilanceMegaApiary.java b/src/main/java/gregtech/api/util/JubilanceMegaApiary.java index e24cad67785..8f2a48fbd70 100644 --- a/src/main/java/gregtech/api/util/JubilanceMegaApiary.java +++ b/src/main/java/gregtech/api/util/JubilanceMegaApiary.java @@ -1,5 +1,7 @@ package gregtech.api.util; +import net.minecraft.util.StatCollector; + import forestry.api.apiculture.IAlleleBeeSpecies; import forestry.api.apiculture.IBeeGenome; import forestry.api.apiculture.IBeeHousing; @@ -18,6 +20,6 @@ public boolean isJubilant(IAlleleBeeSpecies species, IBeeGenome genome, IBeeHous @Override public String getDescription() { - return "Will only be produced in mega Apiary"; + return StatCollector.translateToLocal("GT5U.tooltip.mega_apiary.only_producer"); } } diff --git a/src/main/java/gregtech/common/items/ItemComb.java b/src/main/java/gregtech/common/items/ItemComb.java index 081c148f3a2..8c5d43e5b02 100644 --- a/src/main/java/gregtech/common/items/ItemComb.java +++ b/src/main/java/gregtech/common/items/ItemComb.java @@ -32,6 +32,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; @@ -124,7 +125,7 @@ public String getItemStackDisplayName(ItemStack stack) { @Override public void addInformation(ItemStack stack, EntityPlayer player, List tooltip, boolean debugInfo) { - tooltip.add(EnumChatFormatting.DARK_RED + "Forestry can't process it"); + tooltip.add(EnumChatFormatting.DARK_RED + StatCollector.translateToLocal("GT5U.tooltip.comb.ban_forestry")); } @Override diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/MTEPlasmaForge.java b/src/main/java/gregtech/common/tileentities/machines/multi/MTEPlasmaForge.java index d1909d87219..66a75283e46 100644 --- a/src/main/java/gregtech/common/tileentities/machines/multi/MTEPlasmaForge.java +++ b/src/main/java/gregtech/common/tileentities/machines/multi/MTEPlasmaForge.java @@ -24,8 +24,10 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.stream.Stream; import javax.annotation.Nonnull; +import javax.annotation.Nullable; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -751,6 +753,34 @@ public CheckRecipeResult checkProcessing() { protected ProcessingLogic createProcessingLogic() { return new ProcessingLogic() { + @Nonnull + protected Stream findRecipeMatches(@Nullable RecipeMap map) { + if (map == null) { + return Stream.empty(); + } + + recalculateDiscount(); + // Allow recipes to start without having 100% of the catalyst required, aka discount > 0% + FluidStack[] queryFluids = new FluidStack[inputFluids.length]; + for (int i = 0; i < inputFluids.length; i++) { + queryFluids[i] = new FluidStack(inputFluids[i].getFluid(), inputFluids[i].amount); + for (FluidStack fuel : valid_fuels) { + if (queryFluids[i].isFluidEqual(fuel)) { + queryFluids[i].amount = (int) Math + .min(Math.round(queryFluids[i].amount / discount), Integer.MAX_VALUE); + break; + } + } + } + + return map.findRecipeQuery() + .items(inputItems) + .fluids(queryFluids) + .specialSlot(specialSlotItem) + .cachedRecipe(lastRecipe) + .findAll(); + } + @Nonnull @Override protected OverclockCalculator createOverclockCalculator(@Nonnull GTRecipe recipe) { diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/purification/MTEPurificationUnitBaryonicPerfection.java b/src/main/java/gregtech/common/tileentities/machines/multi/purification/MTEPurificationUnitBaryonicPerfection.java index d6a3621d33e..87843bf8105 100644 --- a/src/main/java/gregtech/common/tileentities/machines/multi/purification/MTEPurificationUnitBaryonicPerfection.java +++ b/src/main/java/gregtech/common/tileentities/machines/multi/purification/MTEPurificationUnitBaryonicPerfection.java @@ -467,6 +467,7 @@ protected void runMachine(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { super.runMachine(aBaseMetaTileEntity, aTick); // Every 20 ticks, add all catalysts from the input bus to the internal inventory. if (mMaxProgresstime > 0 && aTick % 20 == 0) { + startRecipeProcessing(); ArrayList storedInputs = getStoredInputs(); // For each stack in the input, check if it is a valid catalyst item and if so consume it for (ItemStack stack : storedInputs) { @@ -487,6 +488,7 @@ protected void runMachine(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { // If we could not drain, stop the machine if (!drained) { stopMachine(ShutDownReasonRegistry.outOfFluid(inputCost)); + endRecipeProcessing(); return; } // Now add the catalysts to the list, one by one since there may be multiples and we want to @@ -499,6 +501,7 @@ protected void runMachine(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { this.depleteInput(stack); } } + endRecipeProcessing(); // Only do this check if we didn't find a correct combination yet if (correctStartIndex != -1) return; diff --git a/src/main/java/gregtech/loaders/oreprocessing/ProcessingWire.java b/src/main/java/gregtech/loaders/oreprocessing/ProcessingWire.java index 27aa98420d6..2af8ce2795c 100644 --- a/src/main/java/gregtech/loaders/oreprocessing/ProcessingWire.java +++ b/src/main/java/gregtech/loaders/oreprocessing/ProcessingWire.java @@ -135,93 +135,77 @@ public void registerOre(OrePrefixes aPrefix, Materials aMaterial, String aOreDic case wireGt02 -> { cableWidth = 2; correspondingCable = OrePrefixes.cableGt02; - if (aMaterial.getProcessingMaterialTierEU() < TierEU.IV) { - // Shapeless crafting recipes - { - GTModHandler.addShapelessCraftingRecipe( - GTOreDictUnificator.get(OrePrefixes.wireGt01, aMaterial, 2L), - new Object[] { aOreDictName }); - - GTModHandler.addShapelessCraftingRecipe( - GTUtility.copyAmount(1, aStack), - new Object[] { OrePrefixes.wireGt01.get(aMaterial), OrePrefixes.wireGt01.get(aMaterial) }); - } - } + // Shapeless crafting recipes + GTModHandler.addShapelessCraftingRecipe( + GTOreDictUnificator.get(OrePrefixes.wireGt01, aMaterial, 2L), + new Object[] { aOreDictName }); + + GTModHandler.addShapelessCraftingRecipe( + GTUtility.copyAmount(1, aStack), + new Object[] { OrePrefixes.wireGt01.get(aMaterial), OrePrefixes.wireGt01.get(aMaterial) }); } case wireGt04 -> { cableWidth = 4; correspondingCable = OrePrefixes.cableGt04; - if (aMaterial.getProcessingMaterialTierEU() < TierEU.IV) { - // Shapeless crafting recipes - { - GTModHandler.addShapelessCraftingRecipe( - GTOreDictUnificator.get(OrePrefixes.wireGt01, aMaterial, 4L), - new Object[] { aOreDictName }); - GTModHandler.addShapelessCraftingRecipe( - GTUtility.copyAmount(1, aStack), - new Object[] { OrePrefixes.wireGt01.get(aMaterial), OrePrefixes.wireGt01.get(aMaterial), - OrePrefixes.wireGt01.get(aMaterial), OrePrefixes.wireGt01.get(aMaterial) }); - GTModHandler.addShapelessCraftingRecipe( - GTUtility.copyAmount(1, aStack), - new Object[] { OrePrefixes.wireGt02.get(aMaterial), OrePrefixes.wireGt02.get(aMaterial) }); - } - } + // Shapeless crafting recipes + GTModHandler.addShapelessCraftingRecipe( + GTOreDictUnificator.get(OrePrefixes.wireGt01, aMaterial, 4L), + new Object[] { aOreDictName }); + + GTModHandler.addShapelessCraftingRecipe( + GTUtility.copyAmount(1, aStack), + new Object[] { OrePrefixes.wireGt01.get(aMaterial), OrePrefixes.wireGt01.get(aMaterial), + OrePrefixes.wireGt01.get(aMaterial), OrePrefixes.wireGt01.get(aMaterial) }); + GTModHandler.addShapelessCraftingRecipe( + GTUtility.copyAmount(1, aStack), + new Object[] { OrePrefixes.wireGt02.get(aMaterial), OrePrefixes.wireGt02.get(aMaterial) }); } case wireGt08 -> { cableWidth = 8; correspondingCable = OrePrefixes.cableGt08; - if (aMaterial.getProcessingMaterialTierEU() < TierEU.IV) { - // Shapeless crafting recipes - { - GTModHandler.addShapelessCraftingRecipe( - GTOreDictUnificator.get(OrePrefixes.wireGt01, aMaterial, 8L), - new Object[] { aOreDictName }); - GTModHandler.addShapelessCraftingRecipe( - GTUtility.copyAmount(1, aStack), - new Object[] { OrePrefixes.wireGt01.get(aMaterial), OrePrefixes.wireGt01.get(aMaterial), - OrePrefixes.wireGt01.get(aMaterial), OrePrefixes.wireGt01.get(aMaterial), - OrePrefixes.wireGt01.get(aMaterial), OrePrefixes.wireGt01.get(aMaterial), - OrePrefixes.wireGt01.get(aMaterial), OrePrefixes.wireGt01.get(aMaterial) }); - GTModHandler.addShapelessCraftingRecipe( - GTUtility.copyAmount(1, aStack), - new Object[] { OrePrefixes.wireGt04.get(aMaterial), OrePrefixes.wireGt04.get(aMaterial) }); - } - } + // Shapeless crafting recipes + GTModHandler.addShapelessCraftingRecipe( + GTOreDictUnificator.get(OrePrefixes.wireGt01, aMaterial, 8L), + new Object[] { aOreDictName }); + + GTModHandler.addShapelessCraftingRecipe( + GTUtility.copyAmount(1, aStack), + new Object[] { OrePrefixes.wireGt01.get(aMaterial), OrePrefixes.wireGt01.get(aMaterial), + OrePrefixes.wireGt01.get(aMaterial), OrePrefixes.wireGt01.get(aMaterial), + OrePrefixes.wireGt01.get(aMaterial), OrePrefixes.wireGt01.get(aMaterial), + OrePrefixes.wireGt01.get(aMaterial), OrePrefixes.wireGt01.get(aMaterial) }); + GTModHandler.addShapelessCraftingRecipe( + GTUtility.copyAmount(1, aStack), + new Object[] { OrePrefixes.wireGt04.get(aMaterial), OrePrefixes.wireGt04.get(aMaterial) }); } case wireGt12 -> { cableWidth = 12; correspondingCable = OrePrefixes.cableGt12; - if (aMaterial.getProcessingMaterialTierEU() < TierEU.IV) { - // Shapeless crafting recipes - { - GTModHandler.addShapelessCraftingRecipe( - GTOreDictUnificator.get(OrePrefixes.wireGt01, aMaterial, 12L), - new Object[] { aOreDictName }); - GTModHandler.addShapelessCraftingRecipe( - GTUtility.copyAmount(1, aStack), - new Object[] { OrePrefixes.wireGt08.get(aMaterial), OrePrefixes.wireGt04.get(aMaterial) }); - } - } + // Shapeless crafting recipes + GTModHandler.addShapelessCraftingRecipe( + GTOreDictUnificator.get(OrePrefixes.wireGt01, aMaterial, 12L), + new Object[] { aOreDictName }); + + GTModHandler.addShapelessCraftingRecipe( + GTUtility.copyAmount(1, aStack), + new Object[] { OrePrefixes.wireGt08.get(aMaterial), OrePrefixes.wireGt04.get(aMaterial) }); } case wireGt16 -> { cableWidth = 16; correspondingCable = OrePrefixes.cableGt16; - if (aMaterial.getProcessingMaterialTierEU() < TierEU.IV) { - // Shapeless crafting recipes - { - GTModHandler.addShapelessCraftingRecipe( - GTOreDictUnificator.get(OrePrefixes.wireGt01, aMaterial, 16L), - new Object[] { aOreDictName }); - GTModHandler.addShapelessCraftingRecipe( - GTUtility.copyAmount(1, aStack), - new Object[] { OrePrefixes.wireGt08.get(aMaterial), OrePrefixes.wireGt08.get(aMaterial) }); - GTModHandler.addShapelessCraftingRecipe( - GTUtility.copyAmount(1, aStack), - new Object[] { OrePrefixes.wireGt12.get(aMaterial), OrePrefixes.wireGt04.get(aMaterial) }); - } - - AE2addNewAttunement(aStack); - } + // Shapeless crafting recipes + GTModHandler.addShapelessCraftingRecipe( + GTOreDictUnificator.get(OrePrefixes.wireGt01, aMaterial, 16L), + new Object[] { aOreDictName }); + + GTModHandler.addShapelessCraftingRecipe( + GTUtility.copyAmount(1, aStack), + new Object[] { OrePrefixes.wireGt08.get(aMaterial), OrePrefixes.wireGt08.get(aMaterial) }); + GTModHandler.addShapelessCraftingRecipe( + GTUtility.copyAmount(1, aStack), + new Object[] { OrePrefixes.wireGt12.get(aMaterial), OrePrefixes.wireGt04.get(aMaterial) }); + + AE2addNewAttunement(aStack); } default -> { GTLog.err.println( diff --git a/src/main/java/gtPlusPlus/core/item/food/BaseItemMetaFood.java b/src/main/java/gtPlusPlus/core/item/food/BaseItemMetaFood.java index 72e74b2d2bd..3c3a9191ff6 100644 --- a/src/main/java/gtPlusPlus/core/item/food/BaseItemMetaFood.java +++ b/src/main/java/gtPlusPlus/core/item/food/BaseItemMetaFood.java @@ -19,6 +19,7 @@ import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; import net.minecraft.world.World; import cpw.mods.fml.common.registry.GameRegistry; @@ -48,7 +49,7 @@ public class BaseItemMetaFood extends ItemFood { public static void registerMetaFoods() { registerNewMetaFood( 0, - "I wouldn't eat this unless I was starving", + StatCollector.translateToLocal("GTPP.tooltip.meta_food.unless_starving"), 2, 0, 64, @@ -56,7 +57,7 @@ public static void registerMetaFoods() { getOreDictNamesAsArrayList("listAllmeatraw")); registerNewMetaFood( 1, - "Doesn't look any better cooked", + StatCollector.translateToLocal("GTPP.tooltip.meta_food.better_cooked"), 4, 1, 64, @@ -91,7 +92,7 @@ public static void registerMetaFoods() { registerNewMetaFood(7, "", 4, 1, 64, getOreDictNamesAsArrayList("listAllmeatcooked")); registerNewMetaFood( 8, - "Warm to the touch", + StatCollector.translateToLocal("GTPP.tooltip.meta_food.warm_touch"), EnumRarity.uncommon, 4, 1, diff --git a/src/main/resources/assets/gregtech/lang/en_US.lang b/src/main/resources/assets/gregtech/lang/en_US.lang index ec4e828e96d..1403bd1a3c5 100644 --- a/src/main/resources/assets/gregtech/lang/en_US.lang +++ b/src/main/resources/assets/gregtech/lang/en_US.lang @@ -2036,6 +2036,9 @@ GTPP.tooltip.block.mining_level=Mining Level: %d GTPP.tooltip.block.contains=Contains: GTPP.tooltip.meta_special.quantum_stability=Provides quantum stability GTPP.tooltip.meta_special.quantum_modulation=Provides quantum modulation +GTPP.tooltip.meta_food.unless_starving=I wouldn't eat this unless I was starving +GTPP.tooltip.meta_food.better_cooked=Doesn't look any better cooked +GTPP.tooltip.meta_food.warm_touch=Warm to the touch # GTPP structure hints GTPP.tooltip.structure.anvil=Anvil @@ -2076,6 +2079,9 @@ GT5U.tooltip.fluid.stat=State: %s GT5U.tooltip.fluid.stat.gas=Gas GT5U.tooltip.fluid.stat.liquid=Liquid +GT5U.tooltip.comb.ban_forestry=Forestry can't process it +GT5U.tooltip.mega_apiary.only_producer=Will only be produced in mega Apiary + # Achievements # 4/2/19