From 4671ecbe4a5cc564b33f1436b8f6251491c240e8 Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 25 Aug 2021 23:29:50 +0200 Subject: [PATCH] crash fixes, oily boy --- .../com/hbm/blocks/fluid/SchrabidicBlock.java | 37 +++++++---------- .../com/hbm/blocks/generic/BlockCluster.java | 2 +- .../com/hbm/inventory/AssemblerRecipes.java | 3 +- .../com/hbm/inventory/MachineRecipes.java | 38 +++++++++--------- src/main/java/com/hbm/items/ModItems.java | 3 ++ .../java/com/hbm/main/CraftingManager.java | 9 +++-- .../machine/TileEntityMachineMiningDrill.java | 5 +-- src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../assets/hbm/textures/items/oil_tar.png | Bin 0 -> 286 bytes 10 files changed, 49 insertions(+), 50 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/items/oil_tar.png diff --git a/src/main/java/com/hbm/blocks/fluid/SchrabidicBlock.java b/src/main/java/com/hbm/blocks/fluid/SchrabidicBlock.java index fed25aa85..cb656986c 100644 --- a/src/main/java/com/hbm/blocks/fluid/SchrabidicBlock.java +++ b/src/main/java/com/hbm/blocks/fluid/SchrabidicBlock.java @@ -109,33 +109,26 @@ public class SchrabidicBlock extends BlockFluidClassic { public int tickRate(World p_149738_1_) { return 15; } + + @Override + @SideOnly(Side.CLIENT) + public int getRenderBlockPass() { + return 0; + } @SideOnly(Side.CLIENT) public void randomDisplayTick(World world, int x, int y, int z, Random rand) { super.randomDisplayTick(world, x, y, z, rand); - - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - if(world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ).getMaterial() == Material.air) { + double ix = x + 0.5F + rand.nextDouble() * 2 - 1D; + double iy = y + 0.5F + rand.nextDouble() * 2 - 1D; + double iz = z + 0.5F + rand.nextDouble() * 2 - 1D; - double ix = x + 0.5F + dir.offsetX + rand.nextDouble() * 3 - 1.5D; - double iy = y + 0.5F + dir.offsetY + rand.nextDouble() * 3 - 1.5D; - double iz = z + 0.5F + dir.offsetZ + rand.nextDouble() * 3 - 1.5D; - - if(dir.offsetX != 0) - ix = x + 0.5F + dir.offsetX * 0.5 + rand.nextDouble() * dir.offsetX; - if(dir.offsetY != 0) - iy = y + 0.5F + dir.offsetY * 0.5 + rand.nextDouble() * dir.offsetY; - if(dir.offsetZ != 0) - iz = z + 0.5F + dir.offsetZ * 0.5 + rand.nextDouble() * dir.offsetZ; - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "schrabfog"); - data.setDouble("posX", ix); - data.setDouble("posY", iy); - data.setDouble("posZ", iz); - MainRegistry.proxy.effectNT(data); - } - } + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "schrabfog"); + data.setDouble("posX", ix); + data.setDouble("posY", iy); + data.setDouble("posZ", iz); + MainRegistry.proxy.effectNT(data); } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockCluster.java b/src/main/java/com/hbm/blocks/generic/BlockCluster.java index a6b6250b5..018fa4180 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockCluster.java +++ b/src/main/java/com/hbm/blocks/generic/BlockCluster.java @@ -73,7 +73,7 @@ public class BlockCluster extends Block implements IDrillInteraction { @Override public ItemStack extractResource(World world, int x, int y, int z, int meta, IMiningDrill drill) { - return canBreak(world, x, y, z, meta, drill) ? new ItemStack(getDrop()) : null; + return drill.getDrillRating() <= 70 ? new ItemStack(getDrop()) : null; } @Override diff --git a/src/main/java/com/hbm/inventory/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/AssemblerRecipes.java index e926a09df..e87d041b9 100644 --- a/src/main/java/com/hbm/inventory/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/AssemblerRecipes.java @@ -274,7 +274,8 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_epress, 1), new AStack[] {new OreDictStack("plateSteel", 8), new ComparableStack(ModItems.plate_polymer, 4), new ComparableStack(ModItems.pipes_steel, 1), new ComparableStack(ModItems.bolt_tungsten, 4), new ComparableStack(ModItems.coil_copper, 2), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.circuit_copper, 1), new ComparableStack(ModItems.canister_canola, 1), },160); makeRecipe(new ComparableStack(ModBlocks.machine_chemplant, 1), new AStack[] {new OreDictStack("ingotSteel", 8), new OreDictStack("plateCopper", 6), new ComparableStack(ModItems.tank_steel, 4), new ComparableStack(ModItems.hull_big_steel, 1), new ComparableStack(ModItems.coil_tungsten, 3), new ComparableStack(ModItems.circuit_copper, 2), new ComparableStack(ModItems.circuit_red_copper, 1), new ComparableStack(ModItems.plate_polymer, 8), },200); makeRecipe(new ComparableStack(ModBlocks.machine_crystallizer, 1), new AStack[] {new ComparableStack(ModItems.hull_big_steel, 4), new ComparableStack(ModItems.pipes_steel, 1), new OreDictStack("ingotDesh", 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.blades_advanced_alloy, 2), new OreDictStack("ingotSteel", 16), new OreDictStack("plateTitanium", 16), new ComparableStack(Blocks.glass, 4), new ComparableStack(ModItems.circuit_gold, 1), },400); - makeRecipe(new ComparableStack(ModBlocks.machine_fluidtank, 1), new AStack[] {new OreDictStack("ingotSteel", 2), new OreDictStack("plateSteel", 6), new ComparableStack(ModItems.hull_big_steel, 4), },150); + makeRecipe(new ComparableStack(ModBlocks.machine_fluidtank, 1), new AStack[] {new OreDictStack("ingotSteel", 2), new OreDictStack("plateSteel", 6), new ComparableStack(ModItems.hull_big_steel, 4), new ComparableStack(ModItems.oil_tar, 4), },150); + makeRecipe(new ComparableStack(ModBlocks.machine_bat9000, 1), new AStack[] {new OreDictStack("plateSteel", 16), new ComparableStack(ModItems.ingot_tcalloy, 16), new ComparableStack(ModBlocks.steel_scaffold, 16), new ComparableStack(ModItems.oil_tar, 16), },150); makeRecipe(new ComparableStack(ModBlocks.machine_drill, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 6), new OreDictStack("ingotSteel", 4), new ComparableStack(ModItems.wire_red_copper, 4), new ComparableStack(ModItems.circuit_copper, 1), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.ingot_dura_steel, 2), new ComparableStack(ModItems.bolt_dura_steel, 2), new ComparableStack(ModItems.drill_titanium, 1), },200); makeRecipe(new ComparableStack(ModBlocks.machine_mining_laser, 1), new AStack[] {new ComparableStack(ModItems.tank_steel, 3), new OreDictStack("plateSteel", 16), new ComparableStack(ModItems.crystal_redstone, 3), new ComparableStack(Items.diamond, 3), new ComparableStack(ModItems.ingot_polymer, 4), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.ingot_dura_steel, 4), new ComparableStack(ModItems.bolt_dura_steel, 6), new ComparableStack(ModBlocks.machine_battery, 3), },400); makeRecipe(new ComparableStack(ModBlocks.machine_turbofan, 1), new AStack[] {new ComparableStack(ModItems.hull_big_steel, 1), new ComparableStack(ModItems.hull_big_titanium, 3), new ComparableStack(ModItems.hull_small_steel, 2), new ComparableStack(ModItems.turbine_tungsten, 1), new ComparableStack(ModItems.turbine_titanium, 7), new ComparableStack(ModItems.bolt_compound, 8), new OreDictStack("ingotMingrade", 12), new ComparableStack(ModItems.wire_red_copper, 24), },500); diff --git a/src/main/java/com/hbm/inventory/MachineRecipes.java b/src/main/java/com/hbm/inventory/MachineRecipes.java index afb20c5c0..18cf336ed 100644 --- a/src/main/java/com/hbm/inventory/MachineRecipes.java +++ b/src/main/java/com/hbm/inventory/MachineRecipes.java @@ -1631,19 +1631,24 @@ public class MachineRecipes { switch(ItemChemistryTemplate.EnumChemistryTemplate.getEnum(stack.getItemDamage())) { case CC_OIL: - list.add(new ItemStack(Items.coal, 10)); + list.add(new ItemStack(Items.coal, 8)); + list.add(new ItemStack(ModItems.oil_tar, 4)); break; case CC_I: - list.add(new ItemStack(Items.coal, 8)); + list.add(new ItemStack(Items.coal, 6)); + list.add(new ItemStack(ModItems.oil_tar, 4)); break; case CC_HEATING: - list.add(new ItemStack(Items.coal, 8)); + list.add(new ItemStack(Items.coal, 6)); + list.add(new ItemStack(ModItems.oil_tar, 4)); break; case CC_HEAVY: - list.add(new ItemStack(Items.coal, 10)); + list.add(new ItemStack(Items.coal, 8)); + list.add(new ItemStack(ModItems.oil_tar, 4)); break; case CC_NAPHTHA: - list.add(new ItemStack(Items.coal, 10)); + list.add(new ItemStack(Items.coal, 8)); + list.add(new ItemStack(ModItems.oil_tar, 4)); break; case ASPHALT: list.add(new ItemStack(Blocks.gravel, 2)); @@ -1826,24 +1831,19 @@ public class MachineRecipes { input[1] = new FluidStack(2000, FluidType.STEAM); break; case CC_I: - input[0] = new FluidStack(800, FluidType.SMEAR); - input[1] = new FluidStack(1800, FluidType.WATER); + input[0] = new FluidStack(1800, FluidType.WATER); break; case CC_OIL: - input[0] = new FluidStack(600, FluidType.OIL); - input[1] = new FluidStack(1400, FluidType.STEAM); + input[0] = new FluidStack(1400, FluidType.STEAM); break; case CC_HEATING: - input[0] = new FluidStack(800, FluidType.HEATINGOIL); - input[1] = new FluidStack(2000, FluidType.STEAM); + input[0] = new FluidStack(2000, FluidType.STEAM); break; case CC_HEAVY: - input[0] = new FluidStack(600, FluidType.HEAVYOIL); - input[1] = new FluidStack(1400, FluidType.WATER); + input[0] = new FluidStack(1400, FluidType.WATER); break; case CC_NAPHTHA: - input[0] = new FluidStack(1200, FluidType.NAPHTHA); - input[1] = new FluidStack(2400, FluidType.STEAM); + input[0] = new FluidStack(2400, FluidType.STEAM); break; case ASPHALT: input[0] = new FluidStack(1000, FluidType.BITUMEN); @@ -2048,12 +2048,12 @@ public class MachineRecipes { output[0] = new ItemStack(ModItems.circuit_schrabidium, 1); break; case SF_OIL: - output[0] = new ItemStack(ModItems.solid_fuel, 1); - output[1] = new ItemStack(ModItems.solid_fuel, 1); + output[0] = new ItemStack(ModItems.oil_tar, 1); + output[1] = new ItemStack(ModItems.oil_tar, 1); break; case SF_HEAVYOIL: - output[0] = new ItemStack(ModItems.solid_fuel, 1); - output[1] = new ItemStack(ModItems.solid_fuel, 1); + output[0] = new ItemStack(ModItems.oil_tar, 1); + output[1] = new ItemStack(ModItems.oil_tar, 1); break; case SF_SMEAR: output[0] = new ItemStack(ModItems.solid_fuel, 1); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 690a9341a..a19935752 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -290,6 +290,7 @@ public class ModItems { public static Item plate_armor_fau; public static Item plate_armor_dnt; + public static Item oil_tar; public static Item solid_fuel; public static Item rocket_fuel; @@ -2598,6 +2599,7 @@ public class ModItems { plate_armor_fau = new Item().setUnlocalizedName("plate_armor_fau").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_armor_fau"); plate_armor_dnt = new Item().setUnlocalizedName("plate_armor_dnt").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_armor_dnt"); + oil_tar = new Item().setUnlocalizedName("oil_tar").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":oil_tar"); solid_fuel = new Item().setUnlocalizedName("solid_fuel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":solid_fuel"); rocket_fuel = new Item().setUnlocalizedName("rocket_fuel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":rocket_fuel"); coke = new Item().setUnlocalizedName("coke").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coke"); @@ -5387,6 +5389,7 @@ public class ModItems { GameRegistry.registerItem(lithium, lithium.getUnlocalizedName()); GameRegistry.registerItem(ingot_zirconium, ingot_zirconium.getUnlocalizedName()); GameRegistry.registerItem(ingot_semtex, ingot_semtex.getUnlocalizedName()); + GameRegistry.registerItem(oil_tar, oil_tar.getUnlocalizedName()); GameRegistry.registerItem(solid_fuel, solid_fuel.getUnlocalizedName()); GameRegistry.registerItem(rocket_fuel, rocket_fuel.getUnlocalizedName()); GameRegistry.registerItem(ingot_fiberglass, ingot_fiberglass.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index df4464a8a..8ff5c9750 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -363,12 +363,12 @@ public class CraftingManager { GameRegistry.addRecipe(new ItemStack(ModBlocks.basalt_tiles, 4), new Object[] { "CC", "CC", 'C', ModBlocks.basalt_brick }); - GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_brick), 8), new Object[] { "FBF", "BFB", "FBF", 'F', Blocks.iron_bars, 'B', ModBlocks.brick_concrete }); - GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.brick_compound), 8), new Object[] { "FBF", "BFB", "FBF", 'F', ModItems.bolt_tungsten, 'B', ModBlocks.reinforced_brick }); - GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_glass), 8), new Object[] { "FBF", "BFB", "FBF", 'F', Blocks.iron_bars, 'B', Blocks.glass }); + GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_brick), 4), new Object[] { "FBF", "BFB", "FBF", 'F', Blocks.iron_bars, 'B', ModBlocks.brick_concrete }); + GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.brick_compound), 4), new Object[] { "FBF", "BTB", "FBF", 'F', ModItems.bolt_tungsten, 'B', ModBlocks.reinforced_brick, 'T', ModItems.oil_tar }); + GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_glass), 4), new Object[] { "FBF", "BFB", "FBF", 'F', Blocks.iron_bars, 'B', Blocks.glass }); GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_light), 1), new Object[] { "FFF", "FBF", "FFF", 'F', Blocks.iron_bars, 'B', Blocks.glowstone }); GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_lamp_off), 1), new Object[] { "FFF", "FBF", "FFF", 'F', Blocks.iron_bars, 'B', Blocks.redstone_lamp }); - GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_sand), 8), new Object[] { "FBF", "BFB", "FBF", 'F', Blocks.iron_bars, 'B', Blocks.sandstone }); + GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_sand), 4), new Object[] { "FBF", "BFB", "FBF", 'F', Blocks.iron_bars, 'B', Blocks.sandstone }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.lamp_tritium_green_off, 1), new Object[] { "GPG", "1T2", "GPG", 'G', "blockGlass", 'P', ModItems.powder_fire, 'T', ModItems.cell_tritium, '1', "dustSulfur", '2', "dustCopper" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.lamp_tritium_blue_off, 1), new Object[] { "GPG", "1T2", "GPG", 'G', "blockGlass", 'P', ModItems.powder_fire, 'T', ModItems.cell_tritium, '1', "dustAluminum", '2', ModItems.powder_strontium })); @@ -689,6 +689,7 @@ public class CraftingManager { GameRegistry.addRecipe(new ItemStack(ModBlocks.dfc_stabilizer, 1), new Object[] { "SDS", "TXL", "SDS", 'S', ModItems.ingot_starmetal, 'D', ModItems.plate_desh, 'T', ModItems.singularity_spark, 'X', ModItems.magnet_circular, 'L', ModItems.crystal_xen }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.barrel_plastic, 1), new Object[] { "IPI", "I I", "IPI", 'I', ModItems.plate_polymer, 'P', "plateAluminum" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.barrel_iron, 1), new Object[] { "IPI", "I I", "IPI", 'I', "plateIron", 'P', "ingotIron" })); + GameRegistry.addShapelessRecipe(new ItemStack(ModBlocks.barrel_iron, 1), new Object[] { ModBlocks.barrel_corroded, ModItems.oil_tar }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.barrel_steel, 1), new Object[] { "IPI", "I I", "IPI", 'I', "plateSteel", 'P', "ingotSteel" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.barrel_tcalloy, 1), new Object[] { "IPI", "I I", "IPI", 'I', "ingotTcAlloy", 'P', "plateTitanium" })); GameRegistry.addRecipe(new ItemStack(ModBlocks.barrel_antimatter, 1), new Object[] { "IPI", "IPI", "IPI", 'I', ModItems.plate_saturnite, 'P', ModItems.coil_advanced_torus }); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningDrill.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningDrill.java index d99eef3ee..834eb96bd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningDrill.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningDrill.java @@ -6,7 +6,6 @@ import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.IConsumer; import com.hbm.interfaces.Spaghetti; import com.hbm.inventory.UpgradeManager; -import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; @@ -106,7 +105,7 @@ public class TileEntityMachineMiningDrill extends TileEntityMachineBase implemen this.radius = 1; this.fortune = 0; - UpgradeManager.eval(slots, 10, 13); + UpgradeManager.eval(slots, 10, 12); this.radius += Math.min(UpgradeManager.getLevel(UpgradeType.EFFECT), 3); this.consumption += Math.min(UpgradeManager.getLevel(UpgradeType.EFFECT), 3) * 80; @@ -381,7 +380,7 @@ public class TileEntityMachineMiningDrill extends TileEntityMachineBase implemen ItemStack sta = in.extractResource(worldObj, x, y, z, meta, this); - if(hasSpace(sta)) { + if(sta != null && hasSpace(sta)) { this.addItemToInventory(sta); } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 637283a60..7b6668c59 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1841,6 +1841,7 @@ item.oil_detector.desc2=Detektor findet nur größere Vorkommen. item.oil_detector.bullseye=Ölvorkommen direkt untertage! item.oil_detector.detected=Ölvorkommen in der Nähe! item.oil_detector.noOil=Kein Öl gefunden. +item.oil_tar.name=Ölteer item.overfuse.name=Singularitätsschraubenzieher item.oxy_mask.name=Sauerstoffmaske item.paa_boots.name=PaA-"olle Latschen" diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index f93b59852..2ae1a5b7f 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1910,6 +1910,7 @@ item.oil_detector.desc2=Detector will only find larger deposits. item.oil_detector.bullseye=Oil deposit directly below! item.oil_detector.detected=Oil detected nearby. item.oil_detector.noOil=No oil detected. +item.oil_tar.name=Oil Tar item.overfuse.name=Singularity Screwdriver item.oxy_mask.name=Oxygen Mask item.paa_boots.name=PaA "good ol' shoes" diff --git a/src/main/resources/assets/hbm/textures/items/oil_tar.png b/src/main/resources/assets/hbm/textures/items/oil_tar.png new file mode 100644 index 0000000000000000000000000000000000000000..575891c8a0d860a94eee0e0c3907ea01133c182e GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf4JRsPx>Mb`=X4yO$l$xQFlRw!!c;Bx6-vFT`*P8!>VlGR&9G&k-4|G$i> zUiPZ*+M4FwT2myH88lUk&P|Wlx!L^uXMK++FJDwJRLoh~-C^o~nWbUXqdCcuVhly+ zSXbQRJX3YOblRHNvr1zb3(gtxH1~d~$gk6C7l=E?(DOuMxwXXci!v4OKi->v(2g_6 ztBhZ9M%DfA3?{yxA3pL3cseK7)BRHI{oI+iw;lZZf8h}c@7vp4UAk6@h3YDO`c$*5 i%C%_X{?LERKQiAw5-VUjD=-b{K?YA(KbLh*2~7ai;C2}R literal 0 HcmV?d00001