From 4183e3122e22767ff57e4c11f56b7643fd02379f Mon Sep 17 00:00:00 2001 From: IThundxr Date: Fri, 16 Feb 2024 17:44:37 -0500 Subject: [PATCH] Silly magnet waxing, spent so long on this lol --- dependencies.properties | 2 +- .../quark/addons/oddities/block/MagnetBlock.java | 6 ++++-- .../oddities/block/be/MagnetBlockEntity.java | 16 +++++++--------- .../addons/oddities/module/MagnetsModule.java | 5 +++-- .../quark/content/tools/item/SeedPouchItem.java | 2 +- zupdate.sh | 2 +- 6 files changed, 17 insertions(+), 16 deletions(-) diff --git a/dependencies.properties b/dependencies.properties index eac1b16ede..d1d102df15 100644 --- a/dependencies.properties +++ b/dependencies.properties @@ -1,5 +1,5 @@ forge=47.1.3 -zeta=1.0-14.61 +zeta=1.0-14.64 jei=4712868 terrablender=1.20.1-3.0.0.169 flan=4819286 diff --git a/src/main/java/org/violetmoon/quark/addons/oddities/block/MagnetBlock.java b/src/main/java/org/violetmoon/quark/addons/oddities/block/MagnetBlock.java index a304cf8349..08ca40dfc3 100644 --- a/src/main/java/org/violetmoon/quark/addons/oddities/block/MagnetBlock.java +++ b/src/main/java/org/violetmoon/quark/addons/oddities/block/MagnetBlock.java @@ -35,10 +35,12 @@ public class MagnetBlock extends ZetaBlock implements EntityBlock { public static final DirectionProperty FACING = BlockStateProperties.FACING; public static final BooleanProperty POWERED = BlockStateProperties.POWERED; + public static final BooleanProperty WAXED = BooleanProperty.create("waxed"); + public boolean waxed = false; public MagnetBlock(@Nullable ZetaModule module) { super("magnet", module, Properties.copy(Blocks.IRON_BLOCK)); - registerDefaultState(defaultBlockState().setValue(FACING, Direction.DOWN).setValue(POWERED, false)); + registerDefaultState(defaultBlockState().setValue(FACING, Direction.DOWN).setValue(POWERED, false).setValue(WAXED, false)); if(module == null) //auto registration below this line return; @@ -53,7 +55,7 @@ public void appendHoverText(@NotNull ItemStack stack, @Nullable BlockGetter worl @Override protected void createBlockStateDefinition(Builder builder) { - builder.add(FACING, POWERED); + builder.add(FACING, POWERED, WAXED); } @Override diff --git a/src/main/java/org/violetmoon/quark/addons/oddities/block/be/MagnetBlockEntity.java b/src/main/java/org/violetmoon/quark/addons/oddities/block/be/MagnetBlockEntity.java index 727d3784df..4f6450623e 100644 --- a/src/main/java/org/violetmoon/quark/addons/oddities/block/be/MagnetBlockEntity.java +++ b/src/main/java/org/violetmoon/quark/addons/oddities/block/be/MagnetBlockEntity.java @@ -8,7 +8,6 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.PushReaction; - import org.violetmoon.quark.addons.oddities.block.MagnetBlock; import org.violetmoon.quark.addons.oddities.magnetsystem.MagnetSystem; import org.violetmoon.quark.addons.oddities.module.MagnetsModule; @@ -25,12 +24,12 @@ public static void tick(Level level, BlockPos pos, BlockState state, MagnetBlock if(powered) { Direction dir = state.getValue(MagnetBlock.FACING); int power = level.getBestNeighborSignal(pos); - be.magnetize(dir, dir, power); - be.magnetize(dir.getOpposite(), dir, power); + be.magnetize(state, dir, dir, power); + be.magnetize(state, dir.getOpposite(), dir, power); } } - private void magnetize(Direction dir, Direction moveDir, int power) { + private void magnetize(BlockState state, Direction dir, Direction moveDir, int power) { if(level == null) return; @@ -51,18 +50,18 @@ private void magnetize(Direction dir, Direction moveDir, int power) { if(!level.isClientSide && targetState.getBlock() != Blocks.MOVING_PISTON && targetState.getBlock() != MagnetsModule.magnetized_block) { PushReaction reaction = MagnetSystem.getPushAction(this, targetPos, targetState, moveDir); - if(reaction == PushReaction.IGNORE || reaction == PushReaction.DESTROY) { + if (reaction == PushReaction.IGNORE || reaction == PushReaction.DESTROY) { BlockPos frontPos = targetPos.relative(moveDir); BlockState frontState = level.getBlockState(frontPos); - if(frontState.isAir()) + if (frontState.isAir()) MagnetSystem.applyForce(level, targetPos, power - i + 1, dir == moveDir, moveDir, i, worldPosition); } } - if(!targetState.isAir()) + if (!targetState.isAir()) break; - if(level.isClientSide && Math.random() <= particleChance) { + if (!state.getValue(MagnetBlock.WAXED) && level.isClientSide && Math.random() <= particleChance) { double x = targetPos.getX() + (xOff == 0 ? 0.5 : Math.random()); double y = targetPos.getY() + (yOff == 0 ? 0.5 : Math.random()); double z = targetPos.getZ() + (zOff == 0 ? 0.5 : Math.random()); @@ -70,5 +69,4 @@ private void magnetize(Direction dir, Direction moveDir, int power) { } } } - } diff --git a/src/main/java/org/violetmoon/quark/addons/oddities/module/MagnetsModule.java b/src/main/java/org/violetmoon/quark/addons/oddities/module/MagnetsModule.java index 235ea2d2a1..601e6f7eeb 100644 --- a/src/main/java/org/violetmoon/quark/addons/oddities/module/MagnetsModule.java +++ b/src/main/java/org/violetmoon/quark/addons/oddities/module/MagnetsModule.java @@ -1,12 +1,10 @@ package org.violetmoon.quark.addons.oddities.module; import com.google.common.collect.Lists; - import net.minecraft.client.renderer.blockentity.BlockEntityRenderers; import net.minecraft.core.registries.Registries; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntityType; - import org.violetmoon.quark.addons.oddities.block.MagnetBlock; import org.violetmoon.quark.addons.oddities.block.MovingMagnetizedBlock; import org.violetmoon.quark.addons.oddities.block.be.MagnetBlockEntity; @@ -24,6 +22,7 @@ import org.violetmoon.zeta.module.ZetaLoadModule; import org.violetmoon.zeta.module.ZetaModule; import org.violetmoon.zeta.util.Hint; +import org.violetmoon.zeta.util.handler.ToolInteractionHandler; import java.util.List; @@ -54,6 +53,8 @@ public final void register(ZRegister event) { magnet = new MagnetBlock(this); magnetized_block = new MovingMagnetizedBlock(this); + ToolInteractionHandler.registerWaxedBlockBooleanProperty(this, magnet, MagnetBlock.WAXED); + magnetType = BlockEntityType.Builder.of(MagnetBlockEntity::new, magnet).build(null); Quark.ZETA.registry.register(magnetType, "magnet", Registries.BLOCK_ENTITY_TYPE); diff --git a/src/main/java/org/violetmoon/quark/content/tools/item/SeedPouchItem.java b/src/main/java/org/violetmoon/quark/content/tools/item/SeedPouchItem.java index cd25840d9e..dbcb4b7343 100644 --- a/src/main/java/org/violetmoon/quark/content/tools/item/SeedPouchItem.java +++ b/src/main/java/org/violetmoon/quark/content/tools/item/SeedPouchItem.java @@ -209,7 +209,7 @@ public InteractionResult useOn(UseOnContext context) { // For inserting stuff into chests easily // Check if they are shifting, and it isn't on the client - if (player.isShiftKeyDown() && !context.getLevel().isClientSide()) { + if (player != null && player.isShiftKeyDown() && !context.getLevel().isClientSide()) { BlockEntity targetedBE = context.getLevel().getBlockEntity(BlockPos.containing(context.getClickLocation())); if (targetedBE instanceof ChestBlockEntity chest) { Optional optionalItemHandler = chest.getCapability(ForgeCapabilities.ITEM_HANDLER, Direction.NORTH).resolve(); diff --git a/zupdate.sh b/zupdate.sh index aee7722a53..52a2945539 100755 --- a/zupdate.sh +++ b/zupdate.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Behold my perfect creation, grabs the latest version of zeta and the zeta entry in dependencies.properties to said version +# Behold my perfect creation, grabs the latest version of zeta and updates the zeta entry in dependencies.properties to said version # Zeta's XML from Jared's Maven xml_url="https://maven.blamejared.com/org/violetmoon/zeta/Zeta/maven-metadata.xml"