From 955c1fa7cb9756e6e9570b9737edd99217de2340 Mon Sep 17 00:00:00 2001 From: Donovan Daniels Date: Fri, 1 Apr 2022 18:34:30 -0500 Subject: [PATCH] Infinite Fuel & Steak and #18 --- scripts/other-notes | 1 - .../block/single/transmutation_interface.json | 6 + .../single/transmutation_interface.json | 7 + .../generators/item/single/arcane_table.json | 2 +- .../generators/item/single/infinite_fuel.json | 6 + .../item/single/infinite_steak.json | 6 + .../item/single/transmutation_interface.json | 3 + .../generators/lang/en_US/block/misc.json | 4 +- .../generators/lang/en_US/item/misc.json | 14 +- .../single/transmutation_interface.json | 19 ++ .../recipes/single/infinite_fuel.json | 19 ++ .../recipes/single/infinite_steak.json | 19 ++ .../single/transmutation_interface.json | 22 ++ .../furry/mc/forge/projectexpansion/Main.java | 16 ++ .../block/BlockTransmutationInterface.java | 66 +++++ .../forge/projectexpansion/init/Blocks.java | 9 +- .../mc/forge/projectexpansion/init/Items.java | 19 +- .../init/TileEntityTypes.java | 4 +- .../item/ItemInfiniteFuel.java | 70 ++++++ .../item/ItemInfiniteSteak.java | 86 +++++++ .../projectexpansion/tile/TileEMCExport.java | 15 +- .../projectexpansion/tile/TileEMCImport.java | 15 +- .../tile/TileTransmutationInterface.java | 180 +++++++++++++ .../mc/forge/projectexpansion/util/Util.java | 13 +- .../blockstates/transmutation_interface.json | 7 + .../assets/projectexpansion/lang/en_us.json | 238 +++++++++--------- .../models/block/transmutation_interface.json | 6 + .../models/item/arcane_table.json | 2 +- .../models/item/infinite_fuel.json | 6 + .../models/item/infinite_steak.json | 6 + .../models/item/transmutation_interface.json | 3 + .../projectexpansion/textures/block/hue | 3 - .../block/transmutation_interface.png | Bin 0 -> 2556 bytes .../textures/item/infinite_fuel.png | Bin 0 -> 242 bytes .../textures/item/infinite_steak.png | Bin 0 -> 268 bytes .../blocks/transmutation_interface.json | 19 ++ .../recipes/infinite_fuel.json | 19 ++ .../recipes/infinite_steak.json | 19 ++ .../recipes/transmutation_interface.json | 22 ++ 39 files changed, 805 insertions(+), 166 deletions(-) delete mode 100644 scripts/other-notes create mode 100644 src/main/generation/generators/block/single/transmutation_interface.json create mode 100644 src/main/generation/generators/blockstate/single/transmutation_interface.json create mode 100644 src/main/generation/generators/item/single/infinite_fuel.json create mode 100644 src/main/generation/generators/item/single/infinite_steak.json create mode 100644 src/main/generation/generators/item/single/transmutation_interface.json create mode 100644 src/main/generation/generators/loot_tables/single/transmutation_interface.json create mode 100644 src/main/generation/generators/recipes/single/infinite_fuel.json create mode 100644 src/main/generation/generators/recipes/single/infinite_steak.json create mode 100644 src/main/generation/generators/recipes/single/transmutation_interface.json create mode 100644 src/main/java/cool/furry/mc/forge/projectexpansion/block/BlockTransmutationInterface.java create mode 100644 src/main/java/cool/furry/mc/forge/projectexpansion/item/ItemInfiniteFuel.java create mode 100644 src/main/java/cool/furry/mc/forge/projectexpansion/item/ItemInfiniteSteak.java create mode 100644 src/main/java/cool/furry/mc/forge/projectexpansion/tile/TileTransmutationInterface.java create mode 100644 src/main/resources/assets/projectexpansion/blockstates/transmutation_interface.json create mode 100644 src/main/resources/assets/projectexpansion/models/block/transmutation_interface.json create mode 100644 src/main/resources/assets/projectexpansion/models/item/infinite_fuel.json create mode 100644 src/main/resources/assets/projectexpansion/models/item/infinite_steak.json create mode 100644 src/main/resources/assets/projectexpansion/models/item/transmutation_interface.json delete mode 100644 src/main/resources/assets/projectexpansion/textures/block/hue create mode 100644 src/main/resources/assets/projectexpansion/textures/block/transmutation_interface.png create mode 100644 src/main/resources/assets/projectexpansion/textures/item/infinite_fuel.png create mode 100644 src/main/resources/assets/projectexpansion/textures/item/infinite_steak.png create mode 100644 src/main/resources/data/projectexpansion/loot_tables/blocks/transmutation_interface.json create mode 100644 src/main/resources/data/projectexpansion/recipes/infinite_fuel.json create mode 100644 src/main/resources/data/projectexpansion/recipes/infinite_steak.json create mode 100644 src/main/resources/data/projectexpansion/recipes/transmutation_interface.json diff --git a/scripts/other-notes b/scripts/other-notes deleted file mode 100644 index ace2d1ac..00000000 --- a/scripts/other-notes +++ /dev/null @@ -1 +0,0 @@ -otherlog diff --git a/src/main/generation/generators/block/single/transmutation_interface.json b/src/main/generation/generators/block/single/transmutation_interface.json new file mode 100644 index 00000000..f746c68e --- /dev/null +++ b/src/main/generation/generators/block/single/transmutation_interface.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "projectexpansion:block/transmutation_interface" + } +} \ No newline at end of file diff --git a/src/main/generation/generators/blockstate/single/transmutation_interface.json b/src/main/generation/generators/blockstate/single/transmutation_interface.json new file mode 100644 index 00000000..aa9354fb --- /dev/null +++ b/src/main/generation/generators/blockstate/single/transmutation_interface.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "projectexpansion:block/transmutation_interface" + } + } +} \ No newline at end of file diff --git a/src/main/generation/generators/item/single/arcane_table.json b/src/main/generation/generators/item/single/arcane_table.json index 1e313171..641bb1e0 100644 --- a/src/main/generation/generators/item/single/arcane_table.json +++ b/src/main/generation/generators/item/single/arcane_table.json @@ -4,7 +4,7 @@ "0": "projectexpansion:block/arcane_table/top", "1": "projectexpansion:block/arcane_table/bottom", "2": "projectexpansion:block/arcane_table/side", - "particle": "projectexpansion:block/arcane/top" + "particle": "projectexpansion:block/arcane_table/top" }, "elements": [ { diff --git a/src/main/generation/generators/item/single/infinite_fuel.json b/src/main/generation/generators/item/single/infinite_fuel.json new file mode 100644 index 00000000..b8a52172 --- /dev/null +++ b/src/main/generation/generators/item/single/infinite_fuel.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "projectexpansion:item/infinite_fuel" + } +} \ No newline at end of file diff --git a/src/main/generation/generators/item/single/infinite_steak.json b/src/main/generation/generators/item/single/infinite_steak.json new file mode 100644 index 00000000..37b232c5 --- /dev/null +++ b/src/main/generation/generators/item/single/infinite_steak.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "projectexpansion:item/infinite_steak" + } +} \ No newline at end of file diff --git a/src/main/generation/generators/item/single/transmutation_interface.json b/src/main/generation/generators/item/single/transmutation_interface.json new file mode 100644 index 00000000..f927428b --- /dev/null +++ b/src/main/generation/generators/item/single/transmutation_interface.json @@ -0,0 +1,3 @@ +{ + "parent": "projectexpansion:block/transmutation_interface" +} \ No newline at end of file diff --git a/src/main/generation/generators/lang/en_US/block/misc.json b/src/main/generation/generators/lang/en_US/block/misc.json index 5be8609b..09b5f478 100644 --- a/src/main/generation/generators/lang/en_US/block/misc.json +++ b/src/main/generation/generators/lang/en_US/block/misc.json @@ -7,5 +7,7 @@ "block.projectexpansion.emc_export.not_owner": "You are not the owner of this, %s is.", "block.projectexpansion.emc_import": "EMC Import", "block.projectexpansion.emc_import.tooltip": "Import items directly into your emc.", - "block.projectexpansion.emc_import.not_owner": "You are not the owner of this, %s is." + "block.projectexpansion.emc_import.not_owner": "You are not the owner of this, %s is.", + "block.projectexpansion.transmutation_interface": "Transmutation Interface", + "block.projectexpansion.transmutation_interface.tooltip": "This can be used with compatible mods like Refined Storage to access your transmutation inventory." } diff --git a/src/main/generation/generators/lang/en_US/item/misc.json b/src/main/generation/generators/lang/en_US/item/misc.json index 325cea96..a0d2a407 100644 --- a/src/main/generation/generators/lang/en_US/item/misc.json +++ b/src/main/generation/generators/lang/en_US/item/misc.json @@ -1,6 +1,12 @@ { - "item.projectexpansion.arcane_tablet": "Arcane Tablet", - "item.projectexpansion.final_star_shard": "Final Star Shard", - "item.projectexpansion.final_star": "Final Star", - "item.projectexpansion.final_star.tooltip": "This does nothing, it exists to show off." + "item.projectexpansion.arcane_tablet": "Arcane Tablet", + "item.projectexpansion.final_star_shard": "Final Star Shard", + "item.projectexpansion.final_star": "Final Star", + "item.projectexpansion.final_star.tooltip": "This does nothing, it exists to show off.", + "item.projectexpansion.infinite_fuel": "Infinite Fuel", + "item.projectexpansion.infinite_fuel.tooltip": "This item will not be consumed, fuel will be provided via your emc.", + "item.projectexpansion.infinite_fuel.not_enough_emc": "You do not have enough emc to use this, you need %s.", + "item.projectexpansion.infinite_steak": "Infinite Steak", + "item.projectexpansion.infinite_steak.tooltip": "Infinite food via your emc.", + "item.projectexpansion.infinite_steak.not_enough_emc": "You do not have enough emc to use this, you need %s." } diff --git a/src/main/generation/generators/loot_tables/single/transmutation_interface.json b/src/main/generation/generators/loot_tables/single/transmutation_interface.json new file mode 100644 index 00000000..1ad00bc5 --- /dev/null +++ b/src/main/generation/generators/loot_tables/single/transmutation_interface.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "projectexpansion:transmutation_interface" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/generation/generators/recipes/single/infinite_fuel.json b/src/main/generation/generators/recipes/single/infinite_fuel.json new file mode 100644 index 00000000..67b55579 --- /dev/null +++ b/src/main/generation/generators/recipes/single/infinite_fuel.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "CCC", + "CTC", + "CCC" + ], + "key": { + "C": { + "item": "minecraft:coal" + }, + "T": { + "item": "projecte:transmutation_tablet" + } + }, + "result": { + "item": "projectexpansion:infinite_fuel" + } +} \ No newline at end of file diff --git a/src/main/generation/generators/recipes/single/infinite_steak.json b/src/main/generation/generators/recipes/single/infinite_steak.json new file mode 100644 index 00000000..a77a5f5d --- /dev/null +++ b/src/main/generation/generators/recipes/single/infinite_steak.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "SSS", + "STS", + "SSS" + ], + "key": { + "S": { + "item": "minecraft:cooked_beef" + }, + "T": { + "item": "projecte:transmutation_tablet" + } + }, + "result": { + "item": "projectexpansion:infinite_steak" + } +} \ No newline at end of file diff --git a/src/main/generation/generators/recipes/single/transmutation_interface.json b/src/main/generation/generators/recipes/single/transmutation_interface.json new file mode 100644 index 00000000..6a2d5a66 --- /dev/null +++ b/src/main/generation/generators/recipes/single/transmutation_interface.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "EIE", + "ILI", + "EIE" + ], + "key": { + "L": { + "item": "projectexpansion:emc_link" + }, + "I": { + "item": "projectexpansion:emc_import" + }, + "E": { + "item": "projectexpansion:emc_export" + } + }, + "result": { + "item": "projectexpansion:transmutation_interface" + } +} \ No newline at end of file diff --git a/src/main/java/cool/furry/mc/forge/projectexpansion/Main.java b/src/main/java/cool/furry/mc/forge/projectexpansion/Main.java index 4941c5f2..5678ebda 100644 --- a/src/main/java/cool/furry/mc/forge/projectexpansion/Main.java +++ b/src/main/java/cool/furry/mc/forge/projectexpansion/Main.java @@ -8,15 +8,19 @@ import cool.furry.mc.forge.projectexpansion.util.Fuel; import cool.furry.mc.forge.projectexpansion.util.Matter; import cool.furry.mc.forge.projectexpansion.util.Star; +import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.TickEvent; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.config.ModConfig; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import net.minecraftforge.fml.server.ServerLifecycleHooks; import org.apache.logging.log4j.LogManager; import javax.annotation.Nonnull; @@ -43,6 +47,7 @@ public ItemStack createIcon() { Items.Registry.register(bus); TileEntityTypes.Registry.register(bus); ContainerTypes.Registry.register(bus); + MinecraftForge.EVENT_BUS.addListener(this::serverTick); ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, Config.Spec, "project-expansion.toml"); @@ -50,4 +55,15 @@ public ItemStack createIcon() { Matter.registerAll(); Star.registerAll(); } + + private void serverTick(TickEvent.ServerTickEvent event) { + if (event.phase != TickEvent.Phase.END) return; + for (ServerPlayerEntity player : ServerLifecycleHooks.getCurrentServer().getPlayerList().getPlayers()) { + for (int i = 0; i < player.inventory.getSizeInventory(); i++) { + ItemStack stack = player.inventory.getStackInSlot(i); + if (stack.getItem().equals(Items.INFINITE_FUEL.get())) + stack.getOrCreateTag().putUniqueId("Owner", player.getUniqueID()); + } + } + } } diff --git a/src/main/java/cool/furry/mc/forge/projectexpansion/block/BlockTransmutationInterface.java b/src/main/java/cool/furry/mc/forge/projectexpansion/block/BlockTransmutationInterface.java new file mode 100644 index 00000000..0672dcc9 --- /dev/null +++ b/src/main/java/cool/furry/mc/forge/projectexpansion/block/BlockTransmutationInterface.java @@ -0,0 +1,66 @@ +package cool.furry.mc.forge.projectexpansion.block; + +import cool.furry.mc.forge.projectexpansion.tile.TileTransmutationInterface; +import cool.furry.mc.forge.projectexpansion.util.ColorStyle; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.material.Material; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import javax.annotation.Nullable; +import java.util.List; + +public class BlockTransmutationInterface extends Block { + public BlockTransmutationInterface() { + super(Block.Properties.create(Material.ROCK).hardnessAndResistance(5F)); + } + + @Override + public boolean hasTileEntity(BlockState state) { + return true; + } + + @Nullable + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return new TileTransmutationInterface(); + } + + @OnlyIn(Dist.CLIENT) + @Override + public void addInformation(ItemStack stack, @Nullable IBlockReader level, List list, ITooltipFlag flag) { + super.addInformation(stack, level, list, flag); + list.add(new TranslationTextComponent("block.projectexpansion.transmutation_interface.tooltip").setStyle(ColorStyle.GRAY)); + } + + @Override + public ActionResultType func_225533_a_(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult ray) { + if (world.isRemote) return ActionResultType.SUCCESS; + TileEntity tile = world.getTileEntity(pos); + if (tile instanceof TileTransmutationInterface) + player.sendStatusMessage(new StringTextComponent(((TileTransmutationInterface) tile).ownerName), true); + return super.func_225533_a_(state, world, pos, player, hand, ray); + } + + @Override + public void onBlockPlacedBy(World world, BlockPos pos, BlockState state, @Nullable LivingEntity livingEntity, ItemStack stack) { + TileEntity tile = world.getTileEntity(pos); + if (tile instanceof TileTransmutationInterface) + ((TileTransmutationInterface) tile).wasPlaced(livingEntity, stack); + } +} diff --git a/src/main/java/cool/furry/mc/forge/projectexpansion/init/Blocks.java b/src/main/java/cool/furry/mc/forge/projectexpansion/init/Blocks.java index 6ad5e4a9..5bd8c0fb 100644 --- a/src/main/java/cool/furry/mc/forge/projectexpansion/init/Blocks.java +++ b/src/main/java/cool/furry/mc/forge/projectexpansion/init/Blocks.java @@ -1,18 +1,12 @@ package cool.furry.mc.forge.projectexpansion.init; import cool.furry.mc.forge.projectexpansion.Main; -import cool.furry.mc.forge.projectexpansion.block.BlockArcaneTable; -import cool.furry.mc.forge.projectexpansion.block.BlockEMCExport; -import cool.furry.mc.forge.projectexpansion.block.BlockEMCImport; -import cool.furry.mc.forge.projectexpansion.block.BlockEMCLink; +import cool.furry.mc.forge.projectexpansion.block.*; import net.minecraft.block.Block; import net.minecraftforge.fml.RegistryObject; -import net.minecraftforge.fml.common.Mod; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; -@SuppressWarnings("unused") -@Mod.EventBusSubscriber(modid = Main.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) public class Blocks { public static final DeferredRegister Registry = DeferredRegister.create(ForgeRegistries.BLOCKS, Main.MOD_ID); @@ -20,4 +14,5 @@ public class Blocks { public static final RegistryObject EMC_LINK = Registry.register("emc_link", BlockEMCLink::new); public static final RegistryObject EMC_EXPORT = Registry.register("emc_export", BlockEMCExport::new); public static final RegistryObject EMC_IMPORT = Registry.register("emc_import", BlockEMCImport::new); + public static final RegistryObject TRANSMUTATION_INTERFACE = Registry.register("transmutation_interface", BlockTransmutationInterface::new); } diff --git a/src/main/java/cool/furry/mc/forge/projectexpansion/init/Items.java b/src/main/java/cool/furry/mc/forge/projectexpansion/init/Items.java index e1e050a7..d9d04b8a 100644 --- a/src/main/java/cool/furry/mc/forge/projectexpansion/init/Items.java +++ b/src/main/java/cool/furry/mc/forge/projectexpansion/init/Items.java @@ -1,28 +1,27 @@ package cool.furry.mc.forge.projectexpansion.init; import cool.furry.mc.forge.projectexpansion.Main; -import cool.furry.mc.forge.projectexpansion.item.ItemArcaneTablet; -import cool.furry.mc.forge.projectexpansion.item.ItemFinalStar; -import cool.furry.mc.forge.projectexpansion.item.ItemUpgrade; +import cool.furry.mc.forge.projectexpansion.item.*; import net.minecraft.item.BlockItem; import net.minecraft.item.Item; import net.minecraft.item.Rarity; import net.minecraftforge.fml.RegistryObject; -import net.minecraftforge.fml.common.Mod; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; -@SuppressWarnings("unused") -@Mod.EventBusSubscriber(modid = Main.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) public class Items { public static final DeferredRegister Registry = DeferredRegister.create(ForgeRegistries.ITEMS, Main.MOD_ID); public static final RegistryObject ARCANE_TABLET = Registry.register("arcane_tablet", ItemArcaneTablet::new); - public static final RegistryObject ARCANE_TABLE = Registry.register("arcane_table", () -> new BlockItem(Blocks.ARCANE_TABLE.get(), new Item.Properties().group(Main.group).rarity(Rarity.RARE))); - public static final RegistryObject EMC_LINK = Registry.register("emc_link", () -> new BlockItem(Blocks.EMC_LINK.get(), new Item.Properties().group(Main.group))); + public static final RegistryObject ARCANE_TABLE = Registry.register("arcane_table", () -> new BlockItem(Blocks.ARCANE_TABLE.get(), new Item.Properties().group(Main.group).rarity(Rarity.RARE))); + public static final RegistryObject EMC_LINK = Registry.register("emc_link", () -> new BlockItem(Blocks.EMC_LINK.get(), new Item.Properties().group(Main.group))); + ; + public static final RegistryObject EMC_EXPORT = Registry.register("emc_export", () -> new BlockItem(Blocks.EMC_EXPORT.get(), new Item.Properties().group(Main.group))); + public static final RegistryObject EMC_IMPORT = Registry.register("emc_import", () -> new BlockItem(Blocks.EMC_IMPORT.get(), new Item.Properties().group(Main.group))); public static final RegistryObject FINAL_STAR_SHARD = Registry.register("final_star_shard", () -> new Item(new Item.Properties().maxStackSize(1).rarity(Rarity.RARE).group(Main.group))); public static final RegistryObject FINAL_STAR = Registry.register("final_star", ItemFinalStar::new); - public static final RegistryObject EMC_EXPORT = Registry.register("emc_export", () -> new BlockItem(Blocks.EMC_EXPORT.get(), new Item.Properties().group(Main.group))); - public static final RegistryObject EMC_Import = Registry.register("emc_import", () -> new BlockItem(Blocks.EMC_IMPORT.get(), new Item.Properties().group(Main.group))); public static final RegistryObject MATTER_UPGRADER = Registry.register("matter_upgrader", ItemUpgrade::new); + public static final RegistryObject INFINITE_FUEL = Registry.register("infinite_fuel", ItemInfiniteFuel::new); + public static final RegistryObject INFINITE_STEAK = Registry.register("infinite_steak", ItemInfiniteSteak::new); + public static final RegistryObject TRANSMUTATION_INTERFACE = Registry.register("transmutation_interface", () -> new BlockItem(Blocks.TRANSMUTATION_INTERFACE.get(), new Item.Properties().group(Main.group).rarity(Rarity.EPIC))); } diff --git a/src/main/java/cool/furry/mc/forge/projectexpansion/init/TileEntityTypes.java b/src/main/java/cool/furry/mc/forge/projectexpansion/init/TileEntityTypes.java index cc2a6f9f..de67f37f 100644 --- a/src/main/java/cool/furry/mc/forge/projectexpansion/init/TileEntityTypes.java +++ b/src/main/java/cool/furry/mc/forge/projectexpansion/init/TileEntityTypes.java @@ -6,14 +6,11 @@ import net.minecraft.block.Block; import net.minecraft.tileentity.TileEntityType; import net.minecraftforge.fml.RegistryObject; -import net.minecraftforge.fml.common.Mod; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import java.util.Arrays; -@SuppressWarnings("unused") -@Mod.EventBusSubscriber(modid = Main.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) public class TileEntityTypes { public static final DeferredRegister> Registry = DeferredRegister.create(ForgeRegistries.TILE_ENTITIES, Main.MOD_ID); @@ -23,4 +20,5 @@ public class TileEntityTypes { public static final RegistryObject> ANTI_MATTER_RELAY = Registry.register("relay", () -> TileEntityType.Builder.create(TileRelay::new, Arrays.stream(Matter.VALUES).map(Matter::getRelay).toArray(Block[]::new)).build(null)); public static final RegistryObject> EMC_EXPORT = Registry.register("emc_export", () -> TileEntityType.Builder.create(TileEMCExport::new, Blocks.EMC_EXPORT.get()).build(null)); public static final RegistryObject> EMC_IMPORT = Registry.register("emc_import", () -> TileEntityType.Builder.create(TileEMCImport::new, Blocks.EMC_IMPORT.get()).build(null)); + public static final RegistryObject> TRANSMUTATION_INTERFACE = Registry.register("transmutation_interface", () -> TileEntityType.Builder.create(TileTransmutationInterface::new, Blocks.TRANSMUTATION_INTERFACE.get()).build(null)); } diff --git a/src/main/java/cool/furry/mc/forge/projectexpansion/item/ItemInfiniteFuel.java b/src/main/java/cool/furry/mc/forge/projectexpansion/item/ItemInfiniteFuel.java new file mode 100644 index 00000000..287571f4 --- /dev/null +++ b/src/main/java/cool/furry/mc/forge/projectexpansion/item/ItemInfiniteFuel.java @@ -0,0 +1,70 @@ +package cool.furry.mc.forge.projectexpansion.item; + +import cool.furry.mc.forge.projectexpansion.Main; +import cool.furry.mc.forge.projectexpansion.util.ColorStyle; +import moze_intel.projecte.api.ProjectEAPI; +import moze_intel.projecte.api.capabilities.IKnowledgeProvider; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.item.Rarity; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.world.World; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.fml.server.ServerLifecycleHooks; + +import javax.annotation.Nullable; +import java.math.BigInteger; +import java.util.List; +import java.util.UUID; +import java.util.function.Supplier; + +public class ItemInfiniteFuel extends Item { + public static final Supplier COST = () -> BigInteger.valueOf(ProjectEAPI.getEMCProxy().getValue(Items.COAL)); + public static final int BURN_TIME = 1600; + + public ItemInfiniteFuel() { + super(new Item.Properties().maxStackSize(1).rarity(Rarity.RARE).group(Main.group)); + } + + @OnlyIn(Dist.CLIENT) + @Override + public void addInformation(ItemStack stack, @Nullable World world, List list, ITooltipFlag flag) { + super.addInformation(stack, world, list, flag); + list.add(new TranslationTextComponent("item.projectexpansion.infinite_fuel.tooltip").setStyle(ColorStyle.GRAY)); + } + + @Override + public int getBurnTime(ItemStack stack) { + @Nullable UUID owner = stack.getTag() == null ? null : stack.getTag().getUniqueId("Owner"); + if (owner == null) return 0; + // this just spams the player with action bar messages + /*int res = ProjectEAPI.getTransmutationProxy().getKnowledgeProviderFor(owner).getEmc().compareTo(COST.get()) < 0 ? 0 : BURN_TIME; + if(res == 0) { + PlayerEntity player = ServerLifecycleHooks.getCurrentServer().getPlayerList().getPlayerByUUID(owner); + if(player != null) player.sendStatusMessage(new TranslationTextComponent("item.projectexpansion.infinite_fuel.not_enough_emc", new StringTextComponent(COST.get().toString())).mergeStyle(TextFormatting.RED), true); + } + return res;*/ + return ProjectEAPI.getTransmutationProxy().getKnowledgeProviderFor(owner).getEmc().compareTo(COST.get()) < 0 ? 0 : BURN_TIME; + } + + @Override + public boolean hasContainerItem(ItemStack stack) { + return true; + } + + @Override + public ItemStack getContainerItem(ItemStack stack) { + @Nullable UUID owner = stack.getTag() == null ? null : stack.getTag().getUniqueId("Owner"); + if (owner == null) return stack; + ServerPlayerEntity player = ServerLifecycleHooks.getCurrentServer().getPlayerList().getPlayerByUUID(owner); + IKnowledgeProvider provider = ProjectEAPI.getTransmutationProxy().getKnowledgeProviderFor(owner); + provider.setEmc(provider.getEmc().subtract(COST.get())); + if (player != null) provider.sync(player); + return stack; + } +} diff --git a/src/main/java/cool/furry/mc/forge/projectexpansion/item/ItemInfiniteSteak.java b/src/main/java/cool/furry/mc/forge/projectexpansion/item/ItemInfiniteSteak.java new file mode 100644 index 00000000..eb4434e0 --- /dev/null +++ b/src/main/java/cool/furry/mc/forge/projectexpansion/item/ItemInfiniteSteak.java @@ -0,0 +1,86 @@ +package cool.furry.mc.forge.projectexpansion.item; + +import cool.furry.mc.forge.projectexpansion.Main; +import cool.furry.mc.forge.projectexpansion.util.ColorStyle; +import moze_intel.projecte.api.ProjectEAPI; +import moze_intel.projecte.api.capabilities.IKnowledgeProvider; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.item.*; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.world.World; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import javax.annotation.Nullable; +import java.math.BigInteger; +import java.util.List; +import java.util.function.Supplier; + +public class ItemInfiniteSteak extends Item { + public static final Supplier COST = () -> BigInteger.valueOf(ProjectEAPI.getEMCProxy().getValue(Items.COOKED_BEEF)); + + public ItemInfiniteSteak() { + super(new Item.Properties().maxStackSize(1).rarity(Rarity.RARE).group(Main.group)); + } + + @OnlyIn(Dist.CLIENT) + @Override + public void addInformation(ItemStack stack, @Nullable World world, List list, ITooltipFlag flag) { + super.addInformation(stack, world, list, flag); + list.add(new TranslationTextComponent("item.projectexpansion.infinite_steak.tooltip").setStyle(ColorStyle.GRAY)); + } + + @Override + public int getUseDuration(ItemStack stack) { + return Items.COOKED_BEEF.getUseDuration(stack); + } + + @Override + public boolean isFood() { + return true; + } + + @Nullable + @Override + public Food getFood() { + return Items.COOKED_BEEF.getFood(); + } + + @Override + public ActionResult onItemRightClick(World world, PlayerEntity player, Hand hand) { + ItemStack stack = player.getHeldItem(hand); + Main.Logger.info("onItemRightClick"); + Main.Logger.info(stack); + // @TODO wolves??? + if (!player.canEat(false) || ProjectEAPI.getTransmutationProxy().getKnowledgeProviderFor(player.getUniqueID()).getEmc().compareTo(COST.get()) < 0) + return ActionResult.func_226251_d_(stack); + player.setActiveHand(hand); + return ActionResult.func_226248_a_(stack); + } + + @Override + public ItemStack onItemUseFinish(ItemStack stack, World world, LivingEntity entity) { + Main.Logger.info("onItemUseFinish"); + Main.Logger.info(entity); + if (!(entity instanceof ServerPlayerEntity)) return stack; + ServerPlayerEntity player = (ServerPlayerEntity) entity; + if (world.isRemote) return stack; + IKnowledgeProvider provider = ProjectEAPI.getTransmutationProxy().getKnowledgeProviderFor(entity.getUniqueID()); + BigInteger emc = provider.getEmc().subtract(COST.get()); + if (emc.compareTo(BigInteger.ZERO) < 0) { + player.sendStatusMessage(new TranslationTextComponent("item.projectexpansion.infinite_steak.not_enough_emc", new StringTextComponent(COST.get().toString())).setStyle(ColorStyle.RED), true); + return stack; + } + provider.setEmc(emc); + provider.sync(player); + player.onFoodEaten(world, new ItemStack(Items.COOKED_BEEF)); + return stack; + } +} diff --git a/src/main/java/cool/furry/mc/forge/projectexpansion/tile/TileEMCExport.java b/src/main/java/cool/furry/mc/forge/projectexpansion/tile/TileEMCExport.java index 1d703877..06c5d906 100644 --- a/src/main/java/cool/furry/mc/forge/projectexpansion/tile/TileEMCExport.java +++ b/src/main/java/cool/furry/mc/forge/projectexpansion/tile/TileEMCExport.java @@ -38,7 +38,7 @@ public class TileEMCExport extends TileEntityInventoryHelper implements ITickabl private static final int[] SLOTS = new int[]{0, 1}; public UUID owner = Util.DUMMY_UUID; public String ownerName = ""; - private LazyOptional itemHandlerCapability; + private final LazyOptional itemHandlerCapability = LazyOptional.of(() -> this); private @Nullable IEMCProxy proxy = null; // make sure we aren't double charging or doing something else funky, we can still have @@ -184,15 +184,12 @@ public ITextComponent getDisplayName() { @Nonnull @Override public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { - if (itemHandlerCapability == null || !itemHandlerCapability.isPresent()) { - itemHandlerCapability = LazyOptional.of(() -> this); - } - - return itemHandlerCapability.cast(); - } + return (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) ? this.itemHandlerCapability.cast() : super.getCapability(cap, side); + } - return super.getCapability(cap, side); + @Override + protected void invalidateCaps() { + this.itemHandlerCapability.invalidate(); } @Override diff --git a/src/main/java/cool/furry/mc/forge/projectexpansion/tile/TileEMCImport.java b/src/main/java/cool/furry/mc/forge/projectexpansion/tile/TileEMCImport.java index 40b3a8db..7c652158 100644 --- a/src/main/java/cool/furry/mc/forge/projectexpansion/tile/TileEMCImport.java +++ b/src/main/java/cool/furry/mc/forge/projectexpansion/tile/TileEMCImport.java @@ -45,7 +45,7 @@ public class TileEMCImport extends TileEntityInventoryHelper implements ITickabl }; public UUID owner = Util.DUMMY_UUID; public String ownerName = ""; - private LazyOptional itemHandlerCapability; + private final LazyOptional itemHandlerCapability = LazyOptional.of(() -> this); private @Nullable IEMCProxy proxy = null; private boolean isProcessing = false; @@ -177,15 +177,12 @@ public ITextComponent getDisplayName() { @Nonnull @Override public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { - if (itemHandlerCapability == null || !itemHandlerCapability.isPresent()) { - itemHandlerCapability = LazyOptional.of(() -> this); - } - - return itemHandlerCapability.cast(); - } + return (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) ? this.itemHandlerCapability.cast() : super.getCapability(cap, side); + } - return super.getCapability(cap, side); + @Override + protected void invalidateCaps() { + this.itemHandlerCapability.invalidate(); } @Override diff --git a/src/main/java/cool/furry/mc/forge/projectexpansion/tile/TileTransmutationInterface.java b/src/main/java/cool/furry/mc/forge/projectexpansion/tile/TileTransmutationInterface.java new file mode 100644 index 00000000..024dea40 --- /dev/null +++ b/src/main/java/cool/furry/mc/forge/projectexpansion/tile/TileTransmutationInterface.java @@ -0,0 +1,180 @@ +package cool.furry.mc.forge.projectexpansion.tile; + +import cool.furry.mc.forge.projectexpansion.init.TileEntityTypes; +import cool.furry.mc.forge.projectexpansion.util.Util; +import moze_intel.projecte.api.ItemInfo; +import moze_intel.projecte.api.ProjectEAPI; +import moze_intel.projecte.api.capabilities.IKnowledgeProvider; +import moze_intel.projecte.emc.nbt.NBTManager; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.tileentity.ITickableTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Direction; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.util.Constants; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.items.IItemHandler; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.math.BigInteger; +import java.util.UUID; + +public class TileTransmutationInterface extends TileEntity implements IItemHandler, ITickableTileEntity { + private final LazyOptional itemHandlerCapability = LazyOptional.of(() -> this); + public UUID owner = Util.DUMMY_UUID; + public String ownerName = ""; + public int tick = 0; + private ItemInfo[] info; + + public TileTransmutationInterface() { + super(TileEntityTypes.TRANSMUTATION_INTERFACE.get()); + } + + @Nonnull + @Override + public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { + return (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) ? this.itemHandlerCapability.cast() : super.getCapability(cap, side); + } + + @Override + protected void invalidateCaps() { + this.itemHandlerCapability.invalidate(); + } + + @Override + public void read(@Nonnull CompoundNBT nbt) { + super.read(nbt); + if (nbt.hasUniqueId("Owner")) this.owner = nbt.getUniqueId("Owner"); + if (nbt.contains("OwnerName", Constants.NBT.TAG_STRING)) this.ownerName = nbt.getString("OwnerName"); + if (nbt.contains("Tick", Constants.NBT.TAG_BYTE)) tick = nbt.getByte("Tick") & 0xFF; + } + + @Nonnull + @Override + public CompoundNBT write(@Nonnull CompoundNBT nbt) { + super.write(nbt); + nbt.putUniqueId("Owner", this.owner); + nbt.putString("OwnerName", this.ownerName); + nbt.putByte("Tick", (byte) tick); + return nbt; + } + + public void setOwner(PlayerEntity player) { + this.owner = player.getUniqueID(); + this.ownerName = player.getScoreboardName(); + markDirty(); + } + + public void wasPlaced(@Nullable LivingEntity livingEntity, ItemStack stack) { + if (livingEntity instanceof PlayerEntity) setOwner((PlayerEntity) livingEntity); + } + + private ItemInfo[] fetchKnowledge() { + if (this.info != null) + return this.info; + return this.info = ProjectEAPI.getTransmutationProxy().getKnowledgeProviderFor(this.owner).getKnowledge().toArray(new ItemInfo[0]); + } + + private int getMaxCount(int slot) { + try { + return ProjectEAPI.getTransmutationProxy().getKnowledgeProviderFor(this.owner).getEmc().divide(BigInteger.valueOf(ProjectEAPI.getEMCProxy().getValue(fetchKnowledge()[slot]))).intValueExact(); + } catch (ArithmeticException e) { + return Integer.MAX_VALUE; + } + } + + @Override + public void tick() { + this.info = null; + } + + @Override + public int getSlots() { + return fetchKnowledge().length + 1; + } + + @Nonnull + @Override + public ItemStack getStackInSlot(int slot) { + if (this.owner == null) return ItemStack.EMPTY; + fetchKnowledge(); + + if (slot <= 0 || this.info.length < slot) return ItemStack.EMPTY; + int maxCount = getMaxCount(slot - 1); + if (maxCount <= 0) return ItemStack.EMPTY; + + ItemStack item = this.info[slot - 1].createStack(); + item.setCount(maxCount); + return item; + } + + @Nonnull + @Override + public ItemStack insertItem(int slot, @Nonnull ItemStack stack, boolean simulate) { + if (slot != 0 || this.owner == null || !ProjectEAPI.getEMCProxy().hasValue(stack) || stack.isEmpty()) + return stack; + fetchKnowledge(); + + ItemInfo info = ItemInfo.fromStack(stack); + if (!NBTManager.getPersistentInfo(info).equals(info)) return stack; + stack = stack.copy(); + int count = stack.getCount(); + stack.setCount(1); + + if (count <= 0) return stack; + if (simulate) return ItemStack.EMPTY; + + long emcValue = ProjectEAPI.getEMCProxy().getSellValue(stack); + IKnowledgeProvider provider = ProjectEAPI.getTransmutationProxy().getKnowledgeProviderFor(this.owner); + BigInteger totalEmcValue = BigInteger.valueOf(emcValue).multiply(BigInteger.valueOf(count)); + provider.setEmc(provider.getEmc().add(totalEmcValue)); + + if (Util.isWorldRemoteOrNull(getWorld())) { + ServerPlayerEntity player = Util.getPlayer(getWorld(), this.owner); + if (player != null) provider.sync(player); + } + + return ItemStack.EMPTY; + } + + @Nonnull + @Override + public ItemStack extractItem(int slot, int amount, boolean simulate) { + if (slot <= 0 || this.owner == null || this.info.length < slot) return ItemStack.EMPTY; + fetchKnowledge(); + + amount = Math.min(amount, getMaxCount(slot - 1)); + + if (amount <= 0) return ItemStack.EMPTY; + ItemStack item = this.info[slot - 1].createStack(); + item.setCount(amount); + + if (simulate) return item; + long emcValue = ProjectEAPI.getEMCProxy().getValue(this.info[slot - 1]); + BigInteger totalEmcCost = BigInteger.valueOf(emcValue).multiply(BigInteger.valueOf(amount)); + IKnowledgeProvider provider = ProjectEAPI.getTransmutationProxy().getKnowledgeProviderFor(this.owner); + provider.setEmc(provider.getEmc().subtract(totalEmcCost)); + if (Util.isWorldRemoteOrNull(getWorld())) { + ServerPlayerEntity player = Util.getPlayer(getWorld(), this.owner); + if (player != null) provider.sync(player); + } + + return item; + } + + @Override + public int getSlotLimit(int slot) { + return Integer.MAX_VALUE; + } + + @Override + public boolean isItemValid(int slot, @Nonnull ItemStack stack) { + return ProjectEAPI.getEMCProxy().hasValue(stack); + } +} diff --git a/src/main/java/cool/furry/mc/forge/projectexpansion/util/Util.java b/src/main/java/cool/furry/mc/forge/projectexpansion/util/Util.java index ff5bc1d0..a73409e9 100644 --- a/src/main/java/cool/furry/mc/forge/projectexpansion/util/Util.java +++ b/src/main/java/cool/furry/mc/forge/projectexpansion/util/Util.java @@ -1,17 +1,26 @@ package cool.furry.mc.forge.projectexpansion.util; import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.world.World; import net.minecraftforge.fml.server.ServerLifecycleHooks; import javax.annotation.Nullable; import java.util.UUID; public class Util { - // for some reason this only exists on net.minecraft.util.Util in 1.16+ public static final UUID DUMMY_UUID = new UUID(0L, 0L); public static @Nullable ServerPlayerEntity getPlayer(UUID uuid) { return ServerLifecycleHooks.getCurrentServer() == null ? null : ServerLifecycleHooks.getCurrentServer().getPlayerList().getPlayerByUUID(uuid); } -} \ No newline at end of file + + public static @Nullable + ServerPlayerEntity getPlayer(@Nullable World world, UUID uuid) { + return world == null || world.getServer() == null ? null : world.getServer().getPlayerList().getPlayerByUUID(uuid); + } + + public static boolean isWorldRemoteOrNull(@Nullable World world) { + return world == null || world.isRemote; + } +} diff --git a/src/main/resources/assets/projectexpansion/blockstates/transmutation_interface.json b/src/main/resources/assets/projectexpansion/blockstates/transmutation_interface.json new file mode 100644 index 00000000..aa9354fb --- /dev/null +++ b/src/main/resources/assets/projectexpansion/blockstates/transmutation_interface.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "projectexpansion:block/transmutation_interface" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/projectexpansion/lang/en_us.json b/src/main/resources/assets/projectexpansion/lang/en_us.json index 55415453..5b2d1939 100644 --- a/src/main/resources/assets/projectexpansion/lang/en_us.json +++ b/src/main/resources/assets/projectexpansion/lang/en_us.json @@ -1,24 +1,24 @@ { - "block.projectexpansion.collector.tooltip": "Generates EMC once per second.", - "block.projectexpansion.collector.emc": "Produced EMC: %s/s", - "block.projectexpansion.basic_collector": "Basic Energy Collector [MK 1]", - "block.projectexpansion.dark_collector": "Dark Energy Collector [MK 2]", - "block.projectexpansion.red_collector": "Red Energy Collector [MK 3]", - "block.projectexpansion.magenta_collector": "Magenta Energy Collector [MK 4]", - "block.projectexpansion.pink_collector": "Pink Energy Collector [MK 5]", - "block.projectexpansion.purple_collector": "Purple Energy Collector [MK 6]", - "block.projectexpansion.violet_collector": "Violet Energy Collector [MK 7]", - "block.projectexpansion.blue_collector": "Blue Energy Collector [MK 8]", - "block.projectexpansion.cyan_collector": "Cyan Energy Collector [MK 9]", - "block.projectexpansion.green_collector": "Green Energy Collector [MK 10]", - "block.projectexpansion.lime_collector": "Lime Energy Collector [MK 11]", - "block.projectexpansion.yellow_collector": "Yellow Energy Collector [MK 12]", - "block.projectexpansion.orange_collector": "Orange Energy Collector [MK 13]", - "block.projectexpansion.white_collector": "White Energy Collector [MK 14]", - "block.projectexpansion.fading_collector": "Fading Energy Collector [MK 15]", - "block.projectexpansion.final_collector": "Final Energy Collector [MK 16]", - "block.projectexpansion.magenta_fuel_block": "Magenta Fuel Block", - "block.projectexpansion.pink_fuel_block": "Pink Fuel Block", + "block.projectexpansion.collector.tooltip": "Generates EMC once per second.", + "block.projectexpansion.collector.emc": "Produced EMC: %s/s", + "block.projectexpansion.basic_collector": "Basic Energy Collector [MK 1]", + "block.projectexpansion.dark_collector": "Dark Energy Collector [MK 2]", + "block.projectexpansion.red_collector": "Red Energy Collector [MK 3]", + "block.projectexpansion.magenta_collector": "Magenta Energy Collector [MK 4]", + "block.projectexpansion.pink_collector": "Pink Energy Collector [MK 5]", + "block.projectexpansion.purple_collector": "Purple Energy Collector [MK 6]", + "block.projectexpansion.violet_collector": "Violet Energy Collector [MK 7]", + "block.projectexpansion.blue_collector": "Blue Energy Collector [MK 8]", + "block.projectexpansion.cyan_collector": "Cyan Energy Collector [MK 9]", + "block.projectexpansion.green_collector": "Green Energy Collector [MK 10]", + "block.projectexpansion.lime_collector": "Lime Energy Collector [MK 11]", + "block.projectexpansion.yellow_collector": "Yellow Energy Collector [MK 12]", + "block.projectexpansion.orange_collector": "Orange Energy Collector [MK 13]", + "block.projectexpansion.white_collector": "White Energy Collector [MK 14]", + "block.projectexpansion.fading_collector": "Fading Energy Collector [MK 15]", + "block.projectexpansion.final_collector": "Final Energy Collector [MK 16]", + "block.projectexpansion.magenta_fuel_block": "Magenta Fuel Block", + "block.projectexpansion.pink_fuel_block": "Pink Fuel Block", "block.projectexpansion.purple_fuel_block": "Purple Fuel Block", "block.projectexpansion.violet_fuel_block": "Violet Fuel Block", "block.projectexpansion.blue_fuel_block": "Blue Fuel Block", @@ -37,6 +37,8 @@ "block.projectexpansion.emc_import": "EMC Import", "block.projectexpansion.emc_import.tooltip": "Import items directly into your emc.", "block.projectexpansion.emc_import.not_owner": "You are not the owner of this, %s is.", + "block.projectexpansion.transmutation_interface": "Transmutation Interface", + "block.projectexpansion.transmutation_interface.tooltip": "This can be used with compatible mods like Refined Storage to access your transmutation inventory.", "block.projectexpansion.power_flower.tooltip": "Generates EMC once per %s tick%s. (20/second)", "block.projectexpansion.power_flower.emc": "Produced EMC: %s/s", "block.projectexpansion.basic_power_flower": "Basic Power Flower [MK 1]", @@ -47,51 +49,51 @@ "block.projectexpansion.purple_power_flower": "Purple Power Flower [MK 6]", "block.projectexpansion.violet_power_flower": "Violet Power Flower [MK 7]", "block.projectexpansion.blue_power_flower": "Blue Power Flower [MK 8]", - "block.projectexpansion.cyan_power_flower": "Cyan Power Flower [MK 9]", - "block.projectexpansion.green_power_flower": "Green Power Flower [MK 10]", - "block.projectexpansion.lime_power_flower": "Lime Power Flower [MK 11]", - "block.projectexpansion.yellow_power_flower": "Yellow Power Flower [MK 12]", - "block.projectexpansion.orange_power_flower": "Orange Power Flower [MK 13]", - "block.projectexpansion.white_power_flower": "White Power Flower [MK 14]", - "block.projectexpansion.fading_power_flower": "Fading Power Flower [MK 15]", - "block.projectexpansion.final_power_flower": "Final Power Flower [MK 16]", - "block.projectexpansion.relay.tooltip": "Transfers EMC once per second.", - "block.projectexpansion.relay.bonus": "Relay Bonus: %s/s", - "block.projectexpansion.relay.transfer": "Max EMC Transfer: %s/s", - "block.projectexpansion.basic_relay": "Basic Anti-Matter Relay [MK 1]", - "block.projectexpansion.dark_relay": "Dark Anti-Matter Relay [MK 2]", - "block.projectexpansion.red_relay": "Red Anti-Matter Relay [MK 3]", - "block.projectexpansion.magenta_relay": "Magenta Anti-Matter Relay [MK 4]", - "block.projectexpansion.pink_relay": "Pink Anti-Matter Relay [MK 5]", - "block.projectexpansion.purple_relay": "Purple Anti-Matter Relay [MK 6]", - "block.projectexpansion.violet_relay": "Violet Anti-Matter Relay [MK 7]", - "block.projectexpansion.blue_relay": "Blue Anti-Matter Relay [MK 8]", - "block.projectexpansion.cyan_relay": "Cyan Anti-Matter Relay [MK 9]", + "block.projectexpansion.cyan_power_flower": "Cyan Power Flower [MK 9]", + "block.projectexpansion.green_power_flower": "Green Power Flower [MK 10]", + "block.projectexpansion.lime_power_flower": "Lime Power Flower [MK 11]", + "block.projectexpansion.yellow_power_flower": "Yellow Power Flower [MK 12]", + "block.projectexpansion.orange_power_flower": "Orange Power Flower [MK 13]", + "block.projectexpansion.white_power_flower": "White Power Flower [MK 14]", + "block.projectexpansion.fading_power_flower": "Fading Power Flower [MK 15]", + "block.projectexpansion.final_power_flower": "Final Power Flower [MK 16]", + "block.projectexpansion.relay.tooltip": "Transfers EMC once per second.", + "block.projectexpansion.relay.bonus": "Relay Bonus: %s/s", + "block.projectexpansion.relay.transfer": "Max EMC Transfer: %s/s", + "block.projectexpansion.basic_relay": "Basic Anti-Matter Relay [MK 1]", + "block.projectexpansion.dark_relay": "Dark Anti-Matter Relay [MK 2]", + "block.projectexpansion.red_relay": "Red Anti-Matter Relay [MK 3]", + "block.projectexpansion.magenta_relay": "Magenta Anti-Matter Relay [MK 4]", + "block.projectexpansion.pink_relay": "Pink Anti-Matter Relay [MK 5]", + "block.projectexpansion.purple_relay": "Purple Anti-Matter Relay [MK 6]", + "block.projectexpansion.violet_relay": "Violet Anti-Matter Relay [MK 7]", + "block.projectexpansion.blue_relay": "Blue Anti-Matter Relay [MK 8]", + "block.projectexpansion.cyan_relay": "Cyan Anti-Matter Relay [MK 9]", "block.projectexpansion.green_relay": "Green Anti-Matter Relay [MK 10]", "block.projectexpansion.lime_relay": "Lime Anti-Matter Relay [MK 11]", "block.projectexpansion.yellow_relay": "Yellow Anti-Matter Relay [MK 12]", "block.projectexpansion.orange_relay": "Orange Anti-Matter Relay [MK 13]", "block.projectexpansion.white_relay": "White Anti-Matter Relay [MK 14]", - "block.projectexpansion.fading_relay": "Fading Anti-Matter Relay [MK 15]", - "block.projectexpansion.final_relay": "Final Anti-Matter Relay [MK 16]", - "command.projectexpansion.console": "Console", - "command.projectexpansion.emc.add.success": "Successfully added %s emc to %s, they now have %s", - "command.projectexpansion.emc.add.successSelf": "Successfully added %s to your emc, you now have %s", - "command.projectexpansion.emc.add.notification": "You were given %s emc by %s, you now have %s", - "command.projectexpansion.emc.remove.success": "Successfully removed %s emc from %s, they now have %s", - "command.projectexpansion.emc.remove.successSelf": "Successfully removed %s fro your emc, you now have %s", - "command.projectexpansion.emc.remove.notification": "%s emc was removed from you by %s, you now have %s", - "command.projectexpansion.emc.set.success": "Successfully set the emc of %s to %s", - "command.projectexpansion.emc.set.successSelf": "Successfully set your emc to %s", - "command.projectexpansion.emc.set.notification": "Your emc was set to %s by %s", - "command.projectexpansion.emc.get.successSelf": "You have %s emc", - "command.projectexpansion.emc.get.success": "%s has %s emc", - "command.projectexpansion.emc.clearKnowledge.success": "Successfully cleared the knowledge of %s", - "command.projectexpansion.emc.clearKnowledge.successSelf": "Successfully cleared your knowledge", - "command.projectexpansion.emc.clearKnowledge.notification": "Your knowldge was cleared by %s", - "gui.projectexpansion.config.title": "Project Expansion Config", - "gui.projectexpansion.config.tick_delay": "Tick Delay", - "gui.projectexpansion.config.tick_delay.desc": "The delay between mod operations (in ticks, default 20) - this will slightly effect the amount of emc generated via rounding - increase if you're noticing lag", + "block.projectexpansion.fading_relay": "Fading Anti-Matter Relay [MK 15]", + "block.projectexpansion.final_relay": "Final Anti-Matter Relay [MK 16]", + "command.projectexpansion.console": "Console", + "command.projectexpansion.emc.add.success": "Successfully added %s emc to %s, they now have %s", + "command.projectexpansion.emc.add.successSelf": "Successfully added %s to your emc, you now have %s", + "command.projectexpansion.emc.add.notification": "You were given %s emc by %s, you now have %s", + "command.projectexpansion.emc.remove.success": "Successfully removed %s emc from %s, they now have %s", + "command.projectexpansion.emc.remove.successSelf": "Successfully removed %s fro your emc, you now have %s", + "command.projectexpansion.emc.remove.notification": "%s emc was removed from you by %s, you now have %s", + "command.projectexpansion.emc.set.success": "Successfully set the emc of %s to %s", + "command.projectexpansion.emc.set.successSelf": "Successfully set your emc to %s", + "command.projectexpansion.emc.set.notification": "Your emc was set to %s by %s", + "command.projectexpansion.emc.get.successSelf": "You have %s emc", + "command.projectexpansion.emc.get.success": "%s has %s emc", + "command.projectexpansion.emc.clearKnowledge.success": "Successfully cleared the knowledge of %s", + "command.projectexpansion.emc.clearKnowledge.successSelf": "Successfully cleared your knowledge", + "command.projectexpansion.emc.clearKnowledge.notification": "Your knowldge was cleared by %s", + "gui.projectexpansion.config.title": "Project Expansion Config", + "gui.projectexpansion.config.tick_delay": "Tick Delay", + "gui.projectexpansion.config.tick_delay.desc": "The delay between mod operations (in ticks, default 20) - this will slightly effect the amount of emc generated via rounding - increase if you're noticing lag", "gui.projectexpansion.config.format_emc": "Format EMC", "gui.projectexpansion.config.format_emc.desc": "If EMC should be formatted as M/B/T/etc", "gui.projectexpansion.config.full_number_names": "Full Number Names", @@ -113,64 +115,70 @@ "item.projectexpansion.purple_compressed_collector": "Purple Compressed Energy Collector [MK 6]", "item.projectexpansion.violet_compressed_collector": "Violet Compressed Energy Collector [MK 7]", "item.projectexpansion.blue_compressed_collector": "Blue Compressed Energy Collector [MK 8]", - "item.projectexpansion.cyan_compressed_collector": "Cyan Compressed Energy Collector [MK 9]", - "item.projectexpansion.green_compressed_collector": "Green Compressed Energy Collector [MK 10]", - "item.projectexpansion.lime_compressed_collector": "Lime Compressed Energy Collector [MK 11]", - "item.projectexpansion.yellow_compressed_collector": "Yellow Compressed Energy Collector [MK 12]", - "item.projectexpansion.orange_compressed_collector": "Orange Compressed Energy Collector [MK 13]", - "item.projectexpansion.white_compressed_collector": "White Compressed Energy Collector [MK 14]", - "item.projectexpansion.fading_compressed_collector": "Fading Compressed Energy Collector [MK 15]", - "item.projectexpansion.final_compressed_collector": "Final Compressed Energy Collector [MK 16]", - "item.projectexpansion.magenta_fuel": "Magenta Fuel", - "item.projectexpansion.pink_fuel": "Pink Fuel", - "item.projectexpansion.purple_fuel": "Purple Fuel", - "item.projectexpansion.violet_fuel": "Violet Fuel", - "item.projectexpansion.blue_fuel": "Blue Fuel", - "item.projectexpansion.cyan_fuel": "Cyan Fuel", - "item.projectexpansion.green_fuel": "Green Fuel", - "item.projectexpansion.lime_fuel": "Lime Fuel", - "item.projectexpansion.yellow_fuel": "Yellow Fuel", - "item.projectexpansion.orange_fuel": "Orange Fuel", - "item.projectexpansion.white_fuel": "White Fuel", - "item.projectexpansion.magenta_matter": "Magenta Matter", + "item.projectexpansion.cyan_compressed_collector": "Cyan Compressed Energy Collector [MK 9]", + "item.projectexpansion.green_compressed_collector": "Green Compressed Energy Collector [MK 10]", + "item.projectexpansion.lime_compressed_collector": "Lime Compressed Energy Collector [MK 11]", + "item.projectexpansion.yellow_compressed_collector": "Yellow Compressed Energy Collector [MK 12]", + "item.projectexpansion.orange_compressed_collector": "Orange Compressed Energy Collector [MK 13]", + "item.projectexpansion.white_compressed_collector": "White Compressed Energy Collector [MK 14]", + "item.projectexpansion.fading_compressed_collector": "Fading Compressed Energy Collector [MK 15]", + "item.projectexpansion.final_compressed_collector": "Final Compressed Energy Collector [MK 16]", + "item.projectexpansion.magenta_fuel": "Magenta Fuel", + "item.projectexpansion.pink_fuel": "Pink Fuel", + "item.projectexpansion.purple_fuel": "Purple Fuel", + "item.projectexpansion.violet_fuel": "Violet Fuel", + "item.projectexpansion.blue_fuel": "Blue Fuel", + "item.projectexpansion.cyan_fuel": "Cyan Fuel", + "item.projectexpansion.green_fuel": "Green Fuel", + "item.projectexpansion.lime_fuel": "Lime Fuel", + "item.projectexpansion.yellow_fuel": "Yellow Fuel", + "item.projectexpansion.orange_fuel": "Orange Fuel", + "item.projectexpansion.white_fuel": "White Fuel", + "item.projectexpansion.magenta_matter": "Magenta Matter", "item.projectexpansion.pink_matter": "Pink Matter", "item.projectexpansion.purple_matter": "Purple Matter", "item.projectexpansion.violet_matter": "Violet Matter", "item.projectexpansion.blue_matter": "Blue Matter", "item.projectexpansion.cyan_matter": "Cyan Matter", - "item.projectexpansion.green_matter": "Green Matter", - "item.projectexpansion.lime_matter": "Lime Matter", - "item.projectexpansion.yellow_matter": "Yellow Matter", - "item.projectexpansion.orange_matter": "Orange Matter", - "item.projectexpansion.white_matter": "White Matter", - "item.projectexpansion.fading_matter": "Fading Matter", - "item.projectexpansion.matter_upgrader.tooltip": "Upgrades collectors, power flowers, and relays in-place.", - "item.projectexpansion.matter_upgrader.tooltip2": "You must have learned the next tier, and have the difference in emc available to upgrade.", - "item.projectexpansion.matter_upgrader.tooltip_creative": "The above restriction does not apply if you are in creative.", - "item.projectexpansion.matter_upgrader": "Matter Upgrader", - "item.projectexpansion.matter_upgrader.not_owner": "You do not own this.", - "item.projectexpansion.matter_upgrader.max_upgrade": "This block has been maxed out.", - "item.projectexpansion.matter_upgrader.not_learned": "You must learn \"%s\" before upgrading to it.", - "item.projectexpansion.matter_upgrader.not_enough_emc": "You do not have enough emc, you need %s.", - "item.projectexpansion.matter_upgrader.done": "Upgrade done, %s emc has been used.", - "item.projectexpansion.matter_upgrader.done_creative": "Upgrade done, no emc has been used.", - "item.projectexpansion.arcane_tablet": "Arcane Tablet", - "item.projectexpansion.final_star_shard": "Final Star Shard", - "item.projectexpansion.final_star": "Final Star", - "item.projectexpansion.final_star.tooltip": "This does nothing, it exists to show off.", - "item.projectexpansion.magnum_star_ein": "Magnum Star Ein", - "item.projectexpansion.magnum_star_zwei": "Magnum Star Zwei", - "item.projectexpansion.magnum_star_drei": "Magnum Star Drei", - "item.projectexpansion.magnum_star_vier": "Magnum Star Vier", - "item.projectexpansion.magnum_star_sphere": "Magnum Star Sphere", - "item.projectexpansion.magnum_star_omega": "Magnum Star Omega", - "item.projectexpansion.colossal_star_ein": "Colossal Star Ein", - "item.projectexpansion.colossal_star_zwei": "Colossal Star Zwei", - "item.projectexpansion.colossal_star_drei": "Colossal Star Drei", - "item.projectexpansion.colossal_star_vier": "Colossal Star Vier", - "item.projectexpansion.colossal_star_sphere": "Colossal Star Sphere", - "item.projectexpansion.colossal_star_omega": "Colossal Star Omega", - "itemGroup.projectexpansion": "Project Expansion", - "text.projectexpansion.wip": "WIP!", - "text.projectexpansion.provider_error": "Failed to fetch ProjectE provider." + "item.projectexpansion.green_matter": "Green Matter", + "item.projectexpansion.lime_matter": "Lime Matter", + "item.projectexpansion.yellow_matter": "Yellow Matter", + "item.projectexpansion.orange_matter": "Orange Matter", + "item.projectexpansion.white_matter": "White Matter", + "item.projectexpansion.fading_matter": "Fading Matter", + "item.projectexpansion.matter_upgrader.tooltip": "Upgrades collectors, power flowers, and relays in-place.", + "item.projectexpansion.matter_upgrader.tooltip2": "You must have learned the next tier, and have the difference in emc available to upgrade.", + "item.projectexpansion.matter_upgrader.tooltip_creative": "The above restriction does not apply if you are in creative.", + "item.projectexpansion.matter_upgrader": "Matter Upgrader", + "item.projectexpansion.matter_upgrader.not_owner": "You do not own this.", + "item.projectexpansion.matter_upgrader.max_upgrade": "This block has been maxed out.", + "item.projectexpansion.matter_upgrader.not_learned": "You must learn \"%s\" before upgrading to it.", + "item.projectexpansion.matter_upgrader.not_enough_emc": "You do not have enough emc, you need %s.", + "item.projectexpansion.matter_upgrader.done": "Upgrade done, %s emc has been used.", + "item.projectexpansion.matter_upgrader.done_creative": "Upgrade done, no emc has been used.", + "item.projectexpansion.arcane_tablet": "Arcane Tablet", + "item.projectexpansion.final_star_shard": "Final Star Shard", + "item.projectexpansion.final_star": "Final Star", + "item.projectexpansion.final_star.tooltip": "This does nothing, it exists to show off.", + "item.projectexpansion.infinite_fuel": "Infinite Fuel", + "item.projectexpansion.infinite_fuel.tooltip": "This item will not be consumed, fuel will be provided via your emc.", + "item.projectexpansion.infinite_fuel.not_enough_emc": "You do not have enough emc to use this, you need %s.", + "item.projectexpansion.infinite_steak": "Infinite Steak", + "item.projectexpansion.infinite_steak.tooltip": "Infinite food via your emc.", + "item.projectexpansion.infinite_steak.not_enough_emc": "You do not have enough emc to use this, you need %s.", + "item.projectexpansion.magnum_star_ein": "Magnum Star Ein", + "item.projectexpansion.magnum_star_zwei": "Magnum Star Zwei", + "item.projectexpansion.magnum_star_drei": "Magnum Star Drei", + "item.projectexpansion.magnum_star_vier": "Magnum Star Vier", + "item.projectexpansion.magnum_star_sphere": "Magnum Star Sphere", + "item.projectexpansion.magnum_star_omega": "Magnum Star Omega", + "item.projectexpansion.colossal_star_ein": "Colossal Star Ein", + "item.projectexpansion.colossal_star_zwei": "Colossal Star Zwei", + "item.projectexpansion.colossal_star_drei": "Colossal Star Drei", + "item.projectexpansion.colossal_star_vier": "Colossal Star Vier", + "item.projectexpansion.colossal_star_sphere": "Colossal Star Sphere", + "item.projectexpansion.colossal_star_omega": "Colossal Star Omega", + "itemGroup.projectexpansion": "Project Expansion", + "text.projectexpansion.wip": "WIP!", + "text.projectexpansion.provider_error": "Failed to fetch ProjectE provider." } \ No newline at end of file diff --git a/src/main/resources/assets/projectexpansion/models/block/transmutation_interface.json b/src/main/resources/assets/projectexpansion/models/block/transmutation_interface.json new file mode 100644 index 00000000..f746c68e --- /dev/null +++ b/src/main/resources/assets/projectexpansion/models/block/transmutation_interface.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "projectexpansion:block/transmutation_interface" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/projectexpansion/models/item/arcane_table.json b/src/main/resources/assets/projectexpansion/models/item/arcane_table.json index 1e313171..641bb1e0 100644 --- a/src/main/resources/assets/projectexpansion/models/item/arcane_table.json +++ b/src/main/resources/assets/projectexpansion/models/item/arcane_table.json @@ -4,7 +4,7 @@ "0": "projectexpansion:block/arcane_table/top", "1": "projectexpansion:block/arcane_table/bottom", "2": "projectexpansion:block/arcane_table/side", - "particle": "projectexpansion:block/arcane/top" + "particle": "projectexpansion:block/arcane_table/top" }, "elements": [ { diff --git a/src/main/resources/assets/projectexpansion/models/item/infinite_fuel.json b/src/main/resources/assets/projectexpansion/models/item/infinite_fuel.json new file mode 100644 index 00000000..b8a52172 --- /dev/null +++ b/src/main/resources/assets/projectexpansion/models/item/infinite_fuel.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "projectexpansion:item/infinite_fuel" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/projectexpansion/models/item/infinite_steak.json b/src/main/resources/assets/projectexpansion/models/item/infinite_steak.json new file mode 100644 index 00000000..37b232c5 --- /dev/null +++ b/src/main/resources/assets/projectexpansion/models/item/infinite_steak.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "projectexpansion:item/infinite_steak" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/projectexpansion/models/item/transmutation_interface.json b/src/main/resources/assets/projectexpansion/models/item/transmutation_interface.json new file mode 100644 index 00000000..f927428b --- /dev/null +++ b/src/main/resources/assets/projectexpansion/models/item/transmutation_interface.json @@ -0,0 +1,3 @@ +{ + "parent": "projectexpansion:block/transmutation_interface" +} \ No newline at end of file diff --git a/src/main/resources/assets/projectexpansion/textures/block/hue b/src/main/resources/assets/projectexpansion/textures/block/hue deleted file mode 100644 index 59bbc258..00000000 --- a/src/main/resources/assets/projectexpansion/textures/block/hue +++ /dev/null @@ -1,3 +0,0 @@ -Hue -60 -Chroma 0 -Lightness -10 diff --git a/src/main/resources/assets/projectexpansion/textures/block/transmutation_interface.png b/src/main/resources/assets/projectexpansion/textures/block/transmutation_interface.png new file mode 100644 index 0000000000000000000000000000000000000000..b77f3205c996ee4fc0026e154ea2f1e56cc3f099 GIT binary patch literal 2556 zcmbVOeQeZZ7{BomCy_B0!Vrv>VssOF{kXQ*mfgPYZtNCr+_sb5_?YzC-mUKLdbAyP zBXf`uA%iFkwn#(-B#0P+KpY87K*C&NK*115G=L%|B7Z;xL<}gty)QPyV6jQB?fd+m z=lMM!@AF=#r+Uu#aZ|^cOs4U!N=Get<{EeQDDb9UTBtd$S(!uhz-8kcN~Uf(FWI3Zp6BQO-RqBw>S1c%WaWr0!`47{mgfU9*>q99^C4i!k!9`otP{O$=pi)Q*OA%cISUiJ`HYvKI zH7UcG&WMLN0I7AmGd>>6B^=JU&~)cA5JoB?k40x$}Clu)|-o^&E0yB(Apr=Ws*IU*`Ctf?gDP zoqsA=6u5w*hIx=lIm`zoG#UxQP^LbdT?r{Fa17X42Cuv9c8{tAOwR6fLm(xz; zEKMVX8Bfr4yE#`x)A@)Xxg0ha#A=phkrO4W#g7RD!qNd6@dro|VR(#2EEbX^csAh2 zNinVOP=pqvx6=9|&=2qe=9dB_LXk9yh&ah2tSAC~D=k=sfB?1@oz|bH%3yEvq5p5k z=mid#0VH^11KD5@Tw>8@v{k4jxyaHOxWG0BS4!US6!|0Z>k%1bpMW8wo018y1G5Pv zmZm5Rm0I`6aVg|;$RHnDk_ZShp^=a@43&W4@u-IB@XJ6cG|-<~YP6K|!PHwwE;j08 zdED<&AK@_@(wJyQg}ko z-B&X=_tt9i=Ioq86n!o0_-~EJv>WWN?b~j>_0q#S^UAj338l@p(fQ7aE1~R*zaPC6 znI`;vXlM5ZS4Z!K+h2?xySEn~`0o9eT@yPUrFoO4mu?)`d|<4#ebp~L=g(u$p|ROa zqoeoW(!Uo>S$(u|f8+jn{Z}__Sao9i_o2&|@4u_``R<-VFD%?UpW9mf!)ClY{H-9qzk(<=i*IoQj<_D%5#aJpLovQ+3At*-wAaIr%Scy`>&rL~n8D zZk3 Zb?e%12M+H*ODx9!Gncd4v9Ekd$G=L?TgLzZ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/projectexpansion/textures/item/infinite_fuel.png b/src/main/resources/assets/projectexpansion/textures/item/infinite_fuel.png new file mode 100644 index 0000000000000000000000000000000000000000..502d5564043a36fa7be698bbf6a7f1864279921a GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G~10G|+7V=0Y0tFJV>q#tiw2NY}moBRz(v6ck+1^)*EhTq%xKn8IZctjR6 zFz_t{VaE15EAxSZ(Vi}jAsWH4{fvAE6gZf@AO6peJAL4&Wbo<0&PDgOK9@Rj*RkMa z1JAz$ifbDr$;vJ41E_r?)NR*p-v;b?e5pzIg@r>>m8S c+hiEZUoOvdFxf=%E6^GSPgg&ebxsLQ0IyV3RsaA1 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/projectexpansion/textures/item/infinite_steak.png b/src/main/resources/assets/projectexpansion/textures/item/infinite_steak.png new file mode 100644 index 0000000000000000000000000000000000000000..e31152fa3aace8cf2559c4837d881e6bebb2bc5f GIT binary patch literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}H0G|-oD4pPHhk_ROswsY*amJx@L;4D>v#b