chore: update to 1.20.5
This commit is contained in:
parent
8ca745196d
commit
5db7c4c867
|
@ -1,16 +1,16 @@
|
|||
plugins {
|
||||
id("jfmod") version "1.5-SNAPSHOT"
|
||||
id("jfmod") version "1.6-SNAPSHOT"
|
||||
}
|
||||
|
||||
allprojects { group = "io.gitlab.jfronny" }
|
||||
base.archivesName = "combit"
|
||||
|
||||
val fabricVersion = "0.91.1+1.20.4"
|
||||
jfMod {
|
||||
minecraftVersion = "1.20.4"
|
||||
minecraftVersion = "1.20.5"
|
||||
yarn("build.1")
|
||||
loaderVersion = "0.15.0"
|
||||
libJfVersion = "3.14.1"
|
||||
loaderVersion = "0.15.10"
|
||||
libJfVersion = "3.15.5"
|
||||
fabricApiVersion = "0.97.6+1.20.5"
|
||||
|
||||
modrinth {
|
||||
projectId = "combit"
|
||||
|
@ -26,11 +26,15 @@ jfMod {
|
|||
}
|
||||
|
||||
dependencies {
|
||||
modImplementation("io.gitlab.jfronny.libjf:libjf-config-core-v2:${jfMod.libJfVersion.get()}")
|
||||
modImplementation(fabricApi.module("fabric-api-base", fabricVersion))
|
||||
modImplementation("io.gitlab.jfronny.libjf:libjf-config-core-v2")
|
||||
modImplementation("net.fabricmc.fabric-api:fabric-api-base")
|
||||
|
||||
// Dev env
|
||||
modLocalRuntime("io.gitlab.jfronny.libjf:libjf-config-ui-tiny:${jfMod.libJfVersion.get()}")
|
||||
modLocalRuntime("io.gitlab.jfronny.libjf:libjf-devutil:${jfMod.libJfVersion.get()}")
|
||||
modLocalRuntime("com.terraformersmc:modmenu:9.0.0-pre.1")
|
||||
modLocalRuntime("io.gitlab.jfronny.libjf:libjf-config-ui-tiny")
|
||||
modLocalRuntime("io.gitlab.jfronny.libjf:libjf-devutil")
|
||||
modLocalRuntime("com.terraformersmc:modmenu:10.0.0-beta.1")
|
||||
// for modmenu
|
||||
modLocalRuntime("net.fabricmc.fabric-api:fabric-resource-loader-v0")
|
||||
modLocalRuntime("net.fabricmc.fabric-api:fabric-screen-api-v1")
|
||||
modLocalRuntime("net.fabricmc.fabric-api:fabric-key-binding-api-v1")
|
||||
}
|
||||
|
|
|
@ -15,16 +15,16 @@ public class InGameHudMixin {
|
|||
@Shadow @Final private MinecraftClient client;
|
||||
private AttackIndicator combit$attackIndicator;
|
||||
|
||||
@Inject(at = @At("HEAD"), method = "renderCrosshair(Lnet/minecraft/client/gui/DrawContext;)V")
|
||||
private void renderCrosshair(DrawContext context, CallbackInfo info) {
|
||||
@Inject(at = @At("HEAD"), method = "renderCrosshair(Lnet/minecraft/client/gui/DrawContext;F)V")
|
||||
private void renderCrosshair(DrawContext context, float tickDelta, CallbackInfo info) {
|
||||
if (CombitConfig.cooldownProgressOverride >= 0) {
|
||||
combit$attackIndicator = this.client.options.getAttackIndicator().getValue();
|
||||
this.client.options.getAttackIndicator().setValue(AttackIndicator.OFF);
|
||||
}
|
||||
}
|
||||
|
||||
@Inject(at = @At("RETURN"), method = "renderCrosshair(Lnet/minecraft/client/gui/DrawContext;)V")
|
||||
private void renderCrosshairPost(DrawContext context, CallbackInfo info) {
|
||||
@Inject(at = @At("RETURN"), method = "renderCrosshair(Lnet/minecraft/client/gui/DrawContext;F)V")
|
||||
private void renderCrosshairPost(DrawContext context, float tickDelta, CallbackInfo info) {
|
||||
if (CombitConfig.cooldownProgressOverride >= 0) {
|
||||
this.client.options.getAttackIndicator().setValue(combit$attackIndicator);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
package io.gitlab.jfronny.combit.mixin;
|
||||
|
||||
import it.unimi.dsi.fastutil.objects.Reference2ObjectMap;
|
||||
import net.minecraft.component.ComponentMap;
|
||||
import net.minecraft.component.DataComponentType;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
|
||||
@Mixin(ComponentMap.Builder.class)
|
||||
public interface ComponentMapBuilderAccessor {
|
||||
@Accessor("components") Reference2ObjectMap<DataComponentType<?>, Object> combit$getComponents();
|
||||
@Accessor("components") void combit$setComponents(Reference2ObjectMap<DataComponentType<?>, Object> components);
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
package io.gitlab.jfronny.combit.mixin;
|
||||
|
||||
import net.minecraft.component.ComponentMap;
|
||||
import net.minecraft.item.Item;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
|
||||
@Mixin(Item.Settings.class)
|
||||
public interface ItemSettingsAccessor {
|
||||
@Accessor("components") ComponentMap.Builder combit$getComponents();
|
||||
@Accessor("components") void combit$setComponents(ComponentMap.Builder components);
|
||||
}
|
|
@ -10,6 +10,7 @@ import net.minecraft.entity.attribute.EntityAttribute;
|
|||
import net.minecraft.entity.attribute.EntityAttributeInstance;
|
||||
import net.minecraft.entity.attribute.EntityAttributes;
|
||||
import net.minecraft.entity.damage.DamageSource;
|
||||
import net.minecraft.registry.entry.RegistryEntry;
|
||||
import net.minecraft.util.ActionResult;
|
||||
import net.minecraft.world.World;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
@ -23,7 +24,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|||
public abstract class LivingEntityMixin {
|
||||
@Shadow public abstract float getMaxHealth();
|
||||
@Shadow public abstract void setHealth(float health);
|
||||
@Shadow @Nullable public abstract EntityAttributeInstance getAttributeInstance(EntityAttribute attribute);
|
||||
@Shadow @Nullable public abstract EntityAttributeInstance getAttributeInstance(RegistryEntry<EntityAttribute> attribute);
|
||||
|
||||
@Inject(at = @At("TAIL"), method = "applyDamage", cancellable = true)
|
||||
private void onEntityHurt(final DamageSource source, final float amount, CallbackInfo ci) {
|
||||
|
|
|
@ -1,48 +1,71 @@
|
|||
package io.gitlab.jfronny.combit.mixin;
|
||||
|
||||
import com.google.common.collect.ImmutableMultimap;
|
||||
import com.google.common.collect.Multimap;
|
||||
import io.gitlab.jfronny.combit.CombitConfig;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.entity.attribute.EntityAttribute;
|
||||
import net.minecraft.component.ComponentMap;
|
||||
import net.minecraft.component.DataComponentTypes;
|
||||
import net.minecraft.component.type.AttributeModifierSlot;
|
||||
import net.minecraft.component.type.AttributeModifiersComponent;
|
||||
import net.minecraft.entity.attribute.EntityAttributeModifier;
|
||||
import net.minecraft.entity.attribute.EntityAttributes;
|
||||
import net.minecraft.item.*;
|
||||
import net.minecraft.registry.tag.TagKey;
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Mutable;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Mixin(MiningToolItem.class)
|
||||
public abstract class MiningToolItemMixin extends ToolItem {
|
||||
@Shadow @Final @Mutable private Multimap<EntityAttribute, EntityAttributeModifier> attributeModifiers;
|
||||
@Shadow @Final @Mutable private float attackDamage;
|
||||
|
||||
public MiningToolItemMixin(ToolMaterial material, Settings settings) {
|
||||
super(material, settings);
|
||||
}
|
||||
|
||||
@Inject(at = @At("RETURN"), method = "<init>(FFLnet/minecraft/item/ToolMaterial;Lnet/minecraft/registry/tag/TagKey;Lnet/minecraft/item/Item$Settings;)V")
|
||||
private void modifyAttackDamage(float attackDamage, float attackSpeed, ToolMaterial material, TagKey<Block> effectiveBlocks, Settings settings, CallbackInfo ci) {
|
||||
@Inject(at = @At("RETURN"), method = "<init>(Lnet/minecraft/item/ToolMaterial;Lnet/minecraft/registry/tag/TagKey;Lnet/minecraft/item/Item$Settings;)V")
|
||||
private void modifyAttackDamage(ToolMaterial material, TagKey<Block> effectiveBlocks, Settings settings, CallbackInfo ci) {
|
||||
double factor = ((MiningToolItem)(Object)this) instanceof AxeItem ? CombitConfig.axeAttackDamageFactor : CombitConfig.weaponAttackDamageFactor;
|
||||
if (factor >= 0) {
|
||||
this.attackDamage *= factor;
|
||||
ImmutableMultimap.Builder<EntityAttribute, EntityAttributeModifier> builder = ImmutableMultimap.builder();
|
||||
builder.put(EntityAttributes.GENERIC_ATTACK_DAMAGE,
|
||||
new EntityAttributeModifier(ATTACK_DAMAGE_MODIFIER_ID,
|
||||
"Tool modifier",
|
||||
this.attackDamage,
|
||||
EntityAttributeModifier.Operation.ADDITION));
|
||||
this.attributeModifiers.forEach((k, v) -> {
|
||||
if (!k.getTranslationKey().equals(EntityAttributes.GENERIC_ATTACK_DAMAGE.getTranslationKey())) {
|
||||
builder.put(k, v);
|
||||
ItemSettingsAccessor isa = (ItemSettingsAccessor) settings;
|
||||
ComponentMap.Builder cb = isa.combit$getComponents();
|
||||
if (cb == null) {
|
||||
cb = ComponentMap.builder().addAll(DataComponentTypes.DEFAULT_ITEM_COMPONENTS);
|
||||
isa.combit$setComponents(cb);
|
||||
}
|
||||
ComponentMapBuilderAccessor cbi = (ComponentMapBuilderAccessor) cb;
|
||||
List<AttributeModifiersComponent.Entry> entries = new ArrayList<>();
|
||||
boolean showInTooltip = false;
|
||||
AttributeModifiersComponent amcOrig = (AttributeModifiersComponent) cbi.combit$getComponents().get(DataComponentTypes.ATTRIBUTE_MODIFIERS);
|
||||
if (amcOrig != null) {
|
||||
entries.addAll(amcOrig.modifiers());
|
||||
showInTooltip = amcOrig.showInTooltip();
|
||||
}
|
||||
|
||||
AttributeModifiersComponent.Entry damageEntry = null;
|
||||
for (AttributeModifiersComponent.Entry entry : entries) {
|
||||
if (entry.attribute().equals(EntityAttributes.GENERIC_ATTACK_DAMAGE)) {
|
||||
damageEntry = entry;
|
||||
}
|
||||
});
|
||||
this.attributeModifiers = builder.build();
|
||||
}
|
||||
double damage = 5;
|
||||
if (damageEntry != null) {
|
||||
entries.remove(damageEntry);
|
||||
damage = damageEntry.modifier().value();
|
||||
}
|
||||
|
||||
damageEntry = new AttributeModifiersComponent.Entry(
|
||||
EntityAttributes.GENERIC_ATTACK_DAMAGE,
|
||||
new EntityAttributeModifier(
|
||||
ATTACK_DAMAGE_MODIFIER_ID,
|
||||
"Tool modifier",
|
||||
damage * factor,
|
||||
EntityAttributeModifier.Operation.ADD_VALUE),
|
||||
AttributeModifierSlot.MAINHAND);
|
||||
|
||||
entries.add(damageEntry);
|
||||
cb.add(DataComponentTypes.ATTRIBUTE_MODIFIERS, new AttributeModifiersComponent(entries, showInTooltip));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,9 +5,11 @@
|
|||
"compatibilityLevel": "JAVA_17",
|
||||
"mixins": [
|
||||
"AbstractSkeletonEntityMixin",
|
||||
"ComponentMapBuilderAccessor",
|
||||
"EggEntityMixin",
|
||||
"FishingBobberEntityMixin",
|
||||
"HostileEntityMixin",
|
||||
"ItemSettingsAccessor",
|
||||
"LivingEntityMixin",
|
||||
"MiningToolItemMixin",
|
||||
"MobEntityMixin",
|
||||
|
|
Loading…
Reference in New Issue