mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-21 10:27:44 +01:00
Barrels and enderchests 6 rows
This commit is contained in:
committed by
granny
parent
4b38df66d4
commit
3f0b653764
@@ -1,19 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
|
||||||
Date: Tue, 23 Jul 2019 06:50:55 -0500
|
|
||||||
Subject: [PATCH] Allow inventory resizing
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/org/bukkit/event/inventory/InventoryType.java b/src/main/java/org/bukkit/event/inventory/InventoryType.java
|
|
||||||
index 81118a91c2e22e02a1f774d1cc4d3e97064087ce..3ac1e4a821a5b48d3936222cbfddadd3b803deef 100644
|
|
||||||
--- a/src/main/java/org/bukkit/event/inventory/InventoryType.java
|
|
||||||
+++ b/src/main/java/org/bukkit/event/inventory/InventoryType.java
|
|
||||||
@@ -164,7 +164,7 @@ public enum InventoryType {
|
|
||||||
SMITHING_NEW(4, "Upgrade Gear", MenuType.SMITHING),
|
|
||||||
;
|
|
||||||
|
|
||||||
- private final int size;
|
|
||||||
+ private int size; public void setDefaultSize(int size) { this.size = size; } // Purpur - remove final and add setter
|
|
||||||
private final String title;
|
|
||||||
private final MenuType menuType;
|
|
||||||
private final boolean isCreatable;
|
|
||||||
@@ -1,298 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
|
||||||
Date: Thu, 23 May 2019 21:50:37 -0500
|
|
||||||
Subject: [PATCH] Barrels and enderchests 6 rows
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
|
|
||||||
index 98e803eaf5ce4c773f35fd752c21c7176707427c..b9136fcec3f36549ddd572cbb8cd01ecae45590f 100644
|
|
||||||
--- a/net/minecraft/server/players/PlayerList.java
|
|
||||||
+++ b/net/minecraft/server/players/PlayerList.java
|
|
||||||
@@ -1116,6 +1116,27 @@ public abstract class PlayerList {
|
|
||||||
player.getBukkitEntity().recalculatePermissions(); // CraftBukkit
|
|
||||||
this.server.getCommands().sendCommands(player);
|
|
||||||
} // Paper - Add sendOpLevel API
|
|
||||||
+
|
|
||||||
+ // Purpur start
|
|
||||||
+ if (org.purpurmc.purpur.PurpurConfig.enderChestSixRows && org.purpurmc.purpur.PurpurConfig.enderChestPermissionRows) {
|
|
||||||
+ org.bukkit.craftbukkit.entity.CraftHumanEntity bukkit = player.getBukkitEntity();
|
|
||||||
+ if (bukkit.hasPermission("purpur.enderchest.rows.six")) {
|
|
||||||
+ player.sixRowEnderchestSlotCount = 54;
|
|
||||||
+ } else if (bukkit.hasPermission("purpur.enderchest.rows.five")) {
|
|
||||||
+ player.sixRowEnderchestSlotCount = 45;
|
|
||||||
+ } else if (bukkit.hasPermission("purpur.enderchest.rows.four")) {
|
|
||||||
+ player.sixRowEnderchestSlotCount = 36;
|
|
||||||
+ } else if (bukkit.hasPermission("purpur.enderchest.rows.three")) {
|
|
||||||
+ player.sixRowEnderchestSlotCount = 27;
|
|
||||||
+ } else if (bukkit.hasPermission("purpur.enderchest.rows.two")) {
|
|
||||||
+ player.sixRowEnderchestSlotCount = 18;
|
|
||||||
+ } else if (bukkit.hasPermission("purpur.enderchest.rows.one")) {
|
|
||||||
+ player.sixRowEnderchestSlotCount = 9;
|
|
||||||
+ }
|
|
||||||
+ } else {
|
|
||||||
+ player.sixRowEnderchestSlotCount = -1;
|
|
||||||
+ }
|
|
||||||
+ //Purpur end
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isWhiteListed(GameProfile profile) {
|
|
||||||
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
|
|
||||||
index 28a4cf814ec4b34dce883ba4f24ca55008c8f6c1..87c6378104ff47549c751e09afb6cfcd9b8dcf5d 100644
|
|
||||||
--- a/net/minecraft/world/entity/player/Player.java
|
|
||||||
+++ b/net/minecraft/world/entity/player/Player.java
|
|
||||||
@@ -200,6 +200,7 @@ public abstract class Player extends LivingEntity {
|
|
||||||
private int currentImpulseContextResetGraceTime;
|
|
||||||
public boolean affectsSpawning = true; // Paper - Affects Spawning API
|
|
||||||
public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; // Paper - flying fall damage
|
|
||||||
+ public int sixRowEnderchestSlotCount = -1; // Purpur
|
|
||||||
|
|
||||||
// CraftBukkit start
|
|
||||||
public boolean fauxSleeping;
|
|
||||||
diff --git a/net/minecraft/world/inventory/ChestMenu.java b/net/minecraft/world/inventory/ChestMenu.java
|
|
||||||
index 48a6b6136ac3414ca735f93a14b1a8d76210603c..27321b07cd04814bc1ff720c65770d7755625bb6 100644
|
|
||||||
--- a/net/minecraft/world/inventory/ChestMenu.java
|
|
||||||
+++ b/net/minecraft/world/inventory/ChestMenu.java
|
|
||||||
@@ -66,10 +66,30 @@ public class ChestMenu extends AbstractContainerMenu {
|
|
||||||
return new ChestMenu(MenuType.GENERIC_9x6, syncId, playerInventory, 6);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // Purpur start
|
|
||||||
+ public static ChestMenu oneRow(int syncId, Inventory playerInventory, Container inventory) {
|
|
||||||
+ return new ChestMenu(MenuType.GENERIC_9x1, syncId, playerInventory, inventory, 1);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public static ChestMenu twoRows(int syncId, Inventory playerInventory, Container inventory) {
|
|
||||||
+ return new ChestMenu(MenuType.GENERIC_9x2, syncId, playerInventory, inventory, 2);
|
|
||||||
+ }
|
|
||||||
+ // Purpur end
|
|
||||||
+
|
|
||||||
public static ChestMenu threeRows(int syncId, Inventory playerInventory, Container inventory) {
|
|
||||||
return new ChestMenu(MenuType.GENERIC_9x3, syncId, playerInventory, inventory, 3);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // Purpur start
|
|
||||||
+ public static ChestMenu fourRows(int syncId, Inventory playerInventory, Container inventory) {
|
|
||||||
+ return new ChestMenu(MenuType.GENERIC_9x4, syncId, playerInventory, inventory, 4);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public static ChestMenu fiveRows(int syncId, Inventory playerInventory, Container inventory) {
|
|
||||||
+ return new ChestMenu(MenuType.GENERIC_9x5, syncId, playerInventory, inventory, 5);
|
|
||||||
+ }
|
|
||||||
+ // Purpur end
|
|
||||||
+
|
|
||||||
public static ChestMenu sixRows(int syncId, Inventory playerInventory, Container inventory) {
|
|
||||||
return new ChestMenu(MenuType.GENERIC_9x6, syncId, playerInventory, inventory, 6);
|
|
||||||
}
|
|
||||||
diff --git a/net/minecraft/world/inventory/PlayerEnderChestContainer.java b/net/minecraft/world/inventory/PlayerEnderChestContainer.java
|
|
||||||
index a15d5ff872dbd77f3c3145e0328f3d02e431ff8c..1dcf36d502990d32fc4cd3ea69c3ea334baed69a 100644
|
|
||||||
--- a/net/minecraft/world/inventory/PlayerEnderChestContainer.java
|
|
||||||
+++ b/net/minecraft/world/inventory/PlayerEnderChestContainer.java
|
|
||||||
@@ -31,11 +31,18 @@ public class PlayerEnderChestContainer extends SimpleContainer {
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerEnderChestContainer(Player owner) {
|
|
||||||
- super(27);
|
|
||||||
+ super(org.purpurmc.purpur.PurpurConfig.enderChestSixRows ? 54 : 27); // Purpur
|
|
||||||
this.owner = owner;
|
|
||||||
// CraftBukkit end
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // Purpur start
|
|
||||||
+ @Override
|
|
||||||
+ public int getContainerSize() {
|
|
||||||
+ return owner.sixRowEnderchestSlotCount < 0 ? super.getContainerSize() : owner.sixRowEnderchestSlotCount;
|
|
||||||
+ }
|
|
||||||
+ // Purpur end
|
|
||||||
+
|
|
||||||
public void setActiveChest(EnderChestBlockEntity blockEntity) {
|
|
||||||
this.activeChest = blockEntity;
|
|
||||||
}
|
|
||||||
diff --git a/net/minecraft/world/level/block/EnderChestBlock.java b/net/minecraft/world/level/block/EnderChestBlock.java
|
|
||||||
index 9b6ab617ab7f503cf0b2d4e29333c706ffe95f46..bfe79431dc5707677671df5c0787817c6e14a676 100644
|
|
||||||
--- a/net/minecraft/world/level/block/EnderChestBlock.java
|
|
||||||
+++ b/net/minecraft/world/level/block/EnderChestBlock.java
|
|
||||||
@@ -84,7 +84,7 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
|
|
||||||
// Paper start - Fix InventoryOpenEvent cancellation - moved up;
|
|
||||||
playerEnderChestContainer.setActiveChest(enderChestBlockEntity); // Needs to happen before ChestMenu.threeRows as it is required for opening animations
|
|
||||||
if (world instanceof ServerLevel serverLevel && player.openMenu(
|
|
||||||
- new SimpleMenuProvider((i, inventory, playerx) -> ChestMenu.threeRows(i, inventory, playerEnderChestContainer), CONTAINER_TITLE)
|
|
||||||
+ new SimpleMenuProvider((i, inventory, playerx) -> org.purpurmc.purpur.PurpurConfig.enderChestSixRows ? getEnderChestSixRows(i, inventory, player, playerEnderChestContainer) : ChestMenu.threeRows(i, inventory, playerEnderChestContainer), CONTAINER_TITLE) // Purpur
|
|
||||||
).isPresent()) {
|
|
||||||
// Paper end - Fix InventoryOpenEvent cancellation - moved up;
|
|
||||||
// Paper - Fix InventoryOpenEvent cancellation - moved up;
|
|
||||||
@@ -99,6 +99,35 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // Purpur start
|
|
||||||
+ private ChestMenu getEnderChestSixRows(int syncId, net.minecraft.world.entity.player.Inventory inventory, Player player, PlayerEnderChestContainer playerEnderChestContainer) {
|
|
||||||
+ if (org.purpurmc.purpur.PurpurConfig.enderChestPermissionRows) {
|
|
||||||
+ org.bukkit.craftbukkit.entity.CraftHumanEntity bukkitPlayer = player.getBukkitEntity();
|
|
||||||
+ if (bukkitPlayer.hasPermission("purpur.enderchest.rows.six")) {
|
|
||||||
+ player.sixRowEnderchestSlotCount = 54;
|
|
||||||
+ return ChestMenu.sixRows(syncId, inventory, playerEnderChestContainer);
|
|
||||||
+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.five")) {
|
|
||||||
+ player.sixRowEnderchestSlotCount = 45;
|
|
||||||
+ return ChestMenu.fiveRows(syncId, inventory, playerEnderChestContainer);
|
|
||||||
+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.four")) {
|
|
||||||
+ player.sixRowEnderchestSlotCount = 36;
|
|
||||||
+ return ChestMenu.fourRows(syncId, inventory, playerEnderChestContainer);
|
|
||||||
+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.three")) {
|
|
||||||
+ player.sixRowEnderchestSlotCount = 27;
|
|
||||||
+ return ChestMenu.threeRows(syncId, inventory, playerEnderChestContainer);
|
|
||||||
+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.two")) {
|
|
||||||
+ player.sixRowEnderchestSlotCount = 18;
|
|
||||||
+ return ChestMenu.twoRows(syncId, inventory, playerEnderChestContainer);
|
|
||||||
+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.one")) {
|
|
||||||
+ player.sixRowEnderchestSlotCount = 9;
|
|
||||||
+ return ChestMenu.oneRow(syncId, inventory, playerEnderChestContainer);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ player.sixRowEnderchestSlotCount = -1;
|
|
||||||
+ return ChestMenu.sixRows(syncId, inventory, playerEnderChestContainer);
|
|
||||||
+ }
|
|
||||||
+ // Purpur end
|
|
||||||
+
|
|
||||||
@Override
|
|
||||||
public BlockEntity newBlockEntity(BlockPos pos, BlockState state) {
|
|
||||||
return new EnderChestBlockEntity(pos, state);
|
|
||||||
diff --git a/net/minecraft/world/level/block/entity/BarrelBlockEntity.java b/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
|
|
||||||
index 618552afbdacc919c33b30a6bf4834fb71ab3d5b..7a059d20abdcc0073a314311d78f63ae4bd0365e 100644
|
|
||||||
--- a/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
|
|
||||||
+++ b/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
|
|
||||||
@@ -68,7 +68,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
|
|
||||||
|
|
||||||
public BarrelBlockEntity(BlockPos pos, BlockState state) {
|
|
||||||
super(BlockEntityType.BARREL, pos, state);
|
|
||||||
- this.items = NonNullList.withSize(27, ItemStack.EMPTY);
|
|
||||||
+ // Purpur start
|
|
||||||
+ this.items = NonNullList.withSize(switch (org.purpurmc.purpur.PurpurConfig.barrelRows) {
|
|
||||||
+ case 6 -> 54;
|
|
||||||
+ case 5 -> 45;
|
|
||||||
+ case 4 -> 36;
|
|
||||||
+ case 2 -> 18;
|
|
||||||
+ case 1 -> 9;
|
|
||||||
+ default -> 27;
|
|
||||||
+ }, ItemStack.EMPTY);
|
|
||||||
+ // Purpur end
|
|
||||||
this.openersCounter = new ContainerOpenersCounter() {
|
|
||||||
@Override
|
|
||||||
protected void onOpen(Level world, BlockPos pos, BlockState state) {
|
|
||||||
@@ -119,7 +128,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getContainerSize() {
|
|
||||||
- return 27;
|
|
||||||
+ // Purpur start
|
|
||||||
+ return switch (org.purpurmc.purpur.PurpurConfig.barrelRows) {
|
|
||||||
+ case 6 -> 54;
|
|
||||||
+ case 5 -> 45;
|
|
||||||
+ case 4 -> 36;
|
|
||||||
+ case 2 -> 18;
|
|
||||||
+ case 1 -> 9;
|
|
||||||
+ default -> 27;
|
|
||||||
+ };
|
|
||||||
+ // Purpur end
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@@ -139,7 +157,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected AbstractContainerMenu createMenu(int syncId, Inventory playerInventory) {
|
|
||||||
- return ChestMenu.threeRows(syncId, playerInventory, this);
|
|
||||||
+ // Purpur start
|
|
||||||
+ return switch (org.purpurmc.purpur.PurpurConfig.barrelRows) {
|
|
||||||
+ case 6 -> ChestMenu.sixRows(syncId, playerInventory, this);
|
|
||||||
+ case 5 -> ChestMenu.fiveRows(syncId, playerInventory, this);
|
|
||||||
+ case 4 -> ChestMenu.fourRows(syncId, playerInventory, this);
|
|
||||||
+ case 2 -> ChestMenu.twoRows(syncId, playerInventory, this);
|
|
||||||
+ case 1 -> ChestMenu.oneRow(syncId, playerInventory, this);
|
|
||||||
+ default -> ChestMenu.threeRows(syncId, playerInventory, this);
|
|
||||||
+ };
|
|
||||||
+ // Purpur end
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
|
|
||||||
index 6d3f9d5dab6c9a2860ae31cae24310aa2d62da7c..4f29c579f94efe59a8c78520d75676fc4875e2f0 100644
|
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
|
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
|
|
||||||
@@ -145,8 +145,19 @@ public class CraftContainer extends AbstractContainerMenu {
|
|
||||||
case PLAYER:
|
|
||||||
case CHEST:
|
|
||||||
case ENDER_CHEST:
|
|
||||||
+ // Purpur start
|
|
||||||
+ this.delegate = new ChestMenu(org.purpurmc.purpur.PurpurConfig.enderChestSixRows ? net.minecraft.world.inventory.MenuType.GENERIC_9x6 : net.minecraft.world.inventory.MenuType.GENERIC_9x3, windowId, bottom, top, top.getContainerSize() / 9);
|
|
||||||
+ break;
|
|
||||||
case BARREL:
|
|
||||||
- this.delegate = new ChestMenu(net.minecraft.world.inventory.MenuType.GENERIC_9x3, windowId, bottom, top, top.getContainerSize() / 9);
|
|
||||||
+ this.delegate = new ChestMenu(switch (org.purpurmc.purpur.PurpurConfig.barrelRows) {
|
|
||||||
+ case 6 -> net.minecraft.world.inventory.MenuType.GENERIC_9x6;
|
|
||||||
+ case 5 -> net.minecraft.world.inventory.MenuType.GENERIC_9x5;
|
|
||||||
+ case 4 -> net.minecraft.world.inventory.MenuType.GENERIC_9x4;
|
|
||||||
+ case 2 -> net.minecraft.world.inventory.MenuType.GENERIC_9x2;
|
|
||||||
+ case 1 -> net.minecraft.world.inventory.MenuType.GENERIC_9x1;
|
|
||||||
+ default -> net.minecraft.world.inventory.MenuType.GENERIC_9x3;
|
|
||||||
+ }, windowId, bottom, top, top.getContainerSize() / 9);
|
|
||||||
+ // Purpur end
|
|
||||||
break;
|
|
||||||
case DISPENSER:
|
|
||||||
case DROPPER:
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
|
|
||||||
index c6159c70f7a37b9bffe268b91905ce848d1d2927..d02adaaa6fbdc1c0eff44cb4a1f1642f9575a821 100644
|
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
|
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
|
|
||||||
@@ -84,7 +84,7 @@ public class CraftInventory implements Inventory {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setContents(ItemStack[] items) {
|
|
||||||
- Preconditions.checkArgument(items.length <= this.getSize(), "Invalid inventory size (%s); expected %s or less", items.length, this.getSize());
|
|
||||||
+ // Preconditions.checkArgument(items.length <= this.getSize(), "Invalid inventory size (%s); expected %s or less", items.length, this.getSize()); // Purpur
|
|
||||||
|
|
||||||
for (int i = 0; i < this.getSize(); i++) {
|
|
||||||
if (i >= items.length) {
|
|
||||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
|
||||||
index e8c9393760108f2549b52a61d973ea2b4a64a312..1321955eb23272d96e3028c1c46e75f6c1eaade0 100644
|
|
||||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
|
||||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
|
||||||
@@ -180,4 +180,39 @@ public class PurpurConfig {
|
|
||||||
private static void messages() {
|
|
||||||
cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob);
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ public static int barrelRows = 3;
|
|
||||||
+ public static boolean enderChestSixRows = false;
|
|
||||||
+ public static boolean enderChestPermissionRows = false;
|
|
||||||
+ private static void blockSettings() {
|
|
||||||
+ if (version < 3) {
|
|
||||||
+ boolean oldValue = getBoolean("settings.barrel.packed-barrels", true);
|
|
||||||
+ set("settings.blocks.barrel.six-rows", oldValue);
|
|
||||||
+ set("settings.packed-barrels", null);
|
|
||||||
+ oldValue = getBoolean("settings.large-ender-chests", true);
|
|
||||||
+ set("settings.blocks.ender_chest.six-rows", oldValue);
|
|
||||||
+ set("settings.large-ender-chests", null);
|
|
||||||
+ }
|
|
||||||
+ if (version < 20) {
|
|
||||||
+ boolean oldValue = getBoolean("settings.blocks.barrel.six-rows", false);
|
|
||||||
+ set("settings.blocks.barrel.rows", oldValue ? 6 : 3);
|
|
||||||
+ set("settings.blocks.barrel.six-rows", null);
|
|
||||||
+ }
|
|
||||||
+ barrelRows = getInt("settings.blocks.barrel.rows", barrelRows);
|
|
||||||
+ if (barrelRows < 1 || barrelRows > 6) {
|
|
||||||
+ Bukkit.getLogger().severe("settings.blocks.barrel.rows must be 1-6, resetting to default");
|
|
||||||
+ barrelRows = 3;
|
|
||||||
+ }
|
|
||||||
+ org.bukkit.event.inventory.InventoryType.BARREL.setDefaultSize(switch (barrelRows) {
|
|
||||||
+ case 6 -> 54;
|
|
||||||
+ case 5 -> 45;
|
|
||||||
+ case 4 -> 36;
|
|
||||||
+ case 2 -> 18;
|
|
||||||
+ case 1 -> 9;
|
|
||||||
+ default -> 27;
|
|
||||||
+ });
|
|
||||||
+ enderChestSixRows = getBoolean("settings.blocks.ender_chest.six-rows", enderChestSixRows);
|
|
||||||
+ org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27);
|
|
||||||
+ enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
--- a/src/main/java/org/bukkit/event/inventory/InventoryType.java
|
||||||
|
+++ b/src/main/java/org/bukkit/event/inventory/InventoryType.java
|
||||||
|
@@ -164,7 +_,7 @@
|
||||||
|
SMITHING_NEW(4, "Upgrade Gear", MenuType.SMITHING),
|
||||||
|
;
|
||||||
|
|
||||||
|
- private final int size;
|
||||||
|
+ private int size; @ApiStatus.Internal public void setDefaultSize(int size) { this.size = size; } // Purpur - remove final and add setter
|
||||||
|
private final String title;
|
||||||
|
private final MenuType menuType;
|
||||||
|
private final boolean isCreatable;
|
||||||
@@ -0,0 +1,217 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||||
|
Date: Thu, 23 May 2019 21:50:37 -0500
|
||||||
|
Subject: [PATCH] Barrels and enderchests 6 rows
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
|
||||||
|
index 0b942a3f18d5f718d035bbcf48991b548e8c5db1..661757358dddf0a964d575f3f9667c00122c1f91 100644
|
||||||
|
--- a/net/minecraft/server/players/PlayerList.java
|
||||||
|
+++ b/net/minecraft/server/players/PlayerList.java
|
||||||
|
@@ -1024,6 +1024,27 @@ public abstract class PlayerList {
|
||||||
|
player.getBukkitEntity().recalculatePermissions(); // CraftBukkit
|
||||||
|
this.server.getCommands().sendCommands(player);
|
||||||
|
} // Paper - Add sendOpLevel API
|
||||||
|
+
|
||||||
|
+ // Purpur start
|
||||||
|
+ if (org.purpurmc.purpur.PurpurConfig.enderChestSixRows && org.purpurmc.purpur.PurpurConfig.enderChestPermissionRows) {
|
||||||
|
+ org.bukkit.craftbukkit.entity.CraftHumanEntity bukkit = player.getBukkitEntity();
|
||||||
|
+ if (bukkit.hasPermission("purpur.enderchest.rows.six")) {
|
||||||
|
+ player.sixRowEnderchestSlotCount = 54;
|
||||||
|
+ } else if (bukkit.hasPermission("purpur.enderchest.rows.five")) {
|
||||||
|
+ player.sixRowEnderchestSlotCount = 45;
|
||||||
|
+ } else if (bukkit.hasPermission("purpur.enderchest.rows.four")) {
|
||||||
|
+ player.sixRowEnderchestSlotCount = 36;
|
||||||
|
+ } else if (bukkit.hasPermission("purpur.enderchest.rows.three")) {
|
||||||
|
+ player.sixRowEnderchestSlotCount = 27;
|
||||||
|
+ } else if (bukkit.hasPermission("purpur.enderchest.rows.two")) {
|
||||||
|
+ player.sixRowEnderchestSlotCount = 18;
|
||||||
|
+ } else if (bukkit.hasPermission("purpur.enderchest.rows.one")) {
|
||||||
|
+ player.sixRowEnderchestSlotCount = 9;
|
||||||
|
+ }
|
||||||
|
+ } else {
|
||||||
|
+ player.sixRowEnderchestSlotCount = -1;
|
||||||
|
+ }
|
||||||
|
+ //Purpur end
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isWhiteListed(GameProfile profile) {
|
||||||
|
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
|
||||||
|
index dda02ceae600f2909aad60bfef0ce29f83ca5a77..a520ed81ab2a1507ebfb0dc4210d1239ff627e93 100644
|
||||||
|
--- a/net/minecraft/world/entity/player/Player.java
|
||||||
|
+++ b/net/minecraft/world/entity/player/Player.java
|
||||||
|
@@ -200,6 +200,7 @@ public abstract class Player extends LivingEntity {
|
||||||
|
private int currentImpulseContextResetGraceTime;
|
||||||
|
public boolean affectsSpawning = true; // Paper - Affects Spawning API
|
||||||
|
public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; // Paper - flying fall damage
|
||||||
|
+ public int sixRowEnderchestSlotCount = -1; // Purpur
|
||||||
|
|
||||||
|
// CraftBukkit start
|
||||||
|
public boolean fauxSleeping;
|
||||||
|
diff --git a/net/minecraft/world/inventory/ChestMenu.java b/net/minecraft/world/inventory/ChestMenu.java
|
||||||
|
index cf5b99c1337a7eafa9f5e8b2062c32ab4ff78968..0582698825544267e65a427351e27101c320bc0a 100644
|
||||||
|
--- a/net/minecraft/world/inventory/ChestMenu.java
|
||||||
|
+++ b/net/minecraft/world/inventory/ChestMenu.java
|
||||||
|
@@ -61,10 +61,30 @@ public class ChestMenu extends AbstractContainerMenu {
|
||||||
|
return new ChestMenu(MenuType.GENERIC_9x6, containerId, playerInventory, 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // Purpur start
|
||||||
|
+ public static ChestMenu oneRow(int syncId, Inventory playerInventory, Container inventory) {
|
||||||
|
+ return new ChestMenu(MenuType.GENERIC_9x1, syncId, playerInventory, inventory, 1);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public static ChestMenu twoRows(int syncId, Inventory playerInventory, Container inventory) {
|
||||||
|
+ return new ChestMenu(MenuType.GENERIC_9x2, syncId, playerInventory, inventory, 2);
|
||||||
|
+ }
|
||||||
|
+ // Purpur end
|
||||||
|
+
|
||||||
|
public static ChestMenu threeRows(int containerId, Inventory playerInventory, Container container) {
|
||||||
|
return new ChestMenu(MenuType.GENERIC_9x3, containerId, playerInventory, container, 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // Purpur start
|
||||||
|
+ public static ChestMenu fourRows(int syncId, Inventory playerInventory, Container inventory) {
|
||||||
|
+ return new ChestMenu(MenuType.GENERIC_9x4, syncId, playerInventory, inventory, 4);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public static ChestMenu fiveRows(int syncId, Inventory playerInventory, Container inventory) {
|
||||||
|
+ return new ChestMenu(MenuType.GENERIC_9x5, syncId, playerInventory, inventory, 5);
|
||||||
|
+ }
|
||||||
|
+ // Purpur end
|
||||||
|
+
|
||||||
|
public static ChestMenu sixRows(int containerId, Inventory playerInventory, Container container) {
|
||||||
|
return new ChestMenu(MenuType.GENERIC_9x6, containerId, playerInventory, container, 6);
|
||||||
|
}
|
||||||
|
diff --git a/net/minecraft/world/inventory/PlayerEnderChestContainer.java b/net/minecraft/world/inventory/PlayerEnderChestContainer.java
|
||||||
|
index a6a359bab2a727f4631b633a8bb370dd40decc75..4c48bdc2a4596b7b192e76974fa385c323ddabb2 100644
|
||||||
|
--- a/net/minecraft/world/inventory/PlayerEnderChestContainer.java
|
||||||
|
+++ b/net/minecraft/world/inventory/PlayerEnderChestContainer.java
|
||||||
|
@@ -25,11 +25,18 @@ public class PlayerEnderChestContainer extends SimpleContainer {
|
||||||
|
}
|
||||||
|
|
||||||
|
public PlayerEnderChestContainer(Player owner) {
|
||||||
|
- super(27);
|
||||||
|
+ super(org.purpurmc.purpur.PurpurConfig.enderChestSixRows ? 54 : 27); // Purpur
|
||||||
|
this.owner = owner;
|
||||||
|
// CraftBukkit end
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // Purpur start
|
||||||
|
+ @Override
|
||||||
|
+ public int getContainerSize() {
|
||||||
|
+ return owner.sixRowEnderchestSlotCount < 0 ? super.getContainerSize() : owner.sixRowEnderchestSlotCount;
|
||||||
|
+ }
|
||||||
|
+ // Purpur end
|
||||||
|
+
|
||||||
|
public void setActiveChest(EnderChestBlockEntity enderChestBlockEntity) {
|
||||||
|
this.activeChest = enderChestBlockEntity;
|
||||||
|
}
|
||||||
|
diff --git a/net/minecraft/world/level/block/EnderChestBlock.java b/net/minecraft/world/level/block/EnderChestBlock.java
|
||||||
|
index 2f60681c50e3656400e84fe9a7670e0412743853..5a60acf92acc77593aec95413c206317999e43ba 100644
|
||||||
|
--- a/net/minecraft/world/level/block/EnderChestBlock.java
|
||||||
|
+++ b/net/minecraft/world/level/block/EnderChestBlock.java
|
||||||
|
@@ -84,7 +84,7 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
|
||||||
|
// Paper start - Fix InventoryOpenEvent cancellation - moved up;
|
||||||
|
enderChestInventory.setActiveChest(enderChestBlockEntity); // Needs to happen before ChestMenu.threeRows as it is required for opening animations
|
||||||
|
if (level instanceof ServerLevel serverLevel && player.openMenu(
|
||||||
|
- new SimpleMenuProvider((i, inventory, playerx) -> ChestMenu.threeRows(i, inventory, enderChestInventory), CONTAINER_TITLE)
|
||||||
|
+ new SimpleMenuProvider((i, inventory, playerx) -> org.purpurmc.purpur.PurpurConfig.enderChestSixRows ? getEnderChestSixRows(i, inventory, player, playerEnderChestContainer) : ChestMenu.threeRows(i, inventory, enderChestInventory), CONTAINER_TITLE) // Purpur
|
||||||
|
).isPresent()) {
|
||||||
|
// Paper end - Fix InventoryOpenEvent cancellation - moved up;
|
||||||
|
player.awardStat(Stats.OPEN_ENDERCHEST);
|
||||||
|
@@ -98,6 +98,35 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // Purpur start
|
||||||
|
+ private ChestMenu getEnderChestSixRows(int syncId, net.minecraft.world.entity.player.Inventory inventory, Player player, PlayerEnderChestContainer playerEnderChestContainer) {
|
||||||
|
+ if (org.purpurmc.purpur.PurpurConfig.enderChestPermissionRows) {
|
||||||
|
+ org.bukkit.craftbukkit.entity.CraftHumanEntity bukkitPlayer = player.getBukkitEntity();
|
||||||
|
+ if (bukkitPlayer.hasPermission("purpur.enderchest.rows.six")) {
|
||||||
|
+ player.sixRowEnderchestSlotCount = 54;
|
||||||
|
+ return ChestMenu.sixRows(syncId, inventory, playerEnderChestContainer);
|
||||||
|
+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.five")) {
|
||||||
|
+ player.sixRowEnderchestSlotCount = 45;
|
||||||
|
+ return ChestMenu.fiveRows(syncId, inventory, playerEnderChestContainer);
|
||||||
|
+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.four")) {
|
||||||
|
+ player.sixRowEnderchestSlotCount = 36;
|
||||||
|
+ return ChestMenu.fourRows(syncId, inventory, playerEnderChestContainer);
|
||||||
|
+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.three")) {
|
||||||
|
+ player.sixRowEnderchestSlotCount = 27;
|
||||||
|
+ return ChestMenu.threeRows(syncId, inventory, playerEnderChestContainer);
|
||||||
|
+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.two")) {
|
||||||
|
+ player.sixRowEnderchestSlotCount = 18;
|
||||||
|
+ return ChestMenu.twoRows(syncId, inventory, playerEnderChestContainer);
|
||||||
|
+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.one")) {
|
||||||
|
+ player.sixRowEnderchestSlotCount = 9;
|
||||||
|
+ return ChestMenu.oneRow(syncId, inventory, playerEnderChestContainer);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ player.sixRowEnderchestSlotCount = -1;
|
||||||
|
+ return ChestMenu.sixRows(syncId, inventory, playerEnderChestContainer);
|
||||||
|
+ }
|
||||||
|
+ // Purpur end
|
||||||
|
+
|
||||||
|
@Override
|
||||||
|
public BlockEntity newBlockEntity(BlockPos pos, BlockState state) {
|
||||||
|
return new EnderChestBlockEntity(pos, state);
|
||||||
|
diff --git a/net/minecraft/world/level/block/entity/BarrelBlockEntity.java b/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
|
||||||
|
index 0f808855f58281578c2758513787f0f7330c9291..7ea7032eae78726e6d4dcfda49b01a10e0f26de8 100644
|
||||||
|
--- a/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
|
||||||
|
+++ b/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
|
||||||
|
@@ -55,7 +55,17 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
|
||||||
|
this.maxStack = i;
|
||||||
|
}
|
||||||
|
// CraftBukkit end
|
||||||
|
- private NonNullList<ItemStack> items = NonNullList.withSize(27, ItemStack.EMPTY);
|
||||||
|
+ // Purpur start
|
||||||
|
+ private NonNullList<ItemStack> items = NonNullList.withSize(switch (org.purpurmc.purpur.PurpurConfig.barrelRows) {
|
||||||
|
+ case 6 -> 54;
|
||||||
|
+ case 5 -> 45;
|
||||||
|
+ case 4 -> 36;
|
||||||
|
+ case 2 -> 18;
|
||||||
|
+ case 1 -> 9;
|
||||||
|
+ default -> 27;
|
||||||
|
+ }, ItemStack.EMPTY);
|
||||||
|
+ // Purpur end
|
||||||
|
+
|
||||||
|
public final ContainerOpenersCounter openersCounter = new ContainerOpenersCounter() {
|
||||||
|
@Override
|
||||||
|
protected void onOpen(Level level, BlockPos pos, BlockState state) {
|
||||||
|
@@ -107,7 +117,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getContainerSize() {
|
||||||
|
- return 27;
|
||||||
|
+ // Purpur start
|
||||||
|
+ return switch (org.purpurmc.purpur.PurpurConfig.barrelRows) {
|
||||||
|
+ case 6 -> 54;
|
||||||
|
+ case 5 -> 45;
|
||||||
|
+ case 4 -> 36;
|
||||||
|
+ case 2 -> 18;
|
||||||
|
+ case 1 -> 9;
|
||||||
|
+ default -> 27;
|
||||||
|
+ };
|
||||||
|
+ // Purpur end
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@@ -127,7 +146,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected AbstractContainerMenu createMenu(int id, Inventory player) {
|
||||||
|
- return ChestMenu.threeRows(id, player, this);
|
||||||
|
+ // Purpur start
|
||||||
|
+ return switch (org.purpurmc.purpur.PurpurConfig.barrelRows) {
|
||||||
|
+ case 6 -> ChestMenu.sixRows(id, player, this);
|
||||||
|
+ case 5 -> ChestMenu.fiveRows(id, player, this);
|
||||||
|
+ case 4 -> ChestMenu.fourRows(id, player, this);
|
||||||
|
+ case 2 -> ChestMenu.twoRows(id, player, this);
|
||||||
|
+ case 1 -> ChestMenu.oneRow(id, player, this);
|
||||||
|
+ default -> ChestMenu.threeRows(id, player, this);
|
||||||
|
+ };
|
||||||
|
+ // Purpur end
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||||
|
Date: Thu, 23 May 2019 21:50:37 -0500
|
||||||
|
Subject: [PATCH] Barrels and enderchests 6 rows
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
|
||||||
|
index 6d3f9d5dab6c9a2860ae31cae24310aa2d62da7c..4f29c579f94efe59a8c78520d75676fc4875e2f0 100644
|
||||||
|
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
|
||||||
|
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
|
||||||
|
@@ -145,8 +145,19 @@ public class CraftContainer extends AbstractContainerMenu {
|
||||||
|
case PLAYER:
|
||||||
|
case CHEST:
|
||||||
|
case ENDER_CHEST:
|
||||||
|
+ // Purpur start
|
||||||
|
+ this.delegate = new ChestMenu(org.purpurmc.purpur.PurpurConfig.enderChestSixRows ? net.minecraft.world.inventory.MenuType.GENERIC_9x6 : net.minecraft.world.inventory.MenuType.GENERIC_9x3, windowId, bottom, top, top.getContainerSize() / 9);
|
||||||
|
+ break;
|
||||||
|
case BARREL:
|
||||||
|
- this.delegate = new ChestMenu(net.minecraft.world.inventory.MenuType.GENERIC_9x3, windowId, bottom, top, top.getContainerSize() / 9);
|
||||||
|
+ this.delegate = new ChestMenu(switch (org.purpurmc.purpur.PurpurConfig.barrelRows) {
|
||||||
|
+ case 6 -> net.minecraft.world.inventory.MenuType.GENERIC_9x6;
|
||||||
|
+ case 5 -> net.minecraft.world.inventory.MenuType.GENERIC_9x5;
|
||||||
|
+ case 4 -> net.minecraft.world.inventory.MenuType.GENERIC_9x4;
|
||||||
|
+ case 2 -> net.minecraft.world.inventory.MenuType.GENERIC_9x2;
|
||||||
|
+ case 1 -> net.minecraft.world.inventory.MenuType.GENERIC_9x1;
|
||||||
|
+ default -> net.minecraft.world.inventory.MenuType.GENERIC_9x3;
|
||||||
|
+ }, windowId, bottom, top, top.getContainerSize() / 9);
|
||||||
|
+ // Purpur end
|
||||||
|
break;
|
||||||
|
case DISPENSER:
|
||||||
|
case DROPPER:
|
||||||
|
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
|
||||||
|
index c6159c70f7a37b9bffe268b91905ce848d1d2927..d02adaaa6fbdc1c0eff44cb4a1f1642f9575a821 100644
|
||||||
|
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
|
||||||
|
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
|
||||||
|
@@ -84,7 +84,7 @@ public class CraftInventory implements Inventory {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setContents(ItemStack[] items) {
|
||||||
|
- Preconditions.checkArgument(items.length <= this.getSize(), "Invalid inventory size (%s); expected %s or less", items.length, this.getSize());
|
||||||
|
+ // Preconditions.checkArgument(items.length <= this.getSize(), "Invalid inventory size (%s); expected %s or less", items.length, this.getSize()); // Purpur
|
||||||
|
|
||||||
|
for (int i = 0; i < this.getSize(); i++) {
|
||||||
|
if (i >= items.length) {
|
||||||
@@ -160,4 +160,39 @@ public class PurpurConfig {
|
|||||||
private static void messages() {
|
private static void messages() {
|
||||||
cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob);
|
cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int barrelRows = 3;
|
||||||
|
public static boolean enderChestSixRows = false;
|
||||||
|
public static boolean enderChestPermissionRows = false;
|
||||||
|
private static void blockSettings() {
|
||||||
|
if (version < 3) {
|
||||||
|
boolean oldValue = getBoolean("settings.barrel.packed-barrels", true);
|
||||||
|
set("settings.blocks.barrel.six-rows", oldValue);
|
||||||
|
set("settings.packed-barrels", null);
|
||||||
|
oldValue = getBoolean("settings.large-ender-chests", true);
|
||||||
|
set("settings.blocks.ender_chest.six-rows", oldValue);
|
||||||
|
set("settings.large-ender-chests", null);
|
||||||
|
}
|
||||||
|
if (version < 20) {
|
||||||
|
boolean oldValue = getBoolean("settings.blocks.barrel.six-rows", false);
|
||||||
|
set("settings.blocks.barrel.rows", oldValue ? 6 : 3);
|
||||||
|
set("settings.blocks.barrel.six-rows", null);
|
||||||
|
}
|
||||||
|
barrelRows = getInt("settings.blocks.barrel.rows", barrelRows);
|
||||||
|
if (barrelRows < 1 || barrelRows > 6) {
|
||||||
|
Bukkit.getLogger().severe("settings.blocks.barrel.rows must be 1-6, resetting to default");
|
||||||
|
barrelRows = 3;
|
||||||
|
}
|
||||||
|
org.bukkit.event.inventory.InventoryType.BARREL.setDefaultSize(switch (barrelRows) {
|
||||||
|
case 6 -> 54;
|
||||||
|
case 5 -> 45;
|
||||||
|
case 4 -> 36;
|
||||||
|
case 2 -> 18;
|
||||||
|
case 1 -> 9;
|
||||||
|
default -> 27;
|
||||||
|
});
|
||||||
|
enderChestSixRows = getBoolean("settings.blocks.ender_chest.six-rows", enderChestSixRows);
|
||||||
|
org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27);
|
||||||
|
enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user