From 2df15b9cce5d73305ae2066e0225bff92549a8ed Mon Sep 17 00:00:00 2001 From: yuesha-yc Date: Fri, 29 Oct 2021 00:00:00 -0700 Subject: [PATCH] Add gas containers back, but wtf, why forge:steam is not registered? --- build.gradle | 2 +- .../teammoeg/steampowered/ItemRegistry.java | 5 +- .../content/engine/SteamEngineBlock.java | 33 ++++- .../steampowered/item/GasContainerItem.java | 134 ------------------ src/main/resources/META-INF/mods.toml | 4 +- .../emptying/pressurized_steam_container.json | 17 +++ .../filling/pressurized_steam_container.json | 17 +++ .../recipes/pressurized_gas_container.json | 20 +++ 8 files changed, 90 insertions(+), 142 deletions(-) delete mode 100644 src/main/java/com/teammoeg/steampowered/item/GasContainerItem.java create mode 100644 src/main/resources/data/steampowered/recipes/emptying/pressurized_steam_container.json create mode 100644 src/main/resources/data/steampowered/recipes/filling/pressurized_steam_container.json create mode 100644 src/main/resources/data/steampowered/recipes/pressurized_gas_container.json diff --git a/build.gradle b/build.gradle index 9980227..22388ad 100644 --- a/build.gradle +++ b/build.gradle @@ -18,7 +18,7 @@ apply plugin: 'net.minecraftforge.gradle' apply plugin: 'org.spongepowered.mixin' group = 'com.teammoeg' -version = '1.16.5-1.1.2' +version = '1.16.5-1.1.3' java { archivesBaseName = 'steampowered' diff --git a/src/main/java/com/teammoeg/steampowered/ItemRegistry.java b/src/main/java/com/teammoeg/steampowered/ItemRegistry.java index 9f13add..1327217 100644 --- a/src/main/java/com/teammoeg/steampowered/ItemRegistry.java +++ b/src/main/java/com/teammoeg/steampowered/ItemRegistry.java @@ -19,12 +19,13 @@ package com.teammoeg.steampowered; import net.minecraft.item.Item; +import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; public class ItemRegistry { public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, SteamPowered.MODID); -// public static RegistryObject pressurizedGasContainer = ITEMS.register("pressurized_gas_container", () -> new GasContainerItem(Fluids.EMPTY, (new Item.Properties()).stacksTo(16).tab(SteamPowered.itemGroup))); -// public static RegistryObject pressurizedSteamContainer = ITEMS.register("pressurized_steam_container", () -> new GasContainerItem(FluidRegistry.steam, new Item.Properties().stacksTo(1).tab(SteamPowered.itemGroup).craftRemainder(ItemRegistry.pressurizedGasContainer.get()))); + public static RegistryObject pressurizedGasContainer = ITEMS.register("pressurized_gas_container", () -> new Item(new Item.Properties())); + public static RegistryObject pressurizedSteamContainer = ITEMS.register("pressurized_steam_container", () -> new Item(new Item.Properties())); } diff --git a/src/main/java/com/teammoeg/steampowered/content/engine/SteamEngineBlock.java b/src/main/java/com/teammoeg/steampowered/content/engine/SteamEngineBlock.java index a38599b..09d9ab4 100644 --- a/src/main/java/com/teammoeg/steampowered/content/engine/SteamEngineBlock.java +++ b/src/main/java/com/teammoeg/steampowered/content/engine/SteamEngineBlock.java @@ -22,25 +22,34 @@ import com.jozufozu.flywheel.core.PartialModel; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllShapes; import com.simibubi.create.content.contraptions.components.flywheel.engine.EngineBlock; +import com.teammoeg.steampowered.FluidRegistry; +import com.teammoeg.steampowered.ItemRegistry; import com.teammoeg.steampowered.registrate.SPTiles; import net.minecraft.block.Block; import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.BlockItemUseContext; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.particles.ParticleTypes; import net.minecraft.state.BooleanProperty; import net.minecraft.state.StateContainer; import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; +import net.minecraft.util.*; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.capability.CapabilityFluidHandler; +import net.minecraftforge.fluids.capability.IFluidHandler; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.items.IItemHandler; import javax.annotation.Nullable; import java.util.Random; @@ -103,4 +112,22 @@ public class SteamEngineBlock extends EngineBlock { p_180655_2_.addParticle(ParticleTypes.LAVA, d0 + d5, d1 + d6, d2 + d7, 0.0D, 0.0D, 0.0D); } } + + @Override + public ActionResultType use(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult blockRayTraceResult) { + if (player.getItemInHand(hand).getItem() == ItemRegistry.pressurizedSteamContainer.get()) { + TileEntity te = world.getBlockEntity(pos); + if (te instanceof SteamEngineTileEntity) { + SteamEngineTileEntity steamEngine = (SteamEngineTileEntity) te; + IFluidHandler cap = steamEngine.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY).resolve().get(); + cap.fill(new FluidStack(FluidRegistry.steam.get(), 1000), IFluidHandler.FluidAction.EXECUTE); + player.setItemInHand(hand, new ItemStack(ItemRegistry.pressurizedGasContainer.get())); + return ActionResultType.SUCCESS; + } else { + return ActionResultType.PASS; + } + } else { + return super.use(state, world, pos, player, hand, blockRayTraceResult); + } + } } diff --git a/src/main/java/com/teammoeg/steampowered/item/GasContainerItem.java b/src/main/java/com/teammoeg/steampowered/item/GasContainerItem.java deleted file mode 100644 index 6b8bb92..0000000 --- a/src/main/java/com/teammoeg/steampowered/item/GasContainerItem.java +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright (c) 2021 TeamMoeg - * - * This file is part of Steam Powered. - * - * Steam Powered is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * Steam Powered is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Steam Powered. If not, see . - */ - -package com.teammoeg.steampowered.item; - -import com.teammoeg.steampowered.FluidRegistry; -import com.teammoeg.steampowered.ItemRegistry; -import net.minecraft.advancements.CriteriaTriggers; -import net.minecraft.block.BlockState; -import net.minecraft.block.FlowingFluidBlock; -import net.minecraft.block.IBucketPickupHandler; -import net.minecraft.block.ILiquidContainer; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.fluid.Fluid; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.BucketItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.stats.Stats; -import net.minecraft.tags.FluidTags; -import net.minecraft.util.*; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.RayTraceContext; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.world.World; - -import javax.annotation.Nullable; - -public class GasContainerItem extends BucketItem { - public GasContainerItem(Fluid p_i49025_1_, Properties p_i49025_2_) { - super(p_i49025_1_, p_i49025_2_); - } - - public GasContainerItem(java.util.function.Supplier supplier, Item.Properties builder) { - super(supplier, builder); - } - -// @Override -// protected ItemStack getEmptySuccessItem(ItemStack stack, PlayerEntity player) { -// return !player.abilities.instabuild ? new ItemStack(ItemRegistry.pressurizedGasContainer.get()) : stack; -// } - -// public ActionResult use(World p_77659_1_, PlayerEntity p_77659_2_, Hand p_77659_3_) { -// ItemStack itemstack = p_77659_2_.getItemInHand(p_77659_3_); -// RayTraceResult raytraceresult = getPlayerPOVHitResult(p_77659_1_, p_77659_2_, this.content == Fluids.EMPTY ? RayTraceContext.FluidMode.SOURCE_ONLY : RayTraceContext.FluidMode.NONE); -// ActionResult ret = net.minecraftforge.event.ForgeEventFactory.onBucketUse(p_77659_2_, p_77659_1_, itemstack, raytraceresult); -// if (ret != null) return ret; -// if (raytraceresult.getType() == RayTraceResult.Type.MISS) { -// return ActionResult.pass(itemstack); -// } else if (raytraceresult.getType() != RayTraceResult.Type.BLOCK) { -// return ActionResult.pass(itemstack); -// } else { -// BlockRayTraceResult blockraytraceresult = (BlockRayTraceResult) raytraceresult; -// BlockPos blockpos = blockraytraceresult.getBlockPos(); -// Direction direction = blockraytraceresult.getDirection(); -// BlockPos blockpos1 = blockpos.relative(direction); -// if (p_77659_1_.mayInteract(p_77659_2_, blockpos) && p_77659_2_.mayUseItemAt(blockpos1, direction, itemstack)) { -// if (this.content == Fluids.EMPTY) { -// BlockState blockstate1 = p_77659_1_.getBlockState(blockpos); -// -// // ONLY STEAM ALLOWED -// if (blockstate1.getBlock() instanceof FlowingFluidBlock) { -// Fluid tempFluid = ((FlowingFluidBlock) blockstate1.getBlock()).getFluid(); -// boolean isSteam = tempFluid != Fluids.EMPTY && tempFluid == FluidRegistry.steam.get(); -// if (isSteam && blockstate1.getBlock() instanceof IBucketPickupHandler) { -// Fluid fluid = ((IBucketPickupHandler) blockstate1.getBlock()).takeLiquid(p_77659_1_, blockpos, blockstate1); -// if (fluid != Fluids.EMPTY) { -// p_77659_2_.awardStat(Stats.ITEM_USED.get(this)); -// -// SoundEvent soundevent = this.content.getAttributes().getFillSound(); -// if (soundevent == null) -// soundevent = fluid.is(FluidTags.LAVA) ? SoundEvents.BUCKET_FILL_LAVA : SoundEvents.BUCKET_FILL; -// p_77659_2_.playSound(soundevent, 1.0F, 1.0F); -// ItemStack itemstack1 = DrinkHelper.createFilledResult(itemstack, p_77659_2_, new ItemStack(fluid.getBucket())); -// if (!p_77659_1_.isClientSide) { -// CriteriaTriggers.FILLED_BUCKET.trigger((ServerPlayerEntity) p_77659_2_, new ItemStack(fluid.getBucket())); -// } -// -// return ActionResult.sidedSuccess(itemstack1, p_77659_1_.isClientSide()); -// } -// } -// } -// -// return ActionResult.fail(itemstack); -// } else { -// BlockState blockstate = p_77659_1_.getBlockState(blockpos); -// BlockPos blockpos2 = canBlockContainFluid(p_77659_1_, blockpos, blockstate) ? blockpos : blockpos1; -// if (this.emptyBucket(p_77659_2_, p_77659_1_, blockpos2, blockraytraceresult)) { -// this.checkExtraContent(p_77659_1_, itemstack, blockpos2); -// if (p_77659_2_ instanceof ServerPlayerEntity) { -// CriteriaTriggers.PLACED_BLOCK.trigger((ServerPlayerEntity) p_77659_2_, blockpos2, itemstack); -// } -// -// p_77659_2_.awardStat(Stats.ITEM_USED.get(this)); -// return ActionResult.sidedSuccess(this.getEmptySuccessItem(itemstack, p_77659_2_), p_77659_1_.isClientSide()); -// } else { -// return ActionResult.fail(itemstack); -// } -// } -// } else { -// return ActionResult.fail(itemstack); -// } -// } -// } - -// @Override -// public net.minecraftforge.common.capabilities.ICapabilityProvider initCapabilities(ItemStack stack, @Nullable net.minecraft.nbt.CompoundNBT nbt) { -// if (this.getClass() == GasContainerItem.class) -// return new net.minecraftforge.fluids.capability.wrappers.FluidBucketWrapper(stack); -// else -// return super.initCapabilities(stack, nbt); -// } - -// private boolean canBlockContainFluid(World worldIn, BlockPos posIn, BlockState blockstate) { -// return blockstate.getBlock() instanceof ILiquidContainer && ((ILiquidContainer) blockstate.getBlock()).canPlaceLiquid(worldIn, posIn, blockstate, this.content); -// } -} diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 6adb806..7a16f73 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -4,9 +4,9 @@ license = "GPLv3" issueTrackerURL = "https://github.com/TeamMoegMC/Steam-Powered/issues" [[mods]] #mandatory modId = "steampowered" #mandatory -version = "1.16.5-1.1.2" #mandatory +version = "1.16.5-1.1.3" #mandatory displayName = "Create: Steam Powered" #mandatory -authors = "YueSha, khjxiaogu, goumo_g" +authors = "[TeamMoeg] YueSha, khjxiaogu, goumo_g" credits = "We appreciate MRH0 for his code on RPM-FE conversion logic which we adapted in Steam Powered" description = ''' Expanding Create mod to the Steam Age diff --git a/src/main/resources/data/steampowered/recipes/emptying/pressurized_steam_container.json b/src/main/resources/data/steampowered/recipes/emptying/pressurized_steam_container.json new file mode 100644 index 0000000..ff3dad7 --- /dev/null +++ b/src/main/resources/data/steampowered/recipes/emptying/pressurized_steam_container.json @@ -0,0 +1,17 @@ +{ + "type": "create:emptying", + "ingredients": [ + { + "item": "steampowered:pressurized_steam_container" + } + ], + "results": [ + { + "item": "steampowered:pressurized_gas_container" + }, + { + "fluid": "steampowered:steam", + "amount": 1000 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/steampowered/recipes/filling/pressurized_steam_container.json b/src/main/resources/data/steampowered/recipes/filling/pressurized_steam_container.json new file mode 100644 index 0000000..2c7030b --- /dev/null +++ b/src/main/resources/data/steampowered/recipes/filling/pressurized_steam_container.json @@ -0,0 +1,17 @@ +{ + "type": "create:filling", + "ingredients": [ + { + "item": "steampowered:pressurized_gas_container" + }, + { + "fluidTag": "forge:steam", + "amount": 1000 + } + ], + "results": [ + { + "item": "steampowered:pressurized_steam_container" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/steampowered/recipes/pressurized_gas_container.json b/src/main/resources/data/steampowered/recipes/pressurized_gas_container.json new file mode 100644 index 0000000..2a345f5 --- /dev/null +++ b/src/main/resources/data/steampowered/recipes/pressurized_gas_container.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "SCS", + "SCS", + "SCS" + ], + "key": { + "S": { + "tag": "forge:plates/copper" + }, + "C": { + "tag": "forge:glass/colorless" + } + }, + "result": { + "item": "steampowered:pressurized_gas_container", + "count": 2 + } +} \ No newline at end of file