From 38446def2e4bd6b885c3992defddc3d04dc5537d Mon Sep 17 00:00:00 2001 From: Andrew-71 Date: Tue, 12 Mar 2024 21:47:45 +0300 Subject: [PATCH] Remove unused files, simplify func in CigaretteItem --- CHANGELOG | 1 + .../su/a71/new_soviet/blocks/StoveBlock.java | 66 ------------------ .../su/a71/new_soviet/blocks/WindowBlock.java | 3 +- .../a71/new_soviet/items/CigaretteItem.java | 12 ++-- .../assets/new_soviet/sounds/bruh.ogg | Bin 12870 -> 0 bytes 5 files changed, 8 insertions(+), 74 deletions(-) delete mode 100644 src/main/java/su/a71/new_soviet/blocks/StoveBlock.java delete mode 100644 src/main/resources/assets/new_soviet/sounds/bruh.ogg diff --git a/CHANGELOG b/CHANGELOG index 58c4b4f..075ba54 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -76,6 +76,7 @@ Due to sheer amount of changes, some may be undocumented. We hope you enjoy this * Added a questionable sound option * At least 2 new advancements * Bug fixes + * Added some missing crafting recipes * Stone-cutting recipe for slabs now gives 2 blocks * Fixed typos in Russian translation * Fixed a few missing drops/tags/recipes related to concrete diff --git a/src/main/java/su/a71/new_soviet/blocks/StoveBlock.java b/src/main/java/su/a71/new_soviet/blocks/StoveBlock.java deleted file mode 100644 index 7608133..0000000 --- a/src/main/java/su/a71/new_soviet/blocks/StoveBlock.java +++ /dev/null @@ -1,66 +0,0 @@ -package su.a71.new_soviet.blocks; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.block.*; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.block.piston.PistonBehavior; -import net.minecraft.item.ItemPlacementContext; -import net.minecraft.sound.BlockSoundGroup; -import net.minecraft.state.StateManager; -import net.minecraft.state.property.DirectionProperty; -import net.minecraft.state.property.Properties; -import net.minecraft.util.BlockMirror; -import net.minecraft.util.BlockRotation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import net.minecraft.util.shape.VoxelShape; -import net.minecraft.util.shape.VoxelShapes; -import net.minecraft.world.BlockView; - -import org.jetbrains.annotations.Nullable; - -public class StoveBlock extends BlockWithEntity { - public static final DirectionProperty FACING; - - public StoveBlock() { - super(FabricBlockSettings.create().sounds(BlockSoundGroup.METAL).notSolid().pistonBehavior(PistonBehavior.BLOCK)); - setDefaultState(getDefaultState().with(Properties.HORIZONTAL_FACING, Direction.NORTH)); - } - - @Override - protected void appendProperties(StateManager.Builder builder) { - builder.add(Properties.HORIZONTAL_FACING); - } - - @Nullable - @Override - public BlockEntity createBlockEntity(BlockPos pos, BlockState state) { - return null; - } - - @Override - public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext ctx) { - return switch (state.get(FACING)) { - case NORTH, SOUTH -> VoxelShapes.cuboid(0.0625f, 0.0f, 0.3125f, 0.9375f, 0.5625f, 0.6875f); - case EAST, WEST -> VoxelShapes.cuboid(0.3125f, 0.0f, 0.0625f, 0.6875f, 0.5625f, 0.9375f); - default -> VoxelShapes.fullCube(); - }; - } - - @Override - public BlockState getPlacementState(ItemPlacementContext ctx) { - return super.getPlacementState(ctx).with(Properties.HORIZONTAL_FACING, ctx.getHorizontalPlayerFacing().getOpposite()); - } - - public BlockState rotate(BlockState state, BlockRotation rotation) { - return state.with(FACING, rotation.rotate(state.get(FACING))); - } - - public BlockState mirror(BlockState state, BlockMirror mirror) { - return state.rotate(mirror.getRotation(state.get(FACING))); - } - - static { - FACING = Properties.HORIZONTAL_FACING; - } -} \ No newline at end of file diff --git a/src/main/java/su/a71/new_soviet/blocks/WindowBlock.java b/src/main/java/su/a71/new_soviet/blocks/WindowBlock.java index b2dd9f8..850a1a9 100644 --- a/src/main/java/su/a71/new_soviet/blocks/WindowBlock.java +++ b/src/main/java/su/a71/new_soviet/blocks/WindowBlock.java @@ -83,10 +83,11 @@ public class WindowBlock extends HorizontalFacingBlock { world.playSound(null, pos.getX(), pos.getY(), pos.getZ(), NSE_Sounds.SCREWDRIVER_SOUND, SoundCategory.BLOCKS, 1.0f, (float)NewSoviet.RANDOM.nextBetween(8, 11) / 10); if (!state.get(CLOSED)) { player.sendMessage(Text.translatable("block.new_soviet.window.fixed").formatted(Formatting.BOLD), true); - } else if (state.get(CLOSED)) { + } else { player.sendMessage(Text.translatable("block.new_soviet.window.unfixed").formatted(Formatting.BOLD), true); } world.setBlockState(pos, state.with(CLOSED, !state.get(CLOSED)), 2); + player.getItemCooldownManager().set(NSE_Items.SCREWDRIVER, 10); player.incrementStat(Stats.USED.getOrCreateStat(NSE_Items.SCREWDRIVER)); return ActionResult.SUCCESS; } diff --git a/src/main/java/su/a71/new_soviet/items/CigaretteItem.java b/src/main/java/su/a71/new_soviet/items/CigaretteItem.java index 35a7cf3..ae9f211 100644 --- a/src/main/java/su/a71/new_soviet/items/CigaretteItem.java +++ b/src/main/java/su/a71/new_soviet/items/CigaretteItem.java @@ -20,6 +20,7 @@ import su.a71.new_soviet.registration.NSE_Sounds; import java.util.List; // FIXME: 26.08.2023 This whole class is making my head hurt, fix!!! +// UPD 12.03.2024 Its *slightly* better at this point public class CigaretteItem extends Item { private final int durationInTicks; private final Item returnedItem; @@ -45,16 +46,14 @@ public class CigaretteItem extends Item { @Override public TypedActionResult use(World world, PlayerEntity user, Hand hand) { ItemStack itemStack = user.getStackInHand(hand); - if (user.getInventory().getStack(40).getItem() == Items.FLINT_AND_STEEL && user.getInventory().getMainHandStack().getDamage() == 0) { + if (itemStack.getItem() != this) return TypedActionResult.fail(itemStack); // This is stupid, but just in case + + if (user.getOffHandStack().getItem() == Items.FLINT_AND_STEEL && !user.getMainHandStack().isDamaged()) { world.playSound(user, BlockPos.ofFloored(user.getPos()), NSE_Sounds.CIGARETTE_START, SoundCategory.PLAYERS, 1.0f, 1.0f); user.incrementStat(Stats.USED.getOrCreateStat(this)); itemStack.damage(1, user, e -> e.sendEquipmentBreakStatus(EquipmentSlot.OFFHAND)); return ItemUsage.consumeHeldItem(world, user, hand); - } else if (user.getInventory().getMainHandStack().getDamage() != 0) { - world.playSound(user, BlockPos.ofFloored(user.getPos()), NSE_Sounds.CIGARETTE_RESTART, SoundCategory.PLAYERS, 1.0f, 1.0f); - user.incrementStat(Stats.USED.getOrCreateStat(this)); - return ItemUsage.consumeHeldItem(world, user, hand); - } else if (user.isCreative()) { + } else if (user.getInventory().getMainHandStack().isDamaged() || user.isCreative()) { world.playSound(user, BlockPos.ofFloored(user.getPos()), NSE_Sounds.CIGARETTE_RESTART, SoundCategory.PLAYERS, 1.0f, 1.0f); user.incrementStat(Stats.USED.getOrCreateStat(this)); return ItemUsage.consumeHeldItem(world, user, hand); @@ -96,7 +95,6 @@ public class CigaretteItem extends Item { stack.damage(1, user, e -> e.sendEquipmentBreakStatus(!(user.getMainHandStack() == stack) ? EquipmentSlot.OFFHAND : EquipmentSlot.MAINHAND)); world.playSound(user, BlockPos.ofFloored(user.getPos()), NSE_Sounds.CIGARETTE_PAUSE, SoundCategory.PLAYERS, 1.0f, 1.0f); } else if (stack.getDamage() >= (durationInTicks - 2)) { - user.equipStack((!(user.getMainHandStack() == stack) ? EquipmentSlot.OFFHAND : EquipmentSlot.MAINHAND), new ItemStack(returnedItem)); world.playSound(user, BlockPos.ofFloored(user.getPos()), NSE_Sounds.CIGARETTE_STOPPED, SoundCategory.PLAYERS, 1.0f, 1.0f); } diff --git a/src/main/resources/assets/new_soviet/sounds/bruh.ogg b/src/main/resources/assets/new_soviet/sounds/bruh.ogg deleted file mode 100644 index 6bb860a4baa177b27082f0cdcefe20ed27c5f331..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12870 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