Skip to content

Commit 6f45f3f

Browse files
committed
-basic bettercombat support
1 parent 1a08300 commit 6f45f3f

21 files changed

+267
-5
lines changed

color/colorstandard.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
181818
2+
393939
3+
444444
4+
6B6B6B
5+
969696
6+
BEBEBE
7+
D8D8D8
8+
FFFFFF

common/build.gradle

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,19 @@
1+
repositories {
2+
maven { url 'https://maven.kosmx.dev/' }
3+
maven { url 'https://maven.shedaniel.me/' }
4+
maven { url 'https://maven.fabricmc.net/' }
5+
maven { url 'https://jitpack.io' }
6+
maven { url 'https://maven.terraformersmc.com/' }
7+
maven { url 'https://www.cursemaven.com' }
8+
maven {
9+
name = 'Modrinth'
10+
url = 'https://api.modrinth.com/maven'
11+
content {
12+
includeGroup 'maven.modrinth'
13+
}
14+
}
15+
}
16+
117
loom {
218
accessWidenerPath = file("src/main/resources/miapi.accesswidener")
319
}
@@ -10,6 +26,8 @@ dependencies {
1026
modApi "dev.architectury:architectury:${rootProject.architectury_version}"
1127

1228
implementation('org.mariuszgromada.math:MathParser.org-mXparser:4.4.2')
29+
modImplementation 'dev.kosmx.player-anim:player-animation-lib:1.0.2-rc1+1.20'
30+
modApi "curse.maven:bettercombat-639842:4597949"
1331
}
1432

