aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorExternalTime <84183548+ExternalTime@users.noreply.github.com>2021-10-20 00:47:21 +0200
committerExternalTime <84183548+ExternalTime@users.noreply.github.com>2021-10-20 00:47:21 +0200
commit0653f9fba555abb0b1686276aaea55734cc3fc2a (patch)
tree35c729e7b1782876df540f8862ea9eda81021fec /src
parent42dd089a4af357565d885c409777ffd84be5e092 (diff)
downloadSkyblocker-0653f9fba555abb0b1686276aaea55734cc3fc2a.tar.gz
Skyblocker-0653f9fba555abb0b1686276aaea55734cc3fc2a.tar.bz2
Skyblocker-0653f9fba555abb0b1686276aaea55734cc3fc2a.zip
Added feature changing lever hitboxes to ones from 1.8
Diffstat (limited to 'src')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java1
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/LeverBlockMixin.java31
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/OldLever.java44
-rw-r--r--src/main/resources/assets/skyblocker/lang/en_us.json1
-rw-r--r--src/main/resources/skyblocker.mixins.json3
5 files changed, 79 insertions, 1 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
index dd5190e5..74cff226 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
@@ -54,6 +54,7 @@ public class SkyblockerConfig implements ConfigData {
public boolean solveThreeWeirdos = true;
public boolean blazesolver = true;
public boolean solveTrivia = true;
+ public boolean oldLevers = false;
@ConfigEntry.Gui.CollapsibleObject(startExpanded = true)
public Terminals terminals = new Terminals();
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/LeverBlockMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/LeverBlockMixin.java
new file mode 100644
index 00000000..f1c6661d
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/LeverBlockMixin.java
@@ -0,0 +1,31 @@
+package me.xmrvizzy.skyblocker.mixin;
+
+import me.xmrvizzy.skyblocker.skyblock.dungeon.OldLever;
+import me.xmrvizzy.skyblocker.utils.Utils;
+import net.minecraft.block.BlockState;
+import net.minecraft.block.LeverBlock;
+import net.minecraft.block.ShapeContext;
+import net.minecraft.block.WallMountedBlock;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.util.shape.VoxelShape;
+import net.minecraft.world.BlockView;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.Inject;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
+
+@Mixin(LeverBlock.class)
+public abstract class LeverBlockMixin extends WallMountedBlock {
+ protected LeverBlockMixin(Settings settings) {
+ super(settings);
+ }
+
+ @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true)
+ public void onGetOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable<VoxelShape> cir) {
+ if (Utils.isSkyblock) {
+ VoxelShape shape = OldLever.getShape(state.get(FACE), state.get(FACING));
+ if (shape != null)
+ cir.setReturnValue(shape);
+ }
+ }
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/OldLever.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/OldLever.java
new file mode 100644
index 00000000..fc26f913
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/OldLever.java
@@ -0,0 +1,44 @@
+package me.xmrvizzy.skyblocker.skyblock.dungeon;
+
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
+import net.minecraft.block.Block;
+import net.minecraft.block.enums.WallMountLocation;
+import net.minecraft.util.math.Direction;
+import net.minecraft.util.shape.VoxelShape;
+
+public class OldLever {
+ protected static final VoxelShape FLOOR_SHAPE;
+ protected static final VoxelShape NORTH_SHAPE;
+ protected static final VoxelShape SOUTH_SHAPE;
+ protected static final VoxelShape EAST_SHAPE;
+ protected static final VoxelShape WEST_SHAPE;
+
+ public static VoxelShape getShape(WallMountLocation wallMountLocation, Direction direction) {
+ if (!SkyblockerConfig.get().locations.dungeons.oldLevers)
+ return null;
+
+ if (wallMountLocation == WallMountLocation.FLOOR) {
+ return FLOOR_SHAPE;
+ } else if (wallMountLocation == WallMountLocation.WALL) {
+ switch (direction) {
+ case EAST:
+ return EAST_SHAPE;
+ case WEST:
+ return WEST_SHAPE;
+ case SOUTH:
+ return SOUTH_SHAPE;
+ case NORTH:
+ return NORTH_SHAPE;
+ }
+ }
+ return null;
+ }
+
+ static {
+ FLOOR_SHAPE = Block.createCuboidShape(4, 0, 4, 12, 10, 12);
+ NORTH_SHAPE = Block.createCuboidShape(5.0D, 3.0D, 10.0D, 11.0D, 13.0D, 16.0D);
+ SOUTH_SHAPE = Block.createCuboidShape(5.0D, 3.0D, 0.0D, 11.0D, 13.0D, 6.0D);
+ WEST_SHAPE = Block.createCuboidShape(10.0D, 3.0D, 5.0D, 16.0D, 13.0D, 11.0D);
+ EAST_SHAPE = Block.createCuboidShape(0.0D, 3.0D, 5.0D, 6.0D, 13.0D, 11.0D);
+ }
+}
diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json
index 2568fecb..a1f0198e 100644
--- a/src/main/resources/assets/skyblocker/lang/en_us.json
+++ b/src/main/resources/assets/skyblocker/lang/en_us.json
@@ -15,6 +15,7 @@
"text.autoconfig.skyblocker.option.locations.dungeons.solveThreeWeirdos": "Solve Three Weirdos Puzzle",
"text.autoconfig.skyblocker.option.locations.dungeons.blazesolver": "Solve Blaze Puzzle",
"text.autoconfig.skyblocker.option.locations.dungeons.solveTrivia": "Solve Trivia Puzzle",
+ "text.autoconfig.skyblocker.option.locations.dungeons.oldLevers": "1.8 lever hitbox",
"text.autoconfig.skyblocker.option.locations.dungeons.terminals": "Terminal Solvers",
"text.autoconfig.skyblocker.option.locations.dungeons.terminals.solveColor": "Solve Select Colored",
"text.autoconfig.skyblocker.option.locations.dungeons.terminals.solveOrder": "Solve Click In Order",
diff --git a/src/main/resources/skyblocker.mixins.json b/src/main/resources/skyblocker.mixins.json
index acf0ef45..bfc6b0f2 100644
--- a/src/main/resources/skyblocker.mixins.json
+++ b/src/main/resources/skyblocker.mixins.json
@@ -11,7 +11,8 @@
"MinecraftClientMixin",
"AccessorWorldRenderer",
"GenericContainerScreenMixin",
- "GenericContainerScreenHandlerMixin"
+ "GenericContainerScreenHandlerMixin",
+ "LeverBlockMixin"
],
"injectors": {
"defaultRequire": 1