90fe0d58a5
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 897a0a23 SPIGOT-5753: Back PotionType by a minecraft registry 255b2aa1 SPIGOT-7080: Add World#locateNearestBiome ff984826 Remove javadoc.io doc links CraftBukkit Changes: 71b0135cc SPIGOT-5753: Back PotionType by a minecraft registry a6bcb8489 SPIGOT-7080: Add World#locateNearestBiome ad0e57434 SPIGOT-7502: CraftMetaItem - cannot deserialize BlockStateTag b3efca57a SPIGOT-6400: Use Mockito instead of InvocationHandler 38c599f9d PR-1272: Only allow one entity in CraftItem instead of two f065271ac SPIGOT-7498: ChunkSnapshot.getBlockEmittedLight() gets 64 blocks upper in Overworld Spigot Changes: e0e223fe Remove javadoc.io doc links
113 Zeilen
5.1 KiB
Diff
113 Zeilen
5.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: LemonCaramel <admin@caramel.moe>
|
|
Date: Fri, 16 Jul 2021 00:39:03 +0900
|
|
Subject: [PATCH] Add more Campfire API
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/block/entity/CampfireBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/CampfireBlockEntity.java
|
|
index 04b2697ee857e714b1202d02d093b0c60f079a6f..d80855b22dc10dbf697578d5f78664ed7b6ac572 100644
|
|
--- a/src/main/java/net/minecraft/world/level/block/entity/CampfireBlockEntity.java
|
|
+++ b/src/main/java/net/minecraft/world/level/block/entity/CampfireBlockEntity.java
|
|
@@ -42,6 +42,7 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
|
|
public final int[] cookingProgress;
|
|
public final int[] cookingTime;
|
|
private final RecipeManager.CachedCheck<Container, CampfireCookingRecipe> quickCheck;
|
|
+ public final boolean[] stopCooking; // Paper
|
|
|
|
public CampfireBlockEntity(BlockPos pos, BlockState state) {
|
|
super(BlockEntityType.CAMPFIRE, pos, state);
|
|
@@ -49,6 +50,7 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
|
|
this.cookingProgress = new int[4];
|
|
this.cookingTime = new int[4];
|
|
this.quickCheck = RecipeManager.createCheck(RecipeType.CAMPFIRE_COOKING);
|
|
+ this.stopCooking = new boolean[4]; // Paper
|
|
}
|
|
|
|
public static void cookTick(Level world, BlockPos pos, BlockState state, CampfireBlockEntity campfire) {
|
|
@@ -59,7 +61,9 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
|
|
|
|
if (!itemstack.isEmpty()) {
|
|
flag = true;
|
|
+ if (!campfire.stopCooking[i]) { // Paper
|
|
int j = campfire.cookingProgress[i]++;
|
|
+ } // Paper
|
|
|
|
if (campfire.cookingProgress[i] >= campfire.cookingTime[i]) {
|
|
SimpleContainer inventorysubcontainer = new SimpleContainer(new ItemStack[]{itemstack});
|
|
@@ -168,6 +172,16 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
|
|
System.arraycopy(aint, 0, this.cookingTime, 0, Math.min(this.cookingTime.length, aint.length));
|
|
}
|
|
|
|
+ // Paper start
|
|
+ if (nbt.contains("Paper.StopCooking", org.bukkit.craftbukkit.util.CraftMagicNumbers.NBT.TAG_BYTE_ARRAY)) {
|
|
+ byte[] abyte = nbt.getByteArray("Paper.StopCooking");
|
|
+ boolean[] cookingState = new boolean[4];
|
|
+ for (int index = 0; index < abyte.length; index++) {
|
|
+ cookingState[index] = abyte[index] == 1;
|
|
+ }
|
|
+ System.arraycopy(cookingState, 0, this.stopCooking, 0, Math.min(this.stopCooking.length, abyte.length));
|
|
+ }
|
|
+ // Paper end
|
|
}
|
|
|
|
@Override
|
|
@@ -176,6 +190,13 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
|
|
ContainerHelper.saveAllItems(nbt, this.items, true);
|
|
nbt.putIntArray("CookingTimes", this.cookingProgress);
|
|
nbt.putIntArray("CookingTotalTimes", this.cookingTime);
|
|
+ // Paper start
|
|
+ byte[] cookingState = new byte[4];
|
|
+ for (int index = 0; index < cookingState.length; index++) {
|
|
+ cookingState[index] = (byte) (this.stopCooking[index] ? 1 : 0);
|
|
+ }
|
|
+ nbt.putByteArray("Paper.StopCooking", cookingState);
|
|
+ // Paper end
|
|
}
|
|
|
|
@Override
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftCampfire.java b/src/main/java/org/bukkit/craftbukkit/block/CraftCampfire.java
|
|
index 28e33d2921c779ee9e96865b0b6c6309a6c27a21..df8c2110d84341e822b7ad981f6c4fe2e1c71601 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftCampfire.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftCampfire.java
|
|
@@ -56,4 +56,40 @@ public class CraftCampfire extends CraftBlockEntityState<CampfireBlockEntity> im
|
|
public CraftCampfire copy() {
|
|
return new CraftCampfire(this);
|
|
}
|
|
+
|
|
+ // Paper start
|
|
+ @Override
|
|
+ public void stopCooking() {
|
|
+ for (int i = 0; i < getSnapshot().stopCooking.length; ++i)
|
|
+ this.stopCooking(i);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void startCooking() {
|
|
+ for (int i = 0; i < getSnapshot().stopCooking.length; ++i)
|
|
+ this.startCooking(i);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public boolean stopCooking(int index) {
|
|
+ org.apache.commons.lang.Validate.isTrue(-1 < index && index < 4, "Slot index must be between 0 (incl) to 3 (incl)");
|
|
+ boolean previous = this.isCookingDisabled(index);
|
|
+ getSnapshot().stopCooking[index] = true;
|
|
+ return previous;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public boolean startCooking(int index) {
|
|
+ org.apache.commons.lang.Validate.isTrue(-1 < index && index < 4, "Slot index must be between 0 (incl) to 3 (incl)");
|
|
+ boolean previous = this.isCookingDisabled(index);
|
|
+ getSnapshot().stopCooking[index] = false;
|
|
+ return previous;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public boolean isCookingDisabled(int index) {
|
|
+ org.apache.commons.lang.Validate.isTrue(-1 < index && index < 4, "Slot index must be between 0 (incl) to 3 (incl)");
|
|
+ return getSnapshot().stopCooking[index];
|
|
+ }
|
|
+ // Paper end
|
|
}
|