Skip to content

Commit 14fef24

Browse files
authored
Merge pull request #17 from Smartin-b/1.18.2
Tetra Compat
2 parents 763d4a1 + 8a35d52 commit 14fef24

File tree

5 files changed

+110
-6
lines changed

5 files changed

+110
-6
lines changed

build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,8 @@ dependencies {
110110
implementation fg.deobf("curse.maven:apotheosis-313970:${project.apotheosis_version}")
111111
implementation fg.deobf("curse.maven:farmers-delight-398521:${project.farmers_delight_version}")
112112
implementation fg.deobf("curse.maven:appleskin-248787:${project.appleskin_version}")
113+
implementation fg.deobf("curse.maven:mutil-351914:${project.mutil_version}")
114+
implementation fg.deobf("curse.maven:tetra-289712:${project.tetra_version}")
113115

114116
annotationProcessor 'org.spongepowered:mixin:0.8.5:processor'
115117
}

gradle.properties

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,6 @@ org.gradle.daemon=false
2626
# Compat Dependencies
2727
apotheosis_version=3781524
2828
farmers_delight_version=3784851
29-
appleskin_version=3686482
29+
appleskin_version=3686482
30+
mutil_version=3788376
31+
tetra_version=3844400

src/main/java/limonblaze/originsclasses/common/registry/OriginsClassesConditions.java

Lines changed: 59 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package limonblaze.originsclasses.common.registry;
22

3+
import com.google.common.collect.Sets;
34
import io.github.edwinmindcraft.apoli.api.power.factory.BiEntityCondition;
45
import io.github.edwinmindcraft.apoli.api.power.factory.BlockCondition;
56
import io.github.edwinmindcraft.apoli.api.power.factory.EntityCondition;
@@ -17,10 +18,19 @@
1718
import net.minecraft.world.item.*;
1819
import net.minecraft.world.item.enchantment.Enchantments;
1920
import net.minecraft.world.level.block.CropBlock;
21+
import net.minecraft.world.level.block.SpongeBlock;
22+
import net.minecraft.world.level.block.state.BlockBehaviour;
2023
import net.minecraft.world.level.block.state.BlockState;
24+
import net.minecraftforge.common.ToolAction;
2125
import net.minecraftforge.registries.DeferredRegister;
2226
import net.minecraftforge.registries.RegistryObject;
2327

28+
import java.util.Set;
29+
import java.util.stream.Collectors;
30+
import java.util.stream.Stream;
31+
32+
import static net.minecraftforge.common.ToolActions.*;
33+
2434
public class OriginsClassesConditions {
2535

2636
public static final DeferredRegister<BiEntityCondition<?>> BIENTITY_CONDITIONS = DeferredRegister.create(ApoliRegistries.BIENTITY_CONDITION_KEY, OriginsClasses.MODID);
@@ -33,13 +43,58 @@ public class OriginsClassesConditions {
3343

3444
public static final DeferredRegister<ItemCondition<?>> ITEM_CONDITIONS = DeferredRegister.create(ApoliRegistries.ITEM_CONDITION_KEY, OriginsClasses.MODID);
3545
public static final RegistryObject<SimpleItemCondition> MELEE = ITEM_CONDITIONS.register("melee", () ->
36-
new SimpleItemCondition(Enchantments.SHARPNESS::canEnchant));
46+
new SimpleItemCondition( stack ->
47+
(
48+
stack.getDescriptionId().equals("item.tetra.modular_single") ||
49+
stack.getDescriptionId().equals("item.tetra.modular_double") ||
50+
Enchantments.SHARPNESS.canEnchant(stack)
51+
)));
52+
public static final RegistryObject<SimpleItemCondition> SWORD = ITEM_CONDITIONS.register("sword", () ->
53+
new SimpleItemCondition( stack ->
54+
(
55+
stack.getDescriptionId().equals("tetra:modular_sword") ||
56+
Enchantments.SHARPNESS.canEnchant(stack) && !Enchantments.BLOCK_EFFICIENCY.canEnchant(stack)
57+
)));
3758
public static final RegistryObject<SimpleItemCondition> RANGE = ITEM_CONDITIONS.register("range", () ->
38-
new SimpleItemCondition(stack -> stack.getItem() instanceof ProjectileWeaponItem));
59+
new SimpleItemCondition( stack ->
60+
(
61+
stack.getDescriptionId().equals("item.tetra.modular_bow") ||
62+
stack.getDescriptionId().equals("item.tetra.modular_crossbow") ||
63+
stack.getItem() instanceof ProjectileWeaponItem
64+
)));
65+
public static final RegistryObject<SimpleItemCondition> HOE = ITEM_CONDITIONS.register("hoe", () ->
66+
new SimpleItemCondition( stack ->
67+
(
68+
stack.canPerformAction(HOE_DIG)
69+
)));
70+
public static final RegistryObject<SimpleItemCondition> PICKAXE = ITEM_CONDITIONS.register("pickaxe", () ->
71+
new SimpleItemCondition( stack ->
72+
(
73+
stack.canPerformAction(PICKAXE_DIG)
74+
)));
75+
public static final RegistryObject<SimpleItemCondition> AXE = ITEM_CONDITIONS.register("axe", () ->
76+
new SimpleItemCondition( stack ->
77+
(
78+
stack.canPerformAction(AXE_DIG)
79+
)));
80+
public static final RegistryObject<SimpleItemCondition> SHOVEL = ITEM_CONDITIONS.register("shovel", () ->
81+
new SimpleItemCondition( stack ->
82+
(
83+
stack.canPerformAction(SHOVEL_DIG)
84+
)));
3985
public static final RegistryObject<SimpleItemCondition> TOOL = ITEM_CONDITIONS.register("tool", () ->
40-
new SimpleItemCondition(stack -> stack.getItem() instanceof DiggerItem || stack.getItem() instanceof ShearsItem));
86+
new SimpleItemCondition( stack ->
87+
(
88+
stack.getDescriptionId().equals("item.tetra.modular_single") ||
89+
stack.getDescriptionId().equals("item.tetra.modular_double") ||
90+
stack.getItem() instanceof DiggerItem ||
91+
stack.getItem() instanceof ShearsItem
92+
)));
4193
public static final RegistryObject<SimpleItemCondition> SHIELD = ITEM_CONDITIONS.register("shield", () ->
42-
new SimpleItemCondition(stack -> stack.getItem() instanceof ShieldItem));
94+
new SimpleItemCondition(stack -> (
95+
stack.getDescriptionId().equals("item.tetra.modular_shield") ||
96+
stack.getItem() instanceof ShieldItem
97+
)));
4398
public static final RegistryObject<SimpleItemCondition> HELMET = ITEM_CONDITIONS.register("helmet", () ->
4499
new SimpleItemCondition(stack -> stack.getItem() instanceof ArmorItem armor && armor.getSlot() == EquipmentSlot.HEAD));
45100
public static final RegistryObject<SimpleItemCondition> CHESTPLATE = ITEM_CONDITIONS.register("chestplate", () ->
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package limonblaze.originsclasses.mixin.compat.tetra;
2+
3+
4+
import io.github.edwinmindcraft.apoli.api.component.IPowerContainer;
5+
import io.github.edwinmindcraft.apoli.api.power.configuration.ConfiguredItemAction;
6+
import io.github.edwinmindcraft.apoli.api.power.configuration.ConfiguredItemCondition;
7+
import io.github.edwinmindcraft.apoli.common.registry.ApoliPowers;
8+
import net.minecraft.core.BlockPos;
9+
import net.minecraft.world.entity.player.Player;
10+
import net.minecraft.world.item.ItemStack;
11+
import net.minecraft.world.level.Level;
12+
import net.minecraft.world.level.block.state.BlockState;
13+
import net.minecraftforge.common.ToolAction;
14+
import org.apache.commons.lang3.mutable.Mutable;
15+
import org.apache.commons.lang3.mutable.MutableObject;
16+
import org.apache.logging.log4j.LogManager;
17+
import org.apache.logging.log4j.Logger;
18+
import org.spongepowered.asm.mixin.Mixin;
19+
import org.spongepowered.asm.mixin.injection.At;
20+
import org.spongepowered.asm.mixin.injection.Inject;
21+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
22+
import se.mickelus.tetra.blocks.workbench.WorkbenchTile;
23+
24+
import java.util.Map;
25+
26+
@Mixin(WorkbenchTile.class)
27+
public class WorkbenchTileMixin {
28+
@Inject(
29+
method = "Lse/mickelus/tetra/blocks/workbench/WorkbenchTile;applyCraftingBonusEffects(Lnet/minecraft/world/item/ItemStack;Ljava/lang/String;ZLnet/minecraft/world/entity/player/Player;[Lnet/minecraft/world/item/ItemStack;[Lnet/minecraft/world/item/ItemStack;Ljava/util/Map;Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Z)Lnet/minecraft/world/item/ItemStack;",
30+
at = @At("RETURN"),
31+
cancellable = true,
32+
remap = false
33+
)
34+
private static void modifyResult(ItemStack upgradedStack, String slot, boolean isReplacing, Player player, ItemStack[] preMaterials, ItemStack[] postMaterials, Map<ToolAction, Integer> tools, Level world, BlockPos pos, BlockState blockState, boolean consumeResources, CallbackInfoReturnable<ItemStack> cir){
35+
Mutable<ItemStack> mutable = new MutableObject();
36+
mutable.setValue(upgradedStack);
37+
IPowerContainer.getPowers(player, ApoliPowers.MODIFY_CRAFTING.get()).stream()
38+
.filter(cp -> ConfiguredItemCondition.check(cp.getConfiguration().itemCondition(),player.level,upgradedStack))
39+
.forEach( cp -> {
40+
ConfiguredItemAction.execute(cp.getConfiguration().itemAction(), player.level, mutable);
41+
});
42+
cir.setReturnValue(mutable.getValue());
43+
}
44+
}

src/main/resources/origins_classes.mixins.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@
2626
"compat.apoli.ModifyFoodPowerMixin",
2727
"compat.apotheosis.ApotheosisEnchantmentMenuMixin",
2828
"compat.farmersdelight.CookingPotResultSlotMixin",
29-
"compat.farmersdelight.SkilletItemMixin"
29+
"compat.farmersdelight.SkilletItemMixin",
30+
"compat.tetra.WorkbenchTileMixin"
3031
],
3132
"client": [
3233
"client.ClientSideMerchantMixin",

0 commit comments

Comments
 (0)