Skip to content

Commit 19ed6da

Browse files
authored
Fix Failing to Open Nautilus Inventory (#13297)
1 parent a6b7467 commit 19ed6da

File tree

5 files changed

+52
-2
lines changed

5 files changed

+52
-2
lines changed

build-data/paper.at

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,7 @@ public net.minecraft.world.entity.animal.horse.AbstractHorse owner
319319
public net.minecraft.world.entity.animal.horse.Horse setVariantAndMarkings(Lnet/minecraft/world/entity/animal/horse/Variant;Lnet/minecraft/world/entity/animal/horse/Markings;)V
320320
public net.minecraft.world.entity.animal.horse.Llama setVariant(Lnet/minecraft/world/entity/animal/horse/Llama$Variant;)V
321321
public net.minecraft.world.entity.animal.horse.SkeletonHorse trapTime
322+
public net.minecraft.world.entity.animal.nautilus.AbstractNautilus inventory
322323
public net.minecraft.world.entity.animal.sniffer.Sniffer calculateDigPosition()Ljava/util/Optional;
323324
public net.minecraft.world.entity.animal.sniffer.Sniffer canDig()Z
324325
public net.minecraft.world.entity.animal.sniffer.Sniffer getExploredPositions()Ljava/util/stream/Stream;
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
package org.bukkit.entity;
22

3-
public interface AbstractNautilus extends Animals, Tameable {
3+
import org.bukkit.inventory.InventoryHolder;
4+
5+
public interface AbstractNautilus extends Animals, InventoryHolder, Tameable {
46
}

paper-server/patches/sources/net/minecraft/server/level/ServerPlayer.java.patch

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1043,7 +1043,7 @@
10431043
return OptionalInt.of(this.containerCounter);
10441044
}
10451045
}
1046-
@@ -1342,14 +_,25 @@
1046+
@@ -1342,27 +_,49 @@
10471047

10481048
@Override
10491049
public void openHorseInventory(AbstractHorse horse, Container inventory) {
@@ -1072,6 +1072,32 @@
10721072
this.initMenu(this.containerMenu);
10731073
}
10741074

1075+
@Override
1076+
public void openNautilusInventory(AbstractNautilus nautilus, Container inventory) {
1077+
+ // Paper start - Inventory open hook
1078+
+ this.nextContainerCounter(); // moved up from below
1079+
+ AbstractContainerMenu menu = new NautilusInventoryMenu(this.containerCounter, this.getInventory(), inventory, nautilus, nautilus.getInventoryColumns());
1080+
+ menu.setTitle(nautilus.getDisplayName());
1081+
+ menu = org.bukkit.craftbukkit.event.CraftEventFactory.callInventoryOpenEvent(this, containerMenu);
1082+
+
1083+
+ if (menu == null) {
1084+
+ inventory.stopOpen(this);
1085+
+ return;
1086+
+ }
1087+
+ // Paper end
1088+
if (this.containerMenu != this.inventoryMenu) {
1089+
this.closeContainer();
1090+
}
1091+
1092+
- this.nextContainerCounter();
1093+
+ // this.nextContainerCounter(); Paper - Move Up
1094+
int inventoryColumns = nautilus.getInventoryColumns();
1095+
this.connection.send(new ClientboundMountScreenOpenPacket(this.containerCounter, inventoryColumns, nautilus.getId()));
1096+
- this.containerMenu = new NautilusInventoryMenu(this.containerCounter, this.getInventory(), inventory, nautilus, inventoryColumns);
1097+
+ this.containerMenu = menu; // Paper - Moved up declaration
1098+
this.initMenu(this.containerMenu);
1099+
}
1100+
10751101
@@ -1384,10 +_,30 @@
10761102

10771103
@Override

paper-server/patches/sources/net/minecraft/world/entity/animal/nautilus/AbstractNautilus.java.patch

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,12 @@
2727
this.tame(player);
2828
this.navigation.stop();
2929
this.level().broadcastEntityEvent(this, EntityEvent.TAMING_SUCCEEDED);
30+
@@ -481,7 +_,7 @@
31+
32+
protected void createInventory() {
33+
SimpleContainer simpleContainer = this.inventory;
34+
- this.inventory = new SimpleContainer(this.getInventorySize());
35+
+ this.inventory = new SimpleContainer(this.getInventorySize(), (org.bukkit.craftbukkit.entity.CraftAbstractNautilus) getBukkitEntity()); // Paper - add inv owner
36+
if (simpleContainer != null) {
37+
int min = Math.min(simpleContainer.getContainerSize(), this.inventory.getContainerSize());
38+

paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractNautilus.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package org.bukkit.craftbukkit.entity;
22

3+
import net.minecraft.world.entity.EquipmentSlot;
34
import net.minecraft.world.entity.animal.nautilus.AbstractNautilus;
45
import org.bukkit.craftbukkit.CraftServer;
6+
import org.bukkit.craftbukkit.inventory.CraftSaddledInventory;
7+
import org.bukkit.inventory.Inventory;
58

69
public class CraftAbstractNautilus extends CraftTameableAnimal implements org.bukkit.entity.AbstractNautilus {
710
public CraftAbstractNautilus(final CraftServer server, final AbstractNautilus entity) {
@@ -12,4 +15,13 @@ public CraftAbstractNautilus(final CraftServer server, final AbstractNautilus en
1215
public AbstractNautilus getHandle() {
1316
return (AbstractNautilus) this.entity;
1417
}
18+
19+
@Override
20+
public Inventory getInventory() {
21+
return new CraftSaddledInventory(
22+
getHandle().inventory,
23+
this.getHandle().createEquipmentSlotContainer(EquipmentSlot.BODY),
24+
this.getHandle().createEquipmentSlotContainer(EquipmentSlot.SADDLE)
25+
);
26+
}
1527
}

0 commit comments

Comments
 (0)