41 lines
2.4 KiB
Diff
41 lines
2.4 KiB
Diff
![]() |
--- a/net/minecraft/world/InteractionResult.java
|
||
|
+++ b/net/minecraft/world/InteractionResult.java
|
||
|
@@ -30,18 +_,34 @@
|
||
|
public record Pass() implements InteractionResult {
|
||
|
}
|
||
|
|
||
|
- public record Success(InteractionResult.SwingSource swingSource, InteractionResult.ItemContext itemContext) implements InteractionResult {
|
||
|
+ // Paper start - track more context in interaction result
|
||
|
+ public record PaperSuccessContext(net.minecraft.core.@org.jspecify.annotations.Nullable BlockPos placedBlockPosition) {
|
||
|
+ static PaperSuccessContext DEFAULT = new PaperSuccessContext(null);
|
||
|
+
|
||
|
+ public PaperSuccessContext placedBlockAt(final net.minecraft.core.BlockPos blockPos) {
|
||
|
+ return new PaperSuccessContext(blockPos);
|
||
|
+ }
|
||
|
+ }
|
||
|
+ public record Success(InteractionResult.SwingSource swingSource, InteractionResult.ItemContext itemContext, PaperSuccessContext paperSuccessContext) implements InteractionResult {
|
||
|
+ public InteractionResult.Success configurePaper(final java.util.function.UnaryOperator<PaperSuccessContext> edit) {
|
||
|
+ return new InteractionResult.Success(this.swingSource, this.itemContext, edit.apply(this.paperSuccessContext));
|
||
|
+ }
|
||
|
+
|
||
|
+ public Success(final net.minecraft.world.InteractionResult.SwingSource swingSource, final net.minecraft.world.InteractionResult.ItemContext itemContext) {
|
||
|
+ this(swingSource, itemContext, PaperSuccessContext.DEFAULT);
|
||
|
+ }
|
||
|
+ // Paper end - track more context in interaction result
|
||
|
@Override
|
||
|
public boolean consumesAction() {
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
public InteractionResult.Success heldItemTransformedTo(ItemStack stack) {
|
||
|
- return new InteractionResult.Success(this.swingSource, new InteractionResult.ItemContext(true, stack));
|
||
|
+ return new InteractionResult.Success(this.swingSource, new InteractionResult.ItemContext(true, stack), this.paperSuccessContext); // Paper - track more context in interaction result
|
||
|
}
|
||
|
|
||
|
public InteractionResult.Success withoutItem() {
|
||
|
- return new InteractionResult.Success(this.swingSource, InteractionResult.ItemContext.NONE);
|
||
|
+ return new InteractionResult.Success(this.swingSource, InteractionResult.ItemContext.NONE, this.paperSuccessContext); // Paper - track more context in interaction result
|
||
|
}
|
||
|
|
||
|
public boolean wasItemInteraction() {
|