1533
architectury {
@@ -26,6 +44,5 @@ publishing {
2644

2745
// See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing.
2846
repositories {
29-
// Add repositories to publish to here.
3047
}
3148
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package smartin.miapi.mixin;
2+
3+
4+
import net.bettercombat.api.WeaponAttributes;
5+
import net.bettercombat.logic.WeaponRegistry;
6+
import net.minecraft.item.ItemStack;
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 smartin.miapi.modules.properties.compat.BetterCombatHelper;
12+
13+
@Mixin(WeaponRegistry.class)
14+
public class BCWeaponRegistryMixin {
15+
@Inject(
16+
method = "getAttributes(Lnet/minecraft/item/ItemStack;)Lnet/bettercombat/api/WeaponAttributes;",
17+
at = @At("HEAD"),
18+
cancellable = true,
19+
remap = false,
20+
require = -1)
21+
private static void getAttributes(ItemStack itemStack, CallbackInfoReturnable<WeaponAttributes> cir) {
22+
WeaponAttributes attributes = BetterCombatHelper.getAttributes(itemStack);
23+
if (attributes != null) {
24+
cir.setReturnValue(attributes);
25+
}
26+
}
27+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package smartin.miapi.modules.properties.compat;
2+
3+
import com.google.gson.JsonElement;
4+
import com.google.gson.stream.JsonReader;
5+
import net.minecraft.entity.EquipmentSlot;
6+
import net.minecraft.item.ItemStack;
7+
import net.minecraft.util.Identifier;
8+
import smartin.miapi.Miapi;
9+
import smartin.miapi.attributes.AttributeRegistry;
10+
import smartin.miapi.item.modular.ModularItem;
11+
import smartin.miapi.modules.ItemModule;
12+
import smartin.miapi.modules.cache.ModularItemCache;
13+
import smartin.miapi.modules.properties.AttributeProperty;
14+
15+
import java.io.StringReader;
16+
17+
public class BetterCombatHelper {
18+
public static void setup() {
19+
ModularItemCache.setSupplier(BetterCombatProperty.KEY, BetterCombatHelper::getContainer);
20+
}
21+
22+
private static net.bettercombat.api.WeaponAttributes getContainer(ItemStack stack) {
23+
return container(ItemModule.getMergedProperty(stack, BetterCombatProperty.property));
24+
}
25+
26+
private static float getAttackRange(ItemStack stack) {
27+
return (float) AttributeProperty.getActualValue(stack, EquipmentSlot.MAINHAND, AttributeRegistry.ATTACK_RANGE) + 2.5f;
28+
}
29+
30+
private static net.bettercombat.api.WeaponAttributes container(JsonElement data) {
31+
if (data == null) {
32+
Miapi.LOGGER.warn("returning null cause data is null");
33+
return null;
34+
}
35+
String jsonString = data.toString();
36+
Miapi.LOGGER.warn(jsonString);
37+
JsonReader jsonReader = new JsonReader(new StringReader(jsonString));
38+
net.bettercombat.api.WeaponAttributes attributes = net.bettercombat.logic.WeaponRegistry.resolveAttributes(new Identifier(Miapi.MOD_ID, "modular_item"), net.bettercombat.api.WeaponAttributesHelper.decode(jsonReader));
39+
Miapi.LOGGER.warn(attributes.toString());
40+
return attributes;
41+
}
42+
43+
public static net.bettercombat.api.WeaponAttributes getAttributes(ItemStack stack) {
44+
if (stack.getItem() instanceof ModularItem) {
45+
net.bettercombat.api.WeaponAttributes attributes = (net.bettercombat.api.WeaponAttributes) ModularItemCache.get(stack, BetterCombatProperty.KEY);
46+
attributes = new net.bettercombat.api.WeaponAttributes(getAttackRange(stack), attributes.pose(), attributes.offHandPose(), attributes.isTwoHanded(), attributes.category(), attributes.attacks());
47+
return attributes;
48+
} else {
49+
return null;
50+
}
51+
}
52+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package smartin.miapi.modules.properties.compat;
2+
3+
import com.google.gson.JsonElement;
4+
import dev.architectury.platform.Platform;
5+
import smartin.miapi.modules.properties.util.MergeType;
6+
import smartin.miapi.modules.properties.util.ModuleProperty;
7+
8+
public class BetterCombatProperty implements ModuleProperty {
9+
public static String KEY = "better_combat_config";
10+
public static BetterCombatProperty property;
11+
12+
public BetterCombatProperty() {
13+
property = this;
14+
if (Platform.isModLoaded("bettercombat")) {
15+
BetterCombatHelper.setup();
16+
}
17+
}
18+
19+
@Override
20+
public boolean load(String moduleKey, JsonElement data) throws Exception {
21+
if (Platform.isModLoaded("bettercombat")) {
22+
return true;
23+
}
24+
return false;
25+
}
26+
27+
@Override
28+
public JsonElement merge(JsonElement old, JsonElement toMerge, MergeType type) {
29+
return ModuleProperty.super.merge(old, toMerge, type);
30+
}
31+
}

common/src/main/java/smartin/miapi/registries/RegistryInventory.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import smartin.miapi.modules.edit_options.PropertyInjectionDev;
3535
import smartin.miapi.modules.edit_options.skins.SkinOptions;
3636
import smartin.miapi.modules.properties.*;
37+
import smartin.miapi.modules.properties.compat.BetterCombatProperty;
3738
import smartin.miapi.modules.properties.render.*;
3839
import smartin.miapi.modules.properties.util.ModuleProperty;
3940

@@ -266,6 +267,9 @@ public static void setup() {
266267
registerMiapi(moduleProperties, MiningLevelProperty.KEY, new MiningLevelProperty());
267268
registerMiapi(moduleProperties, TagProperty.KEY, new TagProperty());
268269

270+
//compat
271+
registerMiapi(moduleProperties, BetterCombatProperty.KEY, new BetterCombatProperty());
272+
269273
// ABILITIES
270274
registerMiapi(useAbilityRegistry, "throw", new ThrowingAbility());
271275
registerMiapi(useAbilityRegistry, "block", new BlockAbility());
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"key": "sculk",
3+
"translation": "miapi.material.skulk",
4+
"icon": "textures/item/iron.png",
5+
"groups": [
6+
"wood",
7+
"metal"
8+
],
9+
"hardness": 1,
10+
"density": 1,
11+
"flexibility": 0,
12+
"durability": 3000,
13+
"mining_speed": 75,
14+
"mining_level": 3,
15+
"color": "444444",
16+
"textures": [
17+
"contrast"
18+
],
19+
"items": [
20+
{
21+
"item": "minecraft:sculk",
22+
"value": 1.0
23+
}
24+
]
25+
}

common/src/main/resources/data/miapi/modules/sword/blade/blade_dagger.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@
7070
"uuid": "AAAAAAAA-4180-4865-B01B-BCCE9785ACA3"
7171
}
7272
],
73+
"better_combat_config": {
74+
"parent": "bettercombat:dagger"
75+
},
7376
"applyPotionEffects": [
7477
{
7578
"event": "attack",

common/src/main/resources/data/miapi/modules/sword/blade/blade_greatsword.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@
3232
],
3333
"cost": 1
3434
},
35+
"better_combat_config": {
36+
"parent": "bettercombat:claymore"
37+
},
3538
"attributes": [
3639
{
3740
"attribute": "generic.attack_speed",

common/src/main/resources/data/miapi/modules/sword/blade/blade_katana.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
"allowedInSlots": [
2424
"sword_blade_large"
2525
],
26+
"better_combat_config": {
27+
"parent": "bettercombat:katana"
28+
},
2629
"allowedMaterial": {
2730
"allowedMaterials": [
2831
"wood","stone","metal","crystal"

common/src/main/resources/data/miapi/modules/sword/blade/blade_longsword.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@
2020
}
2121
}
2222
},
23+
"better_combat_config": {
24+
"parent": "bettercombat:claymore"
25+
},
2326
"allowedInSlots": [
2427
"sword_blade_large"
2528
],

common/src/main/resources/data/miapi/modules/sword/blade/blade_rapier.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
"allowedInSlots": [
2424
"sword_blade"
2525
],
26+
"better_combat_config": {
27+
"parent": "bettercombat:rapier"
28+
},
2629
"allowedMaterial": {
2730
"allowedMaterials": [
2831
"wood","stone","metal","crystal"

common/src/main/resources/data/miapi/modules/sword/blade/blade_sword.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
"allowedInSlots": [
2424
"sword_blade"
2525
],
26+
"better_combat_config": {
27+
"parent": "bettercombat:sword"
28+
},
2629
"allowedMaterial": {
2730
"allowedMaterials": [
2831
"wood","stone","metal","crystal"

common/src/main/resources/data/miapi/modules/sword/blade/blade_throwing_knife.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
"allowedInSlots": [
2424
"sword_blade_small"
2525
],
26+
"better_combat_config": {
27+
"parent": "bettercombat:soul_knife"
28+
},
2629
"allowedMaterial": {
2730
"allowedMaterials": [
2831
"wood","stone","metal","crystal"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"blade_greatsword": {
3+
"condition": {
4+
"type": "otherModule",
5+
"condition": {
6+
"type": "module",
7+
"module": "handle_short"
8+
}
9+
},
10+
"properties": {
11+
"better_combat_config": {
12+
"parent": "bettercombat:sword"
13+
}
14+
}
15+
}
16+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"blade_katana": {
3+
"condition": {
4+
"type": "otherModule",
5+
"condition": {
6+
"type": "module",
7+
"module": "handle_short"
8+
}
9+
},
10+
"properties": {
11+
"better_combat_config": {
12+
"parent": "bettercombat:sword"
13+
}
14+
}
15+
}
16+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"blade_longsword": {
3+
"condition": {
4+
"type": "otherModule",
5+
"condition": {
6+
"type": "module",
7+
"module": "handle_short"
8+
}
9+
},
10+
"properties": {
11+
"better_combat_config": {
12+
"parent": "bettercombat:sword"
13+
}
14+
}
15+
}
16+
}

common/src/main/resources/miapi-common.mixins.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44
"package": "smartin.miapi.mixin",
55
"compatibilityLevel": "JAVA_17",
66
"mixins": [
7-
"LootContextTypesAccessor",
7+
"BCWeaponRegistryMixin",
8+
"InventoryValidationMixin",
89
"ItemStackMixin",
910
"LivingEntityAccessor",
1011
"LivingEntityMixin",
11-
"InventoryValidationMixin"
12+
"LootContextTypesAccessor"
1213
],
1314
"client": [
1415
"client.ArmorFeatureRendererMixin",

fabric/build.gradle

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,21 @@
11
plugins {
22
id "com.github.johnrengelman.shadow" version "7.1.2"
33
}
4-
4+
repositories {
5+
maven { url 'https://maven.kosmx.dev/' }
6+
maven { url 'https://maven.shedaniel.me/' }
7+
maven { url 'https://maven.fabricmc.net/' }
8+
maven { url 'https://jitpack.io' }
9+
maven { url 'https://maven.terraformersmc.com/' }
10+
maven { url 'https://www.cursemaven.com' }
11+
maven {
12+
name = 'Modrinth'
13+
url = 'https://api.modrinth.com/maven'
14+
content {
15+
includeGroup 'maven.modrinth'
16+
}
17+
}
18+
}
519
architectury {
620
platformSetupLoomIde()
721
fabric()
@@ -31,6 +45,10 @@ dependencies {
3145

3246
implementation(include('org.mariuszgromada.math:MathParser.org-mXparser:4.4.2'))
3347

48+
//modImplementation "curse.maven:cloth-348521:4554906"
49+
//modImplementation "curse.maven:bettercombat-639842:4597949"
50+
//modImplementation 'dev.kosmx.player-anim:player-animation-lib-fabric:1.0.2-rc1+1.20'
51+
3452
common(project(path: ":common", configuration: "namedElements")) { transitive false }
3553
shadowCommon(project(path: ":common", configuration: "transformProductionFabric")) { transitive false }
3654
}

0 commit comments

Comments
 (0)