Skip to content
This repository was archived by the owner on May 31, 2024. It is now read-only.

Commit 7272058

Browse files
committed
[new] schematicBlockPlacementRestrictionSmartCheck
If schem is farmland, ignore using a hoe to till the dirt If schem is farmland, ignore dirt placement # Add + utils.item.ItemEquals
1 parent 6e33593 commit 7272058

File tree

5 files changed

+96
-3
lines changed

5 files changed

+96
-3
lines changed

src/main/java/org/taichiserver/taichitweaks/config/Configs.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public static class Generic {
2525
public static final ConfigString AUTOCOLLECT_SELECTIVE_LIST = new ConfigString("autoCollectSelectiveList", "", "autoCollectMaterialListItem[Tweakermore] selective");
2626
public static final ConfigBooleanHotkeyed AUTOFILL_SCHEMATIC_INVENTORY = new ConfigBooleanHotkeyed("autoFillSchematicInventory", false, "", "");
2727
public static final ConfigBooleanHotkeyed AUTO_VOID_TRADE = new ConfigBooleanHotkeyed("autoVoidTrade", false, "", "");
28+
public static final ConfigBooleanHotkeyed SCHEMATIC_BLOCK_PLACEMENT_RESTRICTION_SMART_CHECK = new ConfigBooleanHotkeyed("schematicBlockPlacementRestrictionSmartCheck", false, "", "");
2829
public static final ConfigString SNAPAIM_ANGLE1 = new ConfigString("snapAim_Angle1", "0.0, 0.0", "Snap Aim Angle (1)");
2930
public static final ConfigString SNAPAIM_ANGLE2 = new ConfigString("snapAim_Angle2", "0.0, 0.0", "Snap Aim Angle (2)");
3031
public static final ConfigString SNAPAIM_ANGLE3 = new ConfigString("snapAim_Angle3", "0.0, 0.0", "Snap Aim Angle (3)");
@@ -35,6 +36,7 @@ public static class Generic {
3536
AUTOCOLLECT_SELECTIVE_LIST,
3637
AUTOFILL_SCHEMATIC_INVENTORY,
3738
AUTO_VOID_TRADE,
39+
SCHEMATIC_BLOCK_PLACEMENT_RESTRICTION_SMART_CHECK,
3840
SNAPAIM_ANGLE1,
3941
SNAPAIM_ANGLE2,
4042
SNAPAIM_ANGLE3,
@@ -62,8 +64,8 @@ public static class Renders {
6264
public static final ConfigBooleanHotkeyed OVERLAY_LIGHTNING_ROD_RANGE = new ConfigBooleanHotkeyed("overlayLightningRodRange", false, "", "");
6365
public static final ConfigColor OVERLAY_LIGHTNING_ROD_COLOR = new ConfigColor("overlayLightningRodColor", "#302050D0", "");
6466
public static final ImmutableList<IConfigBase> OPTIONS = ImmutableList.of(
65-
OVERLAY_LIGHTNING_ROD_RANGE,
66-
OVERLAY_LIGHTNING_ROD_COLOR
67+
//OVERLAY_LIGHTNING_ROD_RANGE,
68+
//OVERLAY_LIGHTNING_ROD_COLOR
6769
);
6870
}
6971

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package org.taichiserver.taichitweaks.mixins.schemBlockPlacementRestcintionSmartCheck;
2+
3+
import me.fallenbreath.tweakermore.impl.features.schematicProPlace.restrict.BlockInteractionRestrictor;
4+
import net.minecraft.block.BlockState;
5+
import net.minecraft.block.Blocks;
6+
import net.minecraft.entity.player.PlayerEntity;
7+
import net.minecraft.item.Item;
8+
import org.spongepowered.asm.mixin.Mixin;
9+
import org.spongepowered.asm.mixin.injection.At;
10+
import org.spongepowered.asm.mixin.injection.Inject;
11+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
12+
import org.taichiserver.taichitweaks.config.Configs;
13+
import org.taichiserver.taichitweaks.util.items.ItemTypeEquals;
14+
15+
@Mixin(BlockInteractionRestrictor.class)
16+
public class BlockInteractionRestrictorMixin {
17+
@Inject(method = "checkInteract", at = @At("TAIL"), cancellable = true)
18+
private static void checkInteract(PlayerEntity player, BlockState worldState, BlockState schematicState, CallbackInfoReturnable<BlockInteractionRestrictor.Result> cir){
19+
if (!Configs.Generic.SCHEMATIC_BLOCK_PLACEMENT_RESTRICTION_SMART_CHECK.getBooleanValue()) return;
20+
if (cir.getReturnValue().equals(BlockInteractionRestrictor.Result.good())) return;
21+
22+
Item mainHandItem = player.getMainHandStack().getItem();
23+
24+
if( Blocks.DIRT.equals(worldState.getBlock()) && Blocks.FARMLAND.equals(schematicState.getBlock()) && ItemTypeEquals.isHoe(mainHandItem)) {
25+
cir.setReturnValue(BlockInteractionRestrictor.Result.good());
26+
}
27+
}
28+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package org.taichiserver.taichitweaks.mixins.schemBlockPlacementRestcintionSmartCheck;
2+
3+
import me.fallenbreath.tweakermore.impl.features.schematicProPlace.restrict.PlacementRestrictor;
4+
import net.minecraft.block.Block;
5+
import net.minecraft.block.BlockState;
6+
import net.minecraft.block.Blocks;
7+
import org.spongepowered.asm.mixin.Mixin;
8+
import org.spongepowered.asm.mixin.injection.At;
9+
import org.spongepowered.asm.mixin.injection.Inject;
10+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
11+
import org.taichiserver.taichitweaks.config.Configs;
12+
13+
@Mixin(PlacementRestrictor.class)
14+
public abstract class PlacementRestrictorMixin {
15+
@Inject(method = "isBlockToPlaceCorrect", at = @At("TAIL"), cancellable = true)
16+
private static void isBlockToPlaceCorrect(BlockState schematicState, BlockState stateToPlace, CallbackInfoReturnable<Boolean> cir){
17+
if (!Configs.Generic.SCHEMATIC_BLOCK_PLACEMENT_RESTRICTION_SMART_CHECK.getBooleanValue()) return;
18+
19+
Block schematicBlock = schematicState.getBlock();
20+
Block blockToPlace = stateToPlace.getBlock();
21+
System.out.println(schematicBlock);
22+
System.out.println(blockToPlace);
23+
if (schematicBlock == Blocks.FARMLAND && blockToPlace == Blocks.DIRT) {
24+
cir.setReturnValue(true);
25+
}
26+
}
27+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package org.taichiserver.taichitweaks.util.items;
2+
3+
import net.minecraft.item.Item;
4+
import net.minecraft.item.Items;
5+
6+
public class ItemTypeEquals {
7+
public static boolean isShulkerBox(Item item) {
8+
return item.equals(Items.SHULKER_BOX) ||
9+
item.equals(Items.BLACK_SHULKER_BOX) ||
10+
item.equals(Items.BLUE_SHULKER_BOX) ||
11+
item.equals(Items.BROWN_SHULKER_BOX) ||
12+
item.equals(Items.CYAN_SHULKER_BOX) ||
13+
item.equals(Items.GRAY_SHULKER_BOX) ||
14+
item.equals(Items.GREEN_SHULKER_BOX) ||
15+
item.equals(Items.LIGHT_BLUE_SHULKER_BOX) ||
16+
item.equals(Items.LIGHT_GRAY_SHULKER_BOX) ||
17+
item.equals(Items.LIME_SHULKER_BOX) ||
18+
item.equals(Items.MAGENTA_SHULKER_BOX) ||
19+
item.equals(Items.ORANGE_SHULKER_BOX) ||
20+
item.equals(Items.PINK_SHULKER_BOX) ||
21+
item.equals(Items.PURPLE_SHULKER_BOX) ||
22+
item.equals(Items.RED_SHULKER_BOX) ||
23+
item.equals(Items.WHITE_SHULKER_BOX) ||
24+
item.equals(Items.YELLOW_SHULKER_BOX);
25+
}
26+
public static boolean isHoe(Item item){
27+
return item.equals(Items.DIAMOND_HOE) ||
28+
item.equals(Items.NETHERITE_HOE) ||
29+
item.equals(Items.IRON_HOE) ||
30+
item.equals(Items.GOLDEN_HOE) ||
31+
item.equals(Items.WOODEN_HOE) ||
32+
item.equals(Items.STONE_HOE);
33+
}
34+
}

src/main/resources/taichi-tweaks.mixins.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
"ContainerMixin",
1010
"autoVoidTrade.ClientPlayNetworkHandlerMixin",
1111
"autoVoidTrade.MerchantScreenHandlerMixin",
12-
"autoVoidTrade.MinecraftClientMixin"
12+
"autoVoidTrade.MinecraftClientMixin",
13+
"schemBlockPlacementRestcintionSmartCheck.BlockInteractionRestrictorMixin",
14+
"schemBlockPlacementRestcintionSmartCheck.PlacementRestrictorMixin"
1315
],
1416
"injectors": {
1517
"defaultRequire": 1

0 commit comments

Comments
 (0)