mirror of
https://github.com/PaperMC/Paper.git
synced 2025-02-24 05:20:57 +01:00
compile fixes
This commit is contained in:
parent
af2e3abf87
commit
3606096fbb
11 changed files with 119 additions and 19 deletions
patches/server
Add-ignore-discounts-API.patchAdventure.patchEigencraft-redstone-implementation.patchGet-entity-default-attributes.patchImprove-performance-of-mass-crafts.patchMore-PotionEffectType-API.patchNameable-Banner-API.patchRestore-custom-InventoryHolder-support.patchRewrite-chunk-system.patchliving-entity-allow-attribute-registration.patchprevent-unintended-light-block-manipulation.patch
|
@ -48,11 +48,19 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
private CraftMerchantRecipe bukkitHandle;
|
private CraftMerchantRecipe bukkitHandle;
|
||||||
|
|
||||||
@@ -0,0 +0,0 @@ public class MerchantOffer {
|
@@ -0,0 +0,0 @@ public class MerchantOffer {
|
||||||
|
return (this.bukkitHandle == null) ? this.bukkitHandle = new CraftMerchantRecipe(this) : this.bukkitHandle;
|
||||||
|
}
|
||||||
|
|
||||||
|
- public MerchantOffer(ItemCost baseCostA, Optional<ItemCost> costB, ItemStack result, int uses, int maxUses, int experience, float priceMultiplier, int demand, CraftMerchantRecipe bukkit) {
|
||||||
|
+ public MerchantOffer(ItemCost baseCostA, Optional<ItemCost> costB, ItemStack result, int uses, int maxUses, int experience, float priceMultiplier, int demand, final boolean ignoreDiscounts, CraftMerchantRecipe bukkit) { // Paper
|
||||||
|
this(baseCostA, costB, result, uses, maxUses, experience, priceMultiplier, demand);
|
||||||
|
+ this.ignoreDiscounts = ignoreDiscounts; // Paper
|
||||||
|
this.bukkitHandle = bukkit;
|
||||||
}
|
}
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
|
|
||||||
- private MerchantOffer(ItemCost firstBuyItem, Optional<ItemCost> secondBuyItem, ItemStack sellItem, int uses, int maxUses, boolean rewardingPlayerExperience, int specialPrice, int demandBonus, float priceMultiplier, int merchantExperience) {
|
- private MerchantOffer(ItemCost firstBuyItem, Optional<ItemCost> secondBuyItem, ItemStack sellItem, int uses, int maxUses, boolean rewardingPlayerExperience, int specialPrice, int demandBonus, float priceMultiplier, int merchantExperience) {
|
||||||
+ private MerchantOffer(ItemCost firstBuyItem, Optional<ItemCost> secondBuyItem, ItemStack sellItem, int uses, int maxUses, boolean rewardingPlayerExperience, int specialPrice, int demandBonus, float priceMultiplier, int merchantExperience, boolean ignoreDiscounts) { // Paper
|
+ private MerchantOffer(ItemCost firstBuyItem, Optional<ItemCost> secondBuyItem, ItemStack sellItem, int uses, int maxUses, boolean rewardingPlayerExperience, int specialPrice, int demandBonus, float priceMultiplier, int merchantExperience, final boolean ignoreDiscounts) { // Paper
|
||||||
this.baseCostA = firstBuyItem;
|
this.baseCostA = firstBuyItem;
|
||||||
this.costB = secondBuyItem;
|
this.costB = secondBuyItem;
|
||||||
this.result = sellItem;
|
this.result = sellItem;
|
||||||
|
@ -60,7 +68,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
this.demand = demandBonus;
|
this.demand = demandBonus;
|
||||||
this.priceMultiplier = priceMultiplier;
|
this.priceMultiplier = priceMultiplier;
|
||||||
this.xp = merchantExperience;
|
this.xp = merchantExperience;
|
||||||
+ this.ignoreDiscounts = ignoreDiscounts;
|
+ this.ignoreDiscounts = ignoreDiscounts; // Paper
|
||||||
}
|
}
|
||||||
|
|
||||||
public MerchantOffer(ItemCost buyItem, ItemStack sellItem, int maxUses, int merchantExperience, float priceMultiplier) {
|
public MerchantOffer(ItemCost buyItem, ItemStack sellItem, int maxUses, int merchantExperience, float priceMultiplier) {
|
||||||
|
|
|
@ -5260,7 +5260,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ public Inventory createInventory(InventoryHolder owner, InventoryType type, net.kyori.adventure.text.Component title) {
|
+ public Inventory createInventory(InventoryHolder owner, InventoryType type, net.kyori.adventure.text.Component title) {
|
||||||
+ Container te = getTileEntity();
|
+ Container te = getTileEntity();
|
||||||
+ if (te instanceof RandomizableContainerBlockEntity) {
|
+ if (te instanceof RandomizableContainerBlockEntity) {
|
||||||
+ ((RandomizableContainerBlockEntity) te).setCustomName(io.papermc.paper.adventure.PaperAdventure.asVanilla(title));
|
+ ((RandomizableContainerBlockEntity) te).name = io.papermc.paper.adventure.PaperAdventure.asVanilla(title);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ return getInventory(te);
|
+ return getInventory(te);
|
||||||
|
@ -5296,7 +5296,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ // BrewingStand does not extend TileEntityLootable
|
+ // BrewingStand does not extend TileEntityLootable
|
||||||
+ Container tileEntity = getTileEntity();
|
+ Container tileEntity = getTileEntity();
|
||||||
+ if (tileEntity instanceof BrewingStandBlockEntity) {
|
+ if (tileEntity instanceof BrewingStandBlockEntity) {
|
||||||
+ ((BrewingStandBlockEntity) tileEntity).setCustomName(io.papermc.paper.adventure.PaperAdventure.asVanilla(title));
|
+ ((BrewingStandBlockEntity) tileEntity).name = io.papermc.paper.adventure.PaperAdventure.asVanilla(title);
|
||||||
+ }
|
+ }
|
||||||
+ return getInventory(tileEntity);
|
+ return getInventory(tileEntity);
|
||||||
+ }
|
+ }
|
||||||
|
|
|
@ -19,6 +19,7 @@ Just added Bukkit's event system and took a few liberties with dead code and com
|
||||||
|
|
||||||
== AT ==
|
== AT ==
|
||||||
public net.minecraft.world.level.block.RedStoneWireBlock shouldSignal
|
public net.minecraft.world.level.block.RedStoneWireBlock shouldSignal
|
||||||
|
public net.minecraft.world.level.block.RedStoneWireBlock canSurvive(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/LevelReader;Lnet/minecraft/core/BlockPos;)Z
|
||||||
|
|
||||||
Co-authored-by: egg82 <eggys82@gmail.com>
|
Co-authored-by: egg82 <eggys82@gmail.com>
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ Date: Fri, 20 Aug 2021 13:03:21 -0700
|
||||||
Subject: [PATCH] Get entity default attributes
|
Subject: [PATCH] Get entity default attributes
|
||||||
|
|
||||||
== AT ==
|
== AT ==
|
||||||
public net.minecraft.world.entity.ai.attributes.AttributeSupplier getAttributeInstance(Lnet/minecraft/world/entity/ai/attributes/Attribute;)Lnet/minecraft/world/entity/ai/attributes/AttributeInstance;
|
public net.minecraft.world.entity.ai.attributes.AttributeSupplier getAttributeInstance(Lnet/minecraft/core/Holder;)Lnet/minecraft/world/entity/ai/attributes/AttributeInstance;
|
||||||
|
|
||||||
diff --git a/src/main/java/io/papermc/paper/attribute/UnmodifiableAttributeInstance.java b/src/main/java/io/papermc/paper/attribute/UnmodifiableAttributeInstance.java
|
diff --git a/src/main/java/io/papermc/paper/attribute/UnmodifiableAttributeInstance.java b/src/main/java/io/papermc/paper/attribute/UnmodifiableAttributeInstance.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
|
@ -68,7 +68,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public @Nullable AttributeInstance getAttribute(@NotNull Attribute attribute) {
|
+ public @Nullable AttributeInstance getAttribute(@NotNull Attribute attribute) {
|
||||||
+ net.minecraft.world.entity.ai.attributes.Attribute nmsAttribute = CraftAttribute.bukkitToMinecraft(attribute);
|
+ net.minecraft.core.Holder<net.minecraft.world.entity.ai.attributes.Attribute> nmsAttribute = CraftAttribute.bukkitToMinecraftHolder(attribute);
|
||||||
+ if (!this.handle.hasAttribute(nmsAttribute)) {
|
+ if (!this.handle.hasAttribute(nmsAttribute)) {
|
||||||
+ return null;
|
+ return null;
|
||||||
+ }
|
+ }
|
||||||
|
|
|
@ -29,7 +29,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
ItemStack itemstack = ItemStack.EMPTY;
|
ItemStack itemstack = ItemStack.EMPTY;
|
||||||
- Optional<RecipeHolder<CraftingRecipe>> optional = world.getServer().getRecipeManager().getRecipeFor(RecipeType.CRAFTING, craftingInventory, world);
|
- Optional<RecipeHolder<CraftingRecipe>> optional = world.getServer().getRecipeManager().getRecipeFor(RecipeType.CRAFTING, craftingInventory, world);
|
||||||
+ final RecipeHolder<?> currentRecipe = craftingInventory.getCurrentRecipe(); // Paper - Perf: Improve mass crafting; check last recipe used first
|
+ final RecipeHolder<?> currentRecipe = craftingInventory.getCurrentRecipe(); // Paper - Perf: Improve mass crafting; check last recipe used first
|
||||||
+ Optional<RecipeHolder<CraftingRecipe>> optional = currentRecipe == null ? world.getServer().getRecipeManager().getRecipeFor(RecipeType.CRAFTING, craftingInventory, world) : world.getServer().getRecipeManager().getRecipeFor(RecipeType.CRAFTING, craftingInventory, world, currentRecipe.id()).map(com.mojang.datafixers.util.Pair::getSecond); // Paper - Perf: Improve mass crafting; check last recipe used first
|
+ Optional<RecipeHolder<CraftingRecipe>> optional = currentRecipe == null ? world.getServer().getRecipeManager().getRecipeFor(RecipeType.CRAFTING, craftingInventory, world) : world.getServer().getRecipeManager().getRecipeFor(RecipeType.CRAFTING, craftingInventory, world, currentRecipe.id()); // Paper - Perf: Improve mass crafting; check last recipe used first
|
||||||
|
|
||||||
if (optional.isPresent()) {
|
if (optional.isPresent()) {
|
||||||
RecipeHolder<CraftingRecipe> recipeholder = (RecipeHolder) optional.get();
|
RecipeHolder<CraftingRecipe> recipeholder = (RecipeHolder) optional.get();
|
||||||
|
|
|
@ -3,6 +3,9 @@ From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||||
Date: Thu, 27 May 2021 21:58:24 -0700
|
Date: Thu, 27 May 2021 21:58:24 -0700
|
||||||
Subject: [PATCH] More PotionEffectType API
|
Subject: [PATCH] More PotionEffectType API
|
||||||
|
|
||||||
|
== AT ==
|
||||||
|
public net.minecraft.world.effect.MobEffect attributeModifiers
|
||||||
|
public net.minecraft.world.effect.MobEffect$AttributeTemplate
|
||||||
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionEffectType.java b/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionEffectType.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionEffectType.java b/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionEffectType.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
@ -32,7 +35,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ com.google.common.base.Preconditions.checkArgument(effectAmplifier >= 0, "effectAmplifier must be greater than or equal to 0");
|
+ com.google.common.base.Preconditions.checkArgument(effectAmplifier >= 0, "effectAmplifier must be greater than or equal to 0");
|
||||||
+ Holder<net.minecraft.world.entity.ai.attributes.Attribute> nmsAttribute = org.bukkit.craftbukkit.attribute.CraftAttribute.bukkitToMinecraftHolder(attribute);
|
+ Holder<net.minecraft.world.entity.ai.attributes.Attribute> nmsAttribute = org.bukkit.craftbukkit.attribute.CraftAttribute.bukkitToMinecraftHolder(attribute);
|
||||||
+ com.google.common.base.Preconditions.checkArgument(this.handle.attributeModifiers.containsKey(nmsAttribute), attribute + " is not present on " + this.getKey());
|
+ com.google.common.base.Preconditions.checkArgument(this.handle.attributeModifiers.containsKey(nmsAttribute), attribute + " is not present on " + this.getKey());
|
||||||
+ return this.handle.attributeModifiers.get(nmsAttribute).create(effectAmplifier).getAmount();
|
+ return this.handle.attributeModifiers.get(nmsAttribute).create(this.handle.getDescriptionId(), effectAmplifier).amount();
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
|
|
|
@ -4,6 +4,19 @@ Date: Thu, 7 Apr 2022 17:49:25 -0400
|
||||||
Subject: [PATCH] Nameable Banner API
|
Subject: [PATCH] Nameable Banner API
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BannerBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BannerBlockEntity.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/level/block/entity/BannerBlockEntity.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/level/block/entity/BannerBlockEntity.java
|
||||||
|
@@ -0,0 +0,0 @@ public class BannerBlockEntity extends BlockEntity implements Nameable {
|
||||||
|
public static final int MAX_PATTERNS = 6;
|
||||||
|
private static final String TAG_PATTERNS = "patterns";
|
||||||
|
@Nullable
|
||||||
|
- private Component name;
|
||||||
|
+ public Component name; // Paper - public
|
||||||
|
public DyeColor baseColor;
|
||||||
|
private BannerPatternLayers patterns;
|
||||||
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBanner.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBanner.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBanner.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBanner.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBanner.java
|
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBanner.java
|
||||||
|
@ -21,7 +34,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public void customName(net.kyori.adventure.text.Component customName) {
|
+ public void customName(net.kyori.adventure.text.Component customName) {
|
||||||
+ this.getSnapshot().setCustomName(io.papermc.paper.adventure.PaperAdventure.asVanilla(customName));
|
+ this.getSnapshot().name = io.papermc.paper.adventure.PaperAdventure.asVanilla(customName);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
|
|
|
@ -266,7 +266,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
|
|
||||||
// Paper start
|
// Paper start
|
||||||
@@ -0,0 +0,0 @@ public abstract class CraftTileInventoryConverter implements CraftInventoryCreat
|
@@ -0,0 +0,0 @@ public abstract class CraftTileInventoryConverter implements CraftInventoryCreat
|
||||||
((RandomizableContainerBlockEntity) te).setCustomName(io.papermc.paper.adventure.PaperAdventure.asVanilla(title));
|
((RandomizableContainerBlockEntity) te).name = io.papermc.paper.adventure.PaperAdventure.asVanilla(title);
|
||||||
}
|
}
|
||||||
|
|
||||||
- return getInventory(te);
|
- return getInventory(te);
|
||||||
|
@ -295,10 +295,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class CraftTileInventoryConverter implements CraftInventoryCreat
|
@@ -0,0 +0,0 @@ public abstract class CraftTileInventoryConverter implements CraftInventoryCreat
|
||||||
|
@Override
|
||||||
public Inventory createInventory(InventoryHolder owner, InventoryType type, net.kyori.adventure.text.Component title) {
|
public Inventory createInventory(InventoryHolder owner, InventoryType type, net.kyori.adventure.text.Component title) {
|
||||||
Container tileEntity = getTileEntity();
|
Container tileEntity = getTileEntity();
|
||||||
((AbstractFurnaceBlockEntity) tileEntity).setCustomName(io.papermc.paper.adventure.PaperAdventure.asVanilla(title));
|
- ((AbstractFurnaceBlockEntity) tileEntity).setCustomName(io.papermc.paper.adventure.PaperAdventure.asVanilla(title));
|
||||||
- return getInventory(tileEntity);
|
- return getInventory(tileEntity);
|
||||||
|
+ ((AbstractFurnaceBlockEntity) tileEntity).name = io.papermc.paper.adventure.PaperAdventure.asVanilla(title);
|
||||||
+ return this.getInventory(owner, type, tileEntity); // Paper
|
+ return this.getInventory(owner, type, tileEntity); // Paper
|
||||||
}
|
}
|
||||||
// Paper end
|
// Paper end
|
||||||
|
@ -326,7 +328,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
}
|
}
|
||||||
@@ -0,0 +0,0 @@ public abstract class CraftTileInventoryConverter implements CraftInventoryCreat
|
@@ -0,0 +0,0 @@ public abstract class CraftTileInventoryConverter implements CraftInventoryCreat
|
||||||
if (tileEntity instanceof BrewingStandBlockEntity) {
|
if (tileEntity instanceof BrewingStandBlockEntity) {
|
||||||
((BrewingStandBlockEntity) tileEntity).setCustomName(io.papermc.paper.adventure.PaperAdventure.asVanilla(title));
|
((BrewingStandBlockEntity) tileEntity).name = io.papermc.paper.adventure.PaperAdventure.asVanilla(title);
|
||||||
}
|
}
|
||||||
- return getInventory(tileEntity);
|
- return getInventory(tileEntity);
|
||||||
+ return this.getInventory(owner, type, tileEntity); // Paper
|
+ return this.getInventory(owner, type, tileEntity); // Paper
|
||||||
|
|
|
@ -20278,6 +20278,60 @@ diff --git a/src/main/java/net/minecraft/world/level/chunk/status/ChunkStatus.ja
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/world/level/chunk/status/ChunkStatus.java
|
--- a/src/main/java/net/minecraft/world/level/chunk/status/ChunkStatus.java
|
||||||
+++ b/src/main/java/net/minecraft/world/level/chunk/status/ChunkStatus.java
|
+++ b/src/main/java/net/minecraft/world/level/chunk/status/ChunkStatus.java
|
||||||
|
@@ -0,0 +0,0 @@ import net.minecraft.world.level.chunk.ProtoChunk;
|
||||||
|
import net.minecraft.world.level.levelgen.Heightmap;
|
||||||
|
|
||||||
|
public class ChunkStatus {
|
||||||
|
+ static final ChunkStatus.LoadingTask PASSTHROUGH_LOAD_TASK = (WorldGenContext context, ChunkStatus status, ToFullChunk fullChunkConverter, ChunkAccess chunk) -> CompletableFuture.completedFuture(chunk); // Paper - rewrite chunk system
|
||||||
|
public static final int MAX_STRUCTURE_DISTANCE = 8;
|
||||||
|
private static final EnumSet<Heightmap.Types> PRE_FEATURES = EnumSet.of(Heightmap.Types.OCEAN_FLOOR_WG, Heightmap.Types.WORLD_SURFACE_WG);
|
||||||
|
public static final EnumSet<Heightmap.Types> POST_FEATURES = EnumSet.of(
|
||||||
|
Heightmap.Types.OCEAN_FLOOR, Heightmap.Types.WORLD_SURFACE, Heightmap.Types.MOTION_BLOCKING, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES
|
||||||
|
);
|
||||||
|
public static final ChunkStatus EMPTY = register(
|
||||||
|
- "empty", null, -1, false, PRE_FEATURES, ChunkType.PROTOCHUNK, ChunkStatusTasks::generateEmpty, ChunkStatusTasks::loadPassThrough
|
||||||
|
+ "empty", null, -1, false, PRE_FEATURES, ChunkType.PROTOCHUNK, ChunkStatusTasks::generateEmpty, PASSTHROUGH_LOAD_TASK // Paper - rewrite chunk system
|
||||||
|
);
|
||||||
|
public static final ChunkStatus STRUCTURE_STARTS = register(
|
||||||
|
"structure_starts",
|
||||||
|
@@ -0,0 +0,0 @@ public class ChunkStatus {
|
||||||
|
PRE_FEATURES,
|
||||||
|
ChunkType.PROTOCHUNK,
|
||||||
|
ChunkStatusTasks::generateStructureReferences,
|
||||||
|
- ChunkStatusTasks::loadPassThrough
|
||||||
|
+ PASSTHROUGH_LOAD_TASK // Paper - rewrite chunk system
|
||||||
|
);
|
||||||
|
public static final ChunkStatus BIOMES = register(
|
||||||
|
- "biomes", STRUCTURE_REFERENCES, 8, false, PRE_FEATURES, ChunkType.PROTOCHUNK, ChunkStatusTasks::generateBiomes, ChunkStatusTasks::loadPassThrough
|
||||||
|
+ "biomes", STRUCTURE_REFERENCES, 8, false, PRE_FEATURES, ChunkType.PROTOCHUNK, ChunkStatusTasks::generateBiomes, PASSTHROUGH_LOAD_TASK // Paper - rewrite chunk system
|
||||||
|
);
|
||||||
|
public static final ChunkStatus NOISE = register(
|
||||||
|
- "noise", BIOMES, 8, false, PRE_FEATURES, ChunkType.PROTOCHUNK, ChunkStatusTasks::generateNoise, ChunkStatusTasks::loadPassThrough
|
||||||
|
+ "noise", BIOMES, 8, false, PRE_FEATURES, ChunkType.PROTOCHUNK, ChunkStatusTasks::generateNoise, PASSTHROUGH_LOAD_TASK // Paper - rewrite chunk system
|
||||||
|
);
|
||||||
|
public static final ChunkStatus SURFACE = register(
|
||||||
|
- "surface", NOISE, 8, false, PRE_FEATURES, ChunkType.PROTOCHUNK, ChunkStatusTasks::generateSurface, ChunkStatusTasks::loadPassThrough
|
||||||
|
+ "surface", NOISE, 8, false, PRE_FEATURES, ChunkType.PROTOCHUNK, ChunkStatusTasks::generateSurface, PASSTHROUGH_LOAD_TASK // Paper - rewrite chunk system
|
||||||
|
);
|
||||||
|
public static final ChunkStatus CARVERS = register(
|
||||||
|
- "carvers", SURFACE, 8, false, POST_FEATURES, ChunkType.PROTOCHUNK, ChunkStatusTasks::generateCarvers, ChunkStatusTasks::loadPassThrough
|
||||||
|
+ "carvers", SURFACE, 8, false, POST_FEATURES, ChunkType.PROTOCHUNK, ChunkStatusTasks::generateCarvers, PASSTHROUGH_LOAD_TASK // Paper - rewrite chunk system
|
||||||
|
);
|
||||||
|
public static final ChunkStatus FEATURES = register(
|
||||||
|
- "features", CARVERS, 8, false, POST_FEATURES, ChunkType.PROTOCHUNK, ChunkStatusTasks::generateFeatures, ChunkStatusTasks::loadPassThrough
|
||||||
|
+ "features", CARVERS, 8, false, POST_FEATURES, ChunkType.PROTOCHUNK, ChunkStatusTasks::generateFeatures, PASSTHROUGH_LOAD_TASK // Paper - rewrite chunk system
|
||||||
|
);
|
||||||
|
public static final ChunkStatus INITIALIZE_LIGHT = register(
|
||||||
|
"initialize_light",
|
||||||
|
@@ -0,0 +0,0 @@ public class ChunkStatus {
|
||||||
|
"light", INITIALIZE_LIGHT, 1, true, POST_FEATURES, ChunkType.PROTOCHUNK, ChunkStatusTasks::generateLight, ChunkStatusTasks::loadLight
|
||||||
|
);
|
||||||
|
public static final ChunkStatus SPAWN = register(
|
||||||
|
- "spawn", LIGHT, 1, false, POST_FEATURES, ChunkType.PROTOCHUNK, ChunkStatusTasks::generateSpawn, ChunkStatusTasks::loadPassThrough
|
||||||
|
+ "spawn", LIGHT, 1, false, POST_FEATURES, ChunkType.PROTOCHUNK, ChunkStatusTasks::generateSpawn, PASSTHROUGH_LOAD_TASK // Paper - rewrite chunk system
|
||||||
|
);
|
||||||
|
public static final ChunkStatus FULL = register(
|
||||||
|
"full", SPAWN, 0, false, POST_FEATURES, ChunkType.LEVELCHUNK, ChunkStatusTasks::generateFull, ChunkStatusTasks::loadFull
|
||||||
@@ -0,0 +0,0 @@ public class ChunkStatus {
|
@@ -0,0 +0,0 @@ public class ChunkStatus {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20296,7 +20350,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ public final boolean isEmptyLoadStatus() {
|
+ public final boolean isEmptyLoadStatus() {
|
||||||
+ return this.loadingTask == PASSTHROUGH_LOAD_TASK; // TODO fix this
|
+ return this.loadingTask == PASSTHROUGH_LOAD_TASK;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ public final boolean isEmptyGenStatus() {
|
+ public final boolean isEmptyGenStatus() {
|
||||||
|
@ -20326,6 +20380,18 @@ diff --git a/src/main/java/net/minecraft/world/level/chunk/status/ChunkStatusTas
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/world/level/chunk/status/ChunkStatusTasks.java
|
--- a/src/main/java/net/minecraft/world/level/chunk/status/ChunkStatusTasks.java
|
||||||
+++ b/src/main/java/net/minecraft/world/level/chunk/status/ChunkStatusTasks.java
|
+++ b/src/main/java/net/minecraft/world/level/chunk/status/ChunkStatusTasks.java
|
||||||
|
@@ -0,0 +0,0 @@ public class ChunkStatusTasks {
|
||||||
|
return CompletableFuture.completedFuture(chunk);
|
||||||
|
}
|
||||||
|
|
||||||
|
- static CompletableFuture<ChunkAccess> loadPassThrough(WorldGenContext context, ChunkStatus status, ToFullChunk fullChunkConverter, ChunkAccess chunk) {
|
||||||
|
- return CompletableFuture.completedFuture(chunk);
|
||||||
|
+ @io.papermc.paper.annotation.DoNotUse @Deprecated(forRemoval = true) // Paper - rewrite chunk system - use ChunkStatus.PASSTHROUGH_LOAD_TASK instead
|
||||||
|
+ static CompletableFuture<ChunkAccess> loadPassThrough(WorldGenContext context, ChunkStatus status, ToFullChunk fullChunkConverter, ChunkAccess chunk) { // Paper - rewrite chunk system - diff on change
|
||||||
|
+ return CompletableFuture.completedFuture(chunk); // Paper - rewrite chunk system - diff on change
|
||||||
|
}
|
||||||
|
|
||||||
|
static CompletableFuture<ChunkAccess> generateStructureStarts(WorldGenContext context, ChunkStatus status, Executor executor, ToFullChunk fullChunkConverter, List<ChunkAccess> chunks, ChunkAccess chunk) {
|
||||||
@@ -0,0 +0,0 @@ public class ChunkStatusTasks {
|
@@ -0,0 +0,0 @@ public class ChunkStatusTasks {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
}
|
}
|
||||||
+
|
+
|
||||||
+ // Paper - start - living entity allow attribute registration
|
+ // Paper - start - living entity allow attribute registration
|
||||||
+ public void registerAttribute(Attribute attributeBase) {
|
+ public void registerAttribute(Holder<Attribute> attributeBase) {
|
||||||
+ AttributeInstance attributeModifiable = new AttributeInstance(attributeBase, AttributeInstance::getAttribute);
|
+ AttributeInstance attributeModifiable = new AttributeInstance(attributeBase, AttributeInstance::getAttribute);
|
||||||
+ attributes.put(attributeBase, attributeModifiable);
|
+ attributes.put(attributeBase, attributeModifiable);
|
||||||
+ }
|
+ }
|
||||||
|
@ -33,7 +33,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public void registerAttribute(Attribute attribute) {
|
+ public void registerAttribute(Attribute attribute) {
|
||||||
+ Preconditions.checkArgument(attribute != null, "attribute");
|
+ Preconditions.checkArgument(attribute != null, "attribute");
|
||||||
+ handle.registerAttribute(CraftAttribute.bukkitToMinecraft(attribute));
|
+ handle.registerAttribute(CraftAttribute.bukkitToMinecraftHolder(attribute));
|
||||||
+ }
|
+ }
|
||||||
+ // Paper end - living entity allow attribute registration
|
+ // Paper end - living entity allow attribute registration
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,10 +9,17 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
--- a/src/main/java/net/minecraft/world/level/block/LightBlock.java
|
--- a/src/main/java/net/minecraft/world/level/block/LightBlock.java
|
||||||
+++ b/src/main/java/net/minecraft/world/level/block/LightBlock.java
|
+++ b/src/main/java/net/minecraft/world/level/block/LightBlock.java
|
||||||
@@ -0,0 +0,0 @@ public class LightBlock extends Block implements SimpleWaterloggedBlock {
|
@@ -0,0 +0,0 @@ public class LightBlock extends Block implements SimpleWaterloggedBlock {
|
||||||
|
builder.add(LEVEL, WATERLOGGED);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // Paper start - prevent unintended light block manipulation
|
||||||
|
+ @Override
|
||||||
|
+ protected net.minecraft.world.ItemInteractionResult useItemOn(final ItemStack stack, final BlockState state, final Level world, final BlockPos pos, final Player player, final net.minecraft.world.InteractionHand hand, final BlockHitResult hit) {
|
||||||
|
+ if (player.getItemInHand(hand).getItem() != Items.LIGHT || !player.mayInteract(world, pos) || !player.mayUseItemAt(pos, hit.getDirection(), player.getItemInHand(hand))) { return net.minecraft.world.ItemInteractionResult.SKIP_DEFAULT_BLOCK_INTERACTION; } // Paper - Prevent unintended light block manipulation
|
||||||
|
+ return super.useItemOn(stack, state, world, pos, player, hand, hit);
|
||||||
|
+ }
|
||||||
|
+ // Paper end - prevent unintended light block manipulation
|
||||||
|
+
|
||||||
@Override
|
@Override
|
||||||
protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) {
|
protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) {
|
||||||
if (!world.isClientSide && player.canUseGameMasterBlocks()) {
|
if (!world.isClientSide && player.canUseGameMasterBlocks()) {
|
||||||
+ if (player.getItemInHand(hand).getItem() != Items.LIGHT || !player.mayInteract(world, pos) || !player.mayUseItemAt(pos, hit.getDirection(), player.getItemInHand(hand))) { return InteractionResult.FAIL; } // Paper - Prevent unintended light block manipulation
|
|
||||||
world.setBlock(pos, state.cycle(LEVEL), 2);
|
|
||||||
return InteractionResult.SUCCESS;
|
|
||||||
} else {
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue