Add back AttackRange defaults instance

This commit is contained in:
Jason Penilla 2025-12-01 10:17:26 -07:00
parent 226b6c6d8e
commit 2030c42420
No known key found for this signature in database
GPG Key ID: 0E75A301420E48F8
2 changed files with 30 additions and 13 deletions

View File

@ -0,0 +1,24 @@
--- a/net/minecraft/world/item/component/AttackRange.java
+++ b/net/minecraft/world/item/component/AttackRange.java
@@ -25,14 +_,15 @@
import net.minecraft.world.phys.Vec3;
public record AttackRange(float minRange, float maxRange, float minCreativeRange, float maxCreativeRange, float hitboxMargin, float mobFactor) {
+ public static final AttackRange CODEC_DEFAULT = new AttackRange(0.0F, 3.0F, 0.0F, 5.0F, 0.3F, 1.0F); // Paper - add back defaults instance
public static final Codec<AttackRange> CODEC = RecordCodecBuilder.create(
instance -> instance.group(
- ExtraCodecs.floatRange(0.0F, 64.0F).optionalFieldOf("min_reach", 0.0F).forGetter(AttackRange::minRange),
- ExtraCodecs.floatRange(0.0F, 64.0F).optionalFieldOf("max_reach", 3.0F).forGetter(AttackRange::maxRange),
- ExtraCodecs.floatRange(0.0F, 64.0F).optionalFieldOf("min_creative_reach", 0.0F).forGetter(AttackRange::minCreativeRange),
- ExtraCodecs.floatRange(0.0F, 64.0F).optionalFieldOf("max_creative_reach", 5.0F).forGetter(AttackRange::maxCreativeRange),
- ExtraCodecs.floatRange(0.0F, 1.0F).optionalFieldOf("hitbox_margin", 0.3F).forGetter(AttackRange::hitboxMargin),
- Codec.floatRange(0.0F, 2.0F).optionalFieldOf("mob_factor", 1.0F).forGetter(AttackRange::mobFactor)
+ ExtraCodecs.floatRange(0.0F, 64.0F).optionalFieldOf("min_reach", 0.0F).forGetter(AttackRange::minRange), // Paper - diff on change: used in CODEC_DEFAULT above
+ ExtraCodecs.floatRange(0.0F, 64.0F).optionalFieldOf("max_reach", 3.0F).forGetter(AttackRange::maxRange), // Paper - diff on change: used in CODEC_DEFAULT above
+ ExtraCodecs.floatRange(0.0F, 64.0F).optionalFieldOf("min_creative_reach", 0.0F).forGetter(AttackRange::minCreativeRange), // Paper - diff on change: used in CODEC_DEFAULT above
+ ExtraCodecs.floatRange(0.0F, 64.0F).optionalFieldOf("max_creative_reach", 5.0F).forGetter(AttackRange::maxCreativeRange), // Paper - diff on change: used in CODEC_DEFAULT above
+ ExtraCodecs.floatRange(0.0F, 1.0F).optionalFieldOf("hitbox_margin", 0.3F).forGetter(AttackRange::hitboxMargin), // Paper - diff on change: used in CODEC_DEFAULT above
+ Codec.floatRange(0.0F, 2.0F).optionalFieldOf("mob_factor", 1.0F).forGetter(AttackRange::mobFactor) // Paper - diff on change: used in CODEC_DEFAULT above
)
.apply(instance, AttackRange::new)
);

View File

@ -2,7 +2,6 @@ package io.papermc.paper.datacomponent.item;
import com.google.common.base.Preconditions;
import org.bukkit.craftbukkit.util.Handleable;
import org.jetbrains.annotations.Range;
public record PaperAttackRange(
net.minecraft.world.item.component.AttackRange impl
@ -45,12 +44,12 @@ public record PaperAttackRange(
static final class BuilderImpl implements AttackRange.Builder {
private float minReach = -1;
private float maxReach = -1;
private float minCreativeReach = -1;
private float maxCreativeReach = -1;
private float hitboxMargin = -1;
private float mobFactor = -1;
private float minReach = net.minecraft.world.item.component.AttackRange.CODEC_DEFAULT.minRange();
private float maxReach = net.minecraft.world.item.component.AttackRange.CODEC_DEFAULT.maxRange();
private float minCreativeReach = net.minecraft.world.item.component.AttackRange.CODEC_DEFAULT.minCreativeRange();
private float maxCreativeReach = net.minecraft.world.item.component.AttackRange.CODEC_DEFAULT.maxCreativeRange();
private float hitboxMargin = net.minecraft.world.item.component.AttackRange.CODEC_DEFAULT.hitboxMargin();
private float mobFactor = net.minecraft.world.item.component.AttackRange.CODEC_DEFAULT.mobFactor();
@Override
public AttackRange.Builder minReach(final float minReach) {
@ -96,12 +95,6 @@ public record PaperAttackRange(
@Override
public AttackRange build() {
Preconditions.checkArgument(this.minReach >= 0.0F, "minReach must be set");
Preconditions.checkArgument(this.maxReach >= 0.0F, "maxReach must be set");
Preconditions.checkArgument(this.minCreativeReach >= 0.0F, "minCreativeReach must be set");
Preconditions.checkArgument(this.maxCreativeReach >= 0.0F, "maxCreativeReach must be set");
Preconditions.checkArgument(this.hitboxMargin >= 0.0F, "hitboxMargin must be set");
Preconditions.checkArgument(this.mobFactor >= 0.0F, "mobFactor must be set");
return new PaperAttackRange(
new net.minecraft.world.item.component.AttackRange(
this.minReach,