From 0e48b0444d13a5eb2988f6f5f307d512bd165b9b Mon Sep 17 00:00:00 2001 From: Flanks255 <32142731+Flanks255@users.noreply.github.com> Date: Thu, 30 Dec 2021 11:30:01 -0600 Subject: [PATCH] pushing progress... --- gradle.properties | 2 +- src/generated/resources/.cache/cache | 12 ++++++------ .../models/item/canolaoil.json | 3 --- .../models/item/crystaloil.json | 3 --- .../models/item/empoweredoil.json | 3 --- .../models/item/oil_generator.json | 3 --- .../models/item/refinedcanolaoil.json | 3 --- .../data/BlockStateGenerator.java | 2 +- .../data/ItemModelGenerator.java | 7 ++++++- .../data/SolidFuelGenerator.java | 17 +++++++++++++---- .../mod/ActuallyAdditions.java | 3 +++ .../mod/blocks/BlockCrusher.java | 10 ++++++++-- .../mod/config/CommonConfig.java | 4 ++-- .../mod/crafting/CrushingRecipe.java | 6 +++++- .../mod/crafting/SolidFuelRecipe.java | 6 +++++- .../mod/fluids/InitFluids.java | 8 ++++---- .../mod/inventory/gui/CrusherScreen.java | 8 +++----- .../mod/items/ActuallyItems.java | 5 +++-- .../mod/items/ItemBattery.java | 4 ++++ .../mod/items/ItemBooklet.java | 1 + .../mod/items/ItemCoffee.java | 4 ++++ .../mod/items/ItemEngineerGoggles.java | 6 +++--- .../mod/items/ItemFillingWand.java | 5 ++++- .../mod/items/ItemFilter.java | 3 +++ .../mod/items/ItemHairBall.java | 2 +- .../mod/items/ItemLaserWrench.java | 3 +++ .../mod/items/ItemPhantomConnector.java | 3 +++ .../mod/items/ItemPlayerProbe.java | 3 +++ .../mod/items/ItemPotionRing.java | 3 +++ .../mod/items/ItemSolidifiedExperience.java | 2 +- .../mod/items/ItemWaterBowl.java | 2 +- .../mod/items/ItemWingsOfTheBats.java | 10 +++++----- .../actuallyadditions/mod/items/ItemWorm.java | 2 +- .../mod/items/base/ItemEnergy.java | 10 ++++------ .../mod/proxy/ClientProxy.java | 3 --- .../mod/recipe/CrusherRecipeRegistry.java | 14 +++++++++----- .../mod/tile/TileEntityCoalGenerator.java | 5 ++--- .../mod/tile/TileEntityCrusher.java | 6 ++++-- .../mod/util/ResourceReloader.java | 10 ++++------ .../actuallyadditions/mod/util/WorldUtil.java | 2 +- .../registration/AABlockReg.java | 5 ++--- .../blockstates/canola_oil.json | 7 +++++++ .../assets/actuallyadditions/lang/en_us.json | 8 ++++---- .../models/block/canola_oil.json | 5 +++++ .../textures/fluid/canola_oil_flowing.png | Bin 0 -> 10800 bytes .../fluid/canola_oil_flowing.png.mcmeta | 3 +++ .../textures/fluid/canola_oil_still.png | Bin 0 -> 10857 bytes .../textures/fluid/canola_oil_still.png.mcmeta | 5 +++++ 48 files changed, 150 insertions(+), 91 deletions(-) delete mode 100644 src/generated/resources/assets/actuallyadditions/models/item/canolaoil.json delete mode 100644 src/generated/resources/assets/actuallyadditions/models/item/crystaloil.json delete mode 100644 src/generated/resources/assets/actuallyadditions/models/item/empoweredoil.json delete mode 100644 src/generated/resources/assets/actuallyadditions/models/item/oil_generator.json delete mode 100644 src/generated/resources/assets/actuallyadditions/models/item/refinedcanolaoil.json create mode 100644 src/main/resources/assets/actuallyadditions/blockstates/canola_oil.json create mode 100644 src/main/resources/assets/actuallyadditions/models/block/canola_oil.json create mode 100644 src/main/resources/assets/actuallyadditions/textures/fluid/canola_oil_flowing.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/fluid/canola_oil_flowing.png.mcmeta create mode 100644 src/main/resources/assets/actuallyadditions/textures/fluid/canola_oil_still.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/fluid/canola_oil_still.png.mcmeta diff --git a/gradle.properties b/gradle.properties index 5b60007ec..817be8199 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,7 @@ mod_version=1.1.52 # Forge game_version=1.16.5 -forge_version=36.2.2 +forge_version=36.2.8 # Parchment (Mappings) parchment_version=2021.10.17 diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index fd64c3473..f3fa0fbb2 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -251,9 +251,9 @@ ea2f5b2bf99670f4df05889ab67c73686a26a58b assets/actuallyadditions/models/item/bl be227e074a54982e1e9f9f304e63df3095006955 assets/actuallyadditions/models/item/black_quartz_wall.json 3679056a9aee03821a997a2616b8808af7bfe4b7 assets/actuallyadditions/models/item/breaker.json f3282e55e71d26a32cee1287881ac2d5e91c30a8 assets/actuallyadditions/models/item/canola.json +e4b8fbed9602c0cf96eff84111586799412982fc assets/actuallyadditions/models/item/canola_oil_bucket.json 08c70d561c219bb4c6d21b5f56192df81f054e0a assets/actuallyadditions/models/item/canola_press.json 0507025fadef30e363cbc825265576c782880f7b assets/actuallyadditions/models/item/canola_seeds.json -b0f7c3915b646ccd27ca6ff40517e19e2a0fb7ef assets/actuallyadditions/models/item/canolaoil.json 83b47876ba2c85d3ba83e36ee9b02a8d458f7230 assets/actuallyadditions/models/item/charcoal_block.json 36179c5cc77dc38364a1931f2fabbf846ef9c39d assets/actuallyadditions/models/item/chiseled_black_quartz_block.json 27c8ed9e39b600161a6a327db0ac53e10acc13bb assets/actuallyadditions/models/item/chiseled_black_quartz_slab.json @@ -269,7 +269,6 @@ bbf723238f6536295339f0b0b5b052cf89b92d5b assets/actuallyadditions/models/item/co 1e7e61701473dbf3dfc18bb5b9fa7be91b443dd8 assets/actuallyadditions/models/item/crusher.json aeacd7ca465c19d6cbcef25e61023397c4472ab3 assets/actuallyadditions/models/item/crusher_double.json 3a9cfcb0a3bec43f6556b3bdab09731758a36cc2 assets/actuallyadditions/models/item/crystallized_canola_seed.json -da3b2fa50416d61d8b3683ee74f9572b36f4fea3 assets/actuallyadditions/models/item/crystaloil.json ec0cdeb022c4e0bc43c0fd5d3e3e758361f7ebe2 assets/actuallyadditions/models/item/diamatine_aiot.json 9e7e70f1efd1fdc83d78d0526657c229acf7293d assets/actuallyadditions/models/item/diamatine_axe.json 04cc1e040d286dbf4e8b828b52a76829ed51e14a assets/actuallyadditions/models/item/diamatine_boots.json @@ -342,7 +341,6 @@ d019c764e87de9f1856dc8d12b880d874e215fac assets/actuallyadditions/models/item/em f7c65e8d77b723f4fd5b7349c7f8ec23f2e6440b assets/actuallyadditions/models/item/empowered_restonia_crystal_block.json 9b80be9493b12d8a5c05469055204128df718901 assets/actuallyadditions/models/item/empowered_void_crystal.json c70272562c084ce2a04933ca04e270f9b3493cf4 assets/actuallyadditions/models/item/empowered_void_crystal_block.json -485a85b7176f60fce7286293767107c51649e488 assets/actuallyadditions/models/item/empoweredoil.json 88457aa73c273fb512b5c4103a1183e93dcec412 assets/actuallyadditions/models/item/empowerer.json 8c5fb751f1795df8cec1100368b153ab02d003d4 assets/actuallyadditions/models/item/empty_cup.json 0d0fd6b7df3a378a58cd35168fb0e1c3d54c6b03 assets/actuallyadditions/models/item/ender_casing.json @@ -433,7 +431,6 @@ a1da5a212c8f8454a1e632e083986fc86cbe8de7 assets/actuallyadditions/models/item/le 3247178d5c1350c2a93e544687c12a88cf28a363 assets/actuallyadditions/models/item/lens_of_the_miner.json 55ce74cb71c0db54712382cd61f2c27214201c94 assets/actuallyadditions/models/item/long_range_breaker.json abf136ca89e5d896fd9ae6f89d0113d5793b3b1c assets/actuallyadditions/models/item/netherite_aiot.json -cec09548b75f7f3e2079e75e1aaf5253e2f318ba assets/actuallyadditions/models/item/oil_generator.json 0dc90f8c2d8cc17f4859d196c4ab22caf52e7bd1 assets/actuallyadditions/models/item/palis_aiot.json 8a77539480881e4fa9ea005fc3aedf2d1cb96591 assets/actuallyadditions/models/item/palis_axe.json 29f970ca565c5c644753d5620e7067d4be4dbfaf assets/actuallyadditions/models/item/palis_boots.json @@ -474,7 +471,6 @@ af0512cfb813e6fb43bb920db3eb1f1c2976ace6 assets/actuallyadditions/models/item/qu bb0fbcacce026c672b8d98db22694fd2b6eefb20 assets/actuallyadditions/models/item/quartz_sword.json 7f7a44a1afcbfbe63bc55be016a81dc265515b24 assets/actuallyadditions/models/item/quintuple_battery.json d8cf56e92afa1ea98eead8af208cc6281c815ede assets/actuallyadditions/models/item/ranged_collector.json -12b62d8ed574812fb48d32e416b3c9f4ebf70ec8 assets/actuallyadditions/models/item/refinedcanolaoil.json a607d6e415c04d4aa4128446c3dbb40b9aafc5d5 assets/actuallyadditions/models/item/resonant_rice.json 68d8873d46bfbe65112f29bc4b1159e586d6705f assets/actuallyadditions/models/item/restonia_aiot.json 5300d3a0ece8b26a0bc0631df9151bebaef8a1b9 assets/actuallyadditions/models/item/restonia_axe.json @@ -710,9 +706,13 @@ a63b57c27d8548ddd13d64d18b098d4f5c127a30 data/actuallyadditions/recipes/restonia 85d2537a973d520c9eaaf2f15109c265faa2df3a data/actuallyadditions/recipes/rice_slime_potion.json d4ca5d77d16ff6fdfc60e665694fdd97bce25463 data/actuallyadditions/recipes/shock_suppressor.json 655fab699bb97ec252deb61d91fbef6f4738fe1c data/actuallyadditions/recipes/single_battery.json +cc4cd7379a8de3372d2a8310ea576bf5ca08c20e data/actuallyadditions/recipes/solid_fuel/charcoal-block.json 8cb9b0e94a5de6e0bb74d808207ddf041d444280 data/actuallyadditions/recipes/solid_fuel/charcoal.json +1207208a8393f613e537cb4542e1766a837282e4 data/actuallyadditions/recipes/solid_fuel/coal-block.json 3a4c2b0ca2e150ef24edb2defe018f6574cb4827 data/actuallyadditions/recipes/solid_fuel/coal.json -9d2105a32a4781f3fd10a70f97ba243b1c0ceb34 data/actuallyadditions/recipes/solid_fuel/stick.json +a7488a05a2fbc4e4017a4b7769f65ff8ce48613a data/actuallyadditions/recipes/solid_fuel/lava.json +5bf07f52f8a4b7734a800dc64e5759caf48257b9 data/actuallyadditions/recipes/solid_fuel/stick.json +1234e59cf88f96ae64032ce6bb0c734dc8870471 data/actuallyadditions/recipes/solid_fuel/tiny-coal.json 8ebd738f3968564e22ba6841eb821e5064c78588 data/actuallyadditions/recipes/stone_aiot.json bc7a41d9f36cc43e146e0b727b6f439cc0d29343 data/actuallyadditions/recipes/teleport_staff.json bdf7dbf563485903e444400d341e56d0bf308481 data/actuallyadditions/recipes/tiny_torch.json diff --git a/src/generated/resources/assets/actuallyadditions/models/item/canolaoil.json b/src/generated/resources/assets/actuallyadditions/models/item/canolaoil.json deleted file mode 100644 index 1c2d7ff43..000000000 --- a/src/generated/resources/assets/actuallyadditions/models/item/canolaoil.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "actuallyadditions:block/canolaoil" -} \ No newline at end of file diff --git a/src/generated/resources/assets/actuallyadditions/models/item/crystaloil.json b/src/generated/resources/assets/actuallyadditions/models/item/crystaloil.json deleted file mode 100644 index e18623031..000000000 --- a/src/generated/resources/assets/actuallyadditions/models/item/crystaloil.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "actuallyadditions:block/crystaloil" -} \ No newline at end of file diff --git a/src/generated/resources/assets/actuallyadditions/models/item/empoweredoil.json b/src/generated/resources/assets/actuallyadditions/models/item/empoweredoil.json deleted file mode 100644 index 66f5b8dca..000000000 --- a/src/generated/resources/assets/actuallyadditions/models/item/empoweredoil.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "actuallyadditions:block/empoweredoil" -} \ No newline at end of file diff --git a/src/generated/resources/assets/actuallyadditions/models/item/oil_generator.json b/src/generated/resources/assets/actuallyadditions/models/item/oil_generator.json deleted file mode 100644 index 24323e038..000000000 --- a/src/generated/resources/assets/actuallyadditions/models/item/oil_generator.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "actuallyadditions:block/oil_generator" -} \ No newline at end of file diff --git a/src/generated/resources/assets/actuallyadditions/models/item/refinedcanolaoil.json b/src/generated/resources/assets/actuallyadditions/models/item/refinedcanolaoil.json deleted file mode 100644 index 3d975aec4..000000000 --- a/src/generated/resources/assets/actuallyadditions/models/item/refinedcanolaoil.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "actuallyadditions:block/refinedcanolaoil" -} \ No newline at end of file diff --git a/src/main/java/de/ellpeck/actuallyadditions/data/BlockStateGenerator.java b/src/main/java/de/ellpeck/actuallyadditions/data/BlockStateGenerator.java index 266f5b996..a442c7259 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/data/BlockStateGenerator.java +++ b/src/main/java/de/ellpeck/actuallyadditions/data/BlockStateGenerator.java @@ -2,6 +2,7 @@ package de.ellpeck.actuallyadditions.data; import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks; +import de.ellpeck.actuallyadditions.mod.fluids.InitFluids; import net.minecraft.block.Block; import net.minecraft.block.SlabBlock; import net.minecraft.block.StairsBlock; @@ -164,7 +165,6 @@ public class BlockStateGenerator extends BlockStateProvider { slabBlock((SlabBlock) ActuallyBlocks.BLACK_QUARTZ_BRICK_SLAB.get(), modLoc("block/black_quartz_brick_block"), modLoc("block/black_quartz_brick_block")); slabBlock((SlabBlock) ActuallyBlocks.ETHETIC_GREEN_SLAB.get(), modLoc("block/ethetic_green_block"), modLoc("block/ethetic_green_block")); slabBlock((SlabBlock) ActuallyBlocks.ETHETIC_WHITE_SLAB.get(), modLoc("block/ethetic_white_block"), modLoc("block/ethetic_white_block")); - } diff --git a/src/main/java/de/ellpeck/actuallyadditions/data/ItemModelGenerator.java b/src/main/java/de/ellpeck/actuallyadditions/data/ItemModelGenerator.java index 11f2223d0..52c5c044d 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/data/ItemModelGenerator.java +++ b/src/main/java/de/ellpeck/actuallyadditions/data/ItemModelGenerator.java @@ -2,6 +2,7 @@ package de.ellpeck.actuallyadditions.data; import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks; +import de.ellpeck.actuallyadditions.mod.fluids.InitFluids; import de.ellpeck.actuallyadditions.mod.items.ActuallyItems; import net.minecraft.block.Block; import net.minecraft.block.WallBlock; @@ -10,6 +11,7 @@ import net.minecraft.item.Item; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.generators.ItemModelProvider; import net.minecraftforge.client.model.generators.ModelFile; +import net.minecraftforge.client.model.generators.loaders.DynamicBucketModelBuilder; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.fml.RegistryObject; @@ -36,7 +38,10 @@ public class ItemModelGenerator extends ItemModelProvider { // Blocks - ActuallyBlocks.BLOCKS.getEntries().forEach(this::registerBlockModel); + ActuallyBlocks.BLOCKS.getEntries().stream().filter(b -> !b.get().getRegistryName().getPath().contains("oil")).forEach(this::registerBlockModel); + + withExistingParent(InitFluids.CANOLA_OIL.getBucket().getRegistryName().getPath(), "forge:item/bucket") + .customLoader((builder, template) -> DynamicBucketModelBuilder.begin(builder, template).fluid(InitFluids.CANOLA_OIL.get())); } private void registerBlockModel(RegistryObject block) { diff --git a/src/main/java/de/ellpeck/actuallyadditions/data/SolidFuelGenerator.java b/src/main/java/de/ellpeck/actuallyadditions/data/SolidFuelGenerator.java index 467cdec3d..108ec151f 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/data/SolidFuelGenerator.java +++ b/src/main/java/de/ellpeck/actuallyadditions/data/SolidFuelGenerator.java @@ -1,8 +1,12 @@ package de.ellpeck.actuallyadditions.data; import com.google.gson.JsonObject; +import de.ellpeck.actuallyadditions.api.ActuallyTags; import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; +import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks; import de.ellpeck.actuallyadditions.mod.crafting.SolidFuelRecipe; +import de.ellpeck.actuallyadditions.mod.items.ActuallyItems; +import de.ellpeck.actuallyadditions.mod.items.base.ActuallyItem; import net.minecraft.data.DataGenerator; import net.minecraft.data.DirectoryCache; import net.minecraft.data.IFinishedRecipe; @@ -13,6 +17,7 @@ import net.minecraft.item.crafting.Ingredient; import net.minecraft.tags.ITag; import net.minecraft.util.ResourceLocation; +import javax.annotation.Nonnull; import java.nio.file.Path; import java.util.function.Consumer; @@ -22,15 +27,19 @@ public class SolidFuelGenerator extends RecipeProvider { } @Override - protected void saveAdvancement(DirectoryCache pCache, JsonObject pAdvancementJson, Path pPath) { + protected void saveAdvancement(@Nonnull DirectoryCache pCache, @Nonnull JsonObject pAdvancementJson, @Nonnull Path pPath) { //Nah } @Override - protected void buildShapelessRecipes(Consumer consumer) { + protected void buildShapelessRecipes(@Nonnull Consumer consumer) { addFuel(consumer, "coal", Items.COAL, 48000, 1600); - addFuel(consumer, "stick", Items.STICK, 1000, 200); //TEST + addFuel(consumer, "stick", Items.STICK, 3000, 100); + addFuel(consumer, "tiny-coal", ActuallyTags.Items.TINY_COALS, 6000, 200); addFuel(consumer, "charcoal", Items.CHARCOAL, 48000, 1600); + addFuel(consumer, "coal-block", Items.COAL_BLOCK, 480000, 16000); + addFuel(consumer, "charcoal-block", ActuallyBlocks.CHARCOAL_BLOCK.getItem(), 480000, 16000); + addFuel(consumer, "lava", Items.LAVA_BUCKET, 600000, 20000); } private void addFuel(Consumer consumer, String name, Item item, int energy, int burnTime) { @@ -39,7 +48,7 @@ public class SolidFuelGenerator extends RecipeProvider { private void addFuel(Consumer consumer, String name, Ingredient item, int energy, int burnTime) { consumer.accept(new SolidFuelRecipe.FinishedRecipe(new ResourceLocation(ActuallyAdditions.MODID, "solid_fuel/"+name), item, energy, burnTime)); } - private void addFuel(Consumer consumer, String name, ITag tag, int energy, int burnTime) { + private void addFuel(Consumer consumer, String name, ITag tag, int energy, int burnTime) { consumer.accept(new SolidFuelRecipe.FinishedRecipe(new ResourceLocation(ActuallyAdditions.MODID, "solid_fuel/"+name), Ingredient.of(tag), energy, burnTime)); } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/ActuallyAdditions.java b/src/main/java/de/ellpeck/actuallyadditions/mod/ActuallyAdditions.java index 314c94af2..36107410a 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/ActuallyAdditions.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/ActuallyAdditions.java @@ -42,6 +42,8 @@ import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.util.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.crafting.CraftingHelper; import net.minecraftforge.event.AddReloadListenerEvent; @@ -76,6 +78,7 @@ public class ActuallyAdditions { // public static final boolean DEOBF = (boolean) Launch.blackboard.get("fml.deobfuscatedEnvironment"); public static final ItemGroup GROUP = new ItemGroup(MODID) { + @OnlyIn(Dist.CLIENT) @Override public ItemStack makeIcon() { return new ItemStack(ActuallyItems.ITEM_BOOKLET.get()); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockCrusher.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockCrusher.java index b876c5112..a68f9fb69 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockCrusher.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockCrusher.java @@ -47,13 +47,19 @@ public class BlockCrusher extends BlockContainerBase { this.registerDefaultState(getStateDefinition().any().setValue(HORIZONTAL_FACING, Direction.NORTH).setValue(LIT, false)); } - //@Override - public TileEntity newBlockEntity(IBlockReader worldIn) { + @Nullable + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { return this.isDouble ? new TileEntityCrusherDouble() : new TileEntityCrusher(); } + @Override + public boolean hasTileEntity(BlockState state) { + return true; + } + @Override public void randomTick(BlockState state, ServerWorld world, BlockPos pos, Random rand) { if (state.getValue(BlockStateProperties.LIT)) { diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/config/CommonConfig.java b/src/main/java/de/ellpeck/actuallyadditions/mod/config/CommonConfig.java index 089a2e65c..8e0a3388c 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/config/CommonConfig.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/config/CommonConfig.java @@ -90,8 +90,8 @@ public class CommonConfig { ELEVEN = BUILDER.comment("11?").defineInRange("whatIs11", 11, 0, 12); - REDSTONECONFIGURATOR = BUILDER.comment("define the item used to configure Redstone Mode").define("redstoneConfigurator", Items.REDSTONE_TORCH.getRegistryName().toString(), obj -> obj instanceof String && ResourceLocation.isValidResourceLocation((String) obj)); - RELAYCONFIGURATOR = BUILDER.comment("define the item used to configure Direction in laser relays").define("relayConfigurator", Items.COMPASS.getRegistryName().toString(), obj -> obj instanceof String && ResourceLocation.isValidResourceLocation((String) obj)); + REDSTONECONFIGURATOR = BUILDER.comment("define the item used to configure Redstone Mode").define("redstoneConfigurator", Items.REDSTONE_TORCH.getRegistryName().toString(), obj -> obj instanceof String); + RELAYCONFIGURATOR = BUILDER.comment("define the item used to configure Direction in laser relays").define("relayConfigurator", Items.COMPASS.getRegistryName().toString(), obj -> obj instanceof String); BUILDER.pop(); } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/crafting/CrushingRecipe.java b/src/main/java/de/ellpeck/actuallyadditions/mod/crafting/CrushingRecipe.java index 1b14edeb3..962245408 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/crafting/CrushingRecipe.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/crafting/CrushingRecipe.java @@ -48,10 +48,14 @@ public class CrushingRecipe implements IRecipe { } @Override - public boolean matches(IInventory pInv, @Nonnull World pLevel) { + public boolean matches(IInventory pInv, World pLevel) { return input.test(pInv.getItem(0)); } + public boolean matches (ItemStack stack) { + return input.test(stack); + } + @Override @Nonnull public ItemStack assemble(@Nonnull IInventory pInv) { diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/crafting/SolidFuelRecipe.java b/src/main/java/de/ellpeck/actuallyadditions/mod/crafting/SolidFuelRecipe.java index 7f5e0f1b9..677205f6c 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/crafting/SolidFuelRecipe.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/crafting/SolidFuelRecipe.java @@ -37,10 +37,14 @@ public class SolidFuelRecipe implements IRecipe { } @Override - public boolean matches(SingleItem pInv, @Nullable World pLevel) { + public boolean matches(SingleItem pInv, World pLevel) { return itemIngredient.test(pInv.getItem()); } + public boolean matches(ItemStack stack) { + return this.itemIngredient.test(stack); + } + @Override public ItemStack assemble(SingleItem pInv) { return ItemStack.EMPTY; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/fluids/InitFluids.java b/src/main/java/de/ellpeck/actuallyadditions/mod/fluids/InitFluids.java index 155525fd8..5baa12abe 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/fluids/InitFluids.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/fluids/InitFluids.java @@ -21,10 +21,10 @@ public final class InitFluids { public static final DeferredRegister FLUIDS = DeferredRegister.create(ForgeRegistries.FLUIDS, ActuallyAdditions.MODID); public static final DeferredRegister FLUID_BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, ActuallyAdditions.MODID); - public static final FluidAA CANOLA_OIL = new FluidAA("canolaoil", "canolaoil"); - public static final FluidAA REFINED_CANOLA_OIL = new FluidAA("refinedcanolaoil", "refinedcanolaoil"); - public static final FluidAA CRYSTALIZED_OIL = new FluidAA("crystaloil", "crystaloil"); - public static final FluidAA EMPOWERED_OIL = new FluidAA("empoweredoil", "empoweredoil"); + public static final FluidAA CANOLA_OIL = new FluidAA("canola_oil", "canola_oil"); + public static final FluidAA REFINED_CANOLA_OIL = new FluidAA("refined_canola_oil", "refined_canola_oil"); + public static final FluidAA CRYSTALIZED_OIL = new FluidAA("crystal_oil", "crystal_oil"); + public static final FluidAA EMPOWERED_OIL = new FluidAA("empowered_oil", "empowered_oil"); public static void init(IEventBus bus) { diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/gui/CrusherScreen.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/gui/CrusherScreen.java index 03e061618..24e83a490 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/gui/CrusherScreen.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/gui/CrusherScreen.java @@ -58,6 +58,9 @@ public class CrusherScreen extends AAScreen { this.buttonAutoSplit = new Buttons.SmallerButton( this.leftPos - 10, this.topPos, new StringTextComponent("S"), (button) -> actionPerformed(0)); this.addButton(this.buttonAutoSplit); } + + titleLabelX = (int) (imageWidth / 2.0f - font.width(title) / 2.0f); + titleLabelY = -10; } protected void actionPerformed(int id) { @@ -88,11 +91,6 @@ public class CrusherScreen extends AAScreen { } } - @Override - public void renderLabels(@Nonnull MatrixStack matrices, int x, int y) { - AssetUtil.displayNameString(matrices, this.font, this.imageWidth, -10, this.tileGrinder); - } - @Override public void renderBg(MatrixStack matrices, float f, int x, int y) { RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ActuallyItems.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ActuallyItems.java index 2480aea1e..5d39da1a7 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ActuallyItems.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ActuallyItems.java @@ -24,6 +24,7 @@ import net.minecraft.inventory.EquipmentSlotType; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemTier; +import net.minecraft.item.Items; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.registries.DeferredRegister; @@ -95,7 +96,7 @@ public final class ActuallyItems { public static final RegistryObject ENGINEERS_GOGGLES = ITEMS.register("engineers_goggles", () -> new ItemEngineerGoggles(false)); public static final RegistryObject LASER_UPGRADE_RANGE = ITEMS.register("laser_upgrade_range", ItemBase::new); public static final RegistryObject LASER_UPGRADE_INVISIBILITY = ITEMS.register("laser_upgrade_invisibility", ItemBase::new); - public static final RegistryObject HANDHELD_FILLER = ITEMS.register("handheld_filler", ItemFillingWand::new); + public static final Supplier HANDHELD_FILLER = ITEMS.register("handheld_filler", ItemFillingWand::new); public static final RegistryObject TRAVELERS_SACK = ITEMS.register("travelers_sack", () -> new ItemBag(false)); public static final RegistryObject VOID_SACK = ITEMS.register("void_sack", () -> new ItemBag(true)); public static final RegistryObject WORM = ITEMS.register("worm", ItemWorm::new); @@ -278,7 +279,7 @@ public final class ActuallyItems { public static final RegistryObject ENORI_BOOTS = ITEMS.register("enori_boots", () -> new ItemArmorAA(ArmorMaterials.ENORI, EquipmentSlotType.FEET)); public static final RegistryObject ENORI_AIOT = ITEMS.register("enori_aiot", () -> new AllInOneTool(ToolMaterials.ENORI)); - public static final Set> SIMPLE_ITEMS = ImmutableSet.of( + public static final Set> SIMPLE_ITEMS = ImmutableSet.of( // Crystals BLACK_QUARTZ, RESTONIA_CRYSTAL, PALIS_CRYSTAL, DIAMATINE_CRYSTAL, VOID_CRYSTAL, EMERADIC_CRYSTAL, ENORI_CRYSTAL, EMPOWERED_RESTONIA_CRYSTAL, diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemBattery.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemBattery.java index 62c682e16..af29d4810 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemBattery.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemBattery.java @@ -23,6 +23,9 @@ import net.minecraft.util.Hand; 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.api.distmarker.OnlyIns; import net.minecraftforge.energy.CapabilityEnergy; import javax.annotation.Nullable; @@ -66,6 +69,7 @@ public class ItemBattery extends ItemEnergy { return super.use(worldIn, player, hand); } + @OnlyIn(Dist.CLIENT) @Override public void appendHoverText(ItemStack stack, @Nullable World playerIn, List list, ITooltipFlag advanced) { super.appendHoverText(stack, playerIn, list, advanced); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemBooklet.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemBooklet.java index c870b9a94..93f17c90b 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemBooklet.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemBooklet.java @@ -73,6 +73,7 @@ public class ItemBooklet extends ItemBase implements IHudDisplay { return ActionResult.success(player.getItemInHand(hand)); } + @OnlyIn(Dist.CLIENT) @Override public void appendHoverText(ItemStack stack, @Nullable World playerIn, List tooltip, ITooltipFlag advanced) { tooltip.add(new TranslationTextComponent("tooltip." + ActuallyAdditions.MODID + "." + this.getDescription().getString() + ".desc")); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemCoffee.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemCoffee.java index 4a5c2303e..2e62bfada 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemCoffee.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemCoffee.java @@ -26,6 +26,8 @@ import net.minecraft.item.crafting.Ingredient; import net.minecraft.nbt.CompoundNBT; import net.minecraft.util.text.ITextComponent; import net.minecraft.world.World; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fml.ModList; import javax.annotation.Nullable; @@ -104,6 +106,8 @@ public class ItemCoffee extends ItemFoodBase { public CompoundNBT getShareTag(ItemStack stack) { return super.getShareTag(stack); } + + @OnlyIn(Dist.CLIENT) @Override public void appendHoverText(ItemStack stack, @Nullable World playerIn, List tooltip, ITooltipFlag advanced) { //PotionEffect[] effects = ActuallyAdditionsAPI.methodHandler.getEffectsFromStack(stack); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemEngineerGoggles.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemEngineerGoggles.java index e5b27b7c9..8a6805166 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemEngineerGoggles.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemEngineerGoggles.java @@ -40,7 +40,7 @@ public class ItemEngineerGoggles extends ItemArmorAA implements IGoggles { super(ArmorMaterials.GOGGLES, EquipmentSlotType.HEAD, ActuallyItems.defaultProps().setNoRepair().durability(0)); this.displayMobs = displayMobs; - MinecraftForge.EVENT_BUS.register(this); + //MinecraftForge.EVENT_BUS.register(this); } public static boolean isWearing(PlayerEntity player) { @@ -51,7 +51,7 @@ public class ItemEngineerGoggles extends ItemArmorAA implements IGoggles { @OnlyIn(Dist.CLIENT) @SubscribeEvent public void onClientTick(TickEvent.ClientTickEvent event) { - PlayerEntity player = ClientProxy.getCurrentPlayer(); + /* PlayerEntity player = ClientProxy.getCurrentPlayer(); if (player != null && isWearing(player)) { ItemStack face = player.inventory.armor.get(3); if (((IGoggles) face.getItem()).displaySpectralMobs()) { @@ -85,7 +85,7 @@ public class ItemEngineerGoggles extends ItemArmorAA implements IGoggles { } } this.cachedGlowingEntities.clear(); - } + }*/ } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemFillingWand.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemFillingWand.java index 3b87c0a2d..e674bfcf2 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemFillingWand.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemFillingWand.java @@ -33,6 +33,8 @@ import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.text.IFormattableTextComponent; import net.minecraft.util.text.ITextComponent; 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; @@ -85,7 +87,7 @@ public class ItemFillingWand extends ItemEnergy { ItemStack stack = context.getPlayer().getItemInHand(context.getHand()); if (!context.getLevel().isClientSide && context.getPlayer().getUseItemRemainingTicks() <= 0) { - if (context.getPlayer().isShiftKeyDown()) { + if (context.getPlayer().isCrouching()) { BlockState state = context.getLevel().getBlockState(context.getClickedPos()); saveData(state, stack); return ActionResultType.SUCCESS; @@ -218,6 +220,7 @@ public class ItemFillingWand extends ItemEnergy { } } + @OnlyIn(Dist.CLIENT) @Override public void appendHoverText(ItemStack stack, @Nullable World worldIn, List tooltip, ITooltipFlag flagIn) { super.appendHoverText(stack, worldIn, tooltip, flagIn); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemFilter.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemFilter.java index ef5c6f484..83c82d927 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemFilter.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemFilter.java @@ -24,6 +24,8 @@ import net.minecraft.util.Hand; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.StringTextComponent; import net.minecraft.world.World; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fml.network.NetworkHooks; import javax.annotation.Nullable; @@ -44,6 +46,7 @@ public class ItemFilter extends ItemBase { return ActionResult.pass(player.getItemInHand(hand)); } + @OnlyIn(Dist.CLIENT) @Override public void appendHoverText(ItemStack stack, @Nullable World worldIn, List tooltip, ITooltipFlag flagIn) { super.appendHoverText(stack, worldIn, tooltip, flagIn); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemHairBall.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemHairBall.java index 1b4343706..4be2aa7f7 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemHairBall.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemHairBall.java @@ -36,7 +36,7 @@ public class ItemHairBall extends ItemBase { super(); // TODO: [port] move this. - MinecraftForge.EVENT_BUS.register(this); + //MinecraftForge.EVENT_BUS.register(this); } @SubscribeEvent diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemLaserWrench.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemLaserWrench.java index 70fefe604..0f7b45293 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemLaserWrench.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemLaserWrench.java @@ -26,6 +26,8 @@ import net.minecraft.util.text.StringTextComponent; import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TranslationTextComponent; import net.minecraft.world.World; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; import java.util.List; @@ -88,6 +90,7 @@ public class ItemLaserWrench extends ItemBase { // return new CompoundNBT(); // } + @OnlyIn(Dist.CLIENT) @Override public void appendHoverText(ItemStack stack, World playerIn, List list, ITooltipFlag advanced) { BlockPos coords = ItemPhantomConnector.getStoredPosition(stack); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemPhantomConnector.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemPhantomConnector.java index eeef98196..7607025e6 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemPhantomConnector.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemPhantomConnector.java @@ -29,6 +29,8 @@ import net.minecraft.util.text.StringTextComponent; import net.minecraft.util.text.TextFormatting; 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.util.List; @@ -112,6 +114,7 @@ public class ItemPhantomConnector extends ItemBase { return new CompoundNBT(); } + @OnlyIn(Dist.CLIENT) @Override public void appendHoverText(ItemStack stack, @Nullable World playerIn, List list, ITooltipFlag advanced) { BlockPos coords = getStoredPosition(stack); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemPlayerProbe.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemPlayerProbe.java index 0c4dd0240..c33fb8855 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemPlayerProbe.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemPlayerProbe.java @@ -27,6 +27,8 @@ import net.minecraft.util.Hand; 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 javax.annotation.Nullable; import java.util.List; @@ -108,6 +110,7 @@ public class ItemPlayerProbe extends ItemBase { return ActionResultType.FAIL; } + @OnlyIn(Dist.CLIENT) @Override public void appendHoverText(ItemStack stack, @Nullable World playerIn, List tooltip, ITooltipFlag advanced) { if (stack.getOrCreateTag().contains("Name")) { diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemPotionRing.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemPotionRing.java index bd20045de..3c844dce9 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemPotionRing.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemPotionRing.java @@ -23,6 +23,8 @@ import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.MathHelper; import net.minecraft.util.text.ITextComponent; 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; @@ -218,6 +220,7 @@ public class ItemPotionRing extends ItemBase implements IDisplayStandItem { return false; } + @OnlyIn(Dist.CLIENT) @Override public void appendHoverText(ItemStack stack, @Nullable World playerIn, List tooltip, ITooltipFlag advanced) { super.appendHoverText(stack, playerIn, tooltip, advanced); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemSolidifiedExperience.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemSolidifiedExperience.java index f8bbbc981..3ff7e4e08 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemSolidifiedExperience.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemSolidifiedExperience.java @@ -36,7 +36,7 @@ public class ItemSolidifiedExperience extends ItemBase { super(); // TODO: [port] move this to another place - MinecraftForge.EVENT_BUS.register(this); + //MinecraftForge.EVENT_BUS.register(this); } @SubscribeEvent diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemWaterBowl.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemWaterBowl.java index 1075a1a16..4ebae3c3c 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemWaterBowl.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemWaterBowl.java @@ -40,7 +40,7 @@ public class ItemWaterBowl extends ItemBase { public ItemWaterBowl() { super(ActuallyItems.defaultProps().stacksTo(1)); - MinecraftForge.EVENT_BUS.register(this); + //MinecraftForge.EVENT_BUS.register(this); } @SubscribeEvent diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemWingsOfTheBats.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemWingsOfTheBats.java index 2da1e53a0..11c61c83c 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemWingsOfTheBats.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemWingsOfTheBats.java @@ -41,7 +41,7 @@ public class ItemWingsOfTheBats extends ItemBase { super(ActuallyItems.defaultProps().stacksTo(1)); // TODO: Lets move this somewhere global. Don't like event logic in a single place. - MinecraftForge.EVENT_BUS.register(this); + //MinecraftForge.EVENT_BUS.register(this); } /** @@ -67,23 +67,23 @@ public class ItemWingsOfTheBats extends ItemBase { @Override public double getDurabilityForDisplay(ItemStack stack) { - PlayerEntity player = ClientProxy.getCurrentPlayer(); +/* PlayerEntity player = ClientProxy.getCurrentPlayer(); if (player != null) { // PlayerData.PlayerSave data = PlayerData.getDataFromPlayer(player); double diff = MAX_FLY_TIME - 1;//data.batWingsFlyTime; // TODO: fix me return 1 - diff / MAX_FLY_TIME; - } + }*/ //TODO return super.getDurabilityForDisplay(stack); } @Override public int getRGBDurabilityForDisplay(ItemStack stack) { - PlayerEntity player = ClientProxy.getCurrentPlayer(); +/* PlayerEntity player = ClientProxy.getCurrentPlayer(); if (player != null) { // PlayerData.PlayerSave data = PlayerData.getDataFromPlayer(player); int curr = 1;//data.batWingsFlyTime; // TODO: fix me return MathHelper.hsvToRgb(Math.max(0.0F, 1 - (float) curr / MAX_FLY_TIME) / 3.0F, 1.0F, 1.0F); - } + }*/ return super.getRGBDurabilityForDisplay(stack); } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemWorm.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemWorm.java index 9eee1f13a..fddbf2f0c 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemWorm.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemWorm.java @@ -35,7 +35,7 @@ public class ItemWorm extends ItemBase { public ItemWorm() { super(); - MinecraftForge.EVENT_BUS.register(this); + //MinecraftForge.EVENT_BUS.register(this); // TODO: [port] Not sure what this does // this.addPropertyOverride(new ResourceLocation(ActuallyAdditions.MODID, "snail"), (IItemPropertyGetter) (stack, world, entity) -> "snail mail".equalsIgnoreCase(stack.getDisplayName().getString()) diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/base/ItemEnergy.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/base/ItemEnergy.java index f476bb500..2b1afb135 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/base/ItemEnergy.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/base/ItemEnergy.java @@ -67,6 +67,7 @@ public abstract class ItemEnergy extends ItemBase { // } + @OnlyIn(Dist.CLIENT) @Override public void appendHoverText(ItemStack stack, @Nullable World worldIn, List tooltip, ITooltipFlag flagIn) { super.appendHoverText(stack, worldIn, tooltip, flagIn); @@ -77,7 +78,6 @@ public abstract class ItemEnergy extends ItemBase { } @Override - @OnlyIn(Dist.CLIENT) public boolean isFoil(ItemStack stack) { return false; } @@ -112,11 +112,9 @@ public abstract class ItemEnergy extends ItemBase { @Override public int getRGBDurabilityForDisplay(ItemStack stack) { - PlayerEntity player = ClientProxy.getCurrentPlayer(); - if (player != null && player.level != null) { - float[] color = AssetUtil.getWheelColor(player.level.getGameTime() % 256); - return MathHelper.color(color[0] / 255F, color[1] / 255F, color[2] / 255F); - } + //float[] color = MathHelper.hsvToRgb(1, 1, 1); + //float[] color = AssetUtil.getWheelColor(player.level.getGameTime() % 256); + //return MathHelper.color(color[0] / 255F, color[1] / 255F, color[2] / 255F); return super.getRGBDurabilityForDisplay(stack); } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/proxy/ClientProxy.java b/src/main/java/de/ellpeck/actuallyadditions/mod/proxy/ClientProxy.java index 8c712a7e8..21d95f875 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/proxy/ClientProxy.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/proxy/ClientProxy.java @@ -81,7 +81,4 @@ public class ClientProxy { // COLOR_PRODIVIDING_BLOCKS_FOR_REGISTERING.add(block); // } - public static ClientPlayerEntity getCurrentPlayer() { - return Minecraft.getInstance().player; - } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/recipe/CrusherRecipeRegistry.java b/src/main/java/de/ellpeck/actuallyadditions/mod/recipe/CrusherRecipeRegistry.java index 37342e994..41464c20d 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/recipe/CrusherRecipeRegistry.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/recipe/CrusherRecipeRegistry.java @@ -10,6 +10,10 @@ package de.ellpeck.actuallyadditions.mod.recipe; +import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI; +import de.ellpeck.actuallyadditions.mod.crafting.CrushingRecipe; +import net.minecraft.item.ItemStack; + public final class CrusherRecipeRegistry { // // public static final ArrayList SEARCH_CASES = new ArrayList<>(); @@ -103,11 +107,11 @@ public final class CrusherRecipeRegistry { // return false; // } // - // public static CrusherRecipe getRecipeFromInput(ItemStack input) { - // for (CrusherRecipe recipe : ActuallyAdditionsAPI.CRUSHER_RECIPES) - // if (recipe.matches(input)) return recipe; - // return null; - // } + public static CrushingRecipe getRecipeFromInput(ItemStack input) { + for (CrushingRecipe recipe : ActuallyAdditionsAPI.CRUSHER_RECIPES) + if (recipe.matches(input)) return recipe; + return null; + } // // public static class SearchCase { // diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCoalGenerator.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCoalGenerator.java index 0a2ae6f09..7a215da5a 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCoalGenerator.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCoalGenerator.java @@ -118,7 +118,7 @@ public class TileEntityCoalGenerator extends TileEntityInventoryBase implements ItemStack stack = this.inv.getStackInSlot(0); if (!stack.isEmpty()) { for (SolidFuelRecipe fuelRecipe : ActuallyAdditionsAPI.SOLID_FUEL_RECIPES) { - if (fuelRecipe.matches(new SingleItem(stack), null)) { + if (fuelRecipe.matches(stack)) { this.currentRecipe = fuelRecipe; this.maxBurnTime = fuelRecipe.getBurnTime(); this.currentBurnTime = this.maxBurnTime; @@ -151,9 +151,8 @@ public class TileEntityCoalGenerator extends TileEntityInventoryBase implements @Override public IAcceptor getAcceptor() { return (slot, stack, automation) -> { - SingleItem singleItem = new SingleItem(stack); for (SolidFuelRecipe recipe : ActuallyAdditionsAPI.SOLID_FUEL_RECIPES) { - if (recipe.matches(singleItem, null))return true; + if (recipe.matches(stack))return true; } return false; }; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCrusher.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCrusher.java index 84bc5c7d1..d18cd5d44 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCrusher.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCrusher.java @@ -15,6 +15,7 @@ import de.ellpeck.actuallyadditions.mod.crafting.CrushingRecipe; import de.ellpeck.actuallyadditions.mod.inventory.CrusherContainer; import de.ellpeck.actuallyadditions.mod.misc.SoundHandler; import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor; +import de.ellpeck.actuallyadditions.mod.recipe.CrusherRecipeRegistry; import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerAA.IAcceptor; import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerAA.IRemover; import de.ellpeck.actuallyadditions.mod.util.StackUtil; @@ -31,6 +32,7 @@ import net.minecraft.util.Direction; import net.minecraft.util.SoundCategory; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.TranslationTextComponent; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.energy.IEnergyStorage; @@ -216,7 +218,7 @@ public class TileEntityCrusher extends TileEntityInventoryBase implements IButto } public void finishCrushing(int theInput, int theFirstOutput, int theSecondOutput) { - CrushingRecipe recipe = null; //CrusherRecipeRegistry.getRecipeFromInput(this.inv.getStackInSlot(theInput));//TODO + CrushingRecipe recipe = CrusherRecipeRegistry.getRecipeFromInput(this.inv.getStackInSlot(theInput));//TODO if (recipe == null) { return; } @@ -281,7 +283,7 @@ public class TileEntityCrusher extends TileEntityInventoryBase implements IButto @Override public ITextComponent getDisplayName() { - return StringTextComponent.EMPTY; + return new TranslationTextComponent("container.actuallyadditions.crusher"); } @Nullable diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/util/ResourceReloader.java b/src/main/java/de/ellpeck/actuallyadditions/mod/util/ResourceReloader.java index 468eca2ac..f0f192d94 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/util/ResourceReloader.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/util/ResourceReloader.java @@ -6,19 +6,17 @@ import de.ellpeck.actuallyadditions.mod.crafting.ActuallyRecipes; import net.minecraft.item.crafting.RecipeManager; import net.minecraft.resources.DataPackRegistries; import net.minecraft.resources.IResourceManager; -import net.minecraftforge.resource.IResourceType; -import net.minecraftforge.resource.ISelectiveResourceReloadListener; +import net.minecraft.resources.IResourceManagerReloadListener; -import java.util.function.Predicate; - -public class ResourceReloader implements ISelectiveResourceReloadListener { +@SuppressWarnings("deprecation") +public class ResourceReloader implements IResourceManagerReloadListener { private final DataPackRegistries data; public ResourceReloader(DataPackRegistries dataPackRegistries) { data = dataPackRegistries; } @Override - public void onResourceManagerReload(IResourceManager resourceManager, Predicate resourcePredicate) { + public void onResourceManagerReload(IResourceManager pResourceManager) { RecipeManager recipeManager = data.getRecipeManager(); ActuallyAdditionsAPI.EMPOWERER_RECIPES.clear(); ActuallyAdditionsAPI.EMPOWERER_RECIPES.addAll(recipeManager.getAllRecipesFor(ActuallyRecipes.Types.EMPOWERING)); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/util/WorldUtil.java b/src/main/java/de/ellpeck/actuallyadditions/mod/util/WorldUtil.java index 08e1a04a7..e8130a3a6 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/util/WorldUtil.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/util/WorldUtil.java @@ -127,7 +127,7 @@ public final class WorldUtil { int drain = from.extractEnergy(maxTransfer, true); if (drain > 0) { int filled = to.receiveEnergy(drain, false); - to.extractEnergy(filled, false); + from.extractEnergy(filled, false); } }); }); diff --git a/src/main/java/de/ellpeck/actuallyadditions/registration/AABlockReg.java b/src/main/java/de/ellpeck/actuallyadditions/registration/AABlockReg.java index c429c5539..6b1d59789 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/registration/AABlockReg.java +++ b/src/main/java/de/ellpeck/actuallyadditions/registration/AABlockReg.java @@ -15,10 +15,9 @@ import java.util.function.Function; import java.util.function.Supplier; public class AABlockReg implements Supplier { -//public class AABlock implements Supplier { private final String name; - private final RegistryObject block; - private final RegistryObject item; + private RegistryObject block; + private RegistryObject item; private RegistryObject> tileEntityType; public AABlockReg(String name, Supplier blockSupplier, Function itemSupplier, Supplier tileSupplier) { diff --git a/src/main/resources/assets/actuallyadditions/blockstates/canola_oil.json b/src/main/resources/assets/actuallyadditions/blockstates/canola_oil.json new file mode 100644 index 000000000..8cb636ad1 --- /dev/null +++ b/src/main/resources/assets/actuallyadditions/blockstates/canola_oil.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "actuallyadditions:block/canola_oil" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/actuallyadditions/lang/en_us.json b/src/main/resources/assets/actuallyadditions/lang/en_us.json index 154276c70..635f665e0 100644 --- a/src/main/resources/assets/actuallyadditions/lang/en_us.json +++ b/src/main/resources/assets/actuallyadditions/lang/en_us.json @@ -121,8 +121,8 @@ "block.actuallyadditions.giant_chest": "Small Storage Crate", "block.actuallyadditions.giant_chest_medium": "Medium Storage Crate", "block.actuallyadditions.giant_chest_large": "Large Storage Crate", - "block.actuallyadditions.grinder": "Crusher", - "block.actuallyadditions.grinder_double": "Double Crusher", + "block.actuallyadditions.crusher": "Crusher", + "block.actuallyadditions.double_crusher": "Double Crusher", "block.actuallyadditions.furnace_double": "Powered Furnace", "block.actuallyadditions.fishing_net": "Fishing Net", "block.actuallyadditions.furnace_solar": "Solar Panel", @@ -643,8 +643,8 @@ "_comment": "Container Names", "container.actuallyadditions.inputter": "ESD", "container.actuallyadditions.inputterAdvanced": "Advanced ESD", - "container.actuallyadditions.grinder": "Crusher", - "container.actuallyadditions.grinderDouble": "Double Crusher", + "container.actuallyadditions.crusher": "Crusher", + "container.actuallyadditions.double_crusher": "Double Crusher", "container.actuallyadditions.furnaceDouble": "Powered Furnace", "container.actuallyadditions.feeder": "Feeder", "container.actuallyadditions.giantChest": "Small Storage Crate", diff --git a/src/main/resources/assets/actuallyadditions/models/block/canola_oil.json b/src/main/resources/assets/actuallyadditions/models/block/canola_oil.json new file mode 100644 index 000000000..ea5c7b4a7 --- /dev/null +++ b/src/main/resources/assets/actuallyadditions/models/block/canola_oil.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "actuallyadditions:fluid/canola_oil_still" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/actuallyadditions/textures/fluid/canola_oil_flowing.png b/src/main/resources/assets/actuallyadditions/textures/fluid/canola_oil_flowing.png new file mode 100644 index 0000000000000000000000000000000000000000..f5982ec906794f34c9b4a6ee5f45edaa0643aa20 GIT binary patch literal 10800 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/actuallyadditions/textures/fluid/canola_oil_flowing.png.mcmeta b/src/main/resources/assets/actuallyadditions/textures/fluid/canola_oil_flowing.png.mcmeta new file mode 100644 index 000000000..4f0718ac9 --- /dev/null +++ b/src/main/resources/assets/actuallyadditions/textures/fluid/canola_oil_flowing.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation": {} +} \ No newline at end of file diff --git a/src/main/resources/assets/actuallyadditions/textures/fluid/canola_oil_still.png b/src/main/resources/assets/actuallyadditions/textures/fluid/canola_oil_still.png new file mode 100644 index 0000000000000000000000000000000000000000..59569bc405ab0b33afb86900f5a04098bed0a11d GIT binary patch literal 10857 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