aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kubatech
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/kubatech')
-rw-r--r--src/main/java/kubatech/CommonProxy.java1
-rw-r--r--src/main/java/kubatech/loaders/DEFCRecipes.java57
-rw-r--r--src/main/java/kubatech/loaders/RecipeLoader.java150
3 files changed, 92 insertions, 116 deletions
diff --git a/src/main/java/kubatech/CommonProxy.java b/src/main/java/kubatech/CommonProxy.java
index 7a75789271..ad66ad30af 100644
--- a/src/main/java/kubatech/CommonProxy.java
+++ b/src/main/java/kubatech/CommonProxy.java
@@ -70,6 +70,7 @@ public class CommonProxy {
}
public void postInit(FMLPostInitializationEvent event) {
+ RecipeLoader.registerMTEs();
RecipeLoader.addRecipes();
EIGBucketLoader.LoadEIGBuckets();
if (Thaumcraft.isModLoaded()) TCLoader.init();
diff --git a/src/main/java/kubatech/loaders/DEFCRecipes.java b/src/main/java/kubatech/loaders/DEFCRecipes.java
index f3b8774758..bbdddd2f97 100644
--- a/src/main/java/kubatech/loaders/DEFCRecipes.java
+++ b/src/main/java/kubatech/loaders/DEFCRecipes.java
@@ -1,6 +1,11 @@
package kubatech.loaders;
+import static gregtech.api.enums.Mods.AdvancedSolarPanel;
+import static gregtech.api.enums.Mods.DraconicEvolution;
import static gregtech.api.enums.Mods.ElectroMagicTools;
+import static gregtech.api.enums.Mods.NewHorizonsCoreMod;
+import static gregtech.api.enums.Mods.SuperSolarPanels;
+import static gregtech.api.enums.Mods.Witchery;
import static gregtech.api.recipe.RecipeMaps.assemblerRecipes;
import static gregtech.api.recipe.RecipeMaps.mixerRecipes;
import static gregtech.api.util.GT_RecipeConstants.DEFC_CASING_TIER;
@@ -73,7 +78,7 @@ public class DEFCRecipes {
.addTo(assemblerRecipes);
GT_Values.RA.stdBuilder()
.itemInputs(
- GT_ModHandler.getModItem("dreamcraft", "tile.BloodyIchorium", 1, 0),
+ GT_ModHandler.getModItem(NewHorizonsCoreMod.ID, "tile.BloodyIchorium", 1, 0),
GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.Osmiridium, 6L))
.fluidInputs(Materials.Void.getMolten(1152L))
.itemOutputs(kubatech.api.enums.ItemList.DEFCCasingT1.get(1))
@@ -84,7 +89,7 @@ public class DEFCRecipes {
.itemInputs(
kubatech.api.enums.ItemList.DEFCCasingT1.get(1),
GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.Draconium, 6L),
- GT_ModHandler.getModItem("DraconicEvolution", "draconicCore", 1, 0))
+ GT_ModHandler.getModItem(DraconicEvolution.ID, "draconicCore", 1, 0))
.fluidInputs(Materials.Void.getMolten(2304L))
.itemOutputs(kubatech.api.enums.ItemList.DEFCCasingT2.get(1))
.eut(491_520)
@@ -94,7 +99,7 @@ public class DEFCRecipes {
.itemInputs(
kubatech.api.enums.ItemList.DEFCCasingT2.get(1),
GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.CosmicNeutronium, 6L),
- GT_ModHandler.getModItem("DraconicEvolution", "wyvernCore", 2, 0))
+ GT_ModHandler.getModItem(DraconicEvolution.ID, "wyvernCore", 2, 0))
.fluidInputs(Materials.Void.getMolten(4608L))
.itemOutputs(kubatech.api.enums.ItemList.DEFCCasingT3.get(1))
.eut(1_996_080)
@@ -104,7 +109,7 @@ public class DEFCRecipes {
.itemInputs(
kubatech.api.enums.ItemList.DEFCCasingT3.get(1),
GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.DraconiumAwakened, 6L),
- GT_ModHandler.getModItem("DraconicEvolution", "awakenedCore", 3, 0))
+ GT_ModHandler.getModItem(DraconicEvolution.ID, "awakenedCore", 3, 0))
.fluidInputs(Materials.Void.getMolten(9216L))
.itemOutputs(kubatech.api.enums.ItemList.DEFCCasingT4.get(1))
.eut(7_864_320)
@@ -114,7 +119,7 @@ public class DEFCRecipes {
.itemInputs(
kubatech.api.enums.ItemList.DEFCCasingT4.get(1),
GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.Infinity, 6L),
- GT_ModHandler.getModItem("DraconicEvolution", "chaoticCore", 4, 0))
+ GT_ModHandler.getModItem(DraconicEvolution.ID, "chaoticCore", 4, 0))
.fluidInputs(Materials.Void.getMolten(18432L))
.itemOutputs(kubatech.api.enums.ItemList.DEFCCasingT5.get(1))
.eut(31_457_280)
@@ -170,7 +175,7 @@ public class DEFCRecipes {
ItemList.QuantumEye.get(1L),
kubatech.api.enums.ItemList.DEFCDraconicSchematic.get(0L))
.fluidInputs(Materials.Sunnarium.getMolten(1440))
- .itemOutputs(GT_ModHandler.getModItem("DraconicEvolution", "draconicCore", 1, 0))
+ .itemOutputs(GT_ModHandler.getModItem(DraconicEvolution.ID, "draconicCore", 1, 0))
.eut(500_000)
.duration(400)
.metadata(DEFC_CASING_TIER, 1)
@@ -181,11 +186,11 @@ public class DEFCRecipes {
.itemInputs(
GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Draconium, 8),
GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Neutronium, 4),
- GT_ModHandler.getModItem("DraconicEvolution", "draconicCore", 4, 0),
+ GT_ModHandler.getModItem(DraconicEvolution.ID, "draconicCore", 4, 0),
ItemList.QuantumStar.get(1L),
kubatech.api.enums.ItemList.DEFCWyvernSchematic.get(0L))
.fluidInputs(Materials.Neutronium.getMolten(1440))
- .itemOutputs(GT_ModHandler.getModItem("DraconicEvolution", "wyvernCore", 1, 0))
+ .itemOutputs(GT_ModHandler.getModItem(DraconicEvolution.ID, "wyvernCore", 1, 0))
.eut(2_000_000)
.duration(800)
.metadata(DEFC_CASING_TIER, 2)
@@ -197,11 +202,11 @@ public class DEFCRecipes {
.itemInputs(
GT_OreDictUnificator.get(OrePrefixes.plate, Materials.DraconiumAwakened, 12),
GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Draconium, 4),
- GT_ModHandler.getModItem("DraconicEvolution", "wyvernCore", 4, 0),
- GT_ModHandler.getModItem("supersolarpanel", "enderquantumcomponent", 1, 0),
+ GT_ModHandler.getModItem(DraconicEvolution.ID, "wyvernCore", 4, 0),
+ GT_ModHandler.getModItem(SuperSolarPanels.ID, "enderquantumcomponent", 1, 0),
kubatech.api.enums.ItemList.DEFCAwakenedSchematic.get(0L))
.fluidInputs(Materials.Infinity.getMolten(1440))
- .itemOutputs(GT_ModHandler.getModItem("DraconicEvolution", "awakenedCore", 1, 0))
+ .itemOutputs(GT_ModHandler.getModItem(DraconicEvolution.ID, "awakenedCore", 1, 0))
.eut(8_000_000)
.duration(1600)
.metadata(DEFC_CASING_TIER, 3)
@@ -212,11 +217,11 @@ public class DEFCRecipes {
.itemInputs(
GT_OreDictUnificator.get(OrePrefixes.plate, Materials.DraconiumAwakened, 12),
GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Draconium, 4),
- GT_ModHandler.getModItem("DraconicEvolution", "wyvernCore", 4, 0),
- GT_ModHandler.getModItem("dreamcraft", "item.ManyullynCrystal", 1, 0),
+ GT_ModHandler.getModItem(DraconicEvolution.ID, "wyvernCore", 4, 0),
+ GT_ModHandler.getModItem(NewHorizonsCoreMod.ID, "item.ManyullynCrystal", 1, 0),
kubatech.api.enums.ItemList.DEFCAwakenedSchematic.get(0L))
.fluidInputs(Materials.Infinity.getMolten(1440))
- .itemOutputs(GT_ModHandler.getModItem("DraconicEvolution", "awakenedCore", 1, 0))
+ .itemOutputs(GT_ModHandler.getModItem(DraconicEvolution.ID, "awakenedCore", 1, 0))
.eut(8_000_000)
.duration(1600)
.metadata(DEFC_CASING_TIER, 3)
@@ -228,11 +233,11 @@ public class DEFCRecipes {
.itemInputs(
GT_OreDictUnificator.get(OrePrefixes.plate, Materials.DraconiumAwakened, 16),
GT_OreDictUnificator.get(OrePrefixes.plate, Materials.BlackPlutonium, 4),
- GT_ModHandler.getModItem("DraconicEvolution", "awakenedCore", 4, 0),
- GT_ModHandler.getModItem("DraconicEvolution", "chaosFragment", 2, 2),
+ GT_ModHandler.getModItem(DraconicEvolution.ID, "awakenedCore", 4, 0),
+ GT_ModHandler.getModItem(DraconicEvolution.ID, "chaosFragment", 2, 2),
kubatech.api.enums.ItemList.DEFCChaoticSchematic.get(0L))
.fluidInputs(MaterialsUEVplus.SpaceTime.getMolten(1440))
- .itemOutputs(GT_ModHandler.getModItem("DraconicEvolution", "chaoticCore", 1, 0))
+ .itemOutputs(GT_ModHandler.getModItem(DraconicEvolution.ID, "chaoticCore", 1, 0))
.eut(24_000_000)
.duration(3200)
.metadata(DEFC_CASING_TIER, 4)
@@ -245,10 +250,10 @@ public class DEFCRecipes {
.itemInputs(
GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Draconium, 8),
GT_OreDictUnificator.get(OrePrefixes.plate, Materials.StellarAlloy, 4),
- GT_ModHandler.getModItem("AdvancedSolarPanel", "asp_crafting_items", 4, 1),
- GT_ModHandler.getModItem("DraconicEvolution", "draconicCore", 1, 0),
+ GT_ModHandler.getModItem(AdvancedSolarPanel.ID, "asp_crafting_items", 4, 1),
+ GT_ModHandler.getModItem(DraconicEvolution.ID, "draconicCore", 1, 0),
kubatech.api.enums.ItemList.DEFCWyvernSchematic.get(0L))
- .itemOutputs(GT_ModHandler.getModItem("DraconicEvolution", "draconiumEnergyCore", 1, 0))
+ .itemOutputs(GT_ModHandler.getModItem(DraconicEvolution.ID, "draconiumEnergyCore", 1, 0))
.eut(500_000)
.duration(1000)
.metadata(DEFC_CASING_TIER, 2)
@@ -258,11 +263,11 @@ public class DEFCRecipes {
GT_Values.RA.stdBuilder()
.itemInputs(
GT_OreDictUnificator.get(OrePrefixes.plate, Materials.DraconiumAwakened, 8),
- GT_ModHandler.getModItem("DraconicEvolution", "draconiumEnergyCore", 4, 0),
- GT_ModHandler.getModItem("AdvancedSolarPanel", "asp_crafting_items", 4, 4),
- GT_ModHandler.getModItem("DraconicEvolution", "wyvernCore", 1, 0),
+ GT_ModHandler.getModItem(DraconicEvolution.ID, "draconiumEnergyCore", 4, 0),
+ GT_ModHandler.getModItem(AdvancedSolarPanel.ID, "asp_crafting_items", 4, 4),
+ GT_ModHandler.getModItem(DraconicEvolution.ID, "wyvernCore", 1, 0),
kubatech.api.enums.ItemList.DEFCAwakenedSchematic.get(0L))
- .itemOutputs(GT_ModHandler.getModItem("DraconicEvolution", "draconiumEnergyCore", 1, 1))
+ .itemOutputs(GT_ModHandler.getModItem(DraconicEvolution.ID, "draconiumEnergyCore", 1, 1))
.eut(2_000_000)
.duration(2000)
.metadata(DEFC_CASING_TIER, 3)
@@ -285,7 +290,7 @@ public class DEFCRecipes {
GT_Values.RA.stdBuilder()
.itemInputs(
- GT_ModHandler.getModItem("witchery", "infinityegg", 0),
+ GT_ModHandler.getModItem(Witchery.ID, "infinityegg", 0),
GT_OreDictUnificator.get(OrePrefixes.dust, Materials.DraconiumAwakened, 64),
GT_Utility.getIntegratedCircuit(1))
.fluidInputs(Materials.Radon.getPlasma(72))
@@ -311,7 +316,7 @@ public class DEFCRecipes {
GT_Values.RA.stdBuilder()
.itemInputs(
- GT_ModHandler.getModItem("witchery", "infinityegg", 0),
+ GT_ModHandler.getModItem(Witchery.ID, "infinityegg", 0),
GT_OreDictUnificator.get(OrePrefixes.dust, Materials.DraconiumAwakened, 64),
GTPP_CombType.DRAGONBLOOD.getStackForType(1))
.fluidInputs(Materials.Radon.getPlasma(108))
diff --git a/src/main/java/kubatech/loaders/RecipeLoader.java b/src/main/java/kubatech/loaders/RecipeLoader.java
index 5df6f8aa4f..62f3219c07 100644
--- a/src/main/java/kubatech/loaders/RecipeLoader.java
+++ b/src/main/java/kubatech/loaders/RecipeLoader.java
@@ -20,12 +20,17 @@
package kubatech.loaders;
+import static gregtech.api.enums.ItemList.FluidExtractorUHV;
+import static gregtech.api.enums.MetaTileEntityIDs.DraconicEvolutionFusionCrafterController;
+import static gregtech.api.enums.MetaTileEntityIDs.ExtremeEntityCrusherController;
+import static gregtech.api.enums.MetaTileEntityIDs.ExtremeIndustrialApiaryController;
+import static gregtech.api.enums.MetaTileEntityIDs.ExtremeIndustrialGreenhouseController;
import static gregtech.api.enums.Mods.Avaritia;
import static gregtech.api.enums.Mods.DraconicEvolution;
import static gregtech.api.enums.Mods.EnderIO;
import static gregtech.api.enums.Mods.Forestry;
-import static gregtech.api.enums.Mods.GregTech;
import static gregtech.api.enums.Mods.NewHorizonsCoreMod;
+import static gregtech.api.enums.Mods.OpenBlocks;
import static gregtech.api.enums.Mods.PamsHarvestCraft;
import static gregtech.api.recipe.RecipeMaps.benderRecipes;
import static gregtech.api.recipe.RecipeMaps.cutterRecipes;
@@ -69,8 +74,6 @@ import static kubatech.api.enums.ItemList.WhiteTeaLeaf;
import static kubatech.api.enums.ItemList.YellowTea;
import static kubatech.api.enums.ItemList.YellowTeaLeaf;
-import java.lang.reflect.InvocationTargetException;
-
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
@@ -81,7 +84,6 @@ import forestry.plugins.PluginCore;
import gregtech.api.enums.GT_Values;
import gregtech.api.enums.Materials;
import gregtech.api.enums.OrePrefixes;
-import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_Utility;
import ic2.core.Ic2Items;
@@ -97,29 +99,50 @@ public class RecipeLoader {
| GT_ModHandler.RecipeBits.BUFFERED
| GT_ModHandler.RecipeBits.DISMANTLEABLE;
- private static int MTEID = 14201;
- private static final int MTEIDMax = 14300;
+ public static void registerMTEs() {
+ if (EnderIO.isModLoaded()) {
+ ExtremeEntityCrusher.set(
+ new GT_MetaTileEntity_ExtremeEntityCrusher(
+ ExtremeEntityCrusherController.ID,
+ "multimachine.entitycrusher",
+ "Extreme Entity Crusher").getStackForm(1));
+ }
+
+ if (Forestry.isModLoaded()) {
+ ExtremeIndustrialApiary.set(
+ new GT_MetaTileEntity_MegaIndustrialApiary(
+ ExtremeIndustrialApiaryController.ID,
+ "multimachine.extremeapiary",
+ "Industrial Apicultural Acclimatiser and Drone Domestication Station").getStackForm(1));
+ }
+
+ ExtremeIndustrialGreenhouse.set(
+ new GT_MetaTileEntity_ExtremeIndustrialGreenhouse(
+ ExtremeIndustrialGreenhouseController.ID,
+ "multimachine.extremegreenhouse",
+ "Extreme Industrial Greenhouse").getStackForm(1));
+
+ if (DraconicEvolution.isModLoaded()) {
+ DraconicEvolutionFusionCrafter.set(
+ new GT_MetaTileEntity_DEFusionCrafter(
+ DraconicEvolutionFusionCrafterController.ID,
+ "multimachine.defusioncrafter",
+ "Draconic Evolution Fusion Crafter").getStackForm(1));
+ }
+ }
public static void addRecipes() {
- if (registerMTE(
- ExtremeEntityCrusher,
- GT_MetaTileEntity_ExtremeEntityCrusher.class,
- "multimachine.entitycrusher",
- "Extreme Entity Crusher",
- EnderIO.isModLoaded())) {
+
+ if (EnderIO.isModLoaded()) {
GT_ModHandler.addCraftingRecipe(
ItemList.ExtremeEntityCrusher.get(1),
bitsd,
new Object[] { "RCR", "CHC", "VVV", 'R', gregtech.api.enums.ItemList.Robot_Arm_EV, 'C',
OrePrefixes.circuit.get(Materials.EV), 'H', gregtech.api.enums.ItemList.Hull_EV, 'V',
- GT_ModHandler.getModItem("OpenBlocks", "vacuumhopper", 1, new ItemStack(Blocks.hopper)) });
+ GT_ModHandler.getModItem(OpenBlocks.ID, "vacuumhopper", 1, new ItemStack(Blocks.hopper)) });
}
- if (registerMTE(
- ExtremeIndustrialApiary,
- GT_MetaTileEntity_MegaIndustrialApiary.class,
- "multimachine.extremeapiary",
- "Industrial Apicultural Acclimatiser and Drone Domestication Station",
- Forestry.isModLoaded())) {
+
+ if (Forestry.isModLoaded()) {
GT_Values.RA.stdBuilder()
.metadata(RESEARCH_ITEM, gregtech.api.enums.ItemList.Machine_IndustrialApiary.get(1))
.metadata(RESEARCH_TIME, 8 * MINUTES + 20 * SECONDS)
@@ -139,81 +162,28 @@ public class RecipeLoader {
.eut(2_048_000)
.duration(5 * MINUTES)
.addTo(AssemblyLine);
+
+ GT_MetaTileEntity_ExtremeIndustrialGreenhouse
+ .addFertilizerItem(PluginCore.items.fertilizerCompound.getItemStack(1));
}
- if (registerMTEUsingID(
- 12_792,
- ExtremeIndustrialGreenhouse,
- GT_MetaTileEntity_ExtremeIndustrialGreenhouse.class,
- "multimachine.extremegreenhouse",
- "Extreme Industrial Greenhouse",
- true /* IC2 is always loaded */)) {
- GT_ModHandler.addCraftingRecipe(
- ExtremeIndustrialGreenhouse.get(1),
- bitsd,
- new Object[] { "AZA", "BRB", "AZA", 'B', gregtech.api.enums.ItemList.Casing_CleanStainlessSteel, 'R',
- GT_ModHandler.getModItem("EnderIO", "blockFarmStation", 1, new ItemStack(Items.diamond_hoe)), 'A',
- NewHorizonsCoreMod.isModLoaded()
- ? GT_ModHandler.getModItem(GregTech.ID, "gt.blockmachines", 1, 11104) // IV World Accelerator
- : gregtech.api.enums.ItemList.Robot_Arm_IV,
- 'Z', OrePrefixes.circuit.get(Materials.ZPM) });
-
- // Vanilla should always be loaded
- GT_MetaTileEntity_ExtremeIndustrialGreenhouse.addFertilizerItem(new ItemStack(Items.dye, 1, 15));
- // IC2 should always be loaded
- GT_MetaTileEntity_ExtremeIndustrialGreenhouse.addFertilizerItem(Ic2Items.fertilizer);
- if (Forestry.isModLoaded()) {
- GT_MetaTileEntity_ExtremeIndustrialGreenhouse
- .addFertilizerItem(PluginCore.items.fertilizerCompound.getItemStack(1));
- }
- }
- if (registerMTEUsingID(
- 5_001,
- DraconicEvolutionFusionCrafter,
- GT_MetaTileEntity_DEFusionCrafter.class,
- "multimachine.defusioncrafter",
- "Draconic Evolution Fusion Crafter",
- DraconicEvolution.isModLoaded())) {
+
+ GT_ModHandler.addCraftingRecipe(
+ ExtremeIndustrialGreenhouse.get(1),
+ bitsd,
+ new Object[] { "AZA", "BRB", "AZA", 'B', gregtech.api.enums.ItemList.Casing_CleanStainlessSteel, 'R',
+ GT_ModHandler.getModItem(EnderIO.ID, "blockFarmStation", 1, new ItemStack(Items.diamond_hoe)), 'A',
+ gregtech.api.enums.ItemList.AcceleratorIV.get(1), 'Z', OrePrefixes.circuit.get(Materials.ZPM) });
+
+ // Vanilla should always be loaded
+ GT_MetaTileEntity_ExtremeIndustrialGreenhouse.addFertilizerItem(new ItemStack(Items.dye, 1, 15));
+ // IC2 should always be loaded
+ GT_MetaTileEntity_ExtremeIndustrialGreenhouse.addFertilizerItem(Ic2Items.fertilizer);
+
+ if (DraconicEvolution.isModLoaded()) {
// Controller recipe added in TecTech
DEFCRecipes.addRecipes();
}
RegisterTeaLine();
- if (MTEID > MTEIDMax + 1) throw new RuntimeException("MTE ID's");
- }
-
- private static boolean registerMTE(ItemList item, Class<? extends MetaTileEntity> mte, String aName,
- String aNameRegional, boolean... deps) {
- if (MTEID > MTEIDMax) throw new RuntimeException("MTE ID's");
- boolean dep = registerMTEUsingID(MTEID, item, mte, aName, aNameRegional, deps);
- MTEID++;
- return dep;
- }
-
- private static boolean registerMTEUsingID(int ID, ItemList item, Class<? extends MetaTileEntity> mte, String aName,
- String aNameRegional, boolean... deps) {
- boolean dep = true;
- for (boolean b : deps) {
- if (!b) {
- dep = false;
- break;
- }
- }
- if (dep) {
- try {
- item.set(
- mte.getConstructor(int.class, String.class, String.class)
- .newInstance(ID, aName, aNameRegional)
- .getStackForm(1));
- } catch (InvocationTargetException ex) {
- Throwable original_ex = ex.getCause();
- if (original_ex instanceof RuntimeException) throw (RuntimeException) original_ex;
- throw new RuntimeException(original_ex.getMessage());
- } catch (RuntimeException ex) {
- throw ex;
- } catch (Exception ex) {
- throw new RuntimeException(ex.getMessage());
- }
- }
- return dep;
}
private static boolean lateRecipesInitialized = false;
@@ -369,7 +339,7 @@ public class RecipeLoader {
LegendaryUltimateTea.get(0),
GameRegistry.findItemStack("Avaritia", "Neutronium_Compressor", 1),
gregtech.api.enums.ItemList.Quantum_Tank_EV.get(1),
- GT_ModHandler.getModItem(GregTech.ID, "gt.blockmachines", 10, 11193), // UHV Fluid extractor
+ FluidExtractorUHV.get(10),
new Object[] { OrePrefixes.circuit.get(Materials.UV), 4L },
new Object[] { OrePrefixes.circuit.get(Materials.UV), 4L },
new Object[] { OrePrefixes.circuit.get(Materials.UV), 4L